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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7640192記憶デバイス、集積回路、コンピュータ実施方法、コンピュータ・システムおよびコンピュータ・プログラム(メモリ素子をプログラミングするための初期化関数を設計するための方法)
<>
  • 特許-記憶デバイス、集積回路、コンピュータ実施方法、コンピュータ・システムおよびコンピュータ・プログラム(メモリ素子をプログラミングするための初期化関数を設計するための方法) 図1
  • 特許-記憶デバイス、集積回路、コンピュータ実施方法、コンピュータ・システムおよびコンピュータ・プログラム(メモリ素子をプログラミングするための初期化関数を設計するための方法) 図2
  • 特許-記憶デバイス、集積回路、コンピュータ実施方法、コンピュータ・システムおよびコンピュータ・プログラム(メモリ素子をプログラミングするための初期化関数を設計するための方法) 図3
  • 特許-記憶デバイス、集積回路、コンピュータ実施方法、コンピュータ・システムおよびコンピュータ・プログラム(メモリ素子をプログラミングするための初期化関数を設計するための方法) 図4
  • 特許-記憶デバイス、集積回路、コンピュータ実施方法、コンピュータ・システムおよびコンピュータ・プログラム(メモリ素子をプログラミングするための初期化関数を設計するための方法) 図5
  • 特許-記憶デバイス、集積回路、コンピュータ実施方法、コンピュータ・システムおよびコンピュータ・プログラム(メモリ素子をプログラミングするための初期化関数を設計するための方法) 図6
  • 特許-記憶デバイス、集積回路、コンピュータ実施方法、コンピュータ・システムおよびコンピュータ・プログラム(メモリ素子をプログラミングするための初期化関数を設計するための方法) 図7
  • 特許-記憶デバイス、集積回路、コンピュータ実施方法、コンピュータ・システムおよびコンピュータ・プログラム(メモリ素子をプログラミングするための初期化関数を設計するための方法) 図8
  • 特許-記憶デバイス、集積回路、コンピュータ実施方法、コンピュータ・システムおよびコンピュータ・プログラム(メモリ素子をプログラミングするための初期化関数を設計するための方法) 図9
  • 特許-記憶デバイス、集積回路、コンピュータ実施方法、コンピュータ・システムおよびコンピュータ・プログラム(メモリ素子をプログラミングするための初期化関数を設計するための方法) 図10
  • 特許-記憶デバイス、集積回路、コンピュータ実施方法、コンピュータ・システムおよびコンピュータ・プログラム(メモリ素子をプログラミングするための初期化関数を設計するための方法) 図11
  • 特許-記憶デバイス、集積回路、コンピュータ実施方法、コンピュータ・システムおよびコンピュータ・プログラム(メモリ素子をプログラミングするための初期化関数を設計するための方法) 図12
  • 特許-記憶デバイス、集積回路、コンピュータ実施方法、コンピュータ・システムおよびコンピュータ・プログラム(メモリ素子をプログラミングするための初期化関数を設計するための方法) 図13
  • 特許-記憶デバイス、集積回路、コンピュータ実施方法、コンピュータ・システムおよびコンピュータ・プログラム(メモリ素子をプログラミングするための初期化関数を設計するための方法) 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-25
(45)【発行日】2025-03-05
(54)【発明の名称】記憶デバイス、集積回路、コンピュータ実施方法、コンピュータ・システムおよびコンピュータ・プログラム(メモリ素子をプログラミングするための初期化関数を設計するための方法)
(51)【国際特許分類】
   G11C 13/00 20060101AFI20250226BHJP
   G06N 3/063 20230101ALI20250226BHJP
   G11C 11/54 20060101ALI20250226BHJP
   G06G 7/60 20060101ALI20250226BHJP
【FI】
G11C13/00 360
G06N3/063
G11C13/00 270G
G11C11/54
G06G7/60
【請求項の数】 24
(21)【出願番号】P 2021174962
(22)【出願日】2021-10-26
(65)【公開番号】P2022074056
(43)【公開日】2022-05-17
【審査請求日】2024-03-07
(31)【優先権主張番号】17/085,071
(32)【優先日】2020-10-30
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/085,173
(32)【優先日】2020-10-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ボンスティングル トーマス
(72)【発明者】
【氏名】パンタジ アンジェリキ
(72)【発明者】
【氏名】ウォズニアック スタニスロー アンドルゼジ
(72)【発明者】
【氏名】エレフテリオウ エバンゲロス スタブロス
【審査官】豊田 真弓
(56)【参考文献】
【文献】米国特許出願公開第2014/0219014(US,A1)
【文献】特開2019-003547(JP,A)
【文献】米国特許出願公開第2016/0307627(US,A1)
【文献】特開2011-054268(JP,A)
【文献】米国特許第9501042(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 13/00
G06N 3/063
G11C 11/54
G06G 7/60
(57)【特許請求の範囲】
【請求項1】
メモリ素子を含む記憶デバイスであって、前記メモリ素子が情報を記憶するための変更可能な物理量を含み、前記物理量がドリフト状態にあり、前記メモリ素子が前記物理量を初期状態に設定するように構成され、前記メモリ素子が前記初期状態から前記ドリフト状態への前記物理量のドリフトを含み、前記物理量の前記初期状態が初期化関数を用いて計算可能であり、前記初期化関数が前記物理量の目標状態に依存し、前記物理量の前記目標状態が前記物理量の前記ドリフト状態にほぼ等しく、
前記初期化関数はべき関数であり、
前記べき関数が、前記物理量の前記目標状態を前記べき関数の指数として含み、前記物理量の前記初期状態を前記べき関数の関数値として含む、記憶デバイス。
【請求項2】
前記初期化関数が、f(G)=a*e -b*G +cに等しく、ここで、Gは前記物理量の前記目標状態であり、f(G)は前記物理量の前記初期状態であり、a、bおよびcは前記初期化関数の係数である、請求項1に記載の記憶デバイス。
【請求項3】
対応する前記メモリ素子の前記物理量のそれぞれの前記目標状態が前記記憶デバイスの使用法に適合されている、請求項1または2に記載の記憶デバイス。
【請求項4】
ニューラル・ネットワークの層をシミュレートするためのニューロモルフィック・ニューロン装置をさらに含み、前記ニューロモルフィック・ニューロン装置が入力接続部を含み、前記入力接続部が第1のアセンブリの出力接続部に接続されている、請求項1から3のいずれか一項に記載の記憶デバイス。
【請求項5】
メモリ素子の第1のアセンブリを含む集積回路であって、前記メモリ素子の第1のアセンブリが、それぞれの前記メモリ素子に単一電流を生成するために、対応する電圧をそれぞれの接続部に印加するための前記接続部と、出力電流を出力するための少なくとも1つの出力接続部とを含み、前記メモリ素子が、前記出力電流が前記単一電流の和であるように互いに接続されており、前記集積回路が、前記印加された電圧に基づいて前記出力電流を生成するように構成されており、各メモリ素子がそれぞれの変更可能なコンダクタンスを含み、前記それぞれのコンダクタンスがそれぞれのドリフト状態にあり、前記それぞれのメモリ素子が前記それぞれのコンダクタンスをそれぞれの初期状態に設定するように構成されており、前記それぞれのメモリ素子が前記それぞれの初期状態から前記それぞれのドリフト状態への前記それぞれのコンダクタンスのそれぞれのドリフトを含み、前記それぞれのコンダクタンスの前記それぞれの初期状態がそれぞれの初期化関数を用いて計算可能であり、前記それぞれの初期化関数が前記それぞれのコンダクタンスのそれぞれの目標状態に依存し、前記それぞれのコンダクタンスの前記それぞれの目標状態が前記それぞれのコンダクタンスの前記それぞれのドリフト状態にほぼ等しく、
前記それぞれの初期化関数はべき関数であり、
前記べき関数が、前記それぞれのコンダクタンスの前記それぞれの目標状態を前記べき関数の指数として含み、前記それぞれのコンダクタンスの前記それぞれの初期状態を前記べき関数の関数値として含む、集積回路。
【請求項6】
前記それぞれの初期化関数が、f(G)=a*e -b*G +cに等しく、ここで、Gは前記それぞれのコンダクタンスの前記それぞれの目標状態であり、f(G)は前記それぞれのコンダクタンスの前記それぞれの初期状態であり、a、bおよびcは前記初期化関数の係数である、請求項5に記載の集積回路。
【請求項7】
対応する前記メモリ素子の物理量の前記それぞれの目標状態が前記集積回路の使用法に適合されている、請求項5または6に記載の集積回路。
【請求項8】
ニューラル・ネットワークの層をシミュレートするためのニューロモルフィック・ニューロン装置をさらに含み、前記ニューロモルフィック・ニューロン装置が入力接続部を含み、前記入力接続部が前記第1のアセンブリの前記出力接続部に接続されている、請求項に記載の集積回路。
【請求項9】
メモリ素子を含む記憶デバイスをセット・アップするためのコンピュータ実施方法であって、前記メモリ素子が、変更可能な物理量を含み、
前記物理量の目標状態を選択することと、
初期化関数を使用して前記物理量の初期状態を計算することであって、前記初期化関数が前記物理量の前記目標状態に依存する、前記計算することと、
前記物理量を前記計算された前記物理量の初期状態に設定することと、
を含み、
前記初期化関数はべき関数であり、
前記べき関数が、前記物理量の前記目標状態を前記べき関数の指数として含み、前記物理量の前記初期状態を前記べき関数の関数値として含む、コンピュータ実施方法。
【請求項10】
前記初期化関数が、f(G)=a*e -b*G +cに等しく、ここで、Gは前記物理量の前記目標状態であり、f(G)は前記物理量の前記初期状態であり、a、bおよびcは前記初期化関数の係数である、請求項9に記載のコンピュータ実施方法。
【請求項11】
前記物理量を前記計算された前記物理量の初期状態に設定した初期時点から実際の時点までの経過時間を測定することと、
前記測定された経過時間を所与の期間と比較することであって、前記所与の期間が前記メモリ素子の使用法に依存する、前記比較することと、
前記測定された経過時間が前記所与の期間よりも大きい場合に、前記メモリ素子を動作のために解放することと、
をさらに含む、請求項9または10に記載のコンピュータ実施方法。
【請求項12】
初期化関数を設計するためのコンピュータ実施方法であって、前記初期化関数が、情報を記憶するためのメモリ素子の変更可能な物理量のそれぞれの選択された目標状態と、前記メモリ素子の前記物理量の対応する初期状態との間の関係を表しており、前記メモリ素子の前記物理量が、前記物理量の前記それぞれの選択された目標状態への方向にドリフトするための前記物理量の前記対応する初期状態に調整可能であり、前記コンピュータ実施方法が、
第1のステップにおいて、前記メモリ素子の前記物理量を初期時点の初期値に設定することと、
第2のステップにおいて、経過した所与の期間の後に前記メモリ素子の前記物理量の実際の値を測定することであって、前記経過した所与の期間が前記初期時点から始まる、前記測定することと、
第3のステップにおいて、前記物理量の前記初期値および前記実際の値をデータベースに記憶することと、
前記第1のステップ、前記第2のステップ、および前記第3のステップを繰り返し、前記第1のステップを繰り返すたびに前記メモリ素子の前記物理量を異なる初期値に設定して、前記物理量の前記初期値と前記実際の値とのいくつかの異なるペアを前記データベースに記憶することと、
前記データベースに基づいて前記初期化関数を設計することと、
を含み、
前記初期化関数はべき関数であり、
前記べき関数が、前記物理量の前記それぞれの選択された目標状態を前記べき関数の指数として含み、前記物理量の前記対応する初期状態を前記べき関数の関数値として含む、前記べき関数である、コンピュータ実施方法。
【請求項13】
前記第2のステップにおける前記メモリ素子の前記物理量の前記実際の値の前記測定が、前記物理量の前記実際の値の時間の経過に伴う変化が所与のしきい値を下回る場合に実行される、請求項12に記載のコンピュータ実施方法。
【請求項14】
初期化関数を設計するためのコンピュータ実施方法であって、前記初期化関数が、情報を記憶するためのメモリ素子の変更可能な物理量のそれぞれの選択された目標状態と、前記メモリ素子の前記物理量の対応する初期状態との間の関係を表しており、前記メモリ素子の前記物理量が、前記物理量の前記それぞれの選択された目標状態への方向にドリフトするための前記物理量の前記対応する初期状態に調整可能であり、前記コンピュータ実施方法が、
第1のステップにおいて、前記メモリ素子の前記物理量を初期時点の初期値に設定することと、
第2のステップにおいて、経過した所与の期間の後に前記メモリ素子の前記物理量の実際の値を測定することであって、前記経過した所与の期間が前記初期時点から始まる、前記測定することと、
第3のステップにおいて、前記物理量の前記初期値および前記実際の値をデータベースに記憶することと、
前記第1のステップ、前記第2のステップ、および前記第3のステップを繰り返し、前記第1のステップを繰り返すたびに前記メモリ素子の前記物理量を異なる初期値に設定して、前記物理量の前記初期値と前記実際の値とのいくつかの異なるペアを前記データベースに記憶することと、
前記データベースに基づいて前記初期化関数を設計することと、
を含み、
前記第2のステップにおける前記メモリ素子の前記物理量の前記実際の値の前記測定が、前記物理量の前記実際の値の時間の経過に伴う変化が所与のしきい値を下回る場合に実行される、コンピュータ実施方法。
【請求項15】
前記初期化関数が、前記物理量の前記それぞれの選択された目標状態をべき関数の指数として含み、前記物理量の前記対応する初期状態を前記べき関数の関数値として含む、前記べき関数である、請求項14に記載のコンピュータ実施方法。
【請求項16】
前記初期化関数が、f(G)=a*e -b*G +cに等しく、ここで、Gは前記変更可能な物理量の前記それぞれの選択された目標状態であり、f(G)は前記物理量の前記対応する初期状態であり、a、bおよびcは前記初期化関数の係数である、請求項12から15のいずれか一項に記載のコンピュータ実施方法。
【請求項17】
前記第2のステップにおける前記メモリ素子の前記物理量の前記実際の値の前記測定が第1の時点において実行され、前記初期時点と前記第1の時点との間の時間スパンが前記所与の期間に等しい、請求項12から16のいずれか一項に記載のコンピュータ実施方法。
【請求項18】
前記所与の期間が前記メモリ素子の将来の使用法に適合されている、請求項12から17のいずれか一項に記載のコンピュータ実施方法。
【請求項19】
前記初期化関数が時間に依存しない、請求項12から18のいずれか一項に記載のコンピュータ実施方法。
【請求項20】
前記メモリ素子の前記物理量のさらなる実際の値および実際の期間を測定することであって、前記実際の期間が前記第2のステップのサブステップにおいて前記初期時点と実際の時点との間の経過時間によって規定される、前記測定することと、
前記第2のステップのさらなるサブステップにおいて、前記物理量の前記さらなる実際の値および前記実際の期間を前記データベースに記憶することと、
前記物理量のいくつかの異なるさらなる実際の値および対応する実際の期間を前記データベースに記憶するために、前記初期時点から時間が経過する間に、前記第2のステップの前記サブステップおよび前記さらなるサブステップを繰り返すことと、
前記データベースに基づいて前記初期化関数を設計することと、
をさらに含む、請求項12から19のいずれか一項に記載のコンピュータ実施方法。
【請求項21】
前記物理量の各初期値について対応する時間依存の初期化関数を設計することをさらに含み、前記対応する時間依存の初期化関数が、前記メモリ素子の前記物理量の前記対応する初期状態から始まる前記メモリ素子の前記物理量の時間依存のドリフトを表す、請求項20に記載のコンピュータ実施方法。
【請求項22】
前記初期化関数が、前記メモリ素子の前記変更可能な物理量の前記それぞれの選択された目標状態と前記メモリ素子の前記物理量の前記対応する初期状態との間の前記関係と、前記メモリ素子の前記物理量を前記対応する初期状態に設定した後の選択された経過期間と、を表すように前記初期化関数を設計することをさらに含み、前記選択された経過期間が前記メモリ素子の所定の将来の使用法に依存する、請求項20または21に記載のコンピュータ実施方法。
【請求項23】
1つまたは複数のコンピュータプロセッサと、
1つまたは複数のコンピュータ可読記憶媒体と、
前記1つまたは複数のコンピュータプロセッサのうちの少なくとも1つによる実行のために前記1つまたは複数のコンピュータ可読記憶媒体に記憶されたプログラム命令と、
を含み、前記プログラム命令が、
請求項9から22のいずれか一項に記載のコンピュータ実施方法の各手順を前記1つまたは複数のコンピュータプロセッサに実行させるプログラム命令を含む、
コンピュータ・システム。
【請求項24】
プロセッサに、請求項9から22のいずれか一項に記載のコンピュータ実施方法の各手順を実行させる、
コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、半導体メモリ・デバイスの分野に関する。
【背景技術】
【0002】
半導体メモリ・デバイスは、ダイナミック・ランダム・アクセス・メモリ(DRAM)セルなどの揮発性メモリ・デバイスと、相変化メモリ(PCM)および抵抗変化型メモリ(RRAM(登録商標))デバイスなどの不揮発性メモリ・デバイスとに分類することができる。メモリ・デバイスの分野における研究は、とりわけ、高い耐久性、データ保持、低い書き込みおよび読み出し待ち時間、ならびに信頼性に向けられていている。メモリ・デバイスの分野における研究は、メモリ・セルごとに2ビット以上の情報を記憶するためのメモリ・デバイスに関するマルチレベル・セル動作の可能性を説明することもある。
【0003】
[本発明者または共同発明者による先行開示に関する陳述]
以下の開示は、35U.S.C.102(b)(1)(A)の下で提出されている。
【先行技術文献】
【非特許文献】
【0004】
【文献】Deep Learning Incorporating Biologically Inspired Neural Dynamics and in-memory computer,Stanislaw Wozniak,Angeliki Pantazi,Thomas Bohnstingle&Evangelos Eleftheriou,June 15,2020,pages 325-336.
【発明の概要】
【発明が解決しようとする課題】
【0005】
物理量を初期値に設定した後は、時間の経過とともに物理量の時間の経過に伴う変化が小さくなる。この効果は、実験において物理量の初期値に依存することが観察された。
【課題を解決するための手段】
【0006】
様々な実施形態は、独立請求項の主題によって記載されるような、記憶デバイス、集積回路、記憶デバイスをセット・アップするための方法、および初期化関数を設計するための方法を提供する。有利な実施形態は、従属請求項に記載されている。本発明の実施形態は、それらが相互に排他的でない場合、互いに自由に組み合わせることができる。
【0007】
一態様では、本発明は、メモリ素子を含む記憶デバイスに関する。メモリ素子は、情報を記憶するための変更可能な物理量を含むことができる。物理量は、ドリフト状態(drifted state)にあってもよい。メモリ素子は、物理量を初期状態に設定するように構成することができる。さらに、メモリ素子は、初期状態からドリフト状態への物理量のドリフトを含むことができる。物理量の初期状態は、初期化関数を用いて計算することができる。初期化関数は、物理量の目標状態に依存してもよく、物理量の目標状態は、物理量のドリフト状態にほぼ等しくてもよい。
【0008】
別の態様では、本発明は、メモリ素子の第1のアセンブリを含む集積回路に関する。メモリ素子の第1のアセンブリは、それぞれのメモリ素子に単一電流を生成するために、対応する電圧をそれぞれの接続部に印加するための接続部を含むことができる。さらに、第1のアセンブリは、出力電流を出力するための少なくとも1つの出力接続部を含むことができる。出力電流が単一電流の和になるように、メモリ素子を互いに接続することができる。集積回路は、印加電圧に基づいて出力電流を生成するように構成されてもよい。さらに、各メモリ素子は、それぞれの変更可能なコンダクタンスを含むことができ、それぞれのコンダクタンスは、それぞれのドリフト状態にあってもよい。それぞれのメモリ素子は、それぞれのコンダクタンスをそれぞれの初期状態に設定するように構成することができる。さらに、それぞれのメモリ素子は、それぞれの初期状態からそれぞれのドリフト状態へのそれぞれのコンダクタンスのそれぞれのドリフトを含むことができる。それぞれのコンダクタンスのそれぞれの初期状態は、それぞれの初期化関数を用いて計算可能であってもよい。それぞれの初期化関数は、それぞれのコンダクタンスのそれぞれの目標状態に依存してもよく、それぞれのコンダクタンスのそれぞれの目標状態は、それぞれのコンダクタンスのそれぞれのドリフト状態にほぼ等しくてもよい。
【0009】
別の態様では、本発明は、メモリ素子を含む記憶デバイスをセット・アップするための方法に関し、メモリ素子は、変更可能な物理量を含む。本方法は、物理量の目標状態を選択することと、初期化関数を使用して物理量の初期状態を計算することであって、初期化関数が物理量の目標状態に依存する、計算することと、物理量を、計算された物理量の初期状態に設定することと、を含む。
【0010】
別の態様では、本発明は、初期化関数を設計するための方法に関する。初期化関数は、メモリ素子の変更可能な物理量のそれぞれの選択された目標状態と、メモリ素子の物理量の対応する初期状態との間の関係を表すことができる。メモリ素子の物理量は、物理量のそれぞれの選択された目標状態への方向にドリフトするために、物理量の対応する初期状態に調整可能であってもよい。本方法は、第1のステップにおいて、メモリ素子の物理量を初期時点の初期値に設定することと、第2のステップにおいて、経過した所与の期間の後にメモリ素子の物理量の実際の値を測定することであって、経過した所与の期間が初期時点から始まる、測定することと、第3のステップにおいて、物理量の初期値および実際の値をデータベースに記憶することと、第1、第2、および第3のステップを繰り返し、第1のステップを繰り返すたびにメモリ素子の物理量を異なる初期値に設定して、物理量の初期値と実際の値とのいくつかの異なるペアをデータベースに記憶することと、データベースに基づいて初期化関数を設計することと、を含む。
【0011】
別の態様では、本発明は、コンピュータ可読プログラム・コードが具現化されたコンピュータ可読記憶媒体を含むコンピュータ・プログラム製品に関し、コンピュータ可読プログラム・コードは、記憶デバイスをセット・アップするための、または初期化関数を設計するため方法のステップをすべて実施するように構成されている。
【図面の簡単な説明】
【0012】
以下では、本発明の実施形態について、図面を参照して、単なる例としてより詳細に説明する。
【0013】
図1】本主題による初期化関数を設計するための方法の流れ図である。
【0014】
図2】初期化関数のデータフローを示す図である。
【0015】
図3】メモリ素子を示す図である。
【0016】
図4図3に示すメモリ素子をプログラミングした後の物理量の初期値に対する時間の経過に伴う物理量のドリフトをそれぞれ示す曲線を含むグラフである。
【0017】
図5図3に示すメモリ素子の物理量の選択された目標状態に基づいて、計算された物理量の初期値に対する時間の経過に伴う物理量のドリフトをそれぞれ示す曲線を含むグラフである。
【0018】
図6】物理量の初期値と物理量の対応する実際の値とのペアを含むデータベースである。
【0019】
図7】初期化関数を含むグラフである。
【0020】
図8】物理量のさらなる実際の値のセットを含むさらなるデータベースであり、各セットは、物理量の値の時間シーケンスを表す。
【0021】
図9】時間依存の初期化関数を示す図である。
【0022】
図10】メモリスタのクロスバー・アレイと、ニューロモルフィック・ニューロン装置(neuromorphic neuron apparatus)とを含む集積回路を示す図である。
【0023】
図11図10に示すニューロモルフィック・ニューロン装置の入力値の時系列を示す図である。
【0024】
図12】ニューラル・ネットワークを示す図である。
【0025】
図13図10に示すメモリスタのクロスバー・アレイをより詳細に示す図である。
【0026】
図14】記憶デバイスをセット・アップするための方法の流れ図である。
【発明を実施するための形態】
【0027】
本発明の様々な実施形態の説明は、例示の目的で提示されるが、網羅的であること、または開示された実施形態に限定されることを意図するものではない。説明される実施形態の範囲および思想から逸脱することなく、多くの変更および変形が当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、市場で見られる技術に対する実際の適用または技術的改善を最もよく説明するため、または当業者が本明細書に開示される実施形態を理解できるようにするために選択された。
【0028】
メモリ素子は、コンデンサ、抵抗器、または抵抗性メモリ素子であってもよく、以下ではメモリスタとも呼ばれる。メモリスタは、相変化メモリ(PCM)素子、金属酸化物抵抗RAM素子、導電性ブリッジRAM素子、または磁気RAM素子であってもよい。メモリ素子がコンデンサであり得る場合、物理量は電荷であってもよい。電荷は、コンデンサを充電することによって、変更可能であってもよい。メモリ素子がメモリスタであり得る場合、物理量は、抵抗性メモリ素子(RME)のコンダクタンスであってもよい。RMEのコンダクタンスは、RMEに制御電圧を印加することによって変更可能であってもよい。
【0029】
物理量の値、すなわち物理量の状態は、記憶された情報、例えば変数の値に対応してもよい。例えば、物理量のより高い値が、変数のより高い値に対応してもよく、その逆であってもよい。別の例では、物理量のより低い値が、変数のより高い値に対応してもよく、その逆であってもよい。記憶される情報は、値、例えば変数の値であってもよい。値は、行列のエントリであってもよい。物理量は、メモリ素子のコンダクタンス、電荷、または抵抗であってもよい。
【0030】
物理量の初期状態は、メモリ素子をプログラミングした直後の物理量の状態であってもよい。したがって、メモリ素子のプログラミングは、物理量を初期状態に設定することと考えることができる。物理量の設定は、メモリ素子にプログラミング電圧またはプログラミング電流を印加することによって行われてもよい。
【0031】
本明細書で使用される「ドリフト」という用語は、時間の経過に伴う物理量の減衰または増加など、時間の経過に伴う物理量の値の変化を表す。本明細書で使用される「ドリフト状態」という用語は、初期状態と比較した物理量の変化した状態を表す。物理量が初期状態にある時点と、物理量がドリフト状態にあるさらなる時点との間で時間が経過している。さらに、メモリ素子の物理量のドリフト状態では、時間の経過に伴う物理量の変化は、物理量の初期状態での時間の経過に伴う物理量の変化よりも小さくてもよい。このため、物理量がドリフト状態にある場合、メモリ素子の物理量の実際の値によって表すことができる情報をより高い精度で時間の経過とともに保持することができる。一例では、物理量のドリフト状態における時間の経過に伴う物理量の変化は、物理量の初期状態における時間の経過に伴う物理量の変化と比較して、10パーセント未満である場合がある。別の例では、物理量のドリフト状態における時間の経過に伴う物理量の変化は、物理量の初期状態における時間の経過に伴う物理量の変化と比較して、5パーセント未満、またはさらなる例によると1パーセント未満である場合がある。
【0032】
したがって、物理量を初期値に設定した後は、時間の経過とともに物理量の時間の経過に伴う変化が小さくなる。この効果は、実験において物理量の初期値に依存することが観察された。本記憶デバイスは、メモリ素子の物理量を初期状態に設定するように構成されてよく、物理量がドリフト状態に達したかもしれない後にそれを使用することができる。したがって、本記憶デバイスは、標準的な使用事例と比較してより高い精度でメモリ素子を使用する記憶デバイスを提供する。標準的な使用事例は、メモリ素子の物理量、例えばメモリスタのコンダクタンスを初期状態にプログラミングすることを含み、その直後にメモリ素子、例えばメモリスタを使用することができる。
【0033】
物理量の初期状態または値は、コンピュータを使用して初期化関数、例えばルック・アップ・テーブルを用いて計算することができる。別の例では、物理量は、手動で初期化関数を用いて計算されてもよい。
【0034】
この利点は、上述したそれぞれのRMEを使用して上述した単一電流を生成することができる用途にも有用である可能性がある。一例では、電圧は、単一電流を生成するために、パルス幅変調を実行するための時間間隔内で、定電圧であるがパルスの長さまたは数が異なる電圧パルスの形態で印加されてもよい。さらなる例では、単一電流を生成するために、電圧のうちの少なくとも2つの異なる電圧値を含む電圧が印加されてもよい。電圧は、電圧源または電流源を用いて印加されてもよい。単一電流の和として生成することができる出力電流は、より高い精度で生成される可能性がある。したがって、それぞれのコンダクタンスがそれぞれのドリフト状態にあるそれぞれのRMEを使用して、ハードウェア・レベルでより正確な加算を実行することができる。これは、以下の用途に特に有利な場合がある。
【0035】
一実施形態によると、集積回路は、ニューラル・ネットワークの層をシミュレートするためのニューロモルフィック・ニューロン装置をさらに含むことができる。本実施形態では、ニューロモルフィック・ニューロン装置は、入力接続部を含むことができ、入力接続部は、第1のアセンブリの出力接続部に接続されてもよい。本明細書では、生成された出力電流は、ニューロモルフィック・ニューロン装置のための入力信号として使用することができる。RMEがより高い精度で動作することで、ニューロモルフィック・ニューロン装置に対する入力信号がより正確になる可能性がある。したがって、ニューロモルフィック・ニューロン装置は、推論タスクに適用されたときに、より良い結果をもたらす可能性がある。
【0036】
一実施形態によると、対応するメモリ素子の物理量のそれぞれの目標状態は、集積回路の使用法に適合させることができる。使用法とは、メモリ素子が使用される可能性のある時点を指してもよい。その時点がわかっている場合、メモリ素子の物理量がその時点で目標状態に到達できるようにメモリ素子の物理量を初期設定することができる。
【0037】
メモリ素子をプログラミングした後の物理量のドリフトの状態依存の挙動に関する知識を利用することは、上述した記憶デバイスをセット・アップする方法にとっても有益である可能性がある。初期化関数は、物理量の初期状態を計算するために使用されてもよく、初期化関数が物理量の目標状態に依存するため、記憶デバイスは、物理量がドリフト状態に達した後、より正確に動作するようにセット・アップされる可能性がある。
【0038】
記憶デバイスをセット・アップするための方法の一実施形態によると、本方法は、物理量を計算された物理量の初期状態に設定する初期時点から実際の時点までの経過時間を測定することをさらに含むことができる。本方法は、測定された経過時間を所与の期間と比較することをさらに含むことができ、所与の期間は、メモリ素子の使用法に依存してもよい。さらに、本方法は、測定された経過時間が所与の期間よりも大きい場合に、動作のためにメモリ素子を解放することを含むことができる。本実施形態により、記憶デバイスのメモリ素子をプログラミングした後、所与の期間が経過した後にのみ、記憶デバイスを確実に使用することができることが可能になってもよい。言い換えれば、本実施形態は、比較的低い精度での記憶デバイスの使用法を防止する。
【0039】
初期化関数を設計するための方法の一実施形態によると、第2のステップにおけるメモリ素子の物理量の実際の値の測定は、第1の時点で実行されてもよく、初期時点と第1の時点との間の時間スパンは、所与の期間に等しい。物理量の初期値と実際の値とのいくつかの異なるペアをデータベースに記憶するために第2のステップを繰り返すことができるため、本実施形態により、初期時点と物理量の実際の値の測定時点との間の時間スパンが各ペアで同じになるようにデータベースの値を検索することが可能になる場合がある。これにより、初期化関数を時間に依存しない関数として設計することが楽になる。
【0040】
初期化関数を設計するための方法の一実施形態によると、所与の期間は、メモリ素子の将来の使用法に適合させることができる。将来の使用法は、メモリ素子の将来の使用時点を含んでもよい。将来の使用時点がわかっている場合、メモリ素子は、物理量が、プログラムされた値からドリフトした後、将来の使用時点においてほぼ正確にその目標状態に到達することができるようにプログラムされてもよい。
【0041】
初期化関数を設計するための方法の一実施形態によると、第2のステップにおけるメモリ素子の物理量の実際の値の測定は、物理量の実際の値の時間の経過に伴う変化が所与のしきい値を下回る場合に実行されてもよい。初期化関数をそのように設計することができる場合、初期物理量は、物理量がしきい値と同等またはしきい値よりも小さくなり得る物理量のドリフト状態における時間の経過に伴う変化を含むことができるように、初期化関数を使用することによって計算可能であってもよい。したがって、本実施形態によってメモリ素子の耐久性を向上させることができる。
【0042】
初期化関数を設計するための方法の一実施形態によると、初期化関数は、時間に依存しなくてもよい。本実施形態は、使用時点を考慮するためにも、使用中にも、時間の測定を行う必要がないため、非常に実用的な関数として初期化関数を提供することができる。
【0043】
初期化関数を設計するための方法の一実施形態によると、初期化関数は、変更可能な物理量のそれぞれの選択された目標状態をべき関数の指数として含み、物理量の対応する初期状態をべき関数の関数値として含むべき関数(power function)であってもよい。本実施形態は、メモリ素子の物理量のドリフトに関する実験を実行することによって得られる観察結果を非常に正確に反映することができる。したがって、初期化関数をべき関数として使用することにより、初期化関数を使用して物理量をセット・アップするときに、より正確な結果が得られる可能性がある。
【0044】
初期化関数を設計するための方法の一実施形態によると、初期化関数は、f(G)=a*e(-b*G)+cに等しくてもよく、ここで、Gは、変更可能な物理量のそれぞれの選択された目標状態であり、f(G)は、物理量の対応する初期状態であり、a、bおよびcは、初期化関数の係数である。本実施形態は、メモリ素子の物理量のドリフトに関していくつかのさらなる実験を実行することによって得られる観察結果を非常に正確に表すことができる。したがって、本実施形態による初期化関数を使用することにより、初期化関数の精度がより高くなる可能性がある。
【0045】
初期化関数を設計するための方法の一実施形態によると、本方法は、メモリ素子の物理量のさらなる実際の値および実際の期間を測定することであって、実際の期間が第2のステップのサブステップにおいて初期時点と実際の時点との間の経過時間によって規定される、測定することと、第2のステップのさらなるサブステップにおいて、物理量のさらなる実際の値および実際の期間をデータベースに記憶することと、物理量のいくつかの異なるさらなる実際の値および対応する実際の期間をデータベースに記憶するために、初期時点から時間が経過する間に、第2のステップのサブステップおよびさらなるサブステップを繰り返すことと、データベースに基づいて初期化関数を設計することと、をさらに含むことができる。
【0046】
本実施形態により、時間依存の初期化関数を設計することが可能であってもよい。初期化関数が時間に依存する場合、物理量は、将来の使用法に関して、例えば、メモリ素子の将来の使用時点に関して、より正確に設定され得る。加えて、本実施形態は、メモリ素子のドリフトに関する実験が実行され得る場合に、可能な限り多くのデータを得ることができるという意味で有益である可能性がある。
【0047】
初期化関数を設計するための方法のさらなる実施形態によると、本方法は、物理量の各初期値に対して対応する時間依存の初期化関数を設計することをさらに含むことができる。対応する時間依存の初期化関数は、メモリ素子の物理量の対応する初期状態から始まる、メモリ素子の物理量の時間依存のドリフトを表すことができる。本実施形態によると、いくつかの初期化関数のセットをデータベースに基づいて設計することができる。いくつかの初期化関数は、補間によって物理量の初期値を計算するために使用することができる。
【0048】
初期化関数を設計するための方法のさらなる実施形態によると、本方法は、初期化関数が、メモリ素子の変更可能な物理量のそれぞれの選択された目標状態とメモリ素子の物理量の対応する初期状態との間の関係と、メモリ素子の物理量を対応する初期状態に設定した後の選択された経過期間と、を表すことができるように、初期化関数を設計することをさらに含むことができる。選択された経過期間は、メモリ素子の所定の将来の使用法に依存する場合がある。本実施形態は、上述した補間を置き換えることができる。
【0049】
図1は、図2に示すような初期化関数200を設計するための方法の流れ図である。初期化関数200は、図3に示すように、メモリ素子300の変更可能な物理量のそれぞれの選択された目標状態Gtarget_selと、メモリ素子300の物理量の対応する初期状態Ginit_selとの間の関係を表すことができる。
【0050】
初期化関数200の視覚的表現720の一例は、図7のグラフに実線で示されている。グラフのx軸は、物理量の選択された目標状態Gtarget_selの可能な値を表すことができ、y軸は、それぞれが物理量の選択された目標状態Gtarget_selの値の可能な値のうちの1つに対応することができる物理量の対応する初期状態Ginit_selの値を表すことができる。図2に初期化関数200に関するデータフローを示す。わかりやすくするために、物理量の選択された目標状態Gtarget_selの値と、物理量の初期状態Ginit_selの対応する値の一例のみを円の形態でグラフに示す。一般に、初期化関数200は、物理量の目標状態Gtarget_selの技術的に可能な任意の値を選択するために使用可能であってよく、物理量の初期状態Ginit_selの対応する値を検索することができる。
【0051】
図3に示すように、メモリ素子300は、物理量を調整するために電圧または電流を印加するための2つの接続部301、302を備えることができる。メモリ素子300の物理量は、物理量のそれぞれの選択された目標状態Gtarget_sel_iへの方向にドリフトするために、物理量の対応する初期状態Ginit_sel_iに調整可能であってもよい。図5に示すように、物理量のドリフトは、時間の経過とともに生じてもよい。図5は、物理量の初期状態Ginit_sel_iの様々な異なる値から、物理量の対応する目標状態Gtarget_sel_iへの時間の経過に伴う物理量のそれぞれのドリフトを示す。物理量の値は、図5のグラフのy軸に対して対数で描かれており、以下の方法によって説明される実験の結果を反映することができる。図5の例では、物理量の単位は、マイクロシーメンス[μS]であり、物理量は、メモリ素子300のコンダクタンスであってもよい。時間は、グラフのx軸に示されている。時間の経過に伴う物理量のそれぞれのドリフトは、物理量の初期状態Ginit_sel_iの値に応じて変化することを観察することができる。
【0052】
本方法は、以下のステップを含むことができる。図1に示すような第1のステップ101において、メモリ素子300の物理量は、初期時点tinitの初期値Ginit_1に設定することができる。これは、2つの接続部301、302の間に電圧Uまたは電流Iを印加することによって実現することができる。電圧Uまたは電流Iを印加することによって、メモリ素子300をプログラムすることができ、すなわち、メモリ素子300は、物理量の値が変化するように、その内部状態を変化させることができる。例えば、メモリ素子300の結晶化の割合が電圧Uまたは電流Iを印加すると変化してもよい。メモリ素子の物理量を初期値Ginit_1に設定するために、メモリ素子300の物理量を測定することができる。メモリ素子の物理量を初期値Ginit_1に設定したことに応答して、電圧Uまたは電流Iを切断することができる。電圧Uまたは電流Iを切断すると、時間の経過とともにメモリ素子300の物理量のドリフトが引き起こされる可能性がある。これは、熱効果または固有の構造緩和(structural relaxation)あるいはその両方によって引き起こされてもよい。
【0053】
図2に示すような第2のステップ102において、メモリ素子の物理量の実際の値Gact_1は、第2のステップにおいて、経過した所与の期間ΔTの後に測定されてもよく、経過した所与の期間ΔTは、図4に示すように、初期時点から始まる。経過した所与の期間ΔTは、実際の時点tactで終了する。メモリ素子300の物理量の実際の値Gact_1は、実際の時点tactにおいて測定することができる。
【0054】
図2に示すような第3のステップ103において、物理量の初期値Ginit_1および実際の値Gact_1を、第3のステップにおいてデータベース600に記憶することができる。これらの値は、例えば、データベース600の第1のデータセットの形態で、対応する値としてデータベース600に記憶されてもよい。物理量の実際の値Gact_1は、初期値Ginit_1が物理量の対応する実際の値Gact_1に割り当てられるように、およびその逆も同様であるようにデータベース600に記憶されてもよい。
【0055】
第1のステップ101、第2のステップ102、および第3のステップ103は、数回繰り返されてもよい。第1のステップを繰り返すたびに、メモリ素子300の物理量を異なる初期値Ginit_iに設定することができる。さらに、各繰り返しにおいて、物理量の初期値Ginit_iと物理量の実際の値Gact_iとの異なるペアが、繰り返される第3のステップ103においてデータベース600のさらなるデータセットの形態でデータベース600に記憶されてもよい。異なるペアまたはさらなるデータセットは、図6のデータベース600の行の形態で示されている。
【0056】
図5は、本方法の一例を示しており、第2のステップ102における物理量の実際の値Gact_iの測定は、第1の時点で行われてもよく、初期時点と第1の時点との間の時間スパンは、所与の期間に等しい。したがって、本例では、実際の時点tactは、第2のステップ102の各繰り返しについて同じであってもよく、この場合、第1の時点に等しくてもよい。
【0057】
実際には、所与の期間ΔTは、メモリ素子300の将来の使用法に適合させることができる。例えば、メモリ素子300を物理量の対応する初期状態Ginit_selに設定した後、第1の時間スパンが経過した後にメモリ素子300を使用することができる。第1の時間スパンは、本例では所与の期間ΔTに等しくてもよい。メモリ素子300の使用法、すなわち将来の使用法は、メモリ素子300の物理量がドリフト状態にあるときに、メモリ素子300の物理量のそれぞれの選択された目標状態Gtarget_selの形態で記憶された情報を読み出す形態であってもよい。ドリフト状態では、メモリ素子300の物理量は、メモリ素子300の物理量の選択された目標状態Gtarget_selにほぼ等しい。より具体的には、メモリ素子300は、メモリ素子300を物理量の対応する初期状態Ginit_selに設定した時点と使用時点との間の時間スパンが所与の期間ΔTに等しい使用時点で使用することができる。この場合、所与の期間ΔTは、使用時点に適合させることができる。
【0058】
別の例では、実際の時点tactは、第2のステップ102の繰り返しごとに異なっていてもよい。しかしながら、実際の時点tactと初期時点との間の時間スパンは、第2の時間ステップ102の各繰り返しについて、所与の期間ΔTよりも長くてもよい。本方法のこの例は、物理量の実際の値Gact_iの時間の経過に伴う変化が所与のしきい値を下回るように、ステップ102において測定するための実際の時点tactを選択することを含むことができる。
【0059】
図1に示すようなさらなるステップ104において、初期化関数200は、データベース600に基づいて設計されてもよい。初期化関数200の設計は、図7に示すように、第1の関数710の近似を行うことによって実現されてもよい。第1の関数710は、物理量の実際の値Gact_iのそれぞれを、物理量の対応する初期値Ginit_iにマッピングすることができる。第1の関数710は、離散的であってもよく、データベース600から導出されてもよい。一例では、第1の関数710は、許容可能な引数および関数値としてデータベース600に記憶された値のみを含むことができる。言い換えれば、近似は、データベース600に記憶された値に基づいて行うことができる。したがって、第1の関数710は、データベース600に記憶された値によって完全に記述することができる。わかりやすくするために、第1の関数710は、図7のグラフに点線として示されている。同様に、わかりやすくするために、初期化関数200の視覚的表現720は、第1の関数710の下に描かれている。一般に、近似は、初期化関数200がデータベース600に記憶された値を含むことができるように行われてもよい。したがって、ほとんどの場合、初期化関数200の視覚的表現720は、図7のグラフに示す第1の関数710と一致する可能性がある。
【0060】
初期化関数200は、物理量の各実際の値Gact_iを、物理量の対応する近似値Gapprox_iにマッピングすることができる。物理量の各近似値Gapprox_iは、物理量のそれぞれの実際の値Gact_iに対応する物理量のそれぞれの初期値Ginit_iを近似することができる。初期化関数200は、第1の関数710を近似するためのパラメータを含むことができる。例えば、初期化関数200は、多項式であってもよく、以下のように記述することができ、
【数1】
ここで、f(Gact_i)は、物理量の近似値Gapprox_iであってもよく、aは、多項式のj番目のパラメータまたは係数であってもよい。
【0061】
第1の関数710の近似は、物理量の近似値Gapprox_iのすべておよび物理量のそれぞれの初期値Ginit_iを使用することによって構築され得る二乗平均平方根誤差が小さくなるように行われてもよい。初期化関数200は、トレーニングされたニューラル・ネットワークによって提供されてもよい。トレーニングされたニューラル・ネットワークは、第1の関数710を近似することができる。
【0062】
一例では、初期化関数200は、時間に依存しなくてもよい。さらなる例によると、初期化関数200は、変更可能な物理量のそれぞれの選択された目標状態Gtarget_selをべき関数の指数として含み、物理量の対応する初期状態Ginit_selをべき関数の関数値として含む、べき関数であってもよい。
【0063】
例えば、初期化関数は、f(G)=a*e-b*G+cに等しくてもよく、ここで、Gは、変更可能な物理量のそれぞれの選択された目標状態Gtarget_selであり、f(G)は、物理量の対応する初期状態Ginit_selであり、a、bおよびcは、初期化関数の係数である。
【0064】
さらなる例では、本方法は、メモリ素子の物理量のさらなる実際の値Gact_f_1_1と、実際の期間ΔTf_1_1とを測定することをさらに含んでよく、実際の期間ΔTf_1_1は、初期時点と第2のステップ102のサブステップ102.1におけるさらなる実際の時点tact_f_1_1との間の経過時間によって規定される。第2のステップ102のさらなるサブステップ102.2において、物理量のさらなる実際の値Gact_f_1_1および実際の期間ΔTf_1_1は、図8に示すような第2のデータベース800に記憶されてもよい。第2のデータベース800は、データベース600の値を含むことができる。一例では、物理量のさらなる実際の値Gact_f_1_1および実際の期間ΔTf_1_1は、データベース600に記憶されてもよい。
【0065】
第2のステップ102のサブステップ102.1およびさらなるサブステップ102.2は、初期時点から時間が経過している間、繰り返されてもよい。サブステップ102.1および102.2を繰り返すことにより、物理量のいくつかの異なるさらなる実際の値Gact_f_i_jおよび対応する実際の期間ΔTf_i_jが第2のデータベース800に記憶されてもよい。図4に示すように、サブステップ102.1、102.2を繰り返すたびに、jの値は、1つだけ増加することができる。
【0066】
第2のステップ102を繰り返すたびに、iの値は、1つだけ増加することができる。実際には、対応する実際の期間ΔTf_i_jは、図4に示すように、第2のステップ102の各繰り返しにおいて同じであってもよい。しかしながら、別の例では、対応する実際の期間ΔTf_i_jは、第2のステップ102の繰り返しごとに異なってもよい。
【0067】
物理量のさらなる実際の値Gact_f_i_jおよび対応する実際の期間ΔTf_i_jは、それぞれ対応する値のペアとしてデータベース800に記憶されてもよい。さらに、物理量のさらなる実際の値Gact_f_i_jおよび対応する実際の期間ΔTf_i_jは、物理量のさらなる実際の値Gact_f_i_jおよび対応する実際の期間ΔTf_i_jを検索するための開始点として使用することができる対応する初期値Ginit_iを、物理量のさらなる実際の値Gact_f_i_jおよび対応する実際の期間ΔTf_i_jに割り当てることができるように、およびその逆も同様であるように、データベース800に記憶されてもよい。
【0068】
例えば、データベース800は、図8に示すように、異なる初期値Ginit_iごとにデータエントリの2つの対応する行を含むことができる。対応する2つの行のデータエントリは、物理量のさらなる実際の値Gact_f_i_jと、対応する実際の期間ΔTf_i_jとを含むことができる。
【0069】
第2のデータベース800が与えられると、第2のデータベース800に基づいて、1つまたは複数のさらなる初期化関数を設計することができる。
【0070】
一例では、対応する時間依存の初期化関数fは、物理量の各初期値Ginit_iに対して設計することができる。対応する時間依存の初期化関数は、メモリ素子300の物理量の対応する初期状態Ginit_iから始まる、メモリ素子300の物理量の時間依存のドリフトを表すことができる。時間依存の各初期化関数は、物理量のそれぞれの初期値Ginit_iに対応する2つの行のデータエントリに基づいて設計することができる。時間依存の初期化関数f、..f、..f図5に示す。
【0071】
別の例によると、本方法は、グローバル初期化関数900を設計することをさらに含むことができる。グローバル初期化関数900は、メモリ素子300の物理量のそれぞれの選択された目標状態Gtarget_selとメモリ素子300の物理量の対応する初期状態Ginit_selとの間の関係と、メモリ素子の物理量を対応する初期状態Ginit_selに設定した後の選択された経過期間ΔTselと、を表すことができる。選択された経過期間ΔTselは、メモリ素子300の所定の将来の使用法に依存してもよい。グローバル初期化関数900は、物理量のそれぞれの選択された目標状態Gtarget_selと、引数としての選択された経過期間ΔTselと、関数値としての物理量の対応する初期状態Ginit_selと、を含むことができる。グローバル初期化関数900の設計は、時間依存の初期化関数f、..f、..fに基づいて行うことができる。
【0072】
例えば、ニューラル・ネットワークは、時間依存の初期化関数f、..f、..fおよび物理量の対応する初期値Ginit_iを使用してトレーニングすることができる。ニューラル・ネットワークは、第1の入力、第2の入力、および第1の出力を含むことができる。一例では、ニューラル・ネットワークをトレーニングするためのトレーニング・データセットのi番目のバッチは、それぞれの時間依存の初期化関数fの引数と関数値、および物理量の対応する初期値Ginit_iを含むことができる。ネットワークのトレーニング中、i番目の時間依存の初期化関数fの関数値はそれぞれ、第1の出力のそれぞれの目標出力値としての役割を果たすことができる。さらに、選択された経過期間ΔTselの対応する値、すなわち、i番目の時間依存の初期化関数fの対応する引数をそれぞれ、第1の入力に対するそれぞれの値として使用することができる。物理量の対応する初期値Ginit_iは、トレーニング中に第1の入力および第1の出力のすべての変化する値に対する、第2の入力の一定の入力値として使用することができる。
【0073】
図10は、ニューロモルフィック・ニューロン装置1001(NNA1001)と、図13に示すメモリスタ701のクロスバー・アレイ700と、を含む集積回路1000(IC1000)を示す。IC1000は、CMOS回路の形態で実装することができる。CMOS回路は、デジタルまたはアナログあるいはその両方の回路を含むことができる。
【0074】
NNA1001は、図11に示すように、入力信号x(t-n)…x(t-3)、x(t-2)、x(t-1)、x(t)のストリームを受信するように構成されてもよい。これらの入力信号は、時系列を構成することができる。NNA1001の現在の入力信号は、信号x(t)であってもよい。以前に受信した1つまたは複数の入力信号は、信号x(t-n)…x(t-3)、x(t-2)、x(t-1)であってもよい。入力信号の各信号は、値、例えば浮動小数点数に対応することができる。NNA1001がアナログ回路として実装されている場合、入力信号は、電流であってもよい。NNA1001がデジタル回路の形態で実装されている場合、入力信号は、2進化されていてもよい。
【0075】
図12は、ニューラル・ネットワーク30を示す。ニューラル・ネットワーク30は、k個の入力部、例えば、入力部in1、in2、…inkを含む入力層31を含むことができる。さらに、ニューラル・ネットワーク30は、p個のニューロン、例えば、ニューロンn11、n12、n13…n1pを含む第1の隠れ層32を含むことができる。さらに、ニューラル・ネットワーク30は、m個のニューロン、例えばニューロンn21、n22、n23…n2mを含む第2の隠れ層33を含むことができる。NNA1001は、ネットワーク30の実際の層のニューロンのうちの1つをシミュレートすることができ、ここで、NNA1001は、ネットワーク30の前の層のニューロンの出力値を受け取ることができる。前の層は、第1の隠れ層32であってもよい。実際の層は、第2の隠れ層33であってもよい。
【0076】
ニューラル・ネットワーク30は、入力信号in1(t)、in2(t)、…、ink(t)などのニューラル・ネットワーク30の入力信号を処理するように構成されてもよい。例えば、信号in1(t-n)…、in1(t-1)、in1(t)、in2(t-n)…、in2(t-1)、in2(t)、ink(t-n)…、ink(t-1)、ink(t)のそれぞれは、ニューラル・ネットワーク30の対応する入力部in1、in2、…、inkにおいて、それぞれの時間ステップt-n、…、t-1、tにおいて入力することができる画像のそれぞれのピクセルを示すことができる。以下では、ニューラル・ネットワーク30の入力信号は、ニューラル・ネットワーク30の入力信号と呼ばれ、NNA1001の入力信号は、入力信号と呼ばれる。
【0077】
入力信号x(t-n)…x(t-3)、x(t-2)、x(t-1)、x(t)の各信号は、これらの入力信号がそれぞれ、第1のベクトルと第2のベクトルとのスカラー積(scalar product)に等しくなり得るように、IC1000によって生成されてもよい。第1のベクトルのエントリは、それぞれの時間ステップt-n、…、t-3、t-2、t-1、tにおける、ニューラル・ネットワーク30の前の層、例えば第1の隠れ層32のニューロン、例えばニューロンn11、n12、n13…n1pのうちの1つの出力値をそれぞれ表すことができる。これらの出力値は、浮動小数点数であってもよく、それぞれの時間ステップt-n、…、t-3、t-2、t-1、tにおける、前の層の第1のニューロンn11の出力値としてout11(t-n)…out11(t-3)、out11(t-2)、out11(t-1)、out11(t)、前の層の第2のニューロンn12の出力値としてout12(t-n)…out12(t-3)、out12(t-2)、out12(t-1)、out12(t)、前の層の第3のニューロンn13の出力値としてout13(t-n)…out13(t-3)、out13(t-2)、out13(t-1)、out13(t)、および前の層のp番目のニューロンn1pの出力値としてout1p(t-n)…out1p(t-3)、out1p(t-2)、out1p(t-1)、out1p(t)と呼ばれることがある。
【0078】
第2のベクトルのエントリは、NNA1001がシミュレートすることができるニューロンと、前の層の対応するニューロン、例えばニューロンn11、n12、n13、…、n1pとの間の接続の強さを示す重み、例えば、w11、w12、w13、…、w1pの値をそれぞれ表すことができる。同様に、NNA1001が実際の層のニューロンn2iをシミュレートすることができる場合、第2のベクトルのエントリはそれぞれ、重みwi1、wi2、wi3、…、wipの値であってもよい。
【0079】
一例では、NNA1001は、実際の層の第1のニューロン、例えばニューロンn21をシミュレートすることができ、その後、実際の層の第2のニューロン、例えばニューロンn22をシミュレートすることができ、以下同様であり、実際の層のm番目のニューロン、例えばニューロンn2mをシミュレートすることができる。
【0080】
NNA1001が第2の隠れ層33の第1のニューロンn21をシミュレートすることができる場合、現在の入力信号は、x(t)=w11*out11(t)+w12*out12(t)+w13*out13(t)+…+w1p*out1p(t)であってもよい。したがって、以前に受信した入力信号x(t-n)のうちの1つは、x(t-n)=w11*out11(t-n)+w12*out12(t-n)+w13*out13(t-n)+…+w1p*out1p(t-n)であってもよい。もちろん、前の層のニューロンの出力値のうちの1つがゼロに等しい場合がある。これは、前の層のニューロンがスパイキング・ニューロン(spiking neuron)である場合に、頻繁に起こる可能性がある。
【0081】
別の例によると、NNA1001は、第1の隠れ層32のニューロンのうちの1つ、例えばニューロンn11をシミュレートすることができる。この場合、現在の入力信号は、x(t)=w011*in1(t)+w012*in2(t)+w013*in3(t)+…+w01k*ink(t)であってもよい。したがって、以前に受信した入力信号x(t-n)のうちの1つは、x(t-n)=w011*in1(t-n)+w012*in2(t-n)+w013*in3(t-n)+…+w01k*ink(t-n)であってもよい。
【0082】
NNA1001は、現在の入力信号に基づいてNNA1001の現在の出力信号を生成するように構成されてもよい。例えば、NNA1001は、現在の出力信号を生成するために、活性化関数、例えば、シグモイドまたは正規化線形ユニット(rectified linear unit)を含むことができる。現在の入力信号を活性化関数の入力信号として使用することができる。一例では、NNA1001は、現在の入力信号および以前に受信した入力信号に基づいて現在の出力信号を生成するように構成されてもよい。現在の出力信号は、ネットワーク30をシミュレートするための基礎として、特にネットワーク30の挙動をシミュレートするIC1000の出力信号を生成するための基礎としての役割を果たすことができる。
【0083】
図13は、メモリ素子701のクロスバー・アレイ700を詳細に示す。メモリ素子701は、抵抗性メモリ素子(または複数の抵抗性メモリ素子を含むことができる抵抗性処理ユニット(RPU))であってもよく、以下では、メモリスタ701と呼ばれることもある。メモリスタ701は、ニューラル・ネットワーク30の重みWijのために、IC1000内のローカル・データ・ストレージを提供することができる。図13は、例えば、重みWijの関数として行列-ベクトル乗算を実行することができるクロスバー・アレイ700の2次元(2D)図である。クロスバー・アレイ700は、導電性行ワイヤ702、702…702のセットと、導電性行ワイヤ7021~nのセットと交差することができる導電性列ワイヤ708、708…708のセットとから形成されてもよい。列ワイヤ7081~mが行ワイヤ7021~nと交差することができる領域は、図13では交点として示され、以下では交点と呼ばれることがある。IC1000は、交点において列ワイヤ7081~mと行ワイヤ7021~nとの間に電気的接触がないように設計することができる。例えば、列ワイヤ7081~mは、交点において行ワイヤ7021~nの上または下に案内されてもよい。
【0084】
交点の領域では、メモリスタ701は、列ワイヤ7081~mおよび行ワイヤ7021~nに対して配置されてもよく、それにより、それぞれの電圧v…vがクロスバー700の入力接続部703、703...703nに印加され、それによって行ワイヤ7021~nに印加され得る場合、各メモリスタ701ijを通って単一電流Iijが流れることができる。メモリスタ701は、図13において、それぞれが、Gijとしてそれぞれ描かれている、それ自体の調整可能/更新可能な抵抗性コンダクタンスを有する抵抗素子として示されており、ここでi=1..mおよびj=1..nである。したがって、本例では、各コンダクタンスGijは、それぞれのメモリスタ701ijのそれぞれの物理量を表す。各抵抗性コンダクタンスGijは、ニューラル・ネットワーク30の対応する重みWijに対応することができる。
【0085】
各列ワイヤ708は、それぞれの電圧v…vを対応する入力接続部703、703…703に印加することによって、それぞれのメモリスタ701i1、701i2…701inにおいて生成された単一電流Ii1、Ii2…Iinを合計することができる。例えば、図13に示すように、列ワイヤ708によって生成される電流Iは、式I=v・Gi1+v・Gi2+v・Gi2+…+v・Ginに従う。列ワイヤ708によって生成される第1の出力電流Iは、式I=v・G11+v・G12+v・G13+…+v・G1nに従う。したがって、アレイ700は、メモリスタ701に記憶された値に、電圧v1~nによって規定される行ワイヤ入力を乗算することによって、行列-ベクトル乗算を計算する。したがって、単一の乗算v・Gijは、メモリスタ701ij自体に加えてアレイ700の関連する行または列ワイヤを使用して、アレイ700の各メモリスタ701ijにおいて局所的に実行されてもよい。以下では、電流I2~mは、さらなる出力電流と呼ばれることがある。
【0086】
図13のクロスバー・アレイ700により、例えば、ベクトルxと行列Wとの乗算を計算することが可能になることがある。行列Wは、エントリWijを含むことができる。行列WのエントリWijは、以下のようにクロスバー・アレイの対応するコンダクタンスにマッピングすることができる。
【数2】
ここで、Gmaxは、クロスバー・アレイ700のコンダクタンスの範囲によって与えられ、Wmaxは、行列Wの大きさに応じて選択される。行列Wのエントリは、ニューラル・ネットワーク30の重みWijまたは上記のwijに等しくてもよい。ベクトルxは、電圧v…vに対応することができる。IC1000は、前の層、例えば第1の隠れ層32のニューロンの対応する出力値out11(t)、out12(t)、out13(t)…out1p(t)の関数としてそれぞれの電圧v…vを生成するように構成されてもよい。
【0087】
図13は、IC1000の抵抗性メモリ素子70111、70112…7011nの第1のアセンブリ704の一例を示す。第1のアセンブリ704は、それぞれの抵抗性メモリ素子70111、70112…7011nに単一電流I11、I12…I1nを生成するために、対応する電圧v…vをそれぞれの入力接続部703、703…703に印加するための入力接続部703、703…703と、第1の出力電流Iを出力するための第1の出力接続部705と、を含むことができる。メモリスタ70111、70112…7011nは、第1の出力電流Iが単一電流I11、I12…I1nの和となるように互いに接続されてもよい。メモリ素子70111、70112…7011n間のそのような接続は、行ワイヤ7021~nおよび第1の列ワイヤ708によって提供することができる。第1の出力電流Iの値は、ネットワーク30の層を通る値の伝播を用いてニューラル・ネットワーク30の出力値を計算するための第1のスカラー積の値を表すことができる。第1のスカラー積は、例えば、x(t)=w11*out11(t)+w12*out12(t)+w13*out13(t)+…+w1p*out1p(t)またはx(t)=w011*in1(t)+w012*in2(t)+w013*in3(t)+…+w01k*ink(t)に等しいか、あるいはその倍数もしくは分数であってもよい。前者の場合、NNA1001は、ニューロンn21をシミュレートすることができ、後者の場合は、ニューロンn11をシミュレートすることができる。さらに、前者の場合、行ワイヤの数nは、pに等しくてもよく、後者の場合、行ワイヤの数nは、kに等しくてもよい。
【0088】
第1のアセンブリ704の第1の出力接続部705は、NNA1001の入力部13に結合されてもよい。IC1000は、第1の出力電流Iに基づいて電流入力信号x(t)を生成するように構成されてもよい。一例では、NNA1001は、入力信号x(t)をアナログ信号として処理するように構成されてもよい。その場合、第1の出力電流Iは、電流入力信号x(t)であってもよい。
【0089】
別の例では、IC1000は、アナログ・デジタル変換器706(ADC706)を用いて、第1の出力電流Iに基づいて電流入力信号x(t)を生成するように構成されてもよい。一例では、NNA1001は、第1の出力接続部705からのみ電流入力信号x(t)を受信することができる。本例は、NNA1001がニューラル・ネットワーク30の出力層34の出力ニューロンをシミュレートすることができる適用例を指すことができる。本例では、他の列ワイヤ7082~mは、必要でない場合がある。
【0090】
IC1000を使用して、2つ以上のニューロンを含むネットワーク30の層、例えば、第1の隠れ層32または第2の隠れ層33をシミュレートすることができる場合は、クロスバー700の2つ以上の列ワイヤが必要である。列ワイヤ7081~mの数は、IC1000がシミュレートすることができる、その層のニューロンの数mに等しくてもよい。行ワイヤ7021~nの数は、ネットワーク30の前の層のニューロンの数に等しくてもよい。前の層が入力層31である場合、行ワイヤの数nは、kに等しくてもよい。前の層が第1の隠れ層32である場合、行ワイヤの数nは、pに等しくてもよい。
【0091】
図14は、クロスバー・アレイ700の1つまたは複数のメモリスタ701ijなどの、変更可能な物理量を有するメモリ素子を含む記憶デバイスをセット・アップするための方法の流れ図である。クロスバー・アレイ700は、記憶デバイスであってもよい。以下、セット・アップ方法と呼ばれる本方法は、メモリ素子の物理量、例えば、クロスバー・アレイ700の1つまたは複数のメモリスタ701ijのコンダクタンスをセット・アップすることを含むことができる。セット・アップ方法は、以下のステップを含むことができる。
【0092】
セット・アップ方法の第1のステップ141において、物理量の目標状態を選択することができる。上述した使用事例を参照すると、クロスバー・アレイ700の各RME701ijのコンダクタンスのそれぞれの目標状態は、RME701ijのコンダクタンス値を用いてニューラル・ネットワーク30の重みWijの表現を提供するために、Gijに等しくてもよい。
【0093】
セット・アップ方法の第2のステップ142において、物理量の初期状態、例えば、RME701ijのコンダクタンスを、初期化関数を使用して計算することができる。初期化関数は、物理量の目標状態に依存してもよい。例えば、初期化関数200は、図7に示すような初期化関数200の視覚的表現720であってもよい。上述した使用事例を参照すると、各RME701ijのコンダクタンスGijのそれぞれの目標状態は、図7のグラフに示す選択された目標状態Gtarget_selに等しく、次々と設定されてもよい。各RME701ijについて、それぞれのRME701ijのコンダクタンスの対応する初期状態Ginit_selは、初期化関数200を使用して、選択された目標状態Gtarget_selに基づいて計算されてもよい。各RME701ijのコンダクタンスの対応する初期状態Ginit_selは、以下ではGij_initと呼ばれることがある。
【0094】
セット・アップ方法の第3のステップ143において、物理量を、計算された物理量の初期状態に設定することができる。上述した使用事例を参照すると、各RME701ijのコンダクタンスを、コンダクタンスの対応する初期状態Gij_initに設定することができる。これは、各RME701ijにプログラミング電圧または電流を印加することによって実現することができる。以下では、各RME701ijのコンダクタンスをコンダクタンスの対応する初期状態Gij_initに設定することができる時点は、設定時点と呼ばれることがある。
【0095】
セット・アップ方法の第3のステップ143の後、物理量の値、例えば各RME701ijのコンダクタンスは、図5のグラフのそれぞれの曲線と同様に、物理量の対応する初期状態、例えばコンダクタンスGij_initから、物理量のそれぞれの目標状態、例えば各RME701ijのコンダクタンスGijへの方向に、時間に対してドリフト、例えば減衰してもよい。一例では、各RME701ijのコンダクタンスは、設定時点の後に所与の期間ΔTが経過した後、ドリフト状態、特に減衰状態にあってもよい。各RME701ijのコンダクタンスのドリフト状態は、各RME701ijのコンダクタンスGijのそれぞれの目標状態にほぼ等しくてもよい。例えば、減衰状態にある各RME701ijのコンダクタンスの値は、各RME701ijのコンダクタンスGijのそれぞれの目標状態から10パーセント未満逸脱していてもよい。さらなる例によると、減衰状態にある各RME701ijのコンダクタンスの値は、各RME701ijのコンダクタンスGijのそれぞれの目標状態から1パーセント未満逸脱していてもよい。
【0096】
したがって、それぞれのRME701ijは、RME701ijのそれぞれのコンダクタンスをそれぞれの初期状態Gij_initに設定し、RME701ijのそれぞれのコンダクタンスがそれぞれの初期状態Gij_initからそれぞれのドリフト状態にそれぞれドリフトすることを含むように構成されてもよい。それぞれのコンダクタンスのそれぞれの初期状態Gij_initは、それぞれの初期化関数を用いてプロセッサによって計算可能であってもよい。一例では、それぞれの初期化関数は、各RME701ijについて異なっていてもよい。別の例では、それぞれの初期化関数、例えば初期化関数200は、各RME701ijについて同じであってもよい。プロセッサは、外部プロセッサであってもよく、またはIC1000上に実装されてもよい。プロセッサは、各RME701ijのコンダクタンスGijのそれぞれの目標状態に基づいて各RME701ijのそれぞれの初期状態Gij_initを計算するために、初期化関数のパラメータまたは係数を記憶することができる。
【0097】
セット・アップ方法は、コンダクタンスを計算されたコンダクタンスの初期状態に設定する初期時点から実際の時点までの経過時間を測定することをさらに含むことができる。さらに、セット・アップ方法は、測定された経過時間をさらなる所与の期間と比較することを含むことができる。さらなる所与の期間は、メモリ素子の使用法、例えばクロスバー・アレイ700の使用法に依存することがある。セット・アップ方法は、測定された経過時間がさらなる所与の期間よりも大きい場合に、動作のためにメモリ素子を解放することを含むことができる。
【0098】
例えば、電圧v1~nは、経過時間がさらなる所与の期間よりも大きくなるまで、入力接続部703、703...703に印加されなくてもよい。あるいは、言い換えれば、経過時間がさらなる所与の期間よりも大きい場合、電圧v1~nは、入力接続部703、703…703に印加されてもよい。一例では、電圧v1~nは、経過時間がさらなる所与の期間よりも大きい場合にのみ、入力接続部703、703…703に印加されてもよい。
【0099】
さらなる所与の期間は、上述した所与の期間ΔTに対応してもよい。それによって、初期化関数200を検索するための実験の知識を使用することができる。ほとんどの場合、所与の期間ΔTは、所与の期間ΔTが経過した後の、時間の経過に伴う物理量のさらなるドリフト、例えばコンダクタンスのさらなる減衰が、物理量、例えばコンダクタンスを初期状態にプログラミングした直後の、時間の経過に伴う物理量のドリフト、例えばコンダクタンスの減衰と比較して低くなり得るように選択されてもよい。
【0100】
一例では、各RME701ijのコンダクタンスのそれぞれの初期状態Gij_initは、グローバル初期化関数900に基づいて、各RME701ijのコンダクタンスGijのそれぞれの目標状態と、各RME701ijのそれぞれの選択された動作時点とに基づいて計算されてもよい。各RME701ijのそれぞれの選択された動作時点は、一例では等しくてもよい。別の例では、各RME701ijのそれぞれの選択された動作時点は、互いに異なっていてもよい。これは、各RME701ijのそれぞれの動作時点を事前に知ることができる場合に、実用的である場合がある。
【0101】
例えば、マルチ・コア・アーキテクチャは、いくつかのコアを含むことができ、各コアは、IC1000の形態で設計されることがある。コアの第2のコアは、第2の隠れ層33をシミュレートするように構成されてもよく、コアの第1のコアは、前の層、例えば第1の隠れ層32をシミュレートするように構成されてもよい。ネットワーク30のシミュレーションは、第1の隠れ層32のシミュレーションから開始することができ、第2の隠れ層33のシミュレーションを進めることができるため、第1のコアの第1の使用時点は、第2のコアの第2の使用時点よりも早いことがある。したがって、一例では、第1のコアのRME701ijのそれぞれのコンダクタンスは、第1のコアのRME701ijのそれぞれのコンダクタンスが、第2のコアのRME701ijのそれぞれのコンダクタンスのそれぞれがコンダクタンスGijのそれぞれの目標状態に到達することができるよりも早く、コンダクタンスGijのそれぞれの目標状態に到達することができるように、コンダクタンスのそれぞれの初期状態Gij_initに設定されてもよい。
【0102】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照して本明細書に記載されている。流れ図またはブロック図あるいはその両方の各ブロック、ならびに流れ図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実施することができることが理解されよう。
【0103】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含むことができる。
【0104】
コンピュータ可読記憶媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形のデバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述の任意の適切な組合せであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されたパンチ・カードまたは溝内の隆起構造などの機械的に符号化されたデバイス、および前述の任意の適切な組合せが含まれる。コンピュータ可読記憶媒体は、本明細書で使用される場合、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を通して伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通して送信される電気信号などの、それ自体一過性の信号であると解釈されるべきではない。
【0105】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークまたはワイヤレス・ネットワークあるいはその組合せを介して、外部コンピュータもしくは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを含むことができる。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
【0106】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいはSmalltalk(登録商標)またはC++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、一部はユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして、一部はユーザのコンピュータ上で、一部はリモート・コンピュータ上で、または完全にリモート・コンピュータもしくはサーバ上で実行されてもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてもよい。一部の実施形態では、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることによって、コンピュータ可読プログラム命令を実行することができる。
【0107】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照して本明細書に記載されている。流れ図またはブロック図あるいはその両方の各ブロック、ならびに流れ図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実施することができることを理解されよう。
【0108】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作を実施するための手段を作成するように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令はまた、内部に命令が記憶されたコンピュータ可読記憶媒体が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作の態様を実施する命令を含む製品を構成するように、コンピュータ、プログラム可能なデータ処理装置、または他のデバイスあるいはその組合せに特定のやり方で機能するように指示することができるコンピュータ可読記憶媒体に記憶されてもよい。
【0109】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能な装置、または他のデバイス上で実行される命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作を実施するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスにロードされ、一連の動作ステップをコンピュータ、他のプログラム可能な装置、または他のデバイス上で実行させて、コンピュータ実施プロセスを生成することができる。
【0110】
図中の流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能、および動作を示す。これに関して、流れ図またはブロック図の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を構成する、モジュール、セグメント、または命令の一部を表すことができる。一部の代替の実施態様では、ブロックに示されている機能は、図に示されている順序とは異なる順序で行われてもよい。例えば、連続して示されている2つのブロックは、実際には、実質的に同時に実行することができ、またはブロックは、含まれている機能性に応じて、時には逆の順番で実行することができる。ブロック図または流れ図あるいはその両方の各ブロック、およびブロック図または流れ図あるいはその両方のブロックの組合せは、指定される機能もしくは動作を実行する、または専用のハードウェアおよびコンピュータ命令の組合せを実行する専用のハードウェア・ベースのシステムによって実施することができることにも留意されたい。
本明細書によれば、以下の各項目もまた開示される。
[項目1]
メモリ素子を含む記憶デバイスであって、上記メモリ素子が情報を記憶するための変更可能な物理量を含み、上記物理量がドリフト状態にあり、上記メモリ素子が上記物理量を初期状態に設定するように構成され、上記メモリ素子が上記初期状態から上記ドリフト状態への上記物理量のドリフトを含み、上記物理量の上記初期状態が初期化関数を用いて計算可能であり、上記初期化関数が上記物理量の目標状態に依存し、上記物理量の上記目標状態が上記物理量の上記ドリフト状態にほぼ等しい、記憶デバイス。
[項目2]
対応する上記メモリ素子の上記物理量のそれぞれの上記目標状態が上記記憶デバイスの使用法に適合されている、項目1に記載の記憶デバイス。
[項目3]
ニューラル・ネットワークの層をシミュレートするためのニューロモルフィック・ニューロン装置をさらに含み、上記ニューロモルフィック・ニューロン装置が入力接続部を含み、上記入力接続部が第1のアセンブリの出力接続部に接続されている、項目1または2に記載の記憶デバイス。
[項目4]
メモリ素子の第1のアセンブリを含む集積回路であって、上記メモリ素子の第1のアセンブリが、それぞれの上記メモリ素子に単一電流を生成するために、対応する電圧をそれぞれの接続部に印加するための上記接続部と、出力電流を出力するための少なくとも1つの出力接続部とを含み、上記メモリ素子が、上記出力電流が上記単一電流の和であるように互いに接続されており、上記集積回路が、上記印加された電圧に基づいて上記出力電流を生成するように構成されており、各メモリ素子がそれぞれの変更可能なコンダクタンスを含み、上記それぞれのコンダクタンスがそれぞれのドリフト状態にあり、上記それぞれのメモリ素子が上記それぞれのコンダクタンスをそれぞれの初期状態に設定するように構成されており、上記それぞれのメモリ素子が上記それぞれの初期状態から上記それぞれのドリフト状態への上記それぞれのコンダクタンスのそれぞれのドリフトを含み、上記それぞれのコンダクタンスの上記それぞれの初期状態がそれぞれの初期化関数を用いて計算可能であり、上記それぞれの初期化関数が上記それぞれのコンダクタンスのそれぞれの目標状態に依存し、上記それぞれのコンダクタンスの上記それぞれの目標状態が上記それぞれのコンダクタンスの上記それぞれのドリフト状態にほぼ等しい、集積回路。
[項目5]
対応する上記メモリ素子の物理量の上記それぞれの目標状態が上記集積回路の使用法に適合されている、項目4に記載の集積回路。
[項目6]
ニューラル・ネットワークの層をシミュレートするためのニューロモルフィック・ニューロン装置をさらに含み、上記ニューロモルフィック・ニューロン装置が入力接続部を含み、上記入力接続部が上記第1のアセンブリの上記出力接続部に接続されている、項目5に記載の集積回路。
[項目7]
メモリ素子を含む記憶デバイスをセット・アップするためのコンピュータ実施方法であって、上記メモリ素子が、変更可能な物理量を含み、
上記物理量の目標状態を選択することと、
初期化関数を使用して上記物理量の初期状態を計算することであって、上記初期化関数が上記物理量の上記目標状態に依存する、上記計算することと、
上記物理量を上記計算された上記物理量の初期状態に設定することと、
を含む、コンピュータ実施方法。
[項目8]
上記物理量を上記計算された上記物理量の初期状態に設定した初期時点から実際の時点までの経過時間を測定することと、
上記測定された経過時間を所与の期間と比較することであって、上記所与の期間が上記メモリ素子の使用法に依存する、上記比較することと、
上記測定された経過時間が上記所与の期間よりも大きい場合に、上記メモリ素子を動作のために解放することと、
をさらに含む、項目7に記載のコンピュータ実施方法。
[項目9]
初期化関数を設計するためのコンピュータ実施方法であって、上記初期化関数が、情報を記憶するためのメモリ素子の変更可能な物理量のそれぞれの選択された目標状態と、上記メモリ素子の上記物理量の対応する初期状態との間の関係を表しており、上記メモリ素子の上記物理量が、上記物理量の上記それぞれの選択された目標状態への方向にドリフトするための上記物理量の上記対応する初期状態に調整可能であり、上記コンピュータ実施方法が、
第1のステップにおいて、上記メモリ素子の上記物理量を初期時点の初期値に設定することと、
第2のステップにおいて、経過した所与の期間の後に上記メモリ素子の上記物理量の実際の値を測定することであって、上記経過した所与の期間が上記初期時点から始まる、上記測定することと、
第3のステップにおいて、上記物理量の上記初期値および上記実際の値をデータベースに記憶することと、
上記第1のステップ、上記第2のステップ、および上記第3のステップを繰り返し、上記第1のステップを繰り返すたびに上記メモリ素子の上記物理量を異なる初期値に設定して、上記物理量の上記初期値と上記実際の値とのいくつかの異なるペアを上記データベースに記憶することと、
上記データベースに基づいて上記初期化関数を設計することと、
を含む、コンピュータ実施方法。
[項目10]
上記第2のステップにおける上記メモリ素子の上記物理量の上記実際の値の上記測定が第1の時点において実行され、上記初期時点と上記第1の時点との間の時間スパンが上記所与の期間に等しい、項目9に記載のコンピュータ実施方法。
[項目11]
上記所与の期間が上記メモリ素子の将来の使用法に適合されている、項目9または10に記載のコンピュータ実施方法。
[項目12]
上記第2のステップにおける上記メモリ素子の上記物理量の上記実際の値の上記測定が、上記物理量の上記実際の値の時間の経過に伴う変化が所与のしきい値を下回る場合に実行される、項目9から11のいずれか一項に記載のコンピュータ実施方法。
[項目13]
上記初期化関数が時間に依存しない、項目9から12のいずれか一項に記載のコンピュータ実施方法。
[項目14]
上記初期化関数が、上記変更可能な物理量の上記それぞれの選択された目標状態をべき関数の指数として含み、上記物理量の上記対応する初期状態を上記べき関数の関数値として含む、上記べき関数である、項目13に記載のコンピュータ実施方法。
[項目15]
上記初期化関数が、f(G)=a*e -b*G +cに等しく、ここで、Gは上記変更可能な物理量の上記それぞれの選択された目標状態であり、f(G)は上記物理量の上記対応する初期状態であり、a、bおよびcは上記初期化関数の係数である、項目14に記載のコンピュータ実施方法。
[項目16]
上記メモリ素子の上記物理量のさらなる実際の値および実際の期間を測定することであって、上記実際の期間が上記第2のステップのサブステップにおいて上記初期時点と実際の時点との間の経過時間によって規定される、上記測定することと、
上記第2のステップのさらなるサブステップにおいて、上記物理量の上記さらなる実際の値および上記実際の期間を上記データベースに記憶することと、
上記物理量のいくつかの異なるさらなる実際の値および対応する実際の期間を上記データベースに記憶するために、上記初期時点から時間が経過する間に、上記第2のステップの上記サブステップおよび上記さらなるサブステップを繰り返すことと、
上記データベースに基づいて上記初期化関数を設計することと、
をさらに含む、項目9から15のいずれか一項に記載のコンピュータ実施方法。
[項目17]
上記物理量の各初期値について対応する時間依存の初期化関数を設計することをさらに含み、上記対応する時間依存の初期化関数が、上記メモリ素子の上記物理量の上記対応する初期状態から始まる上記メモリ素子の上記物理量の時間依存のドリフトを表す、項目16に記載のコンピュータ実施方法。
[項目18]
上記初期化関数が、上記メモリ素子の上記変更可能な物理量の上記それぞれの選択された目標状態と上記メモリ素子の上記物理量の上記対応する初期状態との間の上記関係と、上記メモリ素子の上記物理量を上記対応する初期状態に設定した後の選択された経過期間と、を表すように上記初期化関数を設計することをさらに含み、上記選択された経過期間が上記メモリ素子の所定の将来の使用法に依存する、項目16または17に記載のコンピュータ実施方法。
[項目19]
初期化関数を設計するためのコンピュータ・システムであって、上記初期化関数が、情報を記憶するためのメモリ素子の変更可能な物理量のそれぞれの選択された目標状態と、上記メモリ素子の上記物理量の対応する初期状態との間の関係を表しており、上記メモリ素子の上記物理量が、上記物理量の上記それぞれの選択された目標状態への方向にドリフトするための上記物理量の上記対応する初期状態に調整可能であり、上記コンピュータ・システムが、
1つまたは複数のコンピュータプロセッサと、
1つまたは複数のコンピュータ可読記憶媒体と、
上記1つまたは複数のコンピュータプロセッサのうちの少なくとも1つによる実行のために上記1つまたは複数のコンピュータ可読記憶媒体に記憶されたプログラム命令と、
を含み、上記プログラム命令が、
第1のステップにおいて、上記メモリ素子の上記物理量を初期時点の初期値に設定するプログラム命令と、
第2のステップにおいて、経過した所与の期間の後に上記メモリ素子の上記物理量の実際の値を測定するプログラム命令であって、上記経過した所与の期間が上記初期時点から始まる、上記実際の値を測定するプログラム命令と、
第3のステップにおいて、上記物理量の上記初期値および上記実際の値をデータベースに記憶するプログラム命令と、
上記第1、第2、および第3のステップを繰り返し、上記第1のステップを繰り返すたびに上記メモリ素子の上記物理量を異なる初期値に設定して、上記物理量の上記初期値と上記実際の値とのいくつかの異なるペアを上記データベースに記憶するプログラム命令と、
上記データベースに基づいて上記初期化関数を設計するプログラム命令と、を含む、
コンピュータ・システム。
[項目20]
上記第2のステップにおける上記メモリ素子の上記物理量の上記実際の値の上記測定が第1の時点で実行され、上記初期時点と上記第1の時点との間の時間スパンが上記所与の期間に等しい、項目19に記載のコンピュータ・システム。
[項目21]
上記所与の期間が上記メモリ素子の将来の使用法に適合されている、項目19または20に記載のコンピュータ・システム。
[項目22]
初期化関数を設計するためのコンピュータ・プログラムであって、上記初期化関数が、情報を記憶するためのメモリ素子の変更可能な物理量のそれぞれの選択された目標状態と、上記メモリ素子の上記物理量の対応する初期状態との間の関係を表しており、上記メモリ素子の上記物理量が、上記物理量の上記それぞれの選択された目標状態への方向にドリフトするための上記物理量の上記対応する初期状態に調整可能であり、上記コンピュータ・プログラムは、プロセッサに、
第1のステップにおいて、上記メモリ素子の上記物理量を初期時点の初期値に設定する手順と、
第2のステップにおいて、経過した所与の期間の後に上記メモリ素子の上記物理量の実際の値を測定するプログラム命令であって、上記経過した所与の期間が上記初期時点から始まる、手順と、
第3のステップにおいて、上記物理量の上記初期値および上記実際の値をデータベースに記憶する手順と、
上記第1、第2、および第3のステップを繰り返し、上記第1のステップを繰り返すたびに上記メモリ素子の上記物理量を異なる初期値に設定して、上記物理量の上記初期値と上記実際の値とのいくつかの異なるペアを上記データベースに記憶する手順と、
上記データベースに基づいて上記初期化関数を設計する手順と、
を実行させるためのコンピュータ・プログラム。
[項目23]
上記第2のステップにおける上記メモリ素子の上記物理量の上記実際の値の上記測定が第1の時点で実行され、上記初期時点と上記第1の時点との間の時間スパンが上記所与の期間に等しい、項目22に記載のコンピュータ・プログラム。
[項目24]
上記所与の期間が上記メモリ素子の将来の使用法に適合されている、項目22または23に記載のコンピュータ・プログラム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14