(57)【要約】非バイナリ計算方法は、デジタル多状態相変化材料を利用する。加算、減算、乗算、除算は、相変化材料に制御エネルギを適用することで完了する。相変化材料のリセット状態をセット状態に変化させるには不十分な量のエネルギを提供することにより、１以上の数を記憶する。そして算術演算の実行に特徴的なエネルギをさらに提供することにより、計算を実行する。【特許請求の範囲】
【請求項１】
メモリグループを提供し、前記メモリグループは１以上のレジスタを有し、前記レジスタはデジタル多状態相変化材料から成り、前記相変化材料は複数の状態を有し、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記１以上のレジスタにエネルギを提供し、前記レジスタを１以上の前記複数の状態間で変化させることにより、加算、減算、乗算、および除算から成るグループから選択する算術演算を実行する、計算方法。
【請求項２】
前記算術演算は、減算、乗算、および除算から成るグループから選択する、請求項１の方法。
【請求項３】
前記算術演算は、非バイナリ形式で完了する、請求項１の方法。
【請求項４】
前記相変化材料は、Ｉｎ、Ａｇ、Ｔｅ、Ｓｅ、Ｇｅ、Ｓｂ、Ｂｉ、Ｐｂ、Ｓｎ、Ａｓ、Ｓ、Ｓｉ、Ｐ、Ｏ、およびこれらの混合または合金から成るグループから選択する１以上の成分から成る、請求項１の方法。
【請求項５】
前記相変化材料はＧｅとカルコゲン成分とから成る、請求項１の方法。
【請求項６】
前記相変化材料はＳｂをさらに含む、請求項５の方法。
【請求項７】
前記相変化材料は、少なくとも１カルコゲン成分と少なくとも１遷移金属元素とから成る、請求項１の方法。
【請求項８】
前記少なくとも１カルコゲン成分は、ＴｅとＳｅの混合である、請求項７の方法。
【請求項９】
前記少なくとも１遷移金属元素は、Ｃｒ、Ｆｅ、Ｎｉ、Ｎｂ、Ｐｄ、Ｐｔ、およびそれらの混合または合金から成るグループから選択する、請求項７の方法。
【請求項１０】
前記相変化材料は、前記複数の状態から選択する１以上のプログラミング状態を有し、前記プログラミング状態はそれに割り当てた数値を有し、前記プログラミング状態の各々は前記セットエネルギを超えない量のプログラミングエネルギを印加することにより前記リセット状態から得られ、前記プログラミングエネルギは当該プログラミングエネルギに対応するプログラミング状態に関連付けた数値を代表する、請求項１の方法。
【請求項１１】
前記実行するステップは前記相変化材料に１以上の数を格納することを含み、前記格納することは前記相変化材料の１以上の部分を前記１以上の数に関連付けたプログラミング状態に変化させることを含む、請求項１０の方法。
【請求項１２】
前記プログラミング状態は、前記１以上の中間状態の少なくとも１つを含む、請求項１０の方法。
【請求項１３】
前記プログラミング状態は前記リセット状態を含む、請求項１０の方法。
【請求項１４】
前記リセット状態に割り当てる数値はゼロである、請求項１３の方法。
【請求項１５】
前記プログラミング状態は前記セット状態を含む、請求項１０の方法。
【請求項１６】
前記セット状態に割り当てる数値はゼロである、請求項１５の方法。
【請求項１７】
前記プログラミング状態の各々のプログラミングエネルギは、当該プログラミング状態に割り当てた数値に比例する、請求項１０の方法。
【請求項１８】
前記プログラミング状態は、エネルギ的に等間隔で分離する、請求項１０の方法。
【請求項１９】
前記数値は連続整数である、請求項１０の方法。
【請求項２０】
前記連続整数は、プログラミングエネルギの昇順において前記プログラミング状態に関連付ける、請求項１９の方法。
【請求項２１】
前記実行するステップにおいて提供する前記エネルギは、前記プログラミング状態の１つから前記プログラミング状態の他へ前記相変化材料を変化させるために必要なエネルギを含む、請求項１０の方法。
【請求項２２】
前記実行するステップにおいて提供する前記エネルギは、電気エネルギの形式で提供する、請求項１の方法。
【請求項２３】
前記電気エネルギは、１以上の電流パルスの形式である、請求項２２の方法。
【請求項２４】
前記１以上の電流パルスは等エネルギである、請求項２３の方法。
【請求項２５】
前記実行するステップは、前記相変化材料に１数を格納することを含む、請求項１の方法。
【請求項２６】
前記メモリグループの前記レジスタの各々は、異なる桁値に対応する、請求項２５の方法。
【請求項２７】
前記数の各桁は、当該桁の桁値に対応する前記メモリグループのレジスタに格納する、請求項２６の方法。
【請求項２８】
前記実行するステップは、前記相変化材料に複数の数を格納することを含む、請求項１の方法。
【請求項２９】
複数の状態を有するデジタル多状態相変化材料をプログラミングする方法であって、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、前記方法は、
プログラミング方針を確立し、前記プログラミング方針は前記相変化材料のプログラミング状態を定義することから成り、前記プログラミング状態を定義することは前記プログラミング状態にデータ値を割り当てることを含み、前記プログラミング状態は前記相変化材料の前記リセット状態に前記データ値に固有のプログラミングエネルギを印加することにより得られ、前記プログラミングエネルギは前記リセット状態の前記セットエネルギを超えず、
入力データを提供し、前記入力データは値を有し、
前記入力値に関連付けたプログラミング状態に前記相変化材料を変化させるに足る量のエネルギを前記相変化材料に提供する各ステップを備える、前記方法。
【請求項３０】
前記入力データが数である、請求項２９の方法。
【請求項３１】
前記プログラミング状態に連続整数値を割り当てる、請求項３０の方法。
【請求項３２】
前記連続整数値は、前記プログラミングエネルギの昇順において前記プログラミング状態に割り当てる、請求項３１の方法。
【請求項３３】
前記連続整数値の最小値はゼロである、請求項３１の方法。
【請求項３４】
前記プログラミング状態は前記リセット状態を含む、請求項３０の方法。
【請求項３５】
前記リセット状態に値ゼロを関連付ける、請求項３４の方法。
【請求項３６】
前記プログラミング状態は前記セット状態を含む、請求項３０の方法。
【請求項３７】
前記セット状態に値ゼロを関連付ける、請求項３６の方法。
【請求項３８】
プログラミング状態の数は、前記数を表現する進法の基数に等しい、請求項３０の方法。
【請求項３９】
プログラミング状態の数は、２の倍数または１０である、請求項３０の方法。
【請求項４０】
前記プログラミング状態は、エネルギ的に等間隔で分離する、請求項２９の方法。
【請求項４１】
前記エネルギを提供するステップは、エネルギパルスの形でエネルギを提供して完遂する、請求項２９の方法。
【請求項４２】
前記エネルギを提供するステップは、電気エネルギの形でエネルギを提供して完遂する、請求項２９の方法。
【請求項４３】
前記電気エネルギは電圧の形で提供する、請求項４２の方法。
【請求項４４】
前記電気エネルギは電流の形で提供する、請求項４２の方法。
【請求項４５】
前記エネルギを提供するステップは、光エネルギの形でエネルギを提供して完遂する、請求項２９の方法。
【請求項４６】
前記エネルギを提供するステップは、熱エネルギの形でエネルギを提供して完遂する、請求項２９の方法。
【請求項４７】
前記相変化材料は、Ｔｅ、Ｓｅ、Ｇｅ、Ｓｂ、Ｂｉ、Ｐｂ、Ｓｎ、Ａｓ、Ｓ、Ｓｉ、Ｐ、Ｏ、およびこれらの混合または合金から成るグループから選択する１以上の成分から成る、請求項２９の方法。
【請求項４８】
前記相変化材料は、少なくとも１カルコゲン成分と少なくとも１遷移金属元素とから成る、請求項２９の方法。
【請求項４９】
前記少なくとも１カルコゲン成分は、ＴｅとＳｅの混合である、請求項４８の方法。
【請求項５０】
前記少なくとも１遷移金属元素は、Ｃｒ、Ｆｅ、Ｎｉ、Ｎｂ、Ｐｄ、Ｐｔ、およびそれらの混合または合金から成るグループから選択する、請求項４８の方法。
【請求項５１】
１以上のレジスタを有するメモリグループを提供し、前記レジスタはデジタル多状態相変化材料から成り、前記相変化材料は複数の状態を有し、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記デジタル多状態相変化材料から成る計数レジスタを提供し、前記計数レジスタは複数のプログラミング状態を有し、前記プログラミング状態は前記計数レジスタの前記リセット状態のセットエネルギを超えない量のプログラミングエネルギを印加することによって前記計数レジスタのリセット状態から取得可能であり、前記プログラミング状態の数は前記リセット状態にない前記メモリグループのレジスタの数に等しいか大きく、
前記計数レジスタを前記メモリグループに割り当て、当該割り当てることは前記リセット状態にない前記メモリグループの前記レジスタに前記プログラミング状態を個別に指定することを含み、それによって前記リセット状態にない前記メモリグループの前記レジスタの各々は前記指定したプログラミング状態に個別に関連付けられ、
前記計数レジスタの初期プログラミング状態を定義し、前記初期プログラミング状態は最小プログラミングエネルギを有する指定したプログラミング状態に対応し、
前記計数レジスタの最終プログラミング状態を定義し、前記最終プログラミング状態は最大プログラミングエネルギを有する指定したプログラミング状態に対応し、
前記計数レジスタを初期化し、前記初期化することは前記計数レジスタを前記初期プログラミング状態に変化させるに足るエネルギを提供することを含み、
前記計数レジスタが前記最終プログラミング状態以外の指定したプログラミング状態にある間、次のステップａ〜ｃを繰り返し実行し、
ａ．前記計数レジスタの指定したプログラミング状態に関連付けた前記メモリグループのレジスタに、前記メモリグループの前記関連付けたレジスタをセット状態に変化させるに足る量のエネルギを提供し、
ｂ．前記メモリグループの前記関連付けたレジスタにリセットエネルギを提供し、前記リセットエネルギは前記関連付けたレジスタをセット状態からリセット状態に変化させるに足り、
ｃ．前記計数レジスタを増分し、前記増分することは前記計数レジスタを異なる指定プログラミング状態に変化させるに必要なエネルギの最低量を印加することを含み、
前記計数レジスタの前記最終プログラミング状態に関連付けた前記メモリグループのレジスタに、前記最終プログラミング状態に関連付けた前記メモリグループの前記レジスタをセット状態に変換させるに足る量のエネルギを提供し、
前記最終プログラミング状態に関連付けた前記メモリグループの前記レジスタにリセットエネルギを提供することにより、前記最終プログラミング状態に関連付けた前記メモリグループの前記レジスタをセット状態からリセット状態に変化させる各ステップを備える、リセット方法。
【請求項５２】
前記割り当てるステップは、前記リセット状態にある前記メモリグループの前記レジスタに前記プログラミング状態を個別に指定することをさらに含み、それによって前記メモリグループの前記レジスタの各々を個別に前記指定したプログラミング状態に関連付ける、請求項５１の方法。
【請求項５３】
前記指定したプログラミング状態は、エネルギ的に等間隔で分離する、請求項５１の方法。
【請求項５４】
前記計数レジスタのセット状態は、前記エネルギ的な等間隔で、前記計数レジスタの最終プログラミング状態から分離する、請求項５３の方法。
【請求項５５】
前記最終プログラミング状態は、前記計数レジスタのセット状態である、請求項５１の方法。
【請求項５６】
前記計数レジスタのプログラミング状態の数は、前記メモリグループ内のレジスタの数と等しい、請求項５１の方法。
【請求項５７】
複数の状態を有するデジタル多状態相変化材料を提供し、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記相変化材料の第１部分に第１数を格納し、前記第１数を格納することは前記相変化材料の前記第１部分に前記第１数に固有のエネルギを提供することを含み、
第２数に固有のエネルギを前記相変化材料に提供する各ステップを備える、加算方法。
【請求項５８】
前記格納するステップは、前記相変化材料の前記第１部分のリセット状態に前記第１数に対応するエネルギを提供することを含む、請求項５７の方法。
【請求項５９】
前記第１数に対応する前記エネルギは、前記第１数の数値に比例する、請求項５８の方法。
【請求項６０】
前記第２数に固有のエネルギを提供することは、前記相変化材料のリセット状態に前記第２数に対応するエネルギを提供することを含む請求項５７記載の方法。
【請求項６１】
前記第２数に対応する前記エネルギは、前記第２数の数値に比例する、請求項６０の方法。
【請求項６２】
前記第２数に固有のエネルギは、前記相変化材料の前記第１部分に提供する、請求項５７の方法。
【請求項６３】
複数の状態を有するデジタル多状態相変化材料を提供し、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記相変化材料のプログラミング状態を定義し、前記プログラミング状態は前記複数の状態から選択し、前記プログラミング状態はプログラミングエネルギを有し、前記プログラミングエネルギは前記相変化材料をリセット状態から前記プログラミング状態に変化させるに必要な量のエネルギに対応し、前記プログラミングエネルギは前記リセット状態の前記セットエネルギを超えず、
前記プログラミング状態に数値を割り当て、
前記相変化材料の第１部分に第１数を格納し、前記第１数を格納することは前記相変化材料の前記第１部分を前記第１数の数値に関連付けたプログラミング状態に変化させるに足る量のエネルギを提供することを含み、
第２数に固有のエネルギを前記相変化材料に提供する、加算方法。
【請求項６４】
前記数値は、前記プログラミング状態のプログラミングエネルギが上昇すると増加する、請求項６３の方法。
【請求項６５】
前記数値は、前記プログラミング状態のプログラミングエネルギに比例する、請求項６３の方法。
【請求項６６】
前記数値は、ゼロで始まる連続整数である、請求項６３の方法。
【請求項６７】
前記相変化材料のセット状態に数値ゼロを割り当てる、請求項６３の方法。
【請求項６８】
前記第２数に固有の前記エネルギは、前記第２数の数値に関連付けたプログラミング状態に前記相変化材料を変化させるのに必要なエネルギである、請求項６３の方法。
【請求項６９】
前記第２数に固有のエネルギを提供するステップは、前記相変化材料の第２部に前記第２数を格納することを含み、前記格納することは前記第２数の数値に関連付けたプログラミング状態に前記相変化材料の前記第２部を変化させることを含む、請求項６３の方法。
【請求項７０】
前記相変化材料の前記第１部分に第１セットエネルギを提供し、前記第１セットエネルギは前記第１数の数値に関連付けたプログラミング状態からセット状態へ前記相変化材料の前記第１部分を変化させ、
前記相変化材料の第３部のリセット状態に前記第１セットエネルギを提供し、
前記相変化材料の前記第３部に第２セットエネルギを提供し、前記第２セットエネルギは前記相変化材料の前記第３部をセット状態へ変化させ、
前記相変化材料の前記第２部に前記第２セットエネルギを提供する各ステップをさらに備える、請求項６９の方法。
【請求項７１】
複数の状態を有するデジタル多状態相変化材料を提供し、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記相変化材料の少なくとも一部をメモリグループに区分し、前記メモリグループの各々は多桁数を格納するための前記相変化材料の容積に対応し、
前記メモリグループを複数のレジスタに分割し、前記レジスタは前記多桁数の１桁を格納するために割り当てた前記メモリグループの一部に対応し、前記レジスタはプログラミング状態を有し、前記プログラミング状態は前記相変化材料の前記複数の状態から選択し、前記プログラミングエネルギは前記相変化材料をリセット状態から前記プログラミング状態へ変化させるのに必要な量のエネルギに対応し、前記プログラミングエネルギは前記リセット状態の前記セットエネルギを超えず、
前記プログラミング状態に数値を割り当て、
前記メモリグループのレジスタに桁値を関連付け、前記メモリグループの各々は同一数の桁値を含み、
第１メモリグループに第１多桁数を書き込み、前記書き込むことは桁値に基づき前記第１メモリグループのレジスタに前記多桁数の各数を格納することを含み、前記格納することは前記各数の数値に関連付けたプログラミング状態に前記レジスタを変化させることを含み、
第２数に固有のエネルギを前記相変化材料に提供する各ステップを備える、加算方法。
【請求項７２】
前記エネルギを提供するステップは、前記第１メモリグループの適切なレジスタに前記第２数の各桁に固有のエネルギを提供することを含み、前記適切なレジスタは前記第２数の各桁値に対応する、請求項７１の方法。
【請求項７３】
前記エネルギを提供するステップは、前記第２数を第２メモリグループへ書き込むことを含み、前記書き込むことは前記第２メモリグループの各レジスタに前記第２数の各桁を格納することを含み、前記各レジスタは異なる桁値を有する数に対応し、前記格納することは前記各桁の数値に関連付けたプログラミング状態に前記レジスタを変化させることを含む、請求項７１の方法。
【請求項７４】
１以上のメモリグループのレジスタを指示するカウンタを設定し、前記カウンタはカウンタ値を有し、前記カウンタ値はカウンタプログラミング状態に対応し、
１桁を格納した前記第１メモリグループの各レジスタを前記カウンタプログラミング状態の１連続セットの１つに関連付け、
前記第２メモリグループの各レジスタを、同一桁値を有する前記第１メモリグループのレジスタを関連付けたカウンタプログラミング状態に関連付け、
第３のメモリグループの各レジスタを、同一桁値を有する前記第１メモリグループのレジスタを関連付けたカウンタプログラミング状態に関連付け、
前記カウンタを初期カウンタ値に初期化し、前記初期カウンタ値は初期カウンタプログラミング状態に対応し、前記初期カウンタプログラミング状態は前記連続プログラミング状態セットのうち最小カウンタ値を有するカウンタプログラミング状態に対応し、
前記カウンタが前記連続カウンタ値セット内のカウンタ値を有する間、次のステップａ〜ｅを繰り返し、
ａ．前記カウンタが指示している前記第１メモリグループのレジスタに第１セットエネルギを提供し、前記指示している第１メモリグループのレジスタは前記カウンタの値に関連付けた前記第１メモリグループのレジスタに対応し、前記第１セットエネルギは前記指示している第１メモリグループのレジスタをセット状態に変化させ、
ｂ．前記カウンタが指示している前記第３メモリグループのレジスタのリセット状態に前記第１セットエネルギを提供し、前記指示している第３メモリグループのレジスタは前記カウンタの値に関連付けた前記第３メモリグループのレジスタに対応し、
ｃ．前記指示している第３メモリグループのレジスタに第２セットエネルギを提供し、前記第２セットエネルギは前記指示している第３メモリグループのレジスタをセット状態に変化させ、
ｄ．前記カウンタが指示している前記第２メモリグループのレジスタに前記第２セットエネルギを提供し、前記指示している第２メモリグループのレジスタは前記カウンタの値に関連付けた前記第２メモリグループのレジスタに対応し、
ｅ．前記カウンタの値を増分する各ステップをさらに備える、請求項７３の方法。
【請求項７５】
前記カウンタは前記相変化材料から成る、請求項７４の方法。
【請求項７６】
前記カウンタプログラミング状態は、前記相変化材料の前記複数の状態から選択する、請求項７５の方法。
【請求項７７】
前記繰り返しステップａ〜ｅの終了後のカウンタプログラミング状態は、前記相変化材料のセット状態である、請求項７６の方法。
【請求項７８】
カウンタプログラミング状態の数は、前記レジスタのプログラミング状態の数と同じである、請求項７４の方法。
【請求項７９】
複数の状態を有するデジタル多状態相変化材料を提供し、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記相変化材料の第１容積に第１数を格納し、前記第１数を格納することは前記相変化材料の前記第１容積のリセット状態に前記第１数に固有のエネルギを提供することを含み、前記第１数に固有のエネルギは前記リセット状態の前記セットエネルギを超えず、
前記相変化材料の第２容積に第２数を格納し、前記格納することは前記相変化材料の前記第２容積のリセット状態に前記第２数に固有のエネルギを提供することを含み、前記第２数に固有の前記エネルギは前記リセット状態の前記セットエネルギを超えず、
前記相変化材料の前記第１容積に第１セットエネルギを提供し、前記第１セットエネルギは前記相変化材料の前記第１容積をセット状態に変化させ、
前記相変化材料の前記第２容積に前記第１セットエネルギを提供する各ステップを備える、減算方法。
【請求項８０】
前記第１数に固有の前記エネルギは前記第１数に比例し、前記第２数に固有の前記エネルギは前記第２数に比例する、請求項７９の方法。
【請求項８１】
前記第１セットエネルギを前記第２容積に提供するステップは、
前記相変化材料の前記第２容積に前記第１セットエネルギの第１部分を提供し、前記第１部分は前記第２容積をセット状態に変化させるに足り、
前記第２容積をリセットし、
前記第１セットエネルギの残りを前記第２容積に提供する各ステップを備える、請求項７９の方法。
【請求項８２】
前記相変化材料のプログラミング状態を定義し、前記プログラミング状態は前記複数の状態から選択し、前記プログラミング状態はプログラミングエネルギを有し、前記プログラミングエネルギは前記相変化材料をリセット状態から前記プログラミング状態へ変化させるのに必要な量のエネルギに対応し、前記プログラミングエネルギは前記リセット状態の前記セットエネルギを超えず、
前記プログラミング状態に数値を割り当てる各ステップをさらに備える、請求項７９の方法。
【請求項８３】
前記第１数を格納するステップは、前記相変化材料の前記第１容積を前記第１数の数値に関連付けたプログラミング状態に変化させるに足る量のエネルギを提供することを含む、請求項８２の方法。
【請求項８４】
前記第２数を格納するステップは、前記相変化材料の前記第２容積を前記第２数の数値に関連付けたプログラミング状態に変化させるに足る量のエネルギを提供することを含む、請求項８２の方法。
【請求項８５】
第１数に第２数を乗算する方法において、
複数の状態を有するデジタル多状態相変化材料を提供し、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記相変化材料の第１部分に前記第１数を格納し、
倍数レジスタを初期値に設定し、
前記倍数レジスタの値が前記初期値と前記第２数との合計より小さい時、次のステップａおよびｂを実行し、
ａ．前記相変化材料の第１部分に格納した数に前記第１数を加算し、前記加算することは前記相変化材料の前記第１部分に前記第１数に固有のエネルギを提供することを含み、
ｂ．前記倍数レジスタを増分し、
前記相変化材料の前記第１部分に格納した値を読み出す各ステップを備える、前記乗算方法。
【請求項８６】
前記相変化材料のプログラミング状態を定義し、前記プログラミング状態は前記複数の状態から選択し、前記プログラミング状態はプログラミングエネルギを有し、前記プログラミングエネルギは前記相変化材料をリセット状態から前記プログラミング状態に変化させるに必要な量のエネルギに対応し、前記プログラミングエネルギは前記リセット状態の前記セットエネルギを超えず、
前記プログラミング状態に数値を割り当てる各ステップをさらに備える、請求項８５の方法。
【請求項８７】
前記格納するステップは、前記相変化材料の前記第１部分を前記第１数に割り当てたプログラミング状態に変化させるに足る量のエネルギを提供することを含む、請求項８６の方法。
【請求項８８】
前記第１数に固有の前記エネルギは、前記相変化材料をリセット状態から前記第１数に割り当てたプログラミング状態に変化させるのに必要なエネルギである、請求項８６の方法。
【請求項８９】
前記倍数レジスタは、前記相変化材料の第２部分から成る、請求項８５の方法。
【請求項９０】
第１数を第２数によって除算する方法において、
複数の状態を有するデジタル多状態相変化材料を提供し、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記相変化材料に前記第１数を格納し、
倍数レジスタを初期値に設定し、
前記相変化材料に格納した数が前記第２数より大きいか等しい間、次のステップａおよびｂを繰り返し、
ａ．前記相変化材料に格納した前記数から前記第２数を減算し、前記減算することは前記格納した数と前記第２数間の差に対応する状態に前記相変化材料を変化させるエネルギを提供することを含み、
ｂ．前記倍数レジスタを増分し、
前記相変化材料に格納した数を読み出し、
前記倍数レジスタの値を読み出す各ステップを備える、前記減算方法。
【請求項９１】
前記相変化材料のプログラミング状態を定義し、前記プログラミング状態は前記複数の状態から選択し、前記プログラミング状態はプログラミングエネルギを有し、前記プログラミングエネルギは前記相変化材料をリセット状態から前記プログラミング状態に変化させるに必要な量のエネルギに対応し、前記プログラミングエネルギは前記リセット状態の前記セットエネルギを超えず、
前記プログラミング状態に数値を割り当てる各ステップをさらに備える、請求項９０の方法。
【請求項９２】
前記格納するステップは、前記相変化材料の前記第１部分を前記第１数に割り当てたプログラミング状態に変化させるに足る量のエネルギを提供することを含む、請求項９１の方法。
【請求項９３】
前記第１数に固有の前記エネルギは、前記相変化材料をリセット状態から前記第１数に割り当てたプログラミング状態に変化させるのに必要なエネルギである、請求項９１の方法。
【請求項９４】
前記倍数レジスタは、前記相変化材料の第２部分から成る、請求項８９の方法。
【請求項９５】
１数の補数を計算する方法において、
複数の状態を有するデジタル多状態相変化材料を提供し、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記相変化材料の第１部分に１数を格納し、前記格納することは前記数に対応するエネルギを前記相変化材料のリセット状態に提供することを含み、前記対応するエネルギは前記リセット状態の前記セットエネルギを超えず、
前記相変化材料の前記第１部分にセッティングエネルギを提供し、前記セッティングエネルギは前記相変化材料の前記第１部分をセット状態に変化させ、
前記相変化材料の第２部分に前記セッティングエネルギを提供する各ステップを備える、前記補数計算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非バイナリ計算方法に関し、さらに詳しくは相変化材料のデジタル多状態特性を利用して加算、減算、乗算、除算を行う方法に関する。
【０００２】
背景技術
コンピュータの発展は、２０世紀後半の最大進歩の一つと広く見なされている。コンピュータは日常生活の様々な面を簡素化し、経済の生産性を著しく向上させた。最近の画像処理および複雑計算に対する要求は、マイクロプロセッサ速度およびメモリ記憶密度を大きく進展させた。コンピュータのさらなる進展および将来の応用は、より効率的な方法で大量の情報を処理する人類の能力に掛かっている。
【０００３】
シリコンは今日のコンピュータの心臓である。計算能力および速度における進展は、シリコンの基本特性のより良い理解と、それら特性を実用に結びつけた結果である。初期の発展はシリコンからトランジスタやダイオードのような基本電子部品を作り上げたことに基づいており、その後の発展は集積回路の開発から始まった。最近の進展は、それら傾向の継続、さらなる小型化、より大量のマイクロ電子デバイスの単一チップへの集積である。より小型のデバイスは、記憶密度の高度化、集積回路の高集積化、同一チップ上におけるデバイス間の対話単位時間の短縮化につながる。
【０００４】
処理速度と記憶密度とを改良するための現在の手法は、シリコンベースのマイクロ電子デバイスを小型化し続ける能力に依存している。これまでのところ、小型化はムーアの法則にほぼ従っている。ムーアの法則は、所定サイズのチップに集積可能なトランジスタの数は、１８ヶ月毎に倍になると予測する。ムーアの法則は、これまでの２５年間の進歩に関し、非常に信頼できることを証明した。現時点で、各チップは数千万のトランジスタを含み、各トランジスタは約０．２ミクロン四方の大きさである。
【０００５】
将来の問題は、小型化の努力を無限に続けることが可能か、あるいは原理的な物理限界が小型化の乗り越えがたい障壁として存在するかである。重要な実際的限界は、チップ上のデバイス間のクロストーク、デバイスサイズをさらに縮小することの困難性がある。クロストークは、あるデバイスから隣接デバイスへの電流または電荷の漏洩である。チップ上の全デバイスは、当該チップの論理あるいは最終目的が定義する所定相互接続に沿って相互作用することが理想である。しかしながら小型化を進めると、デバイス間のスペースが必然的に減少し、デバイス間の好ましくない相互作用が次第に問題化する。１デバイスからの電界、電荷、あるいは電流が他のデバイスに影響を及ぼすようになる。これは、空間的な近接が相互接続パターンを凌駕するからである。クロストークは、チップの所望機能を妨害する。
【０００６】
チップ上に構成可能なマイクロ電子デバイスのサイズは、基本的にそのデバイスのパターニングに使用するリソグラフィ処理の関数である。リソグラフィは、フォトレジスト材料を露光する処理である。露光するフォトレジスト材料のサイズは、チップ上に形成する最終デバイスのサイズに直接関係する。リソグラフィに使用する光の波長は、露光するフォトレジスト材料のサイズを制御する。使用する光の波長が短いほど、リソグラフィ処理の解像度は高く、形成する最終デバイスのサイズは小さくなる。
【０００７】
原理的に、クロストークとリソグラフィ解像度とが持つ実際上の限界は克服できよう。例えばクロストークは、現在よりも低い誘電率を有する絶縁層をトランジスタ構造に含めることで克服できよう。リソグラフィ解像度は、例えばエキシマレーザ等のより短波長の光源を開発することで改良できよう。これらおよびその他の提案されている解決策は可能性があるものの、製造コストの多大な増加を伴う。チップ製造設備を建設するコストは、過去２５年間で５百万ドル以下から１５億ドル以上へと増加した。コストは将来において急上昇し続けると予測される。また現在においても、コストは非常に厳しいため、チップのさらなる改良は経済的に難しい。コンピュータ産業は岐路にある。
【０００８】
コンピュータ産業を拡大し、コンピュータを単なる商品から抜け出させるため、コンピュータの動作方法、およびその処理素子とメモリ素子とに使用する材料に革命的な変化が必要である。計算速度、効率、および並列処理における改良は、従来のコンピュータをより対話型および適応学習型のマシンに進化させるために必要である。
【０００９】
発明の概要
本発明は、非バイナリ方式において計算を行う方法を提供する。この方法は、相変化材料のデジタル多状態特性を利用する。デジタル多状態相変化材料は、コンピュータ等のデータ処理装置のメモリ素子やレジスタに含める。これら素子は、本発明の計算方法を実行可能な素子である。本発明の計算方法が使用するデジタル多状態相変化記憶材料は、少なくとも高抵抗状態と検出可能な低抵抗状態とを有する。デジタル多状態相変化材料からなるメモリ素子をリセットし、記憶した数に関するプログラミング状態を定義し、１メモリ素子の内容を他のメモリ素子へ移動し、ある数の補数を計算し、デジタル多状態相変化材料を使用して加算、減算、乗算、除算の演算を実行する方法およびアルゴリズムをここに開示する。
【００１０】
デジタル多状態相変化材料から成るメモリ素子は、メモリグループを構成できる。１メモリグループ内の各メモリ素子は、多桁数の１桁を記憶するために使う。本明細書において、メモリ素子はレジスタとも呼ぶ。従ってメモリグループは、メモリ素子またはレジスタの集合に対応する。１メモリグループが含むメモリ素子またはレジスタの数は可変であり、記憶しようとする数の最大桁数によって決まる。数の最大桁数は、精度と操作効率とのトレードオフである。
【００１１】
レジスタをグループ化してメモリグループを形成することにより、メモリ素子は多桁数を記憶するようにプログラムできる。相変化材料のデジタル多状態特性は、バイナリまたは基数２の進法に基づく演算だけでなく、いかなる基数の数でもレジスタへの記憶および処理が可能であり、非バイナリ計算機能を実現できる。本発明は、例えば基数１０、基数８、または基数１６の数を直接記憶および処理できる。本発明は、数百、数千、あるいはそれ以上の基数にも対応できる。その結果、本発明は膨大な並列計算を実行する可能性を提供する。本発明の計算方法は、多状態メモリ素子を使用して並列計算能力、高密度記憶、非バイナリ演算を可能にし、従来の計算機に比べ計算速度および計算効率を著しく改良する機会を提供する。
【００１２】
本明細書が開示するアルゴリズムは、相変化材料から成る多状態メモリ素子を使用して情報を記憶し処理する方法を記述する。本発明は、単一レジスタ演算と、多状態メモリグループのレジスタ毎の演算とに関する方法を含む。これら方法において、単一レジスタまたはメモリグループ内の各レジスタにエネルギを印加し、１数を記憶するかあるいはすでに記憶した１数の値を変化させる。これら方法は、各レジスタをアドレス指定し、１以上のメモリグループに関連付けた１レジスタグループあるいはそのサブセットを操作し、所望の算術演算または処理を行う。
【００１３】
発明の実施の形態
本発明は、相変化材料のデジタル多状態特性を使用したデータ計算および処理方法を提供する。相変化材料は、コンピュータ等のデータ処理装置のメモリグループ、メモリ素子、またはレジスタに含める。本明細書において、メモリグループとは所定量の相変化材料から成り、これを区画または分割してメモリ素子とする。各メモリ素子は、多桁数の１桁を記憶するために使用する。本明細書において、メモリ素子はレジスタとも呼ぶ。従ってメモリグループは、メモリ素子またはレジスタの集合に対応する。１メモリグループが含むメモリ素子またはレジスタの数は可変であり、一般に、記憶する数の最大桁数で決まる。本発明の計算方法は、相変化材料のデジタル多状態特性を利用して算術演算およびデータ処理を完成することを目的とする。
【００１４】
従来のコンピュータおよびデータ処理装置は、バイナリメモリ素子に依存する。バイナリメモリ素子は、「０」ビットと「１」ビットの２値の形を取る２状態を使用してデータを記憶し処理する。一方本発明の提供するメモリ素子用の方法およびアルゴリズムは、多状態の採用を可能にする。このようなメモリ素子は、バイナリコンピュータに比べ、所定量の記憶材料中により多くの情報を記憶できる。その結果、本発明の計算方法で動作するコンピュータは、従来のコンピュータよりも高いデータ記憶能力を提供できる。さらに本発明方法は、非バイナリ方法における計算機能も提供する。その結果、データの書き込み、処理、読み出しは非バイナリ方法で行われ、従来のバイナリ計算機固有の限界を解放する。
【００１５】
２０世紀後半の興味ある発展は、量子計算の概念であった。量子計算の重要な利点は、多量の重畳状態の錯綜を通して、膨大な並列計算の能力が見えることである。この能力は、次世代コンピューティングに関連する複雑さを解決するものとして広く賞賛された。幾つかのグループは、量子計算アルゴリズムの開発において初期の進展を示した。例えばショルのアルゴリズムであり、大数の因数分解等の懸案問題を解こうとするものであった。しかしながら、これまで考案された量子コンピュータの実用試作機は、不安定であり、些細な外乱に対しても故障しやすかった。そのため、量子コンピュータが提供した並列特性は、実現からほど遠かった。
【００１６】
本発明の計算方法は、デジタル多状態特性を利用することにより、量子コンピュータが実現可能な能力同様の多量並列計算能力を実現する機会を提供する。本発明の計算方法が実現する相変化材料のデジタル多状態特性は、多状態の重畳と見なすことができる。これは、量子コンピュータにおけるからみあい効果の中心である。しかしながら、量子コンピュータとは異なり、多状態相変化材料と本発明の計算方法とは、広い範囲の外部影響に対して頑健で安定である。本発明が提供する高密度記憶と多状態計算特性との組み合わせは、従来のコンピュータを遙かに超えた計算速度と計算効率を実現する大きな機会を提供する。
【００１７】
従来のバイナリメモリ材料用のビット演算およびアルゴリズムは、デジタル多状態相変化材料に基づくメモリ素子に直接変換できない。多状態メモリ素子は、データを処理し算術演算を完遂するための新しいアルゴリズムを必要とする。本明細書は、多状態メモリ素子用に設計した幾つかの方法およびアルゴリズムを開示する。これら方法は、エネルギとメモリ素子との相互作用を前提とする。この相互作用は、メモリ素子が含有する相変化材料の物理特性および化学特性に基づく。相変化材料の基本特性を以下に説明する。この説明は米国特許第５，９１２，８３９号および第６，１４１，２４１号において説明したものであり、これらの開示は参照によりここに組み込む。
【００１８】
本発明方法が動作するメモリ素子およびレジスタは、少なくとも１つの高抵抗状態と検出可能低抵抗状態とを有する相変化記憶材料から成る。本明細書において、高抵抗状態および低抵抗状態は、各々高電気抵抗および低電気抵抗を特徴とする物理状態である。高電気抵抗状態および低電気抵抗状態は、相対的であり、互いに検出可能である。本発明方法が使用する相変化記憶材料の例は、同一出願人による米国特許第５，１６６，７５８号、第５，２９６，７１６号、第５，５２４，７１１号、第５，５３６，９４７号、第５，５９６，５２２号、第５，８２５，０４６号、第５，６８７，１１２号に開示する。これら開示は参照によりここに組み込む。本発明方法が対象とするメモリ素子の例は、同一出願人による米国特許第５，９１２，８３９号および第６，１４１，２４１号に開示する。これら開示も参照によりここに組み込む。
【００１９】
本発明の計算方法が対象とする相変化材料は、有効量のエネルギを印加すると高抵抗状態から低抵抗状態へと変化する。図１は、相変化材料の電気抵抗を示すグラフであり、エネルギの関数である。図１の実施例におけるエネルギは、電気エネルギであり、電流パルスの形で印加する。相変化材料が最初に高抵抗状態にあれば、少量のエネルギの印加は、その高抵抗状態を維持する。この挙動は、図１の左側の高抵抗平坦域が示す通りである。十分量のエネルギを印加すると、相変化材料は高抵抗状態から低抵抗状態へと変わる。この変化は、図１の高抵抗平坦域の右側において電気抵抗が急減していることで分かる。この相変化材料の高抵抗状態から低抵抗状態への変化は、以下において相変化材料の「セッティング」または「セット」と呼ぶ。セッティングにおいて発生する低抵抗状態は、以下において相変化材料の「セット状態」と呼ぶ。相変化材料をセットさせるに足るエネルギ量は、以下において「セットエネルギ」または「セッティングエネルギ」と呼ぶ。このセットエネルギは、高抵抗平坦域に沿った各状態により異なる。
【００２０】
図１の右側は、セットしてからの相変化材料の挙動に対応する。いったんセットすると、相変化材料は低抵抗状態となり、図１の右側に示すセット後領域に応じて、印加エネルギの影響を受ける。電気抵抗応答曲線におけるこの部分は、参照により組み込んだ前記米国特許の幾つかにおいて、アナログまたはグレイスケール多ビット部と呼んでいる。相変化材料のセッティング後状態にエネルギを印加すると、その電気抵抗が変化する。電気抵抗の変化は、印加エネルギ量による。印加エネルギおよび図１のセッティング後領域における相変化材料の状態により、電気抵抗の増加または減少が発生する。これは、セッティング後領域における挙動が可逆だからである。この可逆性は、図１のセッティング後領域において２つの矢印で示す。エネルギと電気抵抗とは、セッティング後領域の各点に関連する。印加エネルギが、セッティング後領域における相変化材料の対応点のエネルギを超えると、相変化材料の電気抵抗は増加する。逆に、セッティング後領域における相変化材料の対応点のエネルギより印加エネルギが少なければ、電気抵抗は減少する。この可逆性は、図１のセッティング後領域に限定される。セッティング変化に先立つ（すなわちセッティング変化の左側）図１の高抵抗平坦域の点に対応するエネルギを印加しても、セッティング変化を逆行できない。
【００２１】
しかしながら相変化材料の高抵抗状態は、図１のセッティング後領域内の点に対応する材料に十分大きなエネルギを印加すれば回復する。このようなエネルギの印加は、図１においてエネルギ増加方向への移動に対応し、セッティング変化の逆方向への移動ではない。図１のセッティング後領域内に示す通り、連続的に増加するエネルギを印加すると、電気抵抗は連続的に増加する。十分な量のエネルギを印加し、図１の右端方向へ相変化材料を駆動すると、相変化材料は高抵抗状態に戻り、その高抵抗平坦域を更新する。低抵抗セット状態から高抵抗状態へ相変化材料を変化させるのに必要なエネルギ量は、以下において「リセットエネルギ」または「リセッティングエネルギ」と呼ぶ。リセットエネルギ適用後の相変化材料の状態は、これ以降「リセット状態」と呼ぶ。リセットエネルギの印加は、相変化材料を「リセット」し、高抵抗リセット状態を形成する。リセッティング後、さらにエネルギを印加した時の挙動は、図１の高抵抗平坦域に関して説明したものと似ている。図１のグラフは、１サイクルのセッティングおよびリセッティングに対応する。相変化材料は、多数のサイクルにわたって再生可能にセットおよびリセットできる。
【００２２】
図１のセッティング後領域に関連する可逆挙動は、特定の電気抵抗値にプログラム可能なアナログ多ビットグレイスケールデバイスの基礎を形成する。かかるデバイスの例は、例えばオブシンスキー等の米国特許第５，６８７，１１２号およびオブシンスキーの米国特許第３，２７１，５９１号、第３，５３０，４４１号である。これら開示は参照によりここに組み込む。
【００２３】
本発明のコンピュータのメモリ素子およびアルゴリズムは、図１の左側に示す平坦域の高抵抗状態における相変化メモリ材料に基づく。高抵抗平坦域に沿った状態は、応答曲線のセッティング後領域内の状態と異なる。すなわち、高抵抗平坦域の各状態は、同一の電気抵抗値を持っている。これに対し、セッティング後領域内の各状態は、電気抵抗値が連続的に変化している。高抵抗平坦域は、デジタル多状態記憶能力と処理能力とを提供し、これによってより高速でより汎用的なコンピュータを提供できる。本発明の計算方法は、相変化材料の電気応答におけるデジタル多状態高抵抗平坦域の利点を利用することを目的とする。
【００２４】
相変化材料の多状態動作は、高抵抗状態の特性の結果である。セットに必要な量よりも少ない量のエネルギ印加を、これ以降「エネルギのサブセッティング量」と呼ぶ。この量のエネルギを高抵抗状態にある相変化材料に印加すると、当該材料に物理変化が生じ、その電気抵抗は実質的に変化しない。図１の平坦域は、高抵抗状態のこの特性に特徴的なものである。相変化材料が図１の平坦域の第１点にある時、エネルギのサブセッティング量を印加すると、相変化材料は平坦域の第２点に対応する物理状態に変化する。この第２点は、第１点の右側である。エネルギのサブセッティング量を印加しても、高抵抗平坦域の左方向に相変化材料を変えることはできない。図１のセッティング後アナログマルチビット領域に関して説明した可逆性の概念は、セッティング前デジタル多状態高抵抗平坦域に当てはまらない。高抵抗平坦域の開始点の左の点は、相変化材料をセットし、リセットし、適切なサブセッティング量のエネルギを印加することによって到達できる。
【００２５】
高抵抗平坦域における一方向応答の結果、本発明の計算方法によって動作する相変化材料は、当該材料のセットエネルギ量までエネルギを累積保存できる。相変化材料の電気抵抗は高抵抗平坦域において変化しないが、エネルギの各サブセッティング量の印加により、相変化材料は低抵抗セット状態方向へ予測可能に前進する。この相変化材料の挙動を多状態記憶素子に利用することが、ここに開示する方法およびアルゴリズムの基本である。
【００２６】
１好適実施例において、図１の高抵抗平坦域内の開始位置としてリセット状態を選択する。リセット状態からセット状態へと相変化材料を変化させるために必要なエネルギの印加期間は、以下において「リセット状態のセッティング（またはセット）エネルギ」と呼ぶ。リセット状態のセッティングエネルギは、セッティングおよびリセッティングの複数サイクルにわたって再生可能であり一定であるため、それを２以上のサブ期間に分割し、これらエネルギ印加のサブ期間の幾つかにより、またはそれらの組み合わせにより、あるいはそれらへの関連付けにより、相変化記憶材料の異なるプログラミング状態またはプログラミング値を定義できる。図１の高抵抗平坦域における相変化材料の再生可能一方向挙動は、サブ期間毎に当該材料に印加するエネルギの累積量に基づき、異なるプログラミング状態を確立できる能力を提供する。各プログラミング状態は、リセット状態に印加するサブ期間毎のエネルギ量の累積により、一意に再生可能に定義できる。例えば第１プログラミング状態は、第１サブ期間量のエネルギをリセット状態へ印加することに関連付けできる。前記第１プログラミング状態にある相変化材料に前記第１サブ期間量のエネルギを印加する第２印加は、第２プログラミング状態を定義するために使用できる。あるいは第２プログラミング状態は、第２サブ期間のエネルギ量を単一でリセット状態へ印加することに関連付けることもできる。この第２サブ期間エネルギ量は、その大きさが前記第１サブ期間エネルギ量と異なる。サブ期間エネルギ量の順次印加およびそれらの組み合わせを使用すれば、図１の高抵抗平坦域を通して一連のプログラミング状態を定義できる。
【００２７】
エネルギ印加のサブ期間に関する複数の順序および組み合わせは、本発明計算方法が使用するプログラミング状態の実施例を構成する。幾つかの実施例は、高抵抗平坦域内の状態だけをプログラミング状態として含む。別の実施例は、相変化材料を低抵抗状態へ変化させることで得られるセット状態を追加のプログラミング状態として含む。リセット状態に印加した累積エネルギ量がリセット状態のセッティングエネルギになると、相変化材料はセットする。セッティングの後、さらにエネルギを印加すると、相変化材料の挙動は、図１のセッティング後領域のようになる。
【００２８】
本発明が使用する相変化材料は、リセット状態からセット状態までの連続状態を有する。これら状態は、リセット状態、高抵抗平坦域に沿った一連の中間状態、およびセット状態である。中間状態とセット状態とは、リセット状態にエネルギを印加することで得ることができる。相変化材料に関連する各状態は、リセット状態に対し、エネルギによって区別可能な一連の状態と見ることができる。前記プログラミング状態は、この一連の状態から選択する。一般にプログラミング状態は、個別のデータ値、例えば整数に関連付け、プログラミングエネルギを有する。このプログラミングエネルギは、相変化材料のリセット状態に追加することで、相変化材料を当該プログラミング状態に変化させるものである。例えば特定のプログラミング状態は、プログラミングエネルギを有する。このプログラミングエネルギは、相変化材料のリセット状態に追加することによって相変化材料を当該プログラミング状態に変化させるエネルギ量に対応する。従って、あるプログラミング状態のプログラミングエネルギは、リセット状態に対するエネルギの尺度であり、各プログラミング状態は一意のプログラミングエネルギに関連付けられる。
【００２９】
好適実施例において、各プログラミング状態は、それに割り当てたあるいは関連付けた一意のデータ値を有する。別の好適実施例は、プログラミングエネルギの昇順に、連続する整数をプログラミング状態に割り当てる、あるいは関連付ける。これら実施例において、１数を記憶する場合、その数に関連付けたプログラミング状態に相変化材料を変化させる。数値とプログラミング状態との一意の対応は、ある範囲の数の１つを相変化材料の１状態に保存する能力を提供する。相変化材料の複数部分に複数の数を記憶できる。一般に計算は、その計算目的に基づいてエネルギを印加することにより、１以上のプログラミング状態間で変化を起こさせることで実行する。
【００３０】
前記した通り、各サブ期間量のエネルギを適用すると、高抵抗平坦域の相変化材料は、セット状態へと進行する。高抵抗平坦域に沿ったリセット状態と中間状態とは、ほぼ同一の電気抵抗を有するため、電気抵抗ベースでは区別することができない。しかしながら高抵抗平坦域に沿った各状態は、それぞれ検出可能な差を有する。その理由は、高抵抗平坦域に沿った各点の相変化材料は、それをセットする場合、各点に応じた異なるエネルギ量を必要とするからである。例えば、あるエネルギ量を印加することによって相変化材料が高抵抗平坦域に沿った第１点から当該高抵抗平坦域に沿った第２点へ変化した場合、正確にこの印加エネルギだけ、前記第２点からセット状態へ相変化材料を変化させるのに必要なエネルギは、前記第１点からセット状態へ相変化材料を変化させるのに必要なエネルギより少ない。セット状態は、高抵抗平坦域に沿った各状態に対し、明確に検出可能な低抵抗状態である。また、高抵抗平坦域に沿ったいずれかの点にある相変化材料をセットするために必要なエネルギ量は、決定可能である。これらのことから、高抵抗平坦域に沿った各点は区別可能であり、高抵抗平坦域に沿った各点を異なるプログラミング状態および／または数値に関連付けることができる。この結果、リセット状態からセット状態までのエネルギ期間を適切数のサブ期間に分割することにより、実質的にいかなる数のプログラミング状態でも、図１の高抵抗平坦域内に定義できる。この結果、高抵抗平坦域を一連の個別プログラミング状態に細分し、それらをデータの記憶および処理に使うことができる。相変化材料から成るメモリ素子は、現在のバイナリコンピュータのように２つのプログラミング状態に限定されず、非バイナリ多状態プログラミングおよび計算能力を提供でき、各メモリ素子に２以上の数を記憶できる。
【００３１】
独立したプログラミング状態の数は、相変化材料のリセット状態（または他の開始状態）からセット状態までの変化に対応するエネルギ期間の大きさ（リセット状態または開始状態のセットエネルギの大きさ）と、そのエネルギ期間をサブ期間に分割可能な解像度と、特定数のプログラミング状態を持つことにおける計算または処理の相対的有利性等に関する実際的考慮とに依存する。本明細書において、開始状態または初期状態とは、高抵抗平坦域に沿った第１または最低エネルギ状態である。リセット状態を開始状態とすることが好ましい。以下の説明においては特に明記しない限り、リセット状態を開始状態とする。しかしながら、高抵抗平坦域に沿った他の状態を開始状態として選択しても良い。
【００３２】
リセット状態とセット状態間のエネルギ期間の大きさは、相変化材料の化学組成に左右される。これについては後述する。サブ期間を定義しうる解像度は、エネルギ源の利用可能なエネルギ解像度に依存する。このエネルギ源は、本発明の計算方法が動作させる多状態メモリ素子をプログラムするためあるいは読み出すために使用する。本発明の計算方法に基づき相変化材料の各状態間を変化させる上で適切なエネルギ源は、追って詳述する。計算を行う上で、プログラミング状態の数は、計算方法またはアルゴリズムの性質、速度、並列性、あるいは利便性を左右する。例えばプログラミング状態の数を２の倍数として選択すると、現在利用可能なバイナリアルゴリズムを本発明の非バイナリ計算方法に採用できる。本発明は、例えば４，８，１６，３２，６４等のプログラミング状態を有する実施例を含む。１０のプログラミング状態を使用すれば、従来の基数１０システム（１０進法）に基づくアルゴリズムの実行に都合がよい。１０進法は日常使われており、本発明の実施例にも含む。
【００３３】
相変化材料をリセット状態からセット状態へ変化させるのに必要なエネルギ期間を、次第に小さくなるサブ期間に分割することにより、多数のプログラミング状態を実現でき、プログラミング状態の連続分布を実現できる。量子コンピュータに幾分似た方法において、準連続プログラミング状態を生成する可能性は、多量の並列計算能力を実現する機会を提供する。数百、数千、あるいはそれ以上のプログラミング状態を手に入れることも、メモリ素子を相変化材料で構成し本発明の計算方法およびアルゴリズムで処理することにより可能である。
【００３４】
本発明計算方法およびアルゴリズムで使用するのに適した相変化材料の例は、米国特許第５，１６６，７５８号、第５，２９６，７１６号、第５，５２４，７１１号、第５，５３６，９４７号、第５，５９６，５２２号、第５，８２５，０４６号、第５，６８７，１１２号、第５，９１２，８３９号、第３，２７１，５９１号、第３，５３０，４４１号に開示がある。メモリ材料の本体は、誘電材料と相変化材料との混合で形成できる。このような混合体の例は、同一出願人による米国特許第６，０８７，６７４号に説明がある。この開示は参照によりここに組み込む。本発明の計算方法およびアルゴリズムに適した材料は、リセット状態と複数の中間状態とを含む。これら中間状態は、リセット状態とはエネルギが異なるが実質的に同一の抵抗を有する。さらにセット状態も含む。このセット状態は、リセット状態よりも低い検出可能な抵抗を有する。この要求を満足する材料は、代表的に１以上のＩｎ、Ａｇ、Ｔｅ、Ｓｅ、Ｇｅ、Ｓｂ、Ｂｉ、Ｐｂ、Ｓｎ、Ａｓ、Ｓ、Ｓｉ、Ｐ、Ｏ、あるいはこれらの混合または合金を含む。１好適実施例において、相変化材料はカルコゲンから形成する。他の好適実施例において、相変化材料はカルコゲンとＧｅとから形成する。さらに好適な実施例において、相変化材料はＧｅとカルコゲンとＳｂとから形成する。最も好適な実施例において、相変化材料はＧｅとＴｅとＳｂとから形成する。
【００３５】
本発明の計算方法およびアルゴリズムの多くは、相変化材料または相変化材料から成るメモリ素子へのエネルギの提供または印加を含むステップを含む。エネルギの提供または印加は、相変化材料に制御量のエネルギを送ることができるエネルギ源で実現できる。制御量のエネルギは、以下において「エネルギのパルス」または「エネルギパルス」と呼ぶこともある。「セットパルス」は相変化材料をセットするに足るエネルギのパルスであり、セッティング量のエネルギを提供することに対応する。「リセットパルス」は相変化材料をリセットするに足るエネルギのパルスであり、リセッティング量のエネルギを提供することに対応する。本発明はエネルギを使用して、相変化材料を１プログラミング状態からその次のプログラミング状態、セット状態、およびリセット状態へと進める。送り出すエネルギは、電磁放射（光学パルス、レーザパルス、マイクロ波パルスを含む）、電気エネルギ、光学エネルギ、熱エネルギ、化学エネルギ、磁気エネルギ、機械的エネルギ、粒子ビームエネルギ、音響エネルギ、あるいはこれらの組み合わせであって、単一エネルギ源または複数エネルギ源を使用する。プログラミング、セッティング、およびリセッティングの概念は、エネルギ放出の全ての形態に拡張する。例えば電気エネルギの放出は、電流または電圧の形態を取ることができ、セッティングは「セット電流パルス」、「セット電圧パルス」、あるいは相変化材料をセットするに十分な量の電気エネルギを提供することで実現できる。同様にリセッティングは、「リセット電流パルス」、「リセット電圧パルス」、あるいは相変化材料をリセットするに十分な量の電気エネルギを提供することで実現できる。相変化材料をセットまたはリセットするに十分な量のエネルギを放出、印加、または提供することの別の形態に関し、類似の適切な用語を定義することも可能である。
【００３６】
本発明における少なくとも３つの基本機能、すなわちプログラミング、読み出し、リセッティングを実行するにはエネルギが必要である。最も簡単な形において、プログラミングは、データまたは情報を相変化材料に書き込むことまたは格納することを含む。入力データが数字形式になっていない場合、書き込む前にそれを数字形式に変換することが好ましい。データの数字形式への変換は、各データに個別の数値を割り当てることで実行できる。例えば単語は文字から成る。各文字はデータを代表し、このデータには個別の数値を割り当てることができる。単語の各文字に対応する数値列は、当該単語を代表するものとして保存できる。記号等の他タイプのデータも同様に扱うことができる。従来技術には文字および記号を２値数に変換する多数の技術がある。同様の技術を簡単に適用するか、新しい技術を開発することで、文字および記号を非２値数に変換できる。信頼性高く再生可能に数を記憶することは、データ書き込み処理および操作処理における基本ステップである。以下において、データの保存、処理、その他操作を数字形式のデータに関して説明する。しかしながら、全ての形式のデータは数字形式に変換および表現可能であることを認識すべきである。
【００３７】
本発明の計算方法において、書き込みまたはプログラミングは、相変化材料にエネルギを提供することで完了する。このエネルギの量は、記憶しようとする数に固有のものである。この固有のエネルギは、相変化材料のリセット状態のセッティングエネルギと、プログラミング状態の数と、１プログラミング状態から次のプログラミング状態へ相変化材料を変化させるのに必要なエネルギのサブ期間とに依存する。１実施例において、１数に固有または対応するエネルギは、その数に比例するエネルギ量である。１プログラミング状態から次のプログラミング状態へ進むのに必要なエネルギのサブ期間は、以下において「プログラミング期間」、「プログラム期間」、「プログラム期間エネルギ」、「プログラムパルス」、「増分エネルギ」、「増分期間」、またはこれらと等価の用語で呼ぶ。
【００３８】
本発明の１実施例において、リセット状態はゼロの数を表す。そして均一の増分エネルギを使用することにより、１プログラミング状態から次のプログラミング状態へ進む。この結果、全プログラミング状態は、エネルギ的に等間隔で分離し、各増分エネルギの印加は、記憶した数値を１だけ増分することに対応する。このため、数「１」はリセット状態に１回の増分エネルギを印加することで記憶できる。数「２」は、リセット状態に２回の増分エネルギを印加することで記憶できる。このようにして、数を記憶するために使用するメモリ素子本体に最大記憶数までの数を記憶できる。均一な増分エネルギの印加は、以下において「均一増分パルス」または他の同等の用語で呼ぶ。
【００３９】
１実施例において、記憶可能最大数は、前記した高抵抗平坦域に沿って定義または存在するプログラミング状態の数に等しい。均一な増分エネルギを使用し、高抵抗平坦域に沿った開始状態としてリセット状態を選択する場合、この実施例のプログラミング状態の数は、リセット状態のセッティングエネルギを前記プログラミング状態を分離している増分期間で除算した商に等しい。例えば、この実施例において、１０のプログラミング状態を設定するには、リセット状態のセッティングエネルギを１０の等しいサブ期間に分割し、かつリセット状態をも１プログラミング状態として含めれば良い。この例において、９以下のエネルギ増分量を印加すれば（増分エネルギのゼロ印加であるリセット状態を含める）、相変化材料は、１０の異なる数の１つに対応するプログラミング状態に置くことができる。この例における最大記憶数は、第１０プログラミング状態に対応し、リセット状態に対して９の均一増分パルスを印加することで実現できる。この最大記憶可能数の値は、リセット状態を「０」に選択した場合、「９」となろう。この例において、第１０増分量のエネルギを印加する（すなわち第１０プログラミング状態にある相変化材料に１増分パルスを印加する）と、相変化材料は第１０プログラミング状態からセット状態に変化する。
【００４０】
本発明の他の実施例において、セット状態を１プログラミング状態として使用する。この実施例において均一な増分期間を使用し、リセット状態を１プログラミング状態として使用する場合、プログラミング状態の数は、リセット状態のセッティングエネルギを増分期間で除算した商より１だけ多くなる。このため、例えば１１のプログラミング状態をこの実施例で実現するには、リセット状態のセッティングエネルギを１０の等間隔のサブ期間に分割すればよい。第１１プログラミング状態は、相変化材料のセット状態とすることができる。この状態は、エネルギの均一増分量を１０回適用することで実現できる。最大記憶可能数の値は、この実施例においてリセット状態を「０」に選択した場合、「１０」である。
【００４１】
リセット状態の値として「０」を選択することは、本発明の好適実施例であるが、別のプログラミング状態に「０」を割り当てる実施例も可能である。原理的に、どのプログラミング状態にでも「０」を割り当てることができる。均一プログラミング期間を使用する実施例において、リセット状態以外のプログラミング状態を「０」として選択する場合、最大記憶数は、「０」に選択したプログラミング状態へ１プログラムパルスで到達できるプログラミング状態に対応する。例えば、第４プログラミング状態を「０」に選んだ場合、第３プログラミング状態が最大記憶可能数を代表する。セット状態をプログラミング状態として利用可能な実施例において、当該セット状態を「０」として選択しても良い。セット状態はその低電気抵抗に基づき、他の全てのプログラミング状態から容易に区別できるため、値「０」をセット状態に割り当てることは、計算速度または処理アルゴリズムの効率面で有利である。特に明記しない限り、以下の説明の大半は、リセット状態に値「０」を割り当てることを基本とする。しかしながら、この選択は説明の便宜上行うものであり、本発明の実施に制限を課すものではない。
【００４２】
これまでの実施例の変更形態として、不均一プログラミング期間または不等増分期間を使用することも本発明の追加実施例として可能である。ここで不均一プログラミング期間とは、エネルギ的に不等間隔のプログラミング状態を形成するプログラミング期間の並びを意味する。不均一プログラム期間を使用する場合、プログラム状態の数は、コンピュータのプログラミング方針に依存する。ここでプログラミング方針とは、エネルギのサブ期間印加の所定順序を含む。この所定順序は、１プログラミング状態から次のプログラミング状態までのプログラム期間、およびリセット状態から各プログラミング状態までの累積印加エネルギを詳しく定義する。プログラミング方針は、リセット状態からセット状態までの均一あるいは不均一プログラム期間のどのような組み合わせに基づいても良く、リセット状態またはセット状態をプログラミング状態として含んでも良く含まないでも良い。特に明記しない限り、以下の説明は均一プログラム期間を使用するプログラミング方針に基づく。しかしながら、この選択は説明の便宜上行うものであり、本発明の実施を制限するものではない。
【００４３】
プログラミング方針に含めることが好ましいのは、データ値をプログラミング状態に割り当てあるいは関連付け、各プログラミング状態を異なるデータ値に対応させることである。プログラミング状態に関連付けるデータ値は、整数であることが好ましい。より好適には、これら整数は連続とする。プログラミングエネルギの昇順または降順に整数値を関連付ける実施例も可能である。例えば、リセット状態をデータ値０に関連付ける場合、１プログラミング期間のエネルギを印加すれば、相変化材料はデータ値１に関連付けたプログラミング状態に変化する。さらに１プログラミング期間のエネルギを印加すれば、相変化材料はデータ値２に関連付けたプログラミング状態に変化する。以下同様である。データ値をプログラミング状態に関連付ける場合、プログラミングエネルギの降順にしても良い。例えば、セット状態をデータ値０に関連付ける場合、１プログラミング期間のエネルギを印加することでセット状態になるプログラミング状態は、データ値１に関連付ける。以下同様である。データ値をプログラミング状態に関連付けることは、多様な方法で実現可能であるため、特定の計算やユーザの好みに応じて行うことができる。
【００４４】
データを数の形で記憶することは好適実施例であるが、本発明は数値データに限定されない。本発明のプログラミング状態は、非数値データに割り当てても良い。例えば文字を記憶しても良い。高抵抗平坦域を２６のプログラミング状態に細分すれば、異なるプログラミング状態にアルファベットの各文字を割り当てられる。他の単語や文字の組み合わせも文字毎にメモリグループの各レジスタに記憶できる。
【００４５】
レジスタおよび桁値
計算を行う場合、大数を書き込みおよび記憶する能力が必要である。大数を記憶する１つの方法は、本発明のメモリ素子に使用する相変化材料の高抵抗平坦域に多数のプログラミング状態を割り当てることである。これは、プログラミング状態間に小さな増分エネルギ期間を選択することで実現できる。そして各プログラミング状態を異なる数に対応させ選択する。
【００４６】
本発明において、大数は前記したメモリグループを使用して記憶することが好ましい。メモリグループはレジスタをグループ化したものであり、多桁数を記憶するために使用できる。各レジスタは、多桁数の１桁を記憶するために使用し、各レジスタは相変化記憶材料の最小容積に対応することが好ましい。この相変化記憶材料は、本発明のメモリ素子に割り当てるプログラミング状態のいずれにもプログラム可能なものである。幾つかの実施例は、プログラミング状態を定義し数値に関連付ける。１数を記憶するには、一定量のエネルギを提供する必要がある。このエネルギ量は、レジスタ、メモリグループ、または相変化材料の本体を、記憶しようとする数に関連付けたプログラミング状態に変化させるに十分でなければならない。リセット状態を値「０」として選択した場合、１レジスタに記憶可能な最大数は、プログラミング状態の数から１を引いたものに等しい。１レジスタに記憶可能な最大数を超える数は、２以上のレジスタを必要とする。
【００４７】
メモリグループに含めるメモリ素子またはレジスタの数は可変であり、一般に記憶しようとする数の最大桁数によって決まる。多桁数は、任意の桁数を持つことができる。しかしながら実際には、多桁数の桁数に上限を設定することが好ましく、数を記憶するためのメモリグループに割り当てた特定の最大桁数で得られる最大数を超える値の数は、指数を使用することが好ましい。数の最大桁数は、計算精度と演算効率とのトレードオフである。桁数が多ければ精度は増すが、処理速度は犠牲になる。桁数が多ければ、より多くのレジスタが必要になり、計算においてより多くのレジスタ動作が必要になるからである。例えば、各メモリグループに１０個のメモリ素子またはレジスタを割り当てるとする。この実施例は、ある数の桁数を１０に制限することになる。従って１０桁またはそれ以下の桁数を有する数だけがメモリグループに格納可能である。より多くの桁を有する数は、指数方式を必要とするか、１以上のメモリグループの使用を必要とする。
【００４８】
一連のレジスタは、進法の桁値を定義し、数の記憶および処理を行う。１好適実施例において、リセット状態を０に選択し、進法の基数をプログラミング状態の数で与え、１レジスタにおける最大記憶数を基数よりも１つ少ない数にする。例えば従来のバイナリコンピュータの場合、２プログラミング状態が利用可能であり、基数２の進法に基づき０と１の数を記憶し処理する。本発明の１実施例において、１０プログラミング状態を使用する場合、基数１０の進法に基づき数を記憶し処理する。このため本発明のメモリ素子の１レジスタには１０プログラミング状態が利用可能であり、これらプログラミング状態は０，１，２，３，４，５，６，７，８，９の数に対応する。他の基数のレジスタも、セット状態を０として選択する実施例のレジスタと同様に説明できる。
【００４９】
本発明において、大数は複数のレジスタを使用して記憶することが好ましい。この複数のレジスタは、各々が使用する進法の基数のべき乗に対応する。各レジスタは、多桁数の１桁を記憶し、この桁は基数のべき乗の倍数に対応し、この倍数はレジスタセットに記憶しようとする多桁数を表す追加因子として使用する。第１レジスタは、基数の０乗の倍数を格納するために使用し、第２レジスタは基数の１乗の倍数を格納するために使用し、第３レジスタは基数の２乗の倍数を格納するために使用する。以下同様に、１メモリグループの最大レジスタ数まで行う。例えば基数８における数３７２は、連続する３レジスタに格納できる。各レジスタは８プログラミング状態を有し、リセット状態は０に対応する。第１レジスタに２個の均一プログラムパルスを印加し、第２レジスタに７個の均一パルスを印加し、第３レジスタに３個の均一プログラムパルスを印加することにより記憶できる。
【００５０】
基数のべき乗の倍数に対応する数は、多桁数の数字である。例えば基数８における数３７２は、３個の数字を含む。すなわち、８の第２べき乗の倍数を表す「３」と、８の第１べき乗の倍数を表す「７」と、８の第０べき乗の倍数を表す「２」である。各数字は、個別のレジスタに格納する。他の基数を使用する実施例およびセット状態をゼロに選択する実施例においても、各数は同様に定義できる。メモリグループに格納した１０進数（基数１０）は、各レジスタに格納した数をそのレジスタが表す基数のべき乗で乗算し、そのメモリグループの全レジスタを合計することで得られる。
【００５１】
前記したように、いかなる数のレジスタでも、数の記憶用に割り当てることができる。例えば基数１０を利用する１実施例において、各メモリグループに１０個のレジスタを割り当てる。この場合、メモリグループに記憶可能な最大多桁数は、１０レジスタの各々において「９」の値に対応する。言い換えれば１０１０−１を記憶できる。１メモリグループに割り当てた全レジスタの最大記憶可能数を超える数は、指数の使用または２以上のメモリグループの結合を必要とする。
【００５２】
メモリグループに割り当てた全レジスタを必要としない数も記憶可能である。このような数は、その数の表現に必要でない桁値に対応するレジスタに０を格納することで記憶できる。例えば基数１０の進法において１０個のレジスタを割り当てたメモリグループに数３７２を格納することを考える。この数を記憶するには３個のレジスタだけを必要とする。従って、桁値が１０００以上に対応するレジスタに０を格納し、桁値が１００に対応するレジスタに「３」を格納し、桁値が１０に対応するレジスタに「７」を格納し、桁値が１に対応するレジスタに「２」を格納する。与えられた数を表現するために必要な最大桁値を超える桁値に対応するレジスタに保存する０は、以下において先行ゼロと呼ぶ。本例の場合、数３７２は０００００００３７２として正式に保存し、７個の先行ゼロを含む。数を表現するために必要な最大桁値より小さな桁値に対応するレジスタに現れるゼロは、先行ゼロではない。このようなゼロは、以下において非先行ゼロまたは内部ゼロと呼ぶ。例えば数１０４は、１個の非先行ゼロまたは内部ゼロを含む。
【００５３】
読み出し
記憶した数を読み出すには、レジスタの適切な探索または操作が必要である。セット状態をプログラミング状態として利用可能な場合、セット状態はその低電気抵抗により、他の全てのプログラミング状態から容易に区別できる。しかしながら他のプログラミング状態は、電気抵抗曲線の高抵抗平坦域に沿って存在し、実質的に同一の電気抵抗を有する。このためレジスタの電気抵抗を直接測定しても、これらプログラミング状態を区別する手段にはならず、本発明のレジスタを読む手段にもならない。別の方法が必要である。
【００５４】
レジスタに保存した値を読み出す１方法は、電気抵抗曲線の高抵抗平坦域にわたる相変化材料の進行に関連する物理変化を識別することである。前記した通り、高抵抗平坦域に沿った１点にある相変化材料にエネルギを印加すると、セット状態へ向かう一方向進行を発生する。このため、エネルギの印加（一般の形でまたはプログラミングパルスの形で）は、何らかの形で相変化材料を変化させる。当該材料の変化が電気抵抗の変化を引き起こさないという観察は、他の物理特性を使って高抵抗平坦域に沿ったプログラミング状態を区別することの可能性を除外するものではない。適切な物理特性は、印加エネルギによる相変化材料の物理状態への影響に関する知識あるいは考察によって識別できるであろう。
【００５５】
理論に束縛されないよう気をつけながら、本発明者等は、電気抵抗曲線の高抵抗平坦域にある相変化材料にエネルギを印加すると、相変化材料に存在する結晶比率が上昇するであろうと考えた。高抵抗平坦域の相変化材料は、非晶質であり、以下において「クリスタリット」と呼ぶ結晶質領域を含むと思われる。クリスタリットの容積比率は、リセット状態で最小であり、エネルギを印加して高抵抗平坦域をセット状態方向へ進行するに従い、連続的に増加すると考えられる。エネルギの印加は、リセット状態において存在するクリスタリットのサイズを増加するか、新しいクリスタリットを生成するか、あるいは両方の作用を引き起こすであろう。結晶状態は非晶質状態に比べ、より高い導電度（より低い電気抵抗）を有するため、セッティング変化は、相変化材料本体内におけるクリスタリットの連続したネットワークの形成と一致すると思われる。リセット変化は、この連続ネットワークの破壊とクリスタリットの少なくとも一部の非晶質状態への変換を含むと思われる。非晶質の形成は、急冷後のクリスタリットの溶融、またはクリスタリット中の原子または原子グループの移動度の強化を通して発生すると思われる。強化された移動度は、結晶物質の分解および消失を促すであろう。
【００５６】
リセット状態とセット状態間のエネルギ期間は、リセット状態において存在するクリスタリットのサイズに左右される。リセット状態に存在するクリスタリットが小さければ、クリスタリットは、追加エネルギがないと、連続ネットワークを実現するのに十分なサイズにならない。このことは、プログラミング状態用の高抵抗平坦域に沿って、利用可能なエネルギ期間を制御することが可能なことを意味する。本発明に適した多くの相変化材料は、リセット状態において小さなクリスタリットを有すると思われる。
【００５７】
結晶容積比率における全ての変化を測定するために物理技術が利用可能である。かかる変化は、相変化材料が高抵抗平坦域に沿ってセット状態方向へ進行する際に発生する。例えばクリスタリットの細部は、例えばＴＥＭ等の顕微鏡技術や、高解像度エックス線回折技術によって測定可能である。このような技術を使用してクリスタリットを測定し、リセット状態からセット状態へ向かう進行を評価できる。プログラミング期間が既知であれば、各プログラミング状態に関連するクリスタリットの容積比率を決定でき、その相関を見つけることでレジスタを読み出せる。
【００５８】
相変化材料のプログラミング状態の個別性質も、レジスタの読み出しを可能にする。これは、物理特性を監視し相関することを必要としない。高抵抗平坦域に沿った位置は、異なるプログラム状態を区別する上での基本特性である。高抵抗平坦域に沿った位置は、二つの方法のいずれかで考察できる。第１に、位置は、高抵抗平坦域に沿った特定のプログラミング状態に関連する位置に到達すべくリセット状態に加えるプログラミングパルスの数またはエネルギの増分期間に基づき、一意に説明またはラベル付けできる。この実施例において、プログラミングパルス（またはエネルギの増分期間または量）の必要量は、書き込みまたは格納処理から分かり、それを使用して読み出し処理においてプログラミング状態と記憶値とを識別する方法として使用できる。例えばパルスカウンタを使用し、所定レジスタに印加したパルス数を記録できる。
【００５９】
第２のより好適な方法は、高抵抗平坦域に沿った位置は、セット状態に到達するために必要なエネルギ量、またはプログラミングパルス数、または増分期間に基づき、一意に説明またはラベル付けできることに基づく。この実施例において、例えばレジスタに格納した値は、リセット状態のセットエネルギを分割したサブ期間の数から、セット状態に到達するために必要なプログラミングパルス数を減算することで決定できる。この読み出し処理が有利である理由は、セット状態が一意であって明確な状態だからである。この状態は、その低抵抗により簡単に検出できる。読み出しは、レジスタにプログラミングパルスを印加し、その抵抗を測定する。測定した抵抗が高抵抗平坦域に関連する値に対応すれば、相変化材料は低抵抗セット状態にない。プログラミングパルスの印加とレジスタ抵抗の測定の処理を繰り返すことにより、セット状態に到達するために必要なプログラミング数を決定できる。そしてプログラミング状態の合計数と比較すれば差が分かり、その差はレジスタに格納した値に対応する。
【００６０】
セット状態をプログラミング状態に含めるか否かにより、レジスタに記憶した値を決定するための前記処理は、別の用語を使って同様に表現できる。セット状態をプログラミング状態に含めない実施例の場合、リセット状態のセットエネルギを細分したサブ期間の数は、数を格納し処理するために使用する進法の基数に等しい。この場合、レジスタに格納した値は、進法の基数から、レジスタをセット状態に変換するために必要なプログラミングパルス数を減算することで、決定できる。ここでレジスタに格納した値は、レジスタの現在のプログラミング状態またはレジスタが変化した後のプログラミング状態に関連する数値を意味する。
【００６１】
一例として、基数４の進法において数「１」を格納したレジスタを読み出すことを検討する。この例は、均一プログラミング期間法を採用し、セット状態はプログラミング状態として使用しない。セット状態をプログラミング状態として使用しない場合、基数４の進法は４個のサブ期間を必要とする。４個のサブ期間は、４個のプログラミング状態（リセット状態を含む）とセット状態とを提供する。本例において、４個のプログラミング状態は、プログラミングエネルギの昇順において、数０，１，２，３に対応する。本例のレジスタに「１」を格納することは、リセット状態に１個のプログラミングパルスを印加すること、そして相変化材料は第２プログラミング状態にあることを意味する。このレジスタを読み出すため、１個のプログラミングパルスを印加し、抵抗を測定してレジスタがセット状態に到達したかを調べる。到達していなければ、セット状態に到達するまで前記を繰り返す。本例において、セット状態は、第３プログラミングパルスを印加した時に到達する。その結果、記憶した数は、４（進法の基数またはサブ期間の数）マイナス３（レジスタをセット状態に変換するために必要なプログラミングパルス数）によって与えられる。すなわち記憶した数は「１」である。
【００６２】
セット状態をプログラミング状態として使用する場合、別の読み出し処理を適用する。セット状態をプログラミング状態として使用する場合、サブ期間の数は、使用する進法の基数において利用可能な最大数値に等しい。代表的に、セット状態はレジスタに記憶可能な最大数に対応する。従って、レジスタに格納した数は、使用する進法の基数においてレジスタに格納可能な最大数値から、レジスタをセット状態に変換するために必要なプログラミングパルスの数を減算することにより求まる。格納可能最大数は、基数よりも１少ない。
【００６３】
一例として、基数４の進法において数「１」を格納したレジスタを読み出すことを検討する。この例は、均一プログラミング期間法を採用し、セット状態はプログラミング状態として含める。セット状態をプログラミング状態として使用する場合、基数４の進法は３個のサブ期間を必要とする。３個のサブ期間は、４個のプログラミング状態を提供する。これはリセット状態とセット状態とを含む。これら４個のプログラミング状態は、数０，１，２，３に対応する。本例のレジスタに「１」を格納することは、リセット状態に１個のプログラミングパルスを印加すること、そして相変化材料は第２プログラミング状態にあることを意味する。このレジスタを読み出すため、１個のプログラミングパルスを印加し、抵抗または他の適切な特性を測定してレジスタがセット状態に到達したかを調べる。到達していなければ、セット状態に到達するまで前記を繰り返す。本例において、セット状態は、第２プログラミングパルスを印加した時に到達する。その結果、記憶した数は、３（使用する進法の基数において１レジスタに格納可能な最大数値またはサブ期間の数）マイナス２（レジスタをセット状態に変換するために必要なプログラミングパルス数）によって与えられる。従って、記憶した数は「１」である。
【００６４】
数を格納しているレジスタをセット状態へ変換するために必要なプログラミングパルス数をカウントすることを含む読み出し処理において、読み出しの終了時、レジスタはセット状態にとどまる。必要があれば、そのレジスタをオリジナル値に復帰できる。読み出し処理は、格納した元の数値を明らかにするので、レジスタに元の値を復帰するには、レジスタをリセットし、次に元の数値に等しい数のプログラミングパルスを印加すればよい。
【００６５】
リセッティング処理は、セット状態に対してエネルギを印加する処理を含む。このエネルギの量は、高抵抗状態を新規に生成するために十分な量である。前記した通り、リセッティング処理は、電気抵抗曲線のセッティング後領域において発生する。この領域は例えば図１に示す領域であり、相変化材料の挙動を制御するものである。高抵抗平坦域からセット状態への変化は、一方向であり、電気抵抗曲線を左方向へ移動することで反転できるものではない。従って、相変化材料は、元の高抵抗平坦状態に「セット解除」できない。それに代えて、相変化材料は、十分なエネルギを印加してリセットし、高抵抗平坦域を新しく生成しなければならない。これは、電気抵抗曲線の最右端側へ相変化材料を駆動することで実現する。セッティング後領域の最右端点は、相変化材料の新しい高抵抗平坦域の作成に対応する。本発明の適切なエネルギ源は、相変化材料をリセットするために十分なエネルギを提供できなければならない。
【００６６】
前記した通り、メモリグループに格納する多くの数は、１以上の先行ゼロを含む。先行ゼロが頻繁に発生することおよび多くの演算は先行ゼロを考慮する必要がないことを考えると、先行ゼロの存在を簡単に検出する能力を有することが有利である。基数１０の進法において数３７２と数１２８とを加算することを考える。この場合、１０個のレジスタを各メモリグループに割り当てる。数３７２は０００００００３７２として格納し、数１２８は０００００００１２８として格納する。各数には７個の先行ゼロが存在し、これらは多くの算術演算において必要ない。例えばこれら２数の加算または減算は、先行ゼロの操作を必要としない。従って、先行ゼロの存在を簡単に検出し、多くの算術演算においてそれらをスキップするか無視すれば、より効率的であると期待できる。
【００６７】
ゼロに対応するプログラミング状態としてリセット状態を選択する場合、前記した処理に従って先行ゼロを読み出すには、幾つかのプログラミングパルスを印加して各先行ゼロをセット状態に変換する必要がある。このプログラミングパルスの印加は、先行ゼロを含む各数の各レジスタにおいて行う必要がある。その結果、算術演算は、機能的に重要でない操作を多数必要とする。これは、ゼロに対応するプログラミング状態としてリセット状態を選択した場合である。これにより、計算効率が落ちる。
【００６８】
計算効率を促進するため、ゼロに対応するプログラミング状態としてセット状態を割り当てることが好ましい。そうすることにより、先行ゼロは電気抵抗測定によって簡単に区別できるようになり、先行ゼロを検出するためのプログラミングパルスの追加は必要なくなる。これにより計算効率が向上する。前記した通り、本発明は、１実施例として、セット状態をゼロに対応させるプログラミング方式を含む。
【００６９】
計算方法
プログラミングは、数および桁の記憶に加え、記憶したデータを所望の方法で処理すべく設計したアルゴリズムの開発および実施を含む。例えばコンピュータは、４つの基本算術演算を実行できねばならない。すなわち、加算、減算、乗算、除算である。相変化材料の多状態記憶能力を効率的に利用するには、新しいアルゴリズムを開発する必要がある。従来のバイナリアルゴリズムは、単純な２状態メモリ素子用に設計されている。多状態または非バイナリ計算に固有の利点を実現するには、処理アルゴリズムを再考しなければならない。相変化記憶材料のデータ記憶特性およびプログラミング特性を特別に考察しなければならない。多状態メモリ素子用に設計したアルゴリズムをより詳細に説明する。
【００７０】
本発明に関する特定の計算方法あるいはアルゴリズムの詳細な開発は、相変化記憶材料とその動作に対してなされた基本的仮定または選択に基づいて行われた。決定すべき基本属性は、ゼロの選択、メモリグループ当たりに割り当てるレジスタの数、プログラミング状態の数、算術基数、プログラミング状態に関連付けるデータ値、セット状態をプログラミング状態に含めるか、である。処理および記憶の基本原理は、どの選択を行うかにかかわらず、似ている。しかしながら特定の詳細は異なる。本発明のユーザは、関係する動作パラメータ、条件、および好みを設定する上で大きな自由度を有する。
【００７１】
計算法についての以下の説明において取り上げる一例として、リセット状態を「０」として選択し、プログラミング状態の数を進法の基数と等しくし、セット状態はプログラミング状態に含めない。さらに固定数のレジスタを各メモリグループに割り当てて多桁数の記憶を行うものとし、この割当数は各メモリグループについて同一とする。このレジスタの割り当ては、各多桁数に利用可能なメモリ材料の最大容積を選択することに等しく、利用可能なメモリ材料の合計容積をそれに見合ったメモリグループに分割することに等しい。どのような数のレジスタでもメモリグループに割り当て可能である。割り当てた数のレジスタは、メモリグループが記憶可能な最大数の大きさを左右する。すなわち、１数について記憶可能な最大桁を決定する。この最大桁数は、計算効率を左右する。なぜなら、指数表示が必要になるタイミングを決めるからであり、１０進数の精度を決めるからであり、計算中に考慮せねばならない先行ゼロの数を決めるからである。本発明の１実施例において、レジスタの割当数は進法の基数に等しい。
【００７２】
メモリグループに割り当てるレジスタ数は、１数について記憶する最大桁数に対応する。１数の格納は、レジスタの割当数よりも少ない数のレジスタを必要とする場合もある。前記した通り、このような状況の時、その数は割り当てたレジスタ数内のレジスタ毎（桁毎）に格納する。これは、使用する進法の基数に関連付けた桁値システムに基づいて行う。その数が割り当てたレジスタ数の全てを必要としない場合、その数に割り当てた未使用レジスタは残存し、「０」を記憶する。従って、これら未使用レジスタは、記憶した数値に影響しない。これら未使用レジスタは先行ゼロを含み、必要に応じて記憶した数の処理または動作に利用可能である。
【００７３】
本発明に基づく計算方法の多くは、処理ステップを繰り返し実行することで、メモリグループの操作をレジスタ毎に行う。レジスタの全てを操作するために、「レジスタポインタ」または「計数レジスタ」によって各レジスタにラベルを付け識別すると便利である。ここで「レジスタポインタ」および「計数レジスタ」は、メモリグループ内の各レジスタを特定、識別、または区別することを意味する。メモリグループ内の位置は、計数レジスタがマークする。メモリグループの各レジスタは、計数レジスタの一意のセッティング、値、または状態に関連付ける。計数レジスタの各セッティング、値、または状態は、基数内の異なる桁値に対応すると見なすこともできる。１レジスタに対して計算方法、アルゴリズム、または処理ステップを実行する間、計数レジスタのセッティング、値、または状態は固定である。レジスタの操作が終わると、計数レジスタを増分し、方法または処理ステップの目的に基づき、次のレジスタの動作、処理、または操作を行う。計算方法または処理ステップは、計数レジスタが所定の終了状態に増分または到達すると完了する。一般に、終了状態は、メモリグループ内の全レジスタあるいはその適切なサブセットの処理に対応する。また、計数レジスタを増分することは、１レジスタから次のレジスタへ、あるいは進法の１桁値から次の桁値へレジスタポインタを移動することと見なせる。この場合、当該レジスタに対して実行する計算方法または処理ステップを指示する。多桁数において、各レジスタは異なる桁に対応し、レジスタポインタを増分することは、１桁から他の桁へ進行することに等しい。計数レジスタは、その計数レジスタに関連付けたメモリグループのレジスタと同数の状態を持っても良く、持たなくても良い。計数レジスタの状態数は、当該計数レジスタに関連付けたメモリグループに記憶する非先行ゼロ桁の数と少なくとも等しくすることが好ましい。１実施例において、計数レジスタの状態数は、１メモリグループに割り当てるレジスタ数と等しい。
【００７４】
計数レジスタは、メモリグループの外部回路でも良く、またはアルゴリズムによって動作させるレジスタまたはメモリ素子とは別の相変化記憶材料の一部でも良い。１好適実施例において、計数レジスタは、相変化材料の１容積であり、メモリグループのレジスタのプログラミング状態に対応するプログラミング状態を有する。他の好適実施例において、計数レジスタは、多状態相変化メモリの容積であり、当該計数レジスタの終了状態は、当該相変化材料のセット状態である。この実施例において、計算方法、アルゴリズム、または処理ステップは、計数レジスタがセット状態に到達した時終了する。計数レジスタの終了状態としてセット状態を選択することは有利である。なぜなら、それが簡単に検出可能であり、計算方法または処理ステップにとって都合の良い終了点を提供するからである。計数レジスタの初期状態は、１数の最終桁における計算方法の実行後、計数レジスタを増分すると当該計数レジスタがセット状態に到達するように設定できる。例えば、計数レジスタに１プログラミングパルスを印加する時、多桁数の１桁から次の桁への進行を指示し、多桁数の全桁に計算方法を実行したら、さらにプログラミングパルスを計数レジスタに印加すると、計数レジスタはセット状態に変化し、それによって当該計算処理の終了を示す。
【００７５】
以下における計算方法またはアルゴリズムの説明において、アルファベット文字（例えば「ａ」、「ｂ」、「ｃ」）を使用して各メモリグループを表す。１メモリグループ内のレジスタは、下付き文字で区別する。例えば、ｂ０およびｂ１は、メモリグループｂの２つの異なるレジスタを示し、メモリグループｂに格納した数における２つの異なる桁に対応する。文字「ｒ」は計数レジスタを示す指標である。ｒの異なる値は、１メモリグループ内の異なるレジスタを指示し、計算方法の実行対象を示す。ｒの先頭値および最終値は、ｒｉｎｉｔｉａｌおよびｒｆｉｎａｌと表し、ｒｆｉｎａｌは前記した終了状態に対応し、計数レジスタのセット状態に関連付けることが好ましい。指数ｒは、下付き文字としても使用し、特定のまたは現在の値ｒに関連したメモリグループのレジスタを表す。例えばｂｒは、現在値ｒに関連したメモリグループｂのレジスタを示すと共にそこに格納した桁を示す。一般に値ｒは、ｒｉｎｉｔｉａｌおよびｒｆｉｎａｌを含め、計算方法、アルゴリズム、または処理ステップの目的に基づき設定し変化させる。
【００７６】
幾つかの計算方法において、所定の計数レジスタを２以上のメモリグループの同時または順次発生する処理ステップに関連付けると便利である。この場合、単一の計数レジスタインデックスｒを対象メモリグループの全てで使用し、特に明記しない限り、ｒの値は各メモリセルのレジスタに対応する。同様に、ｒの値は、異なるメモリグループにおける同一の桁値位置を代表する。例えば、ａｒにおけるｒの特定値が１０の位を代表する時、ｂｒにおけるｒの同一特定値も１０の位を代表する。ここでメモリグループａおよびｂは、アルゴリズムまたは処理ステップにおいて共通動作するものである。
【００７７】
幾つかの計算方法において、２つの計数レジスタを定義し、特定メモリグループに格納した多桁数の異なる桁で起動または動作させると便利である。以下に説明するアルゴリズムにおいて、第２以上の計数レジスタは、文字ｓから順次ラベル付けする。すなわち、ｒは第１計数レジスタ、ｓは第２計数レジスタ、ｔは第３計数レジスタを意味する。以下同様である。
【００７８】
好適実施例において、計数レジスタに割り当てるメモリ材料の容積は、数字を保存するためのメモリグループ内におけるレジスタに関連するメモリ材料の容積と同等であり、同数のプログラミング状態を含む。この実施例が有利な理由は、使用するエネルギ源が、計数レジスタとメモリグループ内のレジスタとの両方に同一方法を適用できるからである。この実施例は、格納する数の桁数が進法の基数と等しいことを意味する。幾つかの実施例は、格納する数の桁数が進法の基数より多いあるいは少ない。このような実施例も可能であるが、かかる実施例は計数レジスタとメモリグループに別個のエネルギ源を必要とする。またはメモリグループに使用するエネルギ源を適切に変更して計数レジスタに適用する必要がある。例えばエネルギ源のピーク強度または期間を異なって定義することにより、計数レジスタおよびメモリグループに使用する。または、計数レジスタのプログラミング期間と、数を格納するレジスタのプログラミング期間とを異ならせる。
【００７９】
以下に説明するアルゴリズム例を通して本発明の実施例を説明するが、その時のリセット状態は「０」とし、メモリグループと計数レジスタのプログラミング状態は均一とし、メモリグループ内のレジスタにおけるプログラミング状態の数は進法の基数と等しくし、セット状態はプログラミング状態に含めず、計数レジスタ用のプログラミング状態の数はメモリグループ内のレジスタ用と同一とし、計数レジスタの終了状態はセット状態とする。これら条件を選択したのは説明のためであり、本発明の実施を制限するためではない。必要に応じて他の条件の実施例も説明する。また、以下に説明する計算方法の多くは、レジスタを増分するステップを含む。レジスタを増分する処理は、プログラミングパルスの印加を意味する。例えば１の増分は、１プログラミングパルスを印加して実現し、レジスタの１プログラミング状態を次のプログラミング状態に変化させること、あるいは最終プログラミング状態からセット状態へ変化させることに対応する。
【００８０】
計算方法の詳細実施例を以下に説明する。これら方法の１つ、またはそれらの組み合わせ、またはそれら全ては、特定容積の相変化材料で実行できる。相変化材料の異なる容積内で異なる計算方法を実行することも可能である。計算効率を上げるため、相変化材料の特定容積内において、できるだけ多くの計算方法を完了する能力を持つことが好ましい。データの適切な格納、処理、消去、および書き換えにより、本発明は前記能力を実現できる。代表的に、相変化材料の１特定容積内において、１計算方法を開始し終了してから、第２計算方法を実行する。特定容積の相変化材料内において多くの異なる計算方法を使用できるという汎用性は、本発明の特徴である。１好適実施例において、加算、減算、乗算、除算の算術演算は、特定容積の相変化材料内において、ここに開示する計算方法を使用することで遂行可能である。他の好適実施例において、減算、乗算、および除算の算術演算は、特定容積の相変化材料内において、ここに開示する計算方法を使用して遂行可能である。開示した全計算方法を含む計算方法の他の組み合わせを特定容積の相変化材料内において実行することも、本発明の他の実施例として構成可能である。
【００８１】
リセッティング
計算方法を実施する場合、１以上のレジスタまたはメモリグループをリセットすることが必要または望まれることが多い。そのため、レジスタおよびメモリグループをリセットするアルゴリズムの開発が有用である。本発明の多状態相変化メモリグループをリセットする基本ステップは、そのグループ内の全レジスタをリセットすることである。前記した通り、リセッティング処理は、相変化材料をリセットするに足る量のエネルギを印加することを含む。１実施例において、そのエネルギは、リセットエネルギパルスの形で提供し、リセッティングアルゴリズムの核心は、メモリグループの各レジスタにリセットパルスを印加することを含む。リセットパルスは、メモリグループの各レジスタに個別に順次印加することができる。全レジスタをたどることにより、そのメモリグループをリセットできる。幾つかの実施例は、ゼロに割り当てたプログラミング状態としてリセット状態を使用する。この場合、リセッティングを完了するには、各メモリグループにおいて、先行ゼロを含むレジスタを除き、ゼロを含まない最高桁値を有するレジスタで始まる残りのレジスタに、リセットパルスまたはリセット量のエネルギを、レジスタ毎に順次印加する。
【００８２】
図２は、リセッティングアルゴリズムを示す概略図である。このアルゴリズムのラベルはＲＥＳＥＴ（ａ）であり、メモリグループａをリセットするために設計したことを示している。このアルゴリズムはステップＴ１０で開始する。ステップＴ１１において、計数レジスタの初期化を行う。初期化とは、ｒｉｎｉｔｉａｌの値を設定することであり、計数レジスタを初期プログラミング状態にする。初期化は、動作させるメモリグループの第１レジスタを指示することに対応する。ステップＴ１２、Ｔ１３、Ｔ１４は、繰り返しループを構成し、本アルゴリズムの基本処理ステップである。ステップＴ１２において、レジスタカウンタｒの現在値に対応するレジスタａｒをリセットする。このループの第１回目の通過において、ｒの値はｒｉｎｉｔｉａｌであり、メモリグループａの第１レジスタをリセットする。ループのそれ以降の通過において、ｒの値を増分し、メモリグループの残りのレジスタをリセットする。ステップＴ１２は、リセットエネルギパルスを印加することを伴う。ステップＴ１３において、計数レジスタを１だけ増分し、メモリグループ内の次のレジスタを指示する。計数レジスタの増分は、プログラムエネルギパルスの印加によって行う。プログラムエネルギパルスは、計数レジスタの記憶材料を現在のプログラミング状態から次のプログラミング状態へ変化させる。ステップＴ１４は、条件検査ステップであり、計数レジスタが終了状態に到達したか否かを検査する。１実施例において、終了状態は、計数レジスタのセット状態であり、条件検査は低抵抗セット状態の電気抵抗あるいは他の区別可能特性を測定することによって実行できる。これは前記した通りである。計数レジスタが終了状態になければ、本方法はステップＴ１２へ戻り、当該メモリグループの次のレジスタをリセットする。そしてステップＴ１３において計数レジスタを再度１だけ増分し、ステップＴ１４において条件検査を実行する。ステップＴ１２、Ｔ１３、Ｔ１４のループは、計数レジスタが終了状態に到達するまで繰り返す。計数レジスタが終了状態に到達すると、値ｒ＝ｒｆｉｎａｌとなり、メモリセル内の全レジスタがリセットしたことを示す。計数レジスタが終了状態に到達したら、本方法はステップＴ１５へ進む。ステップＴ１５は、オプションステップであり、計数レジスタのリセッティングに対応する。このステップは、別の計算方法または別のメモリグループのために計数レジスタを準備する時に有利である。ステップＴ１６は、本方法の終了ステップである。
【００８３】
前記方法は、単一のメモリグループのリセッティングを示した。この方法は、複数のメモリグループのリセッティングに簡単に拡張できる。例えばメモリグループａおよびｂをリセットするには、ステップＴ１２とＴ１３との間にステップＴ１２’を挿入し、レジスタｂｒをリセットする。ステップＴ１２’は、「レジスタｂｒリセット」とし、この方法にＲＥＳＥＴ（ａ，ｂ）と名前を付け、メモリグループａおよびｂをリセットすることを示す。この方法は、同様に拡大し、いかなる数のメモリグループでも扱える。
【００８４】
図３は、図２の方法を別の表現で説明する図である。図３のリセッティング方法の各ステップは、図２の各ステップに直接対応するが、それらの番号は１０だけオフセットしている。従ってステップＴ２０はステップＴ１０に対応し、ステップＴ２１はステップＴ１１に対応する。以下同様である。図３は、後述する他の計算方法に使用する表現を示している。ステップＴ２１において、「ｒ＝ｒｉｎｉｔｉａｌ」はｒの値をｒｉｎｉｔｉａｌに設定することを示す。このステップは、計数レジスタの初期化に対応する。リセットステップＴ２２において、「ａｒ＝０」はｒの現在値に関連するメモリグループａのレジスタをリセットすることを示す。ステップＴ２３において、「ｒ＝ｒ＋１」はｒの値を１だけ増分することを示す。このステップは、計数レジスタを１だけ増分することに対応し、計数レジスタに１プログラミングパルスを印加して行う。ステップＴ２４において、「ｒ＝ｒｆｉｎａｌ？」は条件検査を示す。ステップＴ２４は、計数レジスタが終了状態に到達したかを問い合わせる。到達していなければ、本方法はステップＴ２２、Ｔ２３、Ｔ２４をループし、これを終了状態に至るまで繰り返す。計数レジスタが終了状態にあれば、本方法はオプションの計数レジスタリセットステップＴ２５に進み、次にステップＴ２６へ進む。
【００８５】
図２および図３に示した方法は、計数レジスタに初期値を設定する初期化ステップと、計数レジスタが終了状態に到達した時を決定する条件検査ステップとを含む。別の方法を使用してｒｉｎｉｔｉａｌおよびｒｆｉｎａｌを選択しても良い。前記した通り、ｒｆｉｎａｌは計数レジスタのセット状態に関連付けることが好ましい。その理由は、セット状態が簡単な検査で簡単に識別できるからである。計数レジスタの終了状態が計数レジスタに関連したメモリ材料のセット状態に対応する場合、計算方法の完了またはループの完了は有利に識別できる。計数レジスタのセット状態が終了状態である場合、ｒｉｎｉｔｉａｌの値は少なくとも２つの選択肢を有する。第１に、ｒｉｎｉｔｉａｌは、計数レジスタのリセット状態に対応すべく選択できる。この実施例は、メモリグループ内の全レジスタを処理する（すなわちたどる）。この実施例は、実行が簡単であるという利点を有するが、必ずしも最高の効率ではない。その理由は、最初からリセット状態にあるレジスタまで無用に動作させるからである。
【００８６】
第２の方法は、ｒｉｎｉｔｉａｌを設定する際、計数レジスタの初期状態を終了状態にするために必要なプログラミングパルス数または増分数と、メモリグループに格納した数における非先行ゼロ桁の数とを等しくする。この方法は、ゼロに対応するプログラミング状態としてリセット状態を選択する実施例に適している。その理由は、処理対象から先行ゼロ桁を除くからである。この実施例において、計数レジスタ初期化ステップは、メモリグループに格納した数が含む先行ゼロの１つについて１つのプログラミングパルスを、リセット状態にある計数レジスタに印加する。（計数レジスタが初期化ステップの開始においてリセット状態にない場合、前記プログラミングパルスを印加する前にリセットパルスを計数レジスタに印加する）。この初期化手順は、計数レジスタを初期状態から終了状態に変化させるために必要なプログラミングパルスの数は、メモリグループに保存した数が含む非先行ゼロ桁の数に等しいことを意味する。
【００８７】
例えばこの実施例において、基数１０の数「０００００００４７２」を考える。この数は、７個の先行ゼロと３個の非先行ゼロ桁を含む。本実施例の初期化手順に基づき、計数レジスタをリセットし（必要なら）、初期化ステップにおいて７個のプログラミングパルスを計数レジスタに印加する。この７個のプログラミングパルスにより、計数レジスタは第８プログラミング状態となる。第８プログラミング状態は、前記数の第８桁を示すことに対応する。「０００００００４７２」の例では、第８桁は「４」であり第１非先行ゼロ桁である。アルゴリズムにおいて各ループ毎に、１プログラミングパルスを計数レジスタに印加する。３ループ後においては、前記数の各非先行ゼロ桁に１パルスずつであるため、計数レジスタは終了状態にある。この時、「０００００００４７２」を格納したメモリグループはリセットされ（すなわち「００００００００００」に変換され）、本方法は終了ステップに進む。本例において計数レジスタに印加する３個のプログラミングパルスは、順序に関わりなく、３個の非先行ゼロ桁の動作に対応する。昇順（「２」次に「７」次に「４」）または降順（「４」次に「７」次に「２」）において各桁を処理することが好ましい。
【００８８】
前記第２初期化方法は有利である。その理由は、先行ゼロのリセッティングに計算時間あるいは資源を使う必要がないからである。第２方法が計数レジスタに設定する値は、メモリグループに格納した数が含む非先行ゼロ桁の数が決定し、非先行ゼロ桁のみを処理することで計算を効率化できる。図２および図３に示した方法は、ｒｉｎｉｔｉａｌおよびｒｆｉｎａｌをどのように選択しても良い。特定の選択は、異なる実施例を構成する。同様のことが以下に説明する計算方法にも当てはまる。
【００８９】
図２および図３に示したリセット方法は、リセット状態が非ゼロ数に対応するプログラミング状態である実施例にも使用できる。このような実施例の多くにおいて、リセット状態は第１プログラミング状態であり数１に関連付ける。かかる実施例において、図２および図３に示したリセット方法の実行は、対象メモリグループのレジスタを１に設定することと同等である。すなわち、メモリグループのリセッティングおよびメモリグループのゼロ化は、これら実施例において異なる動作となる。ゼロ化は、まず図２または図３のアルゴリズムに基づいてリセッティングを行い、次に適切な数のプログラミングパルスを印加することにより、ゼロに関連付けたプログラミング状態を確立する。多くの場合、ゼロに対応するプログラミング状態としてセット状態を選択し、ゼロ化の動作はメモリグループの全レジスタをセッティングすることで行う。
【００９０】
ハーフコピー
計算方法の実施においては、１メモリグループの内容を他の１以上のメモリグループにコピーすることが必要あるいは好ましいことが多い。そのため、メモリグループをコピーするための方法を開発することが有用である。以下に説明するように、ハーフコピー法は、コピー法の中間ステップとして使用できる。以下に２つの異なるハーフコピー法、すなわちＨＡＬＦＣＯＰＹ＿１とＨＡＬＦＣＯＰＹ＿２を説明する。
【００９１】
ハーフコピー法は、以下において数の補数と呼ぶものを返す。数の補数とは、格納した各桁の数を進法の基数から減算することによって得られる結果を意味する。例えば基数１０における数「５８７」を考える。補数は、この数の桁毎に算術基数から減算することで得られる。「５８７」の補数の第１桁は１０−５＝５であり、第２桁は１０−８＝２であり、第３桁は１０−７＝３である。従って「５８７」の補数は「５２３」である。基数１０の進法における数「５８７」をハーフコピー法へ入力すると、この方法は「５２３」を返す。補数は、他の基数系についても同様に定義でき、記憶した数に割り当てたあらゆる数のレジスタに適用できる。
【００９２】
非先行ゼロの扱いは、ハーフコピー法では特別の注意が必要である。基数１０の進法における数「９０７」の例は、非先行ゼロを含む数が遭遇する複雑さを示す。補数を計算するための前記方法を適用すると、「９０７」は第１桁として「１」（１０−９）、第２「桁」として「１０」（１０−０）、第３桁として「３」（１０−７）を返す。従って「９０７」の補数は、「１（１０）３」と決まる。一般にどのような算術基数においても、非先行ゼロが存在すると、補数の「数」は算術システムの基数に等しくなる。このような「数」は、算術基数において正式に「１０倍の数」であり、そのまま使用すれば格納のために２個のレジスタを必要とする。計算法はレジスタ毎に実行したいため、１数の補数の計算における非先行ゼロの扱いには、従来手法または従来定義を採用することが好ましい。以下に説明するＨＡＬＦＣＯＰＹ＿１法とＨＡＬＦＣＯＰＹ＿２法とは、非先行ゼロを扱うための２つの異なる方法を示す。
【００９３】
ＨＡＬＦＣＯＰＹ＿１は、レジスタのセット状態をプログラミング状態とせず、「０」の補数をセット状態として選択する。この選択が論理的に導かれるのは次の事実による。すなわちセット状態は、そのエネルギが１プログラミングパルスだけ、レジスタの最後のプログラミング状態より高く、そのために進法の基数に等しいと見なせる。例えば基数１０系において、最後（第１０）のプログラミング状態は「９」に対応し、レジスタのリセット状態の９個のプログラミングパルスを印加することで到達できる。第１０プログラミングパルスを印加すると、レジスタはセット状態に変化する。基数１０系においてレジスタが「０」を格納しており、そこに１０個のプログラミングパルスを印加すれば、レジスタはセット状態に変化する。このため、セット状態が正式にはプログラミング状態ではなくても、１数の補数を計算する目的においては、「１０」に対応すると考えても構わない。このことは全ての基数系に当てはまる。以下において、セット状態を「１０」ではなく「０＊」と呼ぶことにし、「０」の補数は２つのレジスタではなく１つのレジスタに記憶できる。この条件の下に、基数１０における「９０７」の補数は「１０＊３」である。これにより、１数とその補数とは、同一数のレジスタに保存できる。
【００９４】
図４にＨＡＬＦＣＯＰＹ＿１法を示す。ＨＡＬＦＣＯＰＹ＿１を採用する実施例は、値０を割り当てるプログラミング状態としてリセット状態を選択する。ＨＡＬＦＣＯＰＹ＿１（ｂ；ａ）という表記は、ＨＡＬＦＣＯＰＹ＿１を適用するデータがメモリグループａに記憶されており、メモリグループｂに出力を提供することを意味する。言い換えれば、メモリグループａに保存した数の補数を、メモリグループｂに書き込む。メモリグループｂは、出力先メモリセルと呼ぶこともある。この方法はステップＴ３００で開始する。入力データ値がメモリグループａに保存されていなければ、このスタートステップにおいて保存する。プログラミング状態、プログラミング期間、数値の割り当てもステップＴ３００において完了する。格納は、十分なエネルギを提供することにより、保存しようとする数に関連付けたプログラミング状態に相変化材料を変換させる。ステップＴ３０１は、計数レジスタを初期化する。この初期化処理は、前記したリセッティングアルゴリズムにおいて説明した。それをｒｉｎｉｔｉａｌとｒｆｉｎａｌとに適用できる。ステップＴ３０１は、前記したリセット方法と同じ効果を提供するアルゴリズムまたは処理を使用する。ステップＴ３０２において、メモリグループｂをリセットする。メモリグループｂのリセットは、図２または図３で説明したリセッティング方法、または同等の方法で行う。ステップＴ３０２が完了すると、メモリグループｂの全レジスタはリセット状態にあり、ゼロを格納している。
【００９５】
ステップＴ３０３、Ｔ３０４、Ｔ３０５は繰り返しループを構成し、本方法の基本処理ステップに対応する。前記した通り、１数の補数の計算は、進法の基数から、各レジスタに保存した数をレジスタ毎に減算することを必要とする。各レジスタにおけるこの減算処理の結果は、そのレジスタをセット状態に変換するのに必要なプログラミングパルス数に対応する。例えば基数１０系において、「６」を格納するレジスタをセット状態に変換するには４個のプログラミングパルスが必要であり、「６」の補数は４である。従って１数の補数を計算することの鍵は、各レジスタをセット状態に変換するために必要なプログラミングパルス数を追跡し続けることである。前記リセッティング方法において示した通り、この方法は非先行ゼロを含むレジスタのみに適用することが好ましい。この目的は、ｒｉｎｉｔｉａｌを前記したように適切に設定することで実現できる。
【００９６】
ステップＴ３０３、Ｔ３０４、Ｔ３０５はループを提供し、現在値ｒに関連するレジスタをセット状態に変換するのに必要なプログラミングパルス数を記録する。ステップＴ３０３において、現在値ｒに関連するメモリグループａのレジスタを１だけ増分する。ステップＴ３０４において、メモリグループｂの対応するレジスタを１だけ増分する。これによりメモリグループｂは、メモリグループａに印加したプログラミングパルス数を追跡し続ける。ステップＴ３０５は、レジスタａｒが終了状態に到達したか否かを調べる。到達していなければ、本方法はループを戻ってステップＴ３０３およびＴ３０４を繰り返し、再びａｒとｂｒを１だけ増分する。ａｒが終了状態になるまでこのループを繰り返す。終了状態になると、レジスタａｒはセット状態にあり、レジスタｂｒは、レジスタａｒをセット状態にするために印加したプログラミングパルス数に対応するプログラミング状態にある。従ってレジスタｂｒは、レジスタａｒに保存した元の数の補数を格納する。
【００９７】
ステップＴ３０６は、オプションのステップであり、必要に応じてレジスタａｒをリセットする。本発明のこの時点において、現在値ｒに関するレジスタａｒの補数は、レジスタｂｒに保存されている。補数の決定を完了するには、メモリグループａの全レジスタについて処理ループを繰り返す必要がある。ステップＴ３０７において、ｒの値を１だけ増分し、計数レジスタが次のレジスタを示すようにする。ステップＴ３０８は、計数レジスタインデックスｒが最終値に到達したかを調べる。まだ到達していなければ、本方法はステップＴ３０３に戻り、新しいレジスタについてステップＴ３０３、Ｔ３０４、Ｔ３０５のループを完了する。このループが完了すると、メモリグループａの他のレジスタがセット状態にあり、そのレジスタに保存した元の数の補数がメモリグループｂの対応するレジスタに記録されている。ステップＴ３０６とＴ３０７は、前記したように完了し、本方法はステップＴ３０８へ進み、再度計数レジスタが最終状態にあるか否かを調べる。最終状態になければ、本方法はステップＴ３０３に戻り、次のレジスタを処理する。全レジスタの処理が終了すると、メモリグループｂはメモリグループａが保存する元の数の補数を保存しており、メモリグループａはリセットされ、必要なら他の処理に利用可能となる。この時点において、本方法はオプションのステップＴ３０９へ進み、計数レジスタをリセットする。一般に計数レジスタをリセットし、それを他の処理に利用可能とすることが好ましい。本方法は、ステップＴ３１０において終了する。出力の読み出しは、ステップＴ３１０において完了できる。
【００９８】
ＨＡＬＦＣＯＰＹ＿２はＨＡＬＦＣＯＰＹ＿１に似ており、非先行ゼロの補数の扱いが異なる。ＨＡＬＦＣＯＰＹ＿１と同様、ＨＡＬＦＣＯＰＹ＿２は、ゼロに関連付けたプログラミング状態としてリセット状態を使用する。ＨＡＬＦＣＯＰＹ＿２において、非先行ゼロの補数はゼロとして選択する。言い換えれば、非先行ゼロはそれ自体を補数として有する。基数１０の数「９０７」が入力されると、ＨＡＬＦＣＯＰＹ＿２はその補数として「１０３」を返す。図５はＨＡＬＦＣＯＰＹ＿２を示す。ＨＡＬＦＣＯＰＹ＿２のほとんどのステップは前記したＨＡＬＦＣＯＰＹ＿１のステップに対応する。対応するステップは、ステップのラベルに使用する数値を３０だけオフセットしている。例えばステップＴ３３０はステップＴ３００に対応し、ステップ３３１はステップ３０１に対応する。以下同様である。ステップＴ３３６’およびＴ３３６”は、対応するＨＡＬＦＣＯＰＹ＿１のステップを持たない。これらステップは、ステップＴ３３６’に到達した時点でセット状態０＊にある出力先メモリグループｂのレジスタをリセットするために使用する。ステップＴ３３６’は、現在値ｒに関係するレジスタｂｒがセット状態か否かを調べる。ａｒの場合と同様、この検査は、セット状態の抵抗または他の特性を測定することによって実行できる。レジスタｂｒがセット状態になければ、本方法はステップＴ３３７へ進む。その他はＨＡＬＦＣＯＰＹ＿１と同様である。
【００９９】
レジスタａｒが最初から「０」を保存していれば、レジスタｂｒはセット状態０＊に変換される。これは、ａｒをセット状態０＊に変換したのと同じステップＴ３３３、Ｔ３３４、Ｔ３３５のループを繰り返すことで行う。この状況が発生し、本方法がステップＴ３３５からＴ３３６へ進む場合、ａｒとｂｒは共にセット状態０＊にある。ステップＴ３３６においてレジスタａｒをリセットする。ＨＡＬＦＣＯＰＹ＿１の対応ステップと同様、ステップＴ３３６はオプションであるが実行することが好ましい。レジスタｂｒがセット状態０＊にある場合、本方法はステップＴ３３６”へ進み、ｂｒをゼロにリセットする。これは、ＨＡＬＦＣＯＰＹ＿２において非先行ゼロの補数の扱いに採用した考え方に合わせるためである。本方法はステップＴ３３７へ進む。後はＨＡＬＦＣＯＰＹ＿１と同様である。
【０１００】
ＨＡＬＦＣＯＰＹ＿２と同等の方法をさらに開発することも可能であり、それらも本発明範囲に含む。例えばステップＴ３３６’およびＴ３３６”を含める代わりに、ステップＴ３３２とＴ３３３の間に追加のステップを置き、非先行ゼロをそれ自体の補数として扱うという考えに合わせることができる。ステップＴ３３２’を追加し、ａｒがゼロであるかを調べる。ゼロでなければステップＴ３３３へ進み、それ以降はＨＡＬＦＣＯＰＹ＿１と同様である。ステップＴ３３２’がａｒはゼロであることを示せば、対応するレジスタｂｒを動作させる必要はない。その理由は、それがすでに値「０」を持っているからであり、所望の補数をすでに表しているからである。この場合、本方法はステップＴ３３７へ直接ループし、中間ステップをバイパスできる。
【０１０１】
ＨＡＬＦＣＯＰＹ＿１とＨＡＬＦＣＯＰＹ＿２は、１出力レジスタに関して説明したが、少しの変更により多出力レジスタに適用できる。例えばＨＡＬＦＣＯＰＹ＿１（ｃ，ｂ；ａ）は、メモリグループａに存在する数の補数を出力メモリグループｂおよびｃに格納する。このような方法は、ステップＴ３０４’を含めることで実現できる。このステップは、ステップ３０４の直後にｃｒ＝ｃｒ＋１を実行する。
【０１０２】
前記した通り、先行ゼロの処理を除外するようにｒｉｎｉｔｉａｌを設定する実施例が好ましい。先行ゼロを処理する実施例も本発明の範囲である。かかる実施例において、先行ゼロは、非先行ゼロの補数の扱いに関して説明した考え方のいずれかに基づいて処理する。
【０１０３】
コピー
コピーアルゴリズムの機能は、１メモリグループの内容を他のメモリグループにコピーすることである。一般に、メモリグループを直接読み出し、その内容を他のメモリグループに複写できる。このような直接コピーの実施性は、メモリグループを読み出すことの容易さに依存する。直接コピーは、相変化材料を使用し即時計算方法により可能である。直接コピーは、１メモリグループのメモリ素子またはレジスタの読み出しと、その結果を他のメモリグループのメモリ素子またはレジスタに書き込むことを必要とする。即時計算方法が使用する多状態相変化材料の読み出しおよび書き込みは、前記した通りである。
【０１０４】
他のコピー方法は、前記したハーフコピー法を使って工夫できる。ハーフコピー法は、１数の補数を出力として返す。ハーフコピー法を１数の補数に適用し、その数自体を返す。言い換えれば、ハーフコピー法を２回連続して適用し、元の入力数を出力として返す。一例として、基数１０の進法における数「５４３」を考える。ＨＡＬＦＣＯＰＹ＿１またはＨＡＬＦＣＯＰＹ＿２のいずれかを基数１０の進法の「５４３」に適用すると、「５６７」を返す。ＨＡＬＦＣＯＰＹ＿１またはＨＡＬＦＣＯＰＹ＿２のいずれかをその出力結果「５６７」に引き続いて適用すると、「５４３」が戻る。ＨＡＬＦＣＯＰＹ＿１またはＨＡＬＦＣＯＰＹ＿２を２回続けて適用する、またはＨＡＬＦＣＯＰＹ＿１とＨＡＬＦＣＯＰＹ＿２とを順序に関わりなく連続で適用する、またはＨＡＬＦＣＯＰＹ＿１またはＨＡＬＦＣＯＰＹ＿２と同一効果をもたらすアルゴリズムを同様に適用することでコピー方法を構築できる。
【０１０５】
図６はコピー方法の一例を示す。ＣＯＰＹ（ｂ，ｃ；ａ）は、メモリグループａの内容を出力先メモリグループｂおよびｃへコピーする。本方法は、ステップＴ４００で開始する。入力データ値を格納していなければ、この開始ステップにおいてメモリグループａに格納する。プログラミング状態、プログラミング期間、および数値の割り当てもステップＴ４００で行う。格納は、格納する数に関連付けたプログラミング状態へ相変化材料を変化させるに足るエネルギを提供することを含む。ステップＴ４０１およびＴ４０２の各々において、ハーフコピー法を呼び出し、それを実行する。ここで呼び出す方法は、ＨＡＬＦＣＯＰＹ＿１またはＨＡＬＦＣＯＰＹ＿２または同等の方法である。ステップＴ４０１は、メモリグループａのデータを入力とし、その補数をメモリグループｄに提供する。ステップＴ４０２は、メモリグループｄ内のデータを取り出し、その補数をメモリグループｂおよびｃに提供する。本方法はステップＴ４０３で終了する。出力の読み出しは、ステップＴ４０３で完了する。
【０１０６】
ＣＯＰＹ（ｂ，ｃ；ａ）の効果は、メモリグループａの内容をメモリグループｂとｃにコピーすることである。２以上の出力先メモリセルにコピーしたい場合、同様の方法を記述できる。１出力先レジスタのみの場合、本方法は１メモリグループの内容を他のメモリグループに移動する効果を有する。例えばＣＯＰＹ（ｂ；ａ）は、メモリグループａの内容をメモリグループｂにコピーする。変換が起きるので、本方法が完了すると、メモリグループａは元の内容を持っていない。従ってＣＯＰＹ（ｂ；ａ）は、メモリグループａの内容をメモリグループｂに移動する効果を有する。メモリグループａに存在するオリジナルデータを保持する必要がある場合、メモリグループａを出力先レジスタに含める。例えばＣＯＰＹ（ａ，ｂ；ａ）は、メモリグループａの内容を出力先メモリグループｂへ提供し、メモリグループａを元の状態に戻す。
【０１０７】
コピーしようとする数が非先行ゼロを含む場合、ステップＴ４０１およびＴ４０２においてＨＡＬＦＣＯＰＹ＿２を呼び出すことが好ましい。ＨＡＬＦＣＯＰＹ＿２で非先行ゼロを処理すると、ゼロを返す。コピーしようとする元の数に非先行ゼロが存在する時、ＨＡＬＦＣＯＰＹ＿２を２回適用すれば、非先行ゼロが返される。例えば基数１０における数「９０７」を考える。ＨＡＬＦＣＯＰＹ＿２を１度適用すると、数「１０３」を返す。２度目の適用では、数「９０７」を返す。これはコピーアルゴリズムにおいて通常求められる真のコピーである。
【０１０８】
ＨＡＬＦＣＯＰＹ＿１およびＨＡＬＦＣＯＰＹ＿２の他の組み合わせに基づくコピー方法は、真のコピー以外の結果を返す。この場合、真のコピーが必要なら、追加の処理ステップが求められる。ステップＴ４０１においてＨＡＬＦＣＯＰＹ＿１を使用し、ステップＴ４０２においてＨＡＬＦＣＯＰＹ＿１を使用することを考える。基数１０における「９０７」を入力すると、ステップＴ４０１は「９０＊３」を返す。この結果をステップＴ４０２への入力として使用すると、「９１７」が戻る。真のコピーを手に入れるため、ステップＴ４０１が返す０＊をリセットしてからステップＴ４０２を実行する必要がある。そしてステップＴ４０２を実行した後、同じことをする必要がある。ステップＴ４０１においてＨＡＬＦＣＯＰＹ＿１を使用しステップＴ４０２においてＨＡＬＦＣＯＰＹ＿２を使用すると、「９０７」を入力した場合、やはり「９１７」を返す。ステップＴ４０１においてＨＡＬＦＣＯＰＹ＿２を使用しステップＴ４０２においてＨＡＬＦＣＯＰＹ＿１を使用すると、「９０７」を入力した場合「９０＊７」を返す。これら出力を真のコピーに変換するには、追加ステップをコピー方法に加える必要がある。
【０１０９】
加算
加算アルゴリズムの機能は、２数を入力として受け取り、その合計を出力として返すことである。その最も基本的な形において、本発明における加算は、相変化材料に加えるエネルギと見なせる。相変化材料の状態は、リセット状態に対して順番に並んでいるか区別可能であるため、相変化材料のリセット状態に加えた合計エネルギ、あるいはリセット状態に対して相変化材料が持っている合計エネルギは、加算メカニズムを定義する基本として使用できる。
【０１１０】
加算の１方法は、リセット状態に対する相変化材料の状態のエネルギの加算性質を利用する。この方法において、相変化材料は最初にリセット状態に変換し、加算する数に固有のエネルギを印加する。例えば第１数に比例する第１エネルギ量を印加すると、相変化材料は第１数に特徴的な状態に変化する。次に、第２数に比例する第２エネルギ量を印加すると、相変化材料は第１数と第２数の合計に特徴的な状態に変化する。この方法におけるエネルギは、相変化材料に直接印加しても良く、相変化材料内に細分したメモリグループに印加しても良く、メモリグループが含むレジスタに印加しても良い。１数に特徴的なエネルギは、その数に比例するか、その数の数値に関連付けたプログラミング状態に相変化材料を変化させるに足るエネルギに対応する。
【０１１１】
また相変化材料は、最初にそのリセット状態にある必要はない。その理由は、リセット状態とセット状態間のエネルギ期間内の相対位置は、１数を表すために使用できるからである。例えばリセット状態とセット状態間の中間のエネルギ状態は、相変化材料に記憶可能な最大数の半分に対応するであろう。かかる状態は、相変化材料をセットするために必要なエネルギ量によって識別できる。リセット状態とセット状態間のエネルギ期間は特定の化学組成について固定であるため、セット状態に対するエネルギを、相変化材料に記憶した数の量的特性として使用できる。同様に、プログラミング状態を定義すれば、相変化材料に記憶した数値を知ることができる。これは、当該数が相変化材料をセットするために必要なプログラミング期間の数を決定するからであり、そのプログラミング期間数を１組のプログラミング状態に記憶可能な最大数値から減算することにより、当該数を得ることができる。
【０１１２】
１数の補数を決定する好適方法は、多状態記憶グループに記憶した数を加算するための方法の別の基本を提供する。加算演算は、数自体よりもその数の補数から、より自然に実行できるであろう。その可能性の理由は、１数の補数は、セット状態に到達するために印加するプログラミングパルスの数が、元の数自体と等しいからである。例えば基数１０の進法における１桁数「４」を考える。基数１０の進法における「４」の補数は「６」である。「６」は、簡単に検出可能なセット状態０＊に到達するため、４プログラミングパルスを必要とする。従って「４」をその補数「６」に変換し、その「６」をセット状態に変換すれば、レジスタの内容を４だけ増分する信頼性の高い方法を実行したことになる。このため、２数を加算する基本方法は、まず第１加数を補数に変換し、その補数と第２加数とに等しい数のプログラミングパルスを１度に１つずつ印加し、これを前記補数が低抵抗セット状態に到達するまで行う。この変換が終わると、第１加数と等しい数のプログラミングパルスを第２加数に加算したことになる。この方法は、加算法として好ましい。その理由は、第１加数の補数のセット状態が簡単に検出可能だからである。
【０１１３】
加算の基本方法を説明する。例えば第１加数「４」を第２加数「５」に加算することを考える。基数１０の進法を用いる。加数「４」をその補数に変換すると「６」が得られる。この「６」をセット状態に変換するには、４個のプログラミングパルスが必要である。補数「６」をそのセット状態に変換しながら第２加数「５」を１対１の関係で増分すると、第２加数「５」に４個のプログラミングパルスが印加されることになる。この結果、第２加数「５」は「９」に対応するプログラミング状態に変化し、これにより加数「４」と「５」とが加算される。
【０１１４】
図７は、加算の基本計算方法を示す。図７のアルゴリズムは基本加算法と呼び、図８に示すさらに厳密な方法と区別する。図７のＢＡＳＩＣＡＤＤ（ａ，ｂ；ａ＋ｂ）は、数ａとｂを入力し、合計ａ＋ｂを出力する。数ａおよびｂは、メモリグループａおよびｂに格納し、単一桁数または多桁数であり、メモリグループａおよびｂに関連付けた一連のレジスタに格納する。前記した通り、本方法が提供する出力ａ＋ｂは、元の加数ｂを格納しているメモリグループに渡す。このため、メモリグループｂは、図７の方法において出力先メモリグループである。同様の方法において、出力をメモリグループａに格納しても良く、メモリグループａおよびｂ以外のメモリグループに書き込んでも良い。
【０１１５】
本アルゴリズムは、ステップＴ５００にて開始する。入力データ値ａおよびｂがまだ保存されていなければ、この開始ステップにおいて保存する。プログラミング状態、プログラミング期間、および数値の割り当ても、ステップＴ５００において行う。データの格納は、格納する数に関連付けたプログラミング状態に相変化材料を変化させるに足るエネルギを提供することを含む。ステップＴ５０１において、ハーフコピー法を呼び出す。ステップＴ５０１の目的は、メモリグループａに格納した数の補数を計算することである。計算した補数はメモリグループｃに格納する。ＨＡＬＦＣＯＰＹ＿１、ＨＡＬＦＣＯＰＹ＿２、またはそれらと同等方法をステップＴ５０１にて使用する。この時、以下に説明する非先行ゼロを考慮する。
【０１１６】
ステップＴ５０２において、計数レジスタを初期化する。計数レジスタの好ましい初期化は、計数レジスタの最終状態を計数レジスタのセット状態とすることである。計数レジスタの各状態は、本アルゴリズムが処理するメモリグループに格納する数の異なる桁またはレジスタに対応させることが好ましい。１メモリグループにおいて、１桁から次へ進むことは、計数レジスタを１だけ増分することによりマークする。この増分は、計数レジスタにプログラミングパルスを印加して行う。全ての桁を処理したら、さらに１個のプログラミングパルスを印加し、計数レジスタをセット状態にすることが好ましい。そのような結果になるよう、計数レジスタを初期化することが好ましい。例えば２個の４桁加数を加算する場合、計数レジスタを初期化し、４個のプログラミングパルスを印加すると計数レジスタがセット状態になるようにすることが好ましい。加数が異なる数の非先行ゼロ桁からなる場合、より多くの非先行ゼロを有する加数が計数レジスタの初期化条件を決定する。例えば３桁加数を２桁加数に加算する場合、３桁加数を使用して計数レジスタの初期化を決定し、それに従ってｒｉｎｉｔｉａｌを設定する。
【０１１７】
ステップＴ５０３とＴ５０４は、基本処理ループを定義する。ステップＴ５０３において、計数レジスタの現在値に関連付けたメモリグループｂおよびｃのレジスタを１だけ増分する。前記した通り、このループの背景概念は、メモリグループｃがセット状態になるまでそこに格納した補数を増分することであり、メモリグループｃのレジスタの増分に合わせてメモリセルｂのレジスタを増分することである。メモリグループｃのレジスタがセット状態になると、メモリグループｂの対応するレジスタはａとｂの合計値を含んでいる。ステップＴ５０４は、メモリグループｃの現在レジスタがセット状態に到達したかを検査する。このセット状態はステップＴ５０４において「０＊」で示す。セット状態に到達していなければ、ループはステップＴ５０３に戻り、セット状態が得られるまでループを続行する。セット状態に到達したら、本方法はステップＴ５０５に進み、セット状態に変化したメモリグループｃのレジスタをリセットする。ステップＴ５０５はオプションのステップである。ステップＴ５０６は計数レジスタを１だけ増分し、次の桁へ進むことを示す。ステップＴ５０７は、計数レジスタが最終状態に到達したかを検査する。前記した通り、ｒｆｉｎａｌは計数レジスタのセット状態に対応させることが好ましい。計数レジスタが最終状態に到達していなければ、本方法はステップＴ５０３に戻り、次の桁またはレジスタを処理する。そして全桁について処理を続行すれば、計数レジスタは最終状態に増分される。すると本方法はステップＴ５０８へ進み、計数レジスタをリセットし、ステップＴ５０９にて終了する。ステップＴ５０８はオプションであるが、それを実行することが好ましい。出力の読み出しはステップＴ５０９で行う。
【０１１８】
図７の基本加算法は、簡単な加算を有効に実行する。加算において頻繁に発生する２つの状況は、基本加算法では触れていない。第１に非先行ゼロを含む加数を考慮していない。第２に１桁値から次の桁値への桁上げの必要性を含んでいない。これら状況を以下に考察する。
【０１１９】
加数における非先行ゼロの存在は、前記した基本加算法において特別の配慮が必要である。その理由は、加数の一方の補数を処理することが必要だからである。前記した通り、ＨＡＬＦＣＯＰＹ＿１とＨＡＬＦＣＯＰＹ＿２等の方法を使って１数の補数を生成できる。これら方法およびその同等方法は、非先行ゼロの扱いに関する手法を採用する。２つの手法について説明した。ＨＡＬＦＣＯＰＹ＿１は非先行ゼロを低抵抗セット状態０＊に変換し、ＨＡＬＦＣＯＰＹ＿２は非先行ゼロをそれ自体に変換する。これら両手法に基づく加算法は、本発明の範囲内において開発可能である。低抵抗セット状態０＊は、高抵抗０状態よりも検出しやすいため、０の補数が０＊である加算法を開発することが好ましい。かかる方法の一例を図８に示す。この例はＨＡＬＦＣＯＰＹ＿１を含む。
【０１２０】
桁上げの必要性が発生するのは、２数の合計が進法の基数を超えるか等しい場合である。例えば基数１０における４と７の加算は１１を生成し、桁上げを行って第２桁を提供する必要がある。その結果、桁上げを実行可能な加算法は、桁上げが必要となる時を認識できねばならず、メモリグループにおける高位桁値レジスタを１だけ増分できねばならない。このような方法のアルゴリズムの一例を図８および図８Ａに示す。
【０１２１】
図８および図８Ａに示すＡＤＤ（ａ，ｂ；ａ＋ｂ）は、多状態相変化記憶グループを使用する包括的な加算法である。ステップＴ６００、Ｔ６０１、Ｔ６０２は、前記したステップＴ５００、Ｔ５０１、Ｔ５０２と同様である。ステップＴ６０１において、ＨＡＬＦＣＯＰＹ＿１を使用し、メモリグループｃに加数ａの補数を書き込む。加数ｂの補数についても同様のことを行うことが可能であり、あるいはその補数を他のあるいは幾つかのメモリグループに書き込むこともできる。
【０１２２】
ステップＴ６０３、Ｔ６０３’、Ｔ６０３”から成るループは、図７の基本加算法には無い。これらを挿入することで、加数に非先行ゼロ桁が存在する可能性に対処する。図８および図８Ａの例において、加数ａにおける非先行ゼロが関係してくる。その理由は、本方法がａの補数を決定し処理するからである。ＨＡＬＦＣＯＰＹ＿１を呼び出すと、加数ａが含む非先行ゼロは検出が容易な状態０＊に変換する。ステップＴ６０３を含むのは、計数レジスタインデックスｒの現在値に関係するレジスタｃｒにおける０＊の存在を検査するためである。レジスタｃｒが状態０＊になければ、本方法はステップＴ６０３’とＴ６０３”をバイパスし、ステップＴ６０４へ進む。しかしながらレジスタｃｒが状態０＊にあれば、加数ａは非先行ゼロを含んでおり、本方法はステップＴ６０３’およびＴ６０３”へ進む。ステップＴ６０３’およびＴ６０３”の根拠は、加数ａが非先行ゼロを含む場合、加数ｂにおける対応数には全く影響を与えないという事実である。加数ｂの桁へのゼロの加算は、その桁に影響しない。ステップＴ６０３’とＴ６０３”との効果は、レジスタｃｒの状態０＊を単純にリセットし、そのレジスタのカウントを１だけ増分し、次の桁を指示するようにすることである。ステップＴ６０３、Ｔ６０３’、Ｔ６０３”から成るループは、メモリグループｃのレジスタであって状態０＊にないレジスタに出会うまで続行する。従って本方法は、例えば９００のように１以上の非先行ゼロを隣接レジスタに含む加数を適切に処理できる。
【０１２３】
ステップＴ６０３、Ｔ６０３’、Ｔ６０３”は、非先行ゼロを扱う時、計算効率が良い。ＨＡＬＦＣＯＰＹ＿２等の補数生成方法を使用すれば、非先行ゼロを０＊ではなく０に変換するが、これはそれほど効率的でない。その理由は、０状態が０＊状態ほど簡単に検出できないからである。また、さらなる処理ステップがなければ加数ａにおける非先行ゼロの存在を発見できない。例えばＴ６０４等の増分ステップが使用できるのは、非先行ゼロの特徴が、同一処理ステップにおけるレジスタｂｒおよびｃｒの状態０＊への変換である時である。この特徴は検出可能であり、そのための適切な計算方法を開発できるであろうが、かかる方法は、補数を決定する時、非先行ゼロを状態０＊へ変換するものほど好適でない。
【０１２４】
本加算法のステップＴ６０４は、基本加算法のステップＴ５０３と同様の増分ステップである。基本加算法と同様、メモリグループｂおよびｃの対応レジスタを増分し、これをレジスタｃｒがセット状態に到達するまで続ける。本加算法が使用するこの手法は、基本加算法のそれと異なり、桁上げを認識しそれに対処する。桁上げ処理が必要かを検査するのはステップＴ６０５である。桁上げは、出力先メモリグループｂにおけるレジスタｂｒを状態０＊に増分することである。これはレジスタｃｒを状態０＊へ増分するステップの前あるいは同時に行う。従ってステップＴ６０５は、レジスタｂｒが状態０＊に到達したかを検査する。ｂｒが状態０＊に到達していなければ、本方法はステップＴ６１１へ進む。このステップは、前記図７の基本加算法におけるステップＴ５０４と同様である。ステップＴ６１１は、レジスタｃｒが状態０＊に増分したかを検査する。増分していなければ、本方法はステップＴ６０４へ戻り、現在のレジスタを繰り返し使う。レジスタｃｒが状態０＊にあれば、本方法はステップＴ６１２へ進み、ｃｒをリセットする。ステップＴ６１２はオプションだが実行することが好ましい。ステップＴ６１３において、レジスタカウンタを１だけ増分し、ステップＴ６１４において計数レジスタが最終状態に到達したかを決定する。到達していれば、本方法はオプションであるが好ましいリセットステップ６１５へ進み、ステップＴ６１６で終了する。出力の読み出しはステップＴ６１６で完了する。ステップＴ６１４においてレジスタカウンタが最終状態に無ければ、本方法はステップＴ６０３へ戻り、次のレジスタを処理する。
【０１２５】
本加算法は、ステップＴ６０５において桁上げの必要性を認識した場合、図８ＡのステップＴ６０６、Ｔ６０７、Ｔ６０８、Ｔ６０９、Ｔ６１０において桁上げを実行する。ステップＴ６０６は、出力先レジスタｂｒのセット状態０＊への増分によって実行する。ステップＴ６０６は、第２計数レジスタｓを導入し、その初期値を第１計数レジスタｒの現在値に設定する。第２計数レジスタにより、本方法はメモリセル内の異なるレジスタを指示し処理できる。ステップＴ６０７において、セット状態０＊にあるメモリセルｂのレジスタを０にリセットする。計数レジスタｒおよびｓは、本方法において、この時点でメモリグループｂの同一レジスタを指示しているため、ステップＴ６０７は、ｂｒ＝０と書ける。ｂｒを先にリセットし、次に計数レジスタｓを導入しても良い。ステップＴ６０８において、計数レジスタｓを１だけ増分し、計数レジスタｒが指示しているレジスタより１桁高位のレジスタを指示する。このステップは、ステップＴ６０９で発生する桁上げの前触れである。ステップＴ６０９において、ｓが指示するレジスタを１だけ増分する。これは桁上げのためである。ステップＴ６１０は、計数レジスタｓをリセットし、必要に応じ後から他のレジスタに使えるようにする。ステップＴ６１０が完了すると、本方法はステップＴ６１１へ進み、前記したように続行する。
【０１２６】
桁上げが必要な場合、レジスタカウンタは、加数またはその補数のメモリグループ内において桁値の増加方向へ進むことが好ましい。従って、計数レジスタの初期値は、最小桁値を有するメモリグループまたは補数のレジスタに対応することが好ましい。一般にこの最小桁値レジスタは、多桁数の「１の位」に対応する。このため、計数レジスタの増分は、桁値増加方向への進行に対応し、本方法の実行中、「１の位」の数の後に「１０の位」の数が続くというようになる。適切に桁上げを実行するため、桁値の正確な計算が必要である。
【０１２７】
減算
減算方法の機能は、２数の差を計算することである。ここに提示する減算方法は、２数の差を計算することの便宜をはかる。２数間の差は、当該２数の各々に共通数を加算しても一定である。例えば、基数１０の進法において３５４と１２３の差を考える。この差は、減算３５４−１２３に対応する。３５４と１２３に共通数を加算すると、２数は変化する。しかしながら、２数の差は変化しない。従って３５４−１２３は、３５５−１２４、４５５−２２４等と同じである。本発明において、減算する２数の各々に共通数を加算する動作は、それら数を格納しているメモリグループ、レジスタ、または相変化材料の容積に共通エネルギを印加することで実現する。例えば、減算ｂ−ａにおける数ａを格納しているメモリグループにセッティングエネルギを印加し、次にそのセッティングエネルギを数ｂを格納しているメモリグループに印加することは、差ｂ−ａに特徴的なあるいは対応する状態にメモリグループｂを変換する。
【０１２８】
図９および図１０に示す基本減算法および減算法の基本となる方針は、減算する数（一般の減算ｂ−ａにおける第２数ａ）をレジスタ毎に増分し、各レジスタが低抵抗０＊状態に変換されるまでそれを続けることである。これと同時に、減算が発生する数（一般の減算ｂ−ａにおける第１数ｂ）の対応レジスタを増分することにより、第１数は元の２数間の差に等しい数に変換される。減算３５４−１２３を例として説明する。最低桁値数から開始し、第２数におけるレジスタを低抵抗０＊状態に変換する方針をとる場合、２数の各々を７だけ増分し（例えば７プログラミングパルスを印加する）、元の減算を元の差を維持した新しい減算に変換する。詳しくは、３に７を加算すれば１０となり、４に７を加算すれば１１となる。差に影響を与えることなく両結果から１０を減算できるため、両数の最低桁値数を７だけ増分すれば、元の減算３５４−１２３を減算３５１−１２０に変換する効果がある。次の高位桁値数に移りこの方針を繰り返せば、減算は３５１−１２０から３３１−１００へ変換できる。最後の数まで繰り返すと２３１−０００が得られる。このレジスタ毎の動作の正味結果は、元の減算３５４−１２３を変換して、さらに都合の良い減算２３１−０００にすることである。これは単純に所望差を表している。
【０１２９】
図９に示す基本減算法は、レジスタ毎に前記減算方針を実行する。入力データ値ａおよびｂについて、差ｂ−ａを計算する。このアルゴリズムはステップＴ７００において開始する。入力データａおよびｂは多桁数であり、これらが格納されていなければ、ステップＴ７００においてメモリグループａおよびｂにそれぞれ格納する。プログラミング状態、プログラミング期間、および数値の割り当てもステップＴ７００において行う。データの格納は、格納する数に関連付けたプログラミング状態に相変化材料を変換するに足るエネルギを提供することを含む。計数レジスタｒは、既に説明したアルゴリズムに基づき、ステップＴ７０１で初期化する。前記した通り、計数レジスタの値は、処理するメモリグループの対応するレジスタを指示する。対応するレジスタとは、同一桁値に対応するレジスタである。ステップＴ７０２において、計数レジスタが指示するメモリグループａおよびｂのレジスタを増分する。このステップは、前記した方法、すなわち同一桁値の数を同時に段階的に増分する方法を含む。ステップＴ７０３は、レジスタｂｒがセット状態まで増分されたかを検査する。ｂｒがセット状態にあれば、本方法はステップＴ７０４へ進み、ｂｒをゼロにリセットし、さらに増分を発生可能にする。本方法の目的は、レジスタａｒをそのセット状態まで増分することである。ステップＴ７０５は、その状態を検査する。ａｒがセット状態以外の状態にあれば、本方法はステップＴ７０２へ戻り、増分を繰り返す。ａｒがセット状態に増分していれば、対応するレジスタｂｒに格納した値は所望差ｂ−ａの数を表している。本方法はオプションのリセットステップＴ７０６へ進み、次にステップＴ７０７へ進んで計数レジスタを増分する。これは、メモリグループａおよびｂの対応する数の別の組の処理開始を意味する。あるいは計数レジスタが最終状態に増分されていれば、本方法の終了を意味する。ステップＴ７０８は、計数レジスタが最終状態に到達したかを検査する。到達していなければ、本方法はステップＴ７０２へ戻り、本方法の目的に基づき、メモリグループａおよびｂの他組の対応レジスタを処理する。ステップＴ７０８において計数レジスタが最終状態にあれば、本方法はオプションのカウンタリセットステップＴ７０９へ進み、次にステップＴ７１０において終了する。出力の読み出しは、ステップＴ７１０で行うことができる。
【０１３０】
図１０は他の減算方法ＳＵＢＴＲＡＣＴ（ｂ−ａ；ａ，ｂ）を示す。この方法は、メモリグループａおよびｂに格納した入力データ値ａおよびｂを操作し、差ｂ−ａを返し、前記した基本減算法よりも汎用性が高い。本方法の主要部すなわちＳＵＢＴＲＡＣＴ（ｂ−ａ；ａ，ｂ）のステップＴ８００〜Ｔ８１２は、前記したステップＴ７００〜Ｔ７１０と同様である。ＳＵＢＴＲＡＣＴ（ｂ−ａ；ａ，ｂ）は、２つのサブループを含む。１つはステップＴ８２０〜Ｔ８２１が定義し、他の１つはステップＴ８３０〜Ｔ８３５、Ｔ８４０、Ｔ８４１が定義する。これらは必要に応じて、借りる処理を行う。借りるとは、特定桁の数を減算する場合、次に高位の桁の数を利用することを意味する。例えば基数１０における減算９５−３９は、最小桁値の数について借りが必要である。その理由は「９」の値が「５」の値を超えているからである。借りは、第１減数の次に高位の値を１だけ低め、それを低位における等価に変換し、変換した値を低位の数に加算することである。前記例においては、９５の「９」を「１」だけ減じて「８」とし、１０の位の「１」を１の位の１０に変換し、それを「５」に加算し、第１減数の最下位桁に「１５」を提供する。次に「１５」から「９」（減数「３９」の１の位の数）を減算し、「６」を与える。この処理は、次の位の数に移り、必要に応じてさらに借りる処理を行う。前記例の場合、さらに借りる処理は不要であり、１０の位の対応する数を減算し（すなわち８−３）最終解「５６」を提供して減算を完了する。
【０１３１】
借りの必要性は、メモリグループａおよびｂに格納した数の対応桁の相対値に関する３つの可能なシナリオを考慮して決定できる。メモリグループｂの数ｂｒがメモリグループａの対応する数ａｒより大きければ、差ｂｒ−ａｒは正であり、借りは発生しない。差ｂｒ−ａｒが負であれば、借りが必要である。ｂｒ＝ａｒであれば借りは必要であるかあるいは必要でない。ｂｒ＝ａｒである場合の借りの必要性は、より低位の数が借りを必要としたかに依存する。その理由は、かかる借りがｂｒを減じており、当該桁の減算に借りが存在しなくても、条件ｂｒ＜ａｒを発生する可能性があるためである。例えば減算２０４７−１０３２は、１００の位のゼロに関して借りは不要である。しかしながら減算２０４７−１０５２は、１００の位のゼロに関して借りを必要とする。
【０１３２】
ＳＵＢＴＲＡＣＴ（ｂ−ａ；ａ，ｂ）は、対応する桁ｂｒとａｒの数ついて３つの可能なシナリオを考慮する。主要部（ステップＴ８００〜Ｔ８１２）はｂｒ＞ａｒのケースを扱う。ステップＴ８２０およびＴ８２１を含むサブループは、ｂｒ＝ａｒのケースを扱う。ステップＴ８３０〜Ｔ８３５、Ｔ８４０、Ｔ８４１を含むサブループはｂｒ＜ａｒのケースを扱う。ステップＴ８００〜Ｔ８０３は前記ステップＴ７００〜Ｔ７０３と同様である。ステップＴ８０３は、主要部およびサブループを通る計算の流れを調整する。ｂｒ＞ａｒの場合、レジスタｂｒはレジスタａｒの前にセット状態まで増分され、本方法はステップＴ８０３の「Ｎｏ」分岐だけへ進む。この場合、ステップＴ８０２、Ｔ８０３、およびＴ８０４は、ｂｒがセット状態に増分されるまで繰り返され、本方法はステップＴ８０５へ進む。ステップＴ８０５は、ｂｒをゼロにリセットし、レジスタａｒがセット状態に変化するまで増分を繰り返す。ステップＴ８０６は、レジスタｂｒがリセットしてからの増分を行い、ステップＴ８０７はレジスタａｒがセットしたかを検査する。
【０１３３】
増分はａｒがセット状態になるまで発生する。その後、本方法はオプションのステップＴ８０８へ進み、レジスタａｒをリセットする。所望の減算結果はメモリグループｂの内容に対応するので、ステップＴ８０８はオプションである。
【０１３４】
ｂｒ＝ａｒの場合、すなわちメモリグループａおよびｂに格納した元の数の同一桁値に対応する数が等しい場合、または借りの結果としてメモリグループａおよびｂにおける対応する数が等しくなった場合、レジスタｂｒおよびａｒは同一繰り返しにおいてセット状態まで増分される。これが発生すると、本方法はステップＴ８２０へ進み、そしてステップＴ８２１へ進む。ステップＴ８２０は、レジスタｂｒが、ステップＴ８０３においてレジスタａｒがセット状態にあると確認された時、セット状態にあるか否かを検査する。ｂｒ＝ａｒであれば、本方法はステップＴ８２０からステップＴ８２１へ進み、レジスタｂｒおよびａｒをリセットする。ｂｒおよびａｒのリセッティングは、オプションである。しかしながらｂｒのリセッティングは好ましい。その理由は、本方法の完了時、メモリグループｂの内容が所望減算結果に対応するからであり、リセット状態が正式に本実施例における数０に対応するからである。しかしながら、本方法の環境において、レジスタｂｒのセット状態は数ゼロと見なすことも可能である。その理由は、リセット状態の根本的な読み出しは、リセット状態をセット状態に変換することを必要とするからである。ステップＴ８２１が完了すると、本方法は主要部へ戻る。
【０１３５】
ｂｒ＜ａｒの場合、借りが必要である。この場合、レジスタａｒはレジスタｂｒの前にセット状態まで増分し、本方法はステップＴ８０３からステップＴ８２０そしてＴ８３０へ進む。すなわちサブループへの進入点へ進む。このサブループは、借りプロトコルを実行する。ステップＴ８３０は、第２計数レジスタｓを導入し、その初期値を計数レジスタｒの現在値に設定する。計数レジスタｓは、計数レジスタｒから独立しており、計数レジスタｒが指示しているメモリグループとは別のメモリグループのレジスタを指示するあるいは指名するために使用する。
【０１３６】
借りは、ステップＴ８３０で指示したレジスタより１桁高位の対応レジスタを考慮せねばならない。借りに関する２つの可能な方法がある。第１方法は、メモリグループｂの高位桁の数を１だけ減じ、１０（あるいは使用する進法の基数の値による数）をステップＴ８３０で指示したメモリグループｂのレジスタに加算することで補償する。第２方法は、メモリグループａの高位の桁の数を１だけ増分し、ステップＴ８３０で指示したメモリグループａのレジスタを１０（あるいは使用する進法の基数の値による数）だけ減じる。両方法とも本発明の実施例を構成する。第２方法は、図１０に示す方法で実施し、以下に詳細を説明する。
【０１３７】
ステップＴ８３０において、両計数レジスタｒおよびｓは、借りの必要性が予測されたメモリグループａおよびｂの対応するレジスタを指している。本方法がステップＴ８３０に到達した時、レジスタａｒはセット状態にある。ステップＴ８３１において、レジスタａｒをリセットする。セット状態は、記憶可能最大数に対応するプログラミング状態を超えて１増分することである。従って、借りに関しては、セット状態は進法の基数の値に対応すると見なせる。例えば基数１０の進法における数を計算する場合、セット状態直前のプログラミング状態は「９」に関連付けられており、セット状態は「１０」と見なすことができる。この場合、ステップＴ８３１におけるレジスタａｒの設定は、ａｒの値を「１０」だけ減じると見なせる。この減算に対する補償は、ａｒよりも１桁高位のレジスタを１だけ増分することによって行える。この増分は、ステップＴ８３２とＴ８３３において発生する。ステップＴ８３２において、計数レジスタｓを１だけ増分する。ステップＴ８３２の前に、計数レジスタｓは、計数レジスタｒと同一状態にあった。そしてレジスタａｓを指していた。このレジスタは、ステップＴ８３１でリセットしたレジスタａｒと同一である。ステップＴ８３２において計数レジスタｓを１だけ増分することは、ステップＴ８３１でリセットしたレジスタａｒより１桁高位のレジスタを指すことを意味する。ステップＴ８３３において、増分した値のｓに関連するレジスタを１だけ増分し、借り処理を完了する。
【０１３８】
ステップＴ８３４は、特別ケースである。このケースにおいて、ステップＴ８３３で発生した増分は、当該レジスタをセット状態に変換する。例えば基数１０の場合、この状況が発生するのは、ステップＴ８３１でセットしたレジスタより１桁高位のレジスタが「９」を格納する時である。この状況が発生すると、ステップＴ８３３でセットしたレジスタより１桁高位のレジスタにも借りを拡張する必要がある。この処理はステップＴ８４０で開始する。このステップは、この特別の状況においてステップＴ８３３でセットしたレジスタをリセットするステップである。ステップＴ８４１において、計数レジスタｒを１だけ増分し、ステップＴ８４０でリセットしたレジスタの桁値を有するメモリグループｂのレジスタをスキップする。ステップＴ８４１におけるスキップが必要な理由は、メモリグループａの対応レジスタをゼロに変換した後は、メモリグループｂの対応レジスタをそれ以上処理してはならないからである。なぜなら最終減算結果用にその状態を保持しなければならないからである。ステップＴ８４１を完了すると、本方法はステップＴ８３２へ戻り、処理を繰り返す。ステップＴ８３２は、計数レジスタｓを１だけ増分し、次の高位桁の対応レジスタを指示する。ステップＴ８３３において、計数レジスタｓが指示するメモリグループａのレジスタを１だけ増分し、借り処理を完了する（借りを必要とした数から２桁移動している）。ステップＴ８３４を再度実行し、「Ｙｅｓ」であれば、借りが行われた数をさらに移動する。基数１０の場合、借りが行われた数を繰り返し移動することが必要になるのは、値「９」を有する一連の数が減数ａに存在する時である（例えばｂ−ａにおける減数ａが２９９９７等の場合）。借りが完了すると、本方法は、オプションのステップＴ８３５へ進み、計数レジスタｓをリセットし、借りが再び必要になる時に備える。
【０１３９】
ステップＴ８０８、Ｔ８２１、およびＴ８３５のいずれかが完了すると、本方法はステップＴ８０９へ進み、計数レジスタｒを１だけ増分し、本方法が次に処理する数を指示あるいは割り当てる。減算の場合、桁の昇順に数を処理することが好ましい。これにより、ｒの初期値は１の位を有する数の処理に対応し、ｒの次の値は１０の位を有する数の処理に対応する。以下同様である。ステップＴ８１０は、計数レジスタｒが最終状態に到達したかを検査し、本方法を別の繰り返しの実行に導くか、終了に導く。
【０１４０】
乗算
１実施例において、乗算は加算アルゴリズムを繰り返し適用することで遂行できる。この実施例は、乗算は加算を複数回繰り返すことに過ぎないという認識に基づく。例えば３を５で乗算することは、加算３＋３＋３＋３＋３に等しい。すなわち３を５回加算することである。これはまた、５を３回加算することと見なせる（５＋５＋５）。この実施例に基づき、乗算は加算処理を適切な回数行うことで完了する。この実施例の一般化は、容易に想像が付く。第１および第２の乗算因数を提供し、一方の因数の繰り返し加算を他方の因数に基づいて実行する。第１因数を繰り返し加算する場合、第２因数は第１因数をそれ自体に加算する回数を制御し、それによって乗算を実行する。なお、加算演算の数は、第２因数の数値より１少ない。前記例の場合、３は第１因数に対応し５は第２因数に対応する。そして第２因数５に基づき３を繰り返し加算する。前記した通り、加算演算の数は、５より１少ない（３＋３＋３＋３＋３において４回の加算演算が発生している）。
【０１４１】
図１１にＢＡＳＩＣＭＵＬＴＩＰＬＹ（ａｂ；ａ，ｂ）と表記する方法は、前記例を実施するものである。この方法は因数ａとｂを入力し、積ａｂを出力する。本方法はステップＴ９００で開始する。このステップは、多状態相変化材料の適切な位置、レジスタ、またはメモリグループに因数ａおよびｂを格納することを含む。プログラミング状態、プログラミング期間、および数値の割り当てもステップＴ９００で行う。前記格納は、格納しようとする数に関連するプログラミング状態へ相変化材料を変換するに足るエネルギを提供することを含む。ステップＴ９０１において倍数レジスタｍを初期化する。倍数レジスタの目的は、因数の一つをそれ自体に加算した回数を追跡し続けることである。倍数レジスタに関する増分の数は、因数のうちそれ自体に加算を繰り返さない方の因数が決定する。インデックスｍは、倍数の計数に使用し、初期状態（ｍｉｎｉｔｉａｌ）と最終状態（ｍｆｉｎａｌ）とを有する。初期状態と最終状態間の増分の数は、繰り返し加算しない方の因数の数値より１少ない。
【０１４２】
図１１に示す実施例において、ステップＴ９０２は因数ｂを繰り返し加算し、因数ａを使って倍数レジスタの初期状態と最終状態とを確立する。例えば因数ａが３であれば、倍数レジスタの初期状態と最終状態とを分離する増分の数は２である。この例において、ｍ＝ｍｉｎｉｔｉａｌに対応する繰り返しにおいて、ｂ＋ｂ＝２ｂを計算し、倍数レジスタｍをステップＴ９０３においてｍ＝ｍｉｎｉｔｉａｌ＋１に増分する。ステップＴ９０４は、倍数レジスタｍが最終状態に到達したかを検査する。この例においては、さらに繰り返しが必要である。ｍ＝ｍｉｎｉｔｉａｌ＋１に対応する繰り返しを実行し、２ｂ＋ｂ＝３ｂをステップＴ９０２において計算し、倍数レジスタをステップＴ９０３においてｍ＝ｍｉｎｉｔｉａｌ＋２へ増分する。本例においてａ＝３であるから、所望の積ａｂ＝３ｂを取得し、オプションの倍数レジスタリセットステップＴ９０５へ進む。このステップは、倍数レジスタを初期状態あるいは他の所望開始状態へリセットする。なお本例において、倍数レジスタは、因数ａの数値よりも１回少なく増分されている。倍数レジスタを相変化材料で構成する場合、初期化ステップＴ９０１またはオプションのリセットステップＴ９０５は、倍数レジスタをリセット状態へ変換することを含む。これは、エネルギをさらに印加し、所望の初期状態または開始状態を確立することである。ステップＴ９０６は、因数ｂを格納し繰り返し加算を行った相変化材料のメモリグループまたはメモリ部を読み出し、積を出力する。
【０１４３】
好適実施例において、倍数レジスタは相変化材料から成り、状態ｍｆｉｎａｌはセット状態に対応する。本実施例において、ｍｉｎｉｔｉａｌは、前記例において乗算因数ａよりも１少ないプログラミングパルスまたは増分期間を印加することで、倍数レジスタがセット状態に変化するように設定する。
【０１４４】
本発明の繰り返し加算をステップＴ９０２において多数回行うと、桁上げの必要性が出てくる。桁上げが必要な場合、前記加算法において説明したように実現できる。
【０１４５】
前記ＢＡＳＩＣＭＵＬＴＩＰＬＹ法は、単一桁または多桁因数に使用できる。因数ｂが多桁数である時、加算ステップＴ９０２は、ｂの各数に対するレジスタ毎の方法で実行できる。前記したＡＤＤ法またはＢＡＳＩＣＡＤＤ法等を使用し、レジスタ毎の加算を完了できる。
【０１４６】
因数ｂの繰り返し加算数を決めるための因数ａが非常に大きな数である時、倍数レジスタが相変化材料を含む場合、倍数レジスタが利用可能なプログラミング状態の数を超えることもある。基数１０系におけるｂ＝３５およびａ＝１２の乗算を考える。この時、メモリグループのメモリ素子と倍数レジスタとは相変化材料から成る。この相変化材料は、数０〜９に対応する１０のプログラミング状態を有する。この例の場合、因数ａ＝１２は単一の倍数レジスタが利用可能なプログラミング状態の数を上回る。この状況が発生した場合、繰り返し加算によって乗算を完了することができる。しかしながら、加算を繰り返す回数を適切に考慮する必要がある。例えば、因数ａの各数または桁値について別個の倍数レジスタを利用することを考える。ａ＝１２の例では、第１倍数レジスタを数「２」に対して定義し、第２倍数レジスタを数「１」に対して定義する。しかしながらこのような方法は、桁値を追跡し続ける必要がある。例えば第２倍数レジスタに格納した「１」は第１倍数レジスタの「１０」に対応することを認識する必要がある。
【０１４７】
桁値を考慮するために幾つかの方法が可能である。簡単な実施例において、二次倍数レジスタまたはレジスタの二次倍数グループを設定し、乗算因数ａにおける高位の数用の適切な加算数を追跡する。前記例において乗算因数ａ＝１２であるから、桁値１０を有する数１は、ステップＴ９０２同様の加算ステップを９回（１０−１）含む必要がある。この９回の加算は、各加算について１ずつ二次倍数レジスタを増分し、二次倍数レジスタを９回加算したら加算を終了するようにすれば考慮できる。この手順は、乗算因数ａにおける高位の数に関する繰り返し加算が何回あっても利用できる。この実施例において、二次倍数レジスタまたはグループは、各加算毎に１ずつ増分し、二次倍数レジスタまたはグループに格納した数が乗算因数ａより１少なくなったら、加算を終了する。この終了条件は、乗算因数ａの値と二次倍数レジスタまたはグループに格納した値より１多い値とを比較することで検査できる。この比較を実行する１方法は、乗算因数ａを格納しているメモリグループと倍数レジスタまたはグループとを、１対１の関係で増分することである。ここで倍数レジスタまたはグループは、比較の開始前に１だけ増分されている。乗算因数ａを格納しているメモリグループの対応するレジスタと、倍数レジスタまたはグループ（比較前に１だけ増分した）とは、同一繰り返し中にセット状態に変化する。この時、正しい数の加算が完了している。
【０１４８】
桁値を考慮する別の方法は、シフトである。シフトの背景概念は、単純合計の数の桁値を増加させることである。この単純合計は、その数の桁値に基づき、乗算因数ａにおける高位の数が決定する。例えば前記のｂ＝３５およびａ＝１２の例では、乗算因数ａの数１は、ｂを１回乗算し、その結果を高位桁へ１だけシフトすることである。ｂの１回の乗算は３５である。桁値を１段高くシフトすると、３５は３５０に変化する。正味結果３５０は、乗算因数ａ＝１２における数「１」の、所望乗算結果に対する寄与を表す。３５０（ａ＝１２における「１」の寄与）を７０（３５＋３５、ａ＝１２における数「２」の寄与）に加えることにより、最終乗算結果を得る。このシフト法は、どのような桁値数にでも使用できる。例えば１００の位の数は、この実施例において、２ステップだけ桁値を高位方向へシフトする。このシフト法と図１１に示すＢＡＳＩＣＭＵＬＴＩＰＬＹ法との組み合わせは、乗算因数ａに基づいて乗算因数ｂの繰り返し加算をレジスタ毎に実行する。乗算因数ａの各数に対する繰り返し加算はＢＡＳＩＣＭＵＬＴＩＰＬＹ法に基づいて実行する。そして桁値に基づいてシフトを実行することにより、乗算因数ａの各桁の所望乗算結果に対する寄与を算出する。所望乗算結果は、乗算因数ａの全数の寄与を合計することによって得られる。
【０１４９】
除算
１実施例において、除算は、被除数から除数を繰り返し減算し、被除数をゼロまで減ずる、または除数の１倍以内まで減ずる処理と見なせる。この実施例は、前記した乗算の繰り返し加算概念と似ている。繰り返し加算とは対称的に、繰り返し減算が頻繁に遭遇する状況は、被除数が除数の整数倍ではないことである。特定被除数の因数である除数のみが、その被除数を均等に除算できる。被除数の因数である除数での繰り返し減算は、その被除数をゼロまで減算できる。これに反し、被除数の因数ではない除数の繰り返し減算は、その被除数をゼロに減算できない。因数ではない除数による被除数の除算の結果は、整数と剰余とから成る。またはその等価として、整数と分数（または等価の小数）から成る。例えば除数３による被除数１３の除算は、４と剰余１、または４と分数１／３となる。
【０１５０】
図１２は、繰り返し減算によって除算を行うＢＡＳＩＣＤＩＶＩＤＥ（ｂ／ａ；ａ，ｂ）法を示す。この方法は、被除数ｂと除数ａとを受け取り、除算結果ｂ／ａを提供する。本方法はステップＴ９５０で開始する。このステップは、相変化材料から成るメモリグループに被除数と除数とを格納することを含む。本方法の開始において、被除数ｂはメモリグループｂに存在または格納し、除数ａはメモリグループａに存在または格納する。プログラミング状態、プログラミング期間、および数値の割り当てもステップＴ９５０において行う。格納は、格納しようとする数に関連したプログラミング状態に相変化材料を変換するに足るエネルギを提供することを含む。ステップＴ９５１において倍数レジスタを初期化する。倍数レジスタの目的は、被除数ｂから除数ａを減算する回数をカウントすることである。ステップＴ９５２は比較ステップであり、被除数ｂから除数ａを減算すべきかを決定する。被除数ｂが除数ａよりも大きい間、ｂからａを減算しても負数を生じない。被除数ｂから除数ａを十分な回数減算すると、ｂはａよりも小さくなる。この時点でさらなる減算は必要でなく、メモリグループｂに格納した値は、除算結果の剰余部に対応する。
【０１５１】
ｂがａよりも大きければ、本方法はステップＴ９５２からステップＴ９５３へ進み、ｂから除数ａを減算する。ステップＴ９５３が完了すると、除数ａの値は不変だが、ｂの値は減っている。図１２の実施例において、減算結果ｂ−ａはメモリグループｂ内で実行する。減算を他のメモリグループ内で実行し、メモリグループｂにｂの元の値を保持しても良い。ステップＴ９５３の減算は、前記したＢＡＳＩＣＳＵＢＴＲＡＣＴ法およびＳＵＢＴＲＡＣＴ法を使用して行っても良いし、それらと等価の方法を使用しても良い。ステップＴ９５３が完了すると、本方法はステップＴ９５４へ進み、倍数レジスタを１増分してｂからａの１減算を完了したことを示す。本方法はステップＴ９５２へ戻り、ｂがａより大きいかを検査する。ｂがａより大きければ、本方法はステップＴ９５３およびＴ９５４を繰り返す。
【０１５２】
ステップＴ９５３およびＴ９５４は、ｂがａより大きくなくなるまで繰り返す。計算のこの時点で、本方法はステップＴ９５２からステップＴ９５５へ進み、ｂ＝ａかを検査する。ｂ＝ａであれば元の被除数の因数であり、本方法はステップＴ９５６へ進み、ｂをゼロに設定する。ステップＴ９５６は、メモリグループｂを直接ゼロに設定することで実行するか、もう一度ｂ−ａを実行して完了する。ステップＴ９５６が完了すると、本方法はステップＴ９５７へ進み、倍数レジスタを１増分し、ステップＴ９５８へ進む。本方法は、ステップＴ９５５においてｂがａに等しくない場合もステップＴ９５８へ進む。ステップＴ９５８において、メモリグループｂに格納した現在値を決定する。ｂからａの減算を繰り返して条件ｂ＜ａを生成した場合、メモリグループｂに格納した値は所望除算結果の剰余に対応する。除数ａが元の被除数の因数であれば、ステップＴ９５８で決定したｂの値はゼロであろう。ステップＴ９５９は、倍数レジスタｍの最終値を決定する。この値は、元の被除数ｂから除数を減算した回数を提供し、剰余と結合することで除算問題ｂ／ａの解を提供する。倍数レジスタの初期値ｍｉｎｉｔｉａｌがゼロであれば、ステップＴ９５９で決定するｍの最終値は、元の被除数ｂに含まれる除数の倍数を直接提供する。ｍの初期値がゼロでなければ、ｍの初期値と最終値との差が、元の被除数ｂに含まれる除数の倍数を提供する。好適実施例において、ｍｉｎｉｔｉａｌはゼロである。
【０１５３】
比較ステップＴ９５２は、幾つかの方法で遂行できる。簡単な比較検査は、メモリグループｂに存在する先行ゼロの数とメモリグループａに存在する先行ゼロの数とを比較することである。メモリグループａが含む先行ゼロの数がメモリグループｂより多ければ、メモリグループｂが格納する値はメモリグループａが格納する値より大きいため、本方法はステップＴ９５３へ進む。先行ゼロの数は、メモリグループａおよびｂの各レジスタを読み出し、ゼロの存在を検査することで決定できる。レジスタの読み出しは、レジスタ桁値の降順で行うことが好ましい。非先行ゼロ数に遭遇した時、先行ゼロの数は簡単に決定できる。セット状態をゼロに対応すべく選択した場合、レジスタの読み出しは簡単な抵抗測定によって実行できる。リセット状態をゼロに選んだ場合、レジスタをセット状態まで増分せねばならない。プログラミングパルスまたは増分期間の数がレジスタの可能最大数に対応すれば、レジスタの初期状態はリセット状態であってゼロを格納していたと結論できる。
【０１５４】
メモリグループａおよびｂに存在する先行ゼロの数が同一である場合、あるいは他の比較方法が好まれる場合、メモリグループａおよびｂに存在する値の直接比較も可能である。１つの直接比較方法は、１対１でメモリグループｂおよびａを増分し、これを一方のメモリグループがセット状態に変化するまで続ける。同時増分において最初にセット状態に変化したメモリグループは、大きい数を格納しているメモリグループである。例えばメモリグループｂが７を格納しメモリグループａが４を格納している場合、同時増分において最初にセット状態に変化するのはメモリグループｂであり、従って当然大きい数に対応する。メモリグループｂおよびａが非ゼロ数を２以上のレジスタに含む場合、同様の検査を工夫できるであろう。
【０１５５】
比較は、ゼロを保存していない最高位の桁値のレジスタから開始することが好ましい。この好適実施例において、非先行ゼロ数を保存しているレジスタの数がメモリグループｂおよびａにおいて異なる場合、単一のレジスタを検査するだけでｂがａより大きいかを決定できる。メモリグループｂおよびａが同一数の先行ゼロレジスタを含む場合、メモリグループａおよびｂの非先行ゼロレジスタのうち最高位桁値のレジスタを比較すれば、ｂがａより大きいかを決定できる。ただし、メモリグループａおよびｂが格納する数のうち最高桁値の数は、等しくない数値であることが条件である。もしそれらが等しい値を持っていると、メモリグループｂおよびａのレジスタで次に高位の桁値のレジスタを比較する。これを繰り返すことで、メモリグループａまたはｂのいずれが最大数値を保存しているかを決定できる。この手順を使用して、ｂとａが等しいかを決定することもできる。メモリグループａおよびｂに格納した全対応桁の数が等しければ、ｂ＝ａでありステップＴ９５５の条件を満たす。
【０１５６】
ここに示した開示は例示であって本発明の実行を制限する意図はない。例えば開示した計算方法における幾つかのステップの順序を交換すること等、本発明には多くの等価物および変更が可能であり、それら全ては本発明の範囲内にあると見なすべきである。本発明の範囲を定義するのは、本開示と関連する特許請求の範囲およびそれら全ての等価物である。
【図面の簡単な説明】
【０１５７】
【図１】代表的な相変化材料の電気抵抗を印加エネルギ量の関数として示すグラフである。このグラフは、左側の高抵抗平坦域と、セット後領域とを含む。両領域における代表的状態は例示に過ぎない。
【図２】リセット方法ＲＥＳＥＴ（ａ）の各ステップを示す図である。
【図３】リセット方法ＲＥＳＥＴ（ａ）の各ステップを示す別の図である。
【図４】ＨＡＬＦＣＯＰＹ＿１法の各ステップを示す図である。これは１数の補数を計算するために使うことができる。この実施例は位置ａにおける数の補数を位置ｂに提供する。
【図５】ＨＡＬＦＣＯＰＹ＿２法の各ステップを示す図である。これは１数の補数を計算するために使うことができる。この実施例は位置ａにおける数の補数を位置ｂに提供する。
【図６】コピー方法ＣＯＰＹ＿１の各ステップを示す図である。この実施例は位置ａに保存した数を位置ｂおよびｃへコピーする。
【図７】加算方法ＢＡＳＩＣＡＤＤの各ステップを示す図である。この実施例は位置ａおよびｂにおける数の合計を提供する。
【図８】加算方法ＡＤＤの各ステップを示す図である。この実施例は位置ａおよびｂにおける数の合計を提供する。
【図９】減算方法ＢＡＳＩＣＳＵＢＴＲＡＣＴの各ステップを示す図である。この実施例は位置ｂおよびａにおける数の差を提供する。
【図１０】減算方法ＳＵＢＴＲＡＣＴの各ステップを示す図である。この実施例は位置ｂおよびａにおける数の差を提供する。
【図１１】乗算方法ＢＡＳＩＣＭＵＬＴＩＰＬＹの各ステップを示す図である。この実施例は位置ａおよびｂにおける数の積を提供する。
【図１２】除算方法ＢＡＳＩＣＤＩＶＩＤＥの各ステップを示す図である。この実施例は位置ｂおよびａにおける数の商を提供する。この商は除数ａの倍数と剰余とを含む。
【図１】
2005527026.tif 000002
【図２】
2005527026.tif 000003
【図３】
2005527026.tif 000004
【図４】
2005527026.tif 000005
【図５】
2005527026.tif 000006
【図６】
2005527026.tif 000007
【図７】
2005527026.tif 000008
【図８】
2005527026.tif 000009
【図８Ａ】
2005527026.tif 000010
【図９】
2005527026.tif 000011
【図１０】
2005527026.tif 000012
【図１１】
2005527026.tif 000013
【図１２】
2005527026.tif 000014
【手続補正書】
【提出日】平成16年3月31日(2004.3.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリグループを提供し、前記メモリグループは１以上のレジスタを有し、前記レジスタはデジタル多状態相変化材料から成り、前記相変化材料は複数の状態を有し、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記１以上のレジスタにエネルギを提供し、前記レジスタを１以上の前記複数の状態間で変化させることにより、加算、減算、乗算、および除算から成るグループから選択する算術演算を実行する、計算方法。
【請求項２】
前記算術演算は、減算、乗算、および除算から成るグループから選択する、請求項１の方法。
【請求項３】
前記算術演算は、非バイナリ形式で完了する、請求項１の方法。
【請求項４】
前記相変化材料は、Ｉｎ、Ａｇ、Ｔｅ、Ｓｅ、Ｇｅ、Ｓｂ、Ｂｉ、Ｐｂ、Ｓｎ、Ａｓ、Ｓ、Ｓｉ、Ｐ、Ｏ、およびこれらの混合または合金から成るグループから選択する１以上の成分から成る、請求項１の方法。
【請求項５】
前記相変化材料はＧｅとカルコゲン成分とから成る、請求項１の方法。
【請求項６】
前記相変化材料はＳｂをさらに含む、請求項５の方法。
【請求項７】
前記相変化材料は、少なくとも１カルコゲン成分と少なくとも１遷移金属元素とから成る、請求項１の方法。
【請求項８】
前記少なくとも１カルコゲン成分は、ＴｅとＳｅの混合である、請求項７の方法。
【請求項９】
前記少なくとも１遷移金属元素は、Ｃｒ、Ｆｅ、Ｎｉ、Ｎｂ、Ｐｄ、Ｐｔ、およびそれらの混合または合金から成るグループから選択する、請求項７の方法。
【請求項１０】
前記相変化材料は、前記複数の状態から選択する１以上のプログラミング状態を有し、前記プログラミング状態はそれに割り当てた数値を有し、前記プログラミング状態の各々は前記セットエネルギを超えない量のプログラミングエネルギを印加することにより前記リセット状態から得られ、前記プログラミングエネルギは当該プログラミングエネルギに対応するプログラミング状態に関連付けた数値を代表する、請求項１の方法。
【請求項１１】
前記実行するステップは前記相変化材料に１以上の数を格納することを含み、前記格納することは前記相変化材料の１以上の部分を前記１以上の数に関連付けたプログラミング状態に変化させることを含む、請求項１０の方法。
【請求項１２】
前記プログラミング状態は、前記１以上の中間状態の少なくとも１つを含む、請求項１０の方法。
【請求項１３】
前記プログラミング状態は前記リセット状態を含む、請求項１０の方法。
【請求項１４】
前記リセット状態に割り当てる数値はゼロである、請求項１３の方法。
【請求項１５】
前記プログラミング状態は前記セット状態を含む、請求項１０の方法。
【請求項１６】
前記セット状態に割り当てる数値はゼロである、請求項１５の方法。
【請求項１７】
前記プログラミング状態の各々のプログラミングエネルギは、当該プログラミング状態に割り当てた数値に比例する、請求項１０の方法。
【請求項１８】
前記プログラミング状態は、エネルギ的に等間隔で分離する、請求項１０の方法。
【請求項１９】
前記数値は連続整数である、請求項１０の方法。
【請求項２０】
前記連続整数は、プログラミングエネルギの昇順において前記プログラミング状態に関連付ける、請求項１９の方法。
【請求項２１】
前記実行するステップにおいて提供する前記エネルギは、前記プログラミング状態の１つから前記プログラミング状態の他へ前記相変化材料を変化させるために必要なエネルギを含む、請求項１０の方法。
【請求項２２】
前記実行するステップにおいて提供する前記エネルギは、電気エネルギの形式で提供する、請求項１の方法。
【請求項２３】
前記電気エネルギは、１以上の電流パルスの形式である、請求項２２の方法。
【請求項２４】
前記１以上の電流パルスは等エネルギである、請求項２３の方法。
【請求項２５】
前記実行するステップは、前記相変化材料に１数を格納することを含む、請求項１の方法。
【請求項２６】
前記メモリグループの前記レジスタの各々は、異なる桁値に対応する、請求項２５の方法。
【請求項２７】
前記数の各桁は、当該桁の桁値に対応する前記メモリグループのレジスタに格納する、請求項２６の方法。
【請求項２８】
前記実行するステップは、前記相変化材料に複数の数を格納することを含む、請求項１の方法。
【請求項２９】
多桁数を格納する方法において、
メモリグループを提供し、前記メモリグループは複数のレジスタから成り、前記レジスタは複数の状態を有するデジタル多状態相変化材料から成り、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記メモリグループの異なるレジスタを前記多桁数の各桁に関連付け、
前記メモリグループの前記関連付けたレジスタに前記多桁数の各桁の数を格納し、前記各桁の数を格納するステップは当該数に固有の量のエネルギを前記関連付けたレジスタに提供する各ステップを備える、前記多桁数を格納する方法。
【請求項３０】
前記各桁の数を格納するステップの前記エネルギを提供するステップは、
プログラミング方針を設定し、前記プログラミング方針は前記レジスタの前記相変化材料のプログラミング状態を定義することから成り、前記プログラミング状態を定義することは前記プログラミング状態にデータ値を割り当てることを含み、前記プログラミング状態は前記レジスタの前記相変化材料の前記リセット状態に前記データ値に固有のプログラミングエネルギを印加することにより得られ、前記プログラミングエネルギは前記リセット状態の前記セットエネルギを超えず、
前記多桁数の前記各桁の数を提供し、
前記各桁の数について、当該数に対応するプログラミング状態に前記関連付けた前記レジスタを変化させるに足る量のエネルギを、前記関連付けたレジスタの相変化材料に提供する各ステップを備える、請求項２９の方法。
【請求項３１】
前記プログラミング状態に連続整数値を割り当てる、請求項３０の方法。
【請求項３２】
前記連続整数値は、前記プログラミングエネルギの昇順において前記プログラミング状態に割り当てる、請求項３１の方法。
【請求項３３】
前記連続整数値の最小値はゼロである、請求項３１の方法。
【請求項３４】
前記プログラミング状態は前記リセット状態を含む、請求項３０の方法。
【請求項３５】
前記リセット状態に値ゼロを関連付ける、請求項３４の方法。
【請求項３６】
前記プログラミング状態は前記セット状態を含む、請求項３０の方法。
【請求項３７】
前記セット状態に値ゼロを関連付ける、請求項３６の方法。
【請求項３８】
プログラミング状態の数は、前記数を表現する進法の基数に等しい、請求項３０の方法。
【請求項３９】
プログラミング状態の数は、２の倍数または１０である、請求項３０の方法。
【請求項４０】
前記プログラミング状態は、エネルギ的に等間隔で分離する、請求項３０の方法。
【請求項４１】
前記エネルギを提供するステップは、エネルギパルスの形でエネルギを提供して完遂する、請求項２９の方法。
【請求項４２】
前記エネルギを提供するステップは、電気エネルギの形でエネルギを提供して完遂する、請求項２９の方法。
【請求項４３】
前記電気エネルギは電圧の形で提供する、請求項４２の方法。
【請求項４４】
前記電気エネルギは電流の形で提供する、請求項４２の方法。
【請求項４５】
前記エネルギを提供するステップは、光エネルギの形でエネルギを提供して完遂する、請求項２９の方法。
【請求項４６】
前記エネルギを提供するステップは、熱エネルギの形でエネルギを提供して完遂する、請求項２９の方法。
【請求項４７】
前記相変化材料は、Ｔｅ、Ｓｅ、Ｇｅ、Ｓｂ、Ｂｉ、Ｐｂ、Ｓｎ、Ａｓ、Ｓ、Ｓｉ、Ｐ、Ｏ、およびこれらの混合または合金から成るグループから選択する１以上の成分から成る、請求項２９の方法。
【請求項４８】
前記相変化材料は、少なくとも１カルコゲン成分と少なくとも１遷移金属元素とから成る、請求項２９の方法。
【請求項４９】
前記少なくとも１カルコゲン成分は、ＴｅとＳｅの混合である、請求項４８の方法。
【請求項５０】
前記少なくとも１遷移金属元素は、Ｃｒ、Ｆｅ、Ｎｉ、Ｎｂ、Ｐｄ、Ｐｔ、およびそれらの混合または合金から成るグループから選択する、請求項４８の方法。
【請求項５１】
１以上のレジスタを有するメモリグループを提供し、前記レジスタはデジタル多状態相変化材料から成り、前記相変化材料は複数の状態を有し、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記デジタル多状態相変化材料から成る計数レジスタを提供し、前記計数レジスタは複数のプログラミング状態を有し、前記プログラミング状態は前記計数レジスタの前記リセット状態のセットエネルギを超えない量のプログラミングエネルギを印加することによって前記計数レジスタのリセット状態から取得可能であり、前記プログラミング状態の数は前記リセット状態にない前記メモリグループのレジスタの数に等しいか大きく、
前記計数レジスタを前記メモリグループに割り当て、当該割り当てることは前記リセット状態にない前記メモリグループの前記レジスタに前記プログラミング状態を個別に指定することを含み、それによって前記リセット状態にない前記メモリグループの前記レジスタの各々は前記指定したプログラミング状態に個別に関連付けられ、
前記計数レジスタの初期プログラミング状態を定義し、前記初期プログラミング状態は最小プログラミングエネルギを有する指定したプログラミング状態に対応し、
前記計数レジスタの最終プログラミング状態を定義し、前記最終プログラミング状態は最大プログラミングエネルギを有する指定したプログラミング状態に対応し、
前記計数レジスタを初期化し、前記初期化することは前記計数レジスタを前記初期プログラミング状態に変化させるに足るエネルギを提供することを含み、
前記計数レジスタが前記最終プログラミング状態以外の指定したプログラミング状態にある間、次のステップａ〜ｃを繰り返し実行し、
ａ．前記計数レジスタの指定したプログラミング状態に関連付けた前記メモリグループのレジスタに、前記メモリグループの前記関連付けたレジスタをセット状態に変化させるに足る量のエネルギを提供し、
ｂ．前記メモリグループの前記関連付けたレジスタにリセットエネルギを提供し、前記リセットエネルギは前記関連付けたレジスタをセット状態からリセット状態に変化させるに足り、
ｃ．前記計数レジスタを増分し、前記増分することは前記計数レジスタを異なる指定プログラミング状態に変化させるに必要なエネルギの最低量を印加することを含み、
前記計数レジスタの前記最終プログラミング状態に関連付けた前記メモリグループのレジスタに、前記最終プログラミング状態に関連付けた前記メモリグループの前記レジスタをセット状態に変換させるに足る量のエネルギを提供し、
前記最終プログラミング状態に関連付けた前記メモリグループの前記レジスタにリセットエネルギを提供することにより、前記最終プログラミング状態に関連付けた前記メモリグループの前記レジスタをセット状態からリセット状態に変化させる各ステップを備える、リセット方法。
【請求項５２】
前記割り当てるステップは、前記リセット状態にある前記メモリグループの前記レジスタに前記プログラミング状態を個別に指定することをさらに含み、それによって前記メモリグループの前記レジスタの各々を個別に前記指定したプログラミング状態に関連付ける、請求項５１の方法。
【請求項５３】
前記指定したプログラミング状態は、エネルギ的に等間隔で分離する、請求項５１の方法。
【請求項５４】
前記計数レジスタのセット状態は、前記エネルギ的な等間隔で、前記計数レジスタの最終プログラミング状態から分離する、請求項５３の方法。
【請求項５５】
前記最終プログラミング状態は、前記計数レジスタのセット状態である、請求項５１の方法。
【請求項５６】
前記計数レジスタのプログラミング状態の数は、前記メモリグループ内のレジスタの数と等しい、請求項５１の方法。
【請求項５７】
複数の状態を有するデジタル多状態相変化材料を提供し、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記相変化材料の第１部分に第１数を格納し、前記第１数を格納することは前記相変化材料の前記第１部分に前記第１数に固有のエネルギを提供することを含み、
第２数に固有のエネルギを前記相変化材料に提供する各ステップを備える、加算方法。
【請求項５８】
前記格納するステップは、前記相変化材料の前記第１部分のリセット状態に前記第１数に対応するエネルギを提供することを含む、請求項５７の方法。
【請求項５９】
前記第１数に対応する前記エネルギは、前記第１数の数値に比例する、請求項５８の方法。
【請求項６０】
前記第２数に固有のエネルギを提供することは、前記相変化材料のリセット状態に前記第２数に対応するエネルギを提供することを含む請求項５７記載の方法。
【請求項６１】
前記第２数に対応する前記エネルギは、前記第２数の数値に比例する、請求項６０の方法。
【請求項６２】
前記第２数に固有のエネルギは、前記相変化材料の前記第１部分に提供する、請求項５７の方法。
【請求項６３】
複数の状態を有するデジタル多状態相変化材料を提供し、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記相変化材料のプログラミング状態を定義し、前記プログラミング状態は前記複数の状態から選択し、前記プログラミング状態はプログラミングエネルギを有し、前記プログラミングエネルギは前記相変化材料をリセット状態から前記プログラミング状態に変化させるに必要な量のエネルギに対応し、前記プログラミングエネルギは前記リセット状態の前記セットエネルギを超えず、
前記プログラミング状態に数値を割り当て、
前記相変化材料の第１部分に第１数を格納し、前記第１数を格納することは前記相変化材料の前記第１部分を前記第１数の数値に関連付けたプログラミング状態に変化させるに足る量のエネルギを提供することを含み、
第２数に固有のエネルギを前記相変化材料に提供する、加算方法。
【請求項６４】
前記数値は、前記プログラミング状態のプログラミングエネルギが上昇すると増加する、請求項６３の方法。
【請求項６５】
前記数値は、前記プログラミング状態のプログラミングエネルギに比例する、請求項６３の方法。
【請求項６６】
前記数値は、ゼロで始まる連続整数である、請求項６３の方法。
【請求項６７】
前記相変化材料のセット状態に数値ゼロを割り当てる、請求項６３の方法。
【請求項６８】
前記第２数に固有の前記エネルギは、前記第２数の数値に関連付けたプログラミング状態に前記相変化材料を変化させるのに必要なエネルギである、請求項６３の方法。
【請求項６９】
前記第２数に固有のエネルギを提供するステップは、前記相変化材料の第２部に前記第２数を格納することを含み、前記格納することは前記第２数の数値に関連付けたプログラミング状態に前記相変化材料の前記第２部を変化させることを含む、請求項６３の方法。
【請求項７０】
前記相変化材料の前記第１部分に第１セットエネルギを提供し、前記第１セットエネルギは前記第１数の数値に関連付けたプログラミング状態からセット状態へ前記相変化材料の前記第１部分を変化させ、
前記相変化材料の第３部のリセット状態に前記第１セットエネルギを提供し、
前記相変化材料の前記第３部に第２セットエネルギを提供し、前記第２セットエネルギは前記相変化材料の前記第３部をセット状態へ変化させ、
前記相変化材料の前記第２部に前記第２セットエネルギを提供する各ステップをさらに備える、請求項６９の方法。
【請求項７１】
複数の状態を有するデジタル多状態相変化材料を提供し、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記相変化材料の少なくとも一部をメモリグループに区分し、前記メモリグループの各々は多桁数を格納するための前記相変化材料の容積に対応し、
前記メモリグループを複数のレジスタに分割し、前記レジスタは前記多桁数の１桁を格納するために割り当てた前記メモリグループの一部に対応し、前記レジスタはプログラミング状態を有し、前記プログラミング状態は前記相変化材料の前記複数の状態から選択し、前記プログラミングエネルギは前記相変化材料をリセット状態から前記プログラミング状態へ変化させるのに必要な量のエネルギに対応し、前記プログラミングエネルギは前記リセット状態の前記セットエネルギを超えず、
前記プログラミング状態に数値を割り当て、
前記メモリグループのレジスタに桁値を関連付け、前記メモリグループの各々は同一数の桁値を含み、
第１メモリグループに第１多桁数を書き込み、前記書き込むことは桁値に基づき前記第１メモリグループのレジスタに前記多桁数の各数を格納することを含み、前記格納することは前記各数の数値に関連付けたプログラミング状態に前記レジスタを変化させることを含み、
第２数に固有のエネルギを前記相変化材料に提供する各ステップを備える、加算方法。
【請求項７２】
前記エネルギを提供するステップは、前記第１メモリグループの適切なレジスタに前記第２数の各桁に固有のエネルギを提供することを含み、前記適切なレジスタは前記第２数の各桁値に対応する、請求項７１の方法。
【請求項７３】
前記エネルギを提供するステップは、前記第２数を第２メモリグループへ書き込むことを含み、前記書き込むことは前記第２メモリグループの各レジスタに前記第２数の各桁を格納することを含み、前記各レジスタは異なる桁値を有する数に対応し、前記格納することは前記各桁の数値に関連付けたプログラミング状態に前記レジスタを変化させることを含む、請求項７１の方法。
【請求項７４】
１以上のメモリグループのレジスタを指示するカウンタを設定し、前記カウンタはカウンタ値を有し、前記カウンタ値はカウンタプログラミング状態に対応し、
１桁を格納した前記第１メモリグループの各レジスタを前記カウンタプログラミング状態の１連続セットの１つに関連付け、
前記第２メモリグループの各レジスタを、同一桁値を有する前記第１メモリグループのレジスタを関連付けたカウンタプログラミング状態に関連付け、
第３のメモリグループの各レジスタを、同一桁値を有する前記第１メモリグループのレジスタを関連付けたカウンタプログラミング状態に関連付け、
前記カウンタを初期カウンタ値に初期化し、前記初期カウンタ値は初期カウンタプログラミング状態に対応し、前記初期カウンタプログラミング状態は前記連続プログラミング状態セットのうち最小カウンタ値を有するカウンタプログラミング状態に対応し、
前記カウンタが前記連続カウンタ値セット内のカウンタ値を有する間、次のステップａ〜ｅを繰り返し、
ａ．前記カウンタが指示している前記第１メモリグループのレジスタに第１セットエネルギを提供し、前記指示している第１メモリグループのレジスタは前記カウンタの値に関連付けた前記第１メモリグループのレジスタに対応し、前記第１セットエネルギは前記指示している第１メモリグループのレジスタをセット状態に変化させ、
ｂ．前記カウンタが指示している前記第３メモリグループのレジスタのリセット状態に前記第１セットエネルギを提供し、前記指示している第３メモリグループのレジスタは前記カウンタの値に関連付けた前記第３メモリグループのレジスタに対応し、
ｃ．前記指示している第３メモリグループのレジスタに第２セットエネルギを提供し、前記第２セットエネルギは前記指示している第３メモリグループのレジスタをセット状態に変化させ、
ｄ．前記カウンタが指示している前記第２メモリグループのレジスタに前記第２セットエネルギを提供し、前記指示している第２メモリグループのレジスタは前記カウンタの値に関連付けた前記第２メモリグループのレジスタに対応し、
ｅ．前記カウンタの値を増分する各ステップをさらに備える、請求項７３の方法。
【請求項７５】
前記カウンタは前記相変化材料から成る、請求項７４の方法。
【請求項７６】
前記カウンタプログラミング状態は、前記相変化材料の前記複数の状態から選択する、請求項７５の方法。
【請求項７７】
前記繰り返しステップａ〜ｅの終了後のカウンタプログラミング状態は、前記相変化材料のセット状態である、請求項７６の方法。
【請求項７８】
カウンタプログラミング状態の数は、前記レジスタのプログラミング状態の数と同じである、請求項７４の方法。
【請求項７９】
複数の状態を有するデジタル多状態相変化材料を提供し、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記相変化材料の第１容積に第１数を格納し、前記第１数を格納することは前記相変化材料の前記第１容積のリセット状態に前記第１数に固有のエネルギを提供することを含み、前記第１数に固有のエネルギは前記リセット状態の前記セットエネルギを超えず、
前記相変化材料の第２容積に第２数を格納し、前記格納することは前記相変化材料の前記第２容積のリセット状態に前記第２数に固有のエネルギを提供することを含み、前記第２数に固有の前記エネルギは前記リセット状態の前記セットエネルギを超えず、
前記相変化材料の前記第１容積に第１セットエネルギを提供し、前記第１セットエネルギは前記相変化材料の前記第１容積をセット状態に変化させ、
前記相変化材料の前記第２容積に前記第１セットエネルギを提供する各ステップを備える、減算方法。
【請求項８０】
前記第１数に固有の前記エネルギは前記第１数に比例し、前記第２数に固有の前記エネルギは前記第２数に比例する、請求項７９の方法。
【請求項８１】
前記第１セットエネルギを前記第２容積に提供するステップは、
前記相変化材料の前記第２容積に前記第１セットエネルギの第１部分を提供し、前記第１部分は前記第２容積をセット状態に変化させるに足り、
前記第２容積をリセットし、
前記第１セットエネルギの残りを前記第２容積に提供する各ステップを備える、請求項７９の方法。
【請求項８２】
前記相変化材料のプログラミング状態を定義し、前記プログラミング状態は前記複数の状態から選択し、前記プログラミング状態はプログラミングエネルギを有し、前記プログラミングエネルギは前記相変化材料をリセット状態から前記プログラミング状態へ変化させるのに必要な量のエネルギに対応し、前記プログラミングエネルギは前記リセット状態の前記セットエネルギを超えず、
前記プログラミング状態に数値を割り当てる各ステップをさらに備える、請求項７９の方法。
【請求項８３】
前記第１数を格納するステップは、前記相変化材料の前記第１容積を前記第１数の数値に関連付けたプログラミング状態に変化させるに足る量のエネルギを提供することを含む、請求項８２の方法。
【請求項８４】
前記第２数を格納するステップは、前記相変化材料の前記第２容積を前記第２数の数値に関連付けたプログラミング状態に変化させるに足る量のエネルギを提供することを含む、請求項８２の方法。
【請求項８５】
第１数に第２数を乗算する方法において、
複数の状態を有するデジタル多状態相変化材料を提供し、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記相変化材料の第１部分に前記第１数を格納し、
倍数レジスタを初期値に設定し、
前記倍数レジスタの値が前記初期値と前記第２数との合計より小さい時、次のステップａおよびｂを実行し、
ａ．前記相変化材料の第１部分に格納した数に前記第１数を加算し、前記加算することは前記相変化材料の前記第１部分に前記第１数に固有のエネルギを提供することを含み、
ｂ．前記倍数レジスタを増分し、
前記相変化材料の前記第１部分に格納した値を読み出す各ステップを備える、前記乗算方法。
【請求項８６】
前記相変化材料のプログラミング状態を定義し、前記プログラミング状態は前記複数の状態から選択し、前記プログラミング状態はプログラミングエネルギを有し、前記プログラミングエネルギは前記相変化材料をリセット状態から前記プログラミング状態に変化させるに必要な量のエネルギに対応し、前記プログラミングエネルギは前記リセット状態の前記セットエネルギを超えず、
前記プログラミング状態に数値を割り当てる各ステップをさらに備える、請求項８５の方法。
【請求項８７】
前記格納するステップは、前記相変化材料の前記第１部分を前記第１数に割り当てたプログラミング状態に変化させるに足る量のエネルギを提供することを含む、請求項８６の方法。
【請求項８８】
前記第１数に固有の前記エネルギは、前記相変化材料をリセット状態から前記第１数に割り当てたプログラミング状態に変化させるのに必要なエネルギである、請求項８６の方法。
【請求項８９】
前記倍数レジスタは、前記相変化材料の第２部分から成る、請求項８５の方法。
【請求項９０】
第１数を第２数によって除算する方法において、
複数の状態を有するデジタル多状態相変化材料を提供し、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記相変化材料に前記第１数を格納し、
倍数レジスタを初期値に設定し、
前記相変化材料に格納した数が前記第２数より大きいか等しい間、次のステップａおよびｂを繰り返し、
ａ．前記相変化材料に格納した前記数から前記第２数を減算し、前記減算することは前記格納した数と前記第２数間の差に対応する状態に前記相変化材料を変化させるエネルギを提供することを含み、
ｂ．前記倍数レジスタを増分し、
前記相変化材料に格納した数を読み出し、
前記倍数レジスタの値を読み出す各ステップを備える、前記減算方法。
【請求項９１】
前記相変化材料のプログラミング状態を定義し、前記プログラミング状態は前記複数の状態から選択し、前記プログラミング状態はプログラミングエネルギを有し、前記プログラミングエネルギは前記相変化材料をリセット状態から前記プログラミング状態に変化させるに必要な量のエネルギに対応し、前記プログラミングエネルギは前記リセット状態の前記セットエネルギを超えず、
前記プログラミング状態に数値を割り当てる各ステップをさらに備える、請求項９０の方法。
【請求項９２】
前記格納するステップは、前記相変化材料の前記第１部分を前記第１数に割り当てたプログラミング状態に変化させるに足る量のエネルギを提供することを含む、請求項９１の方法。
【請求項９３】
前記第１数に固有の前記エネルギは、前記相変化材料をリセット状態から前記第１数に割り当てたプログラミング状態に変化させるのに必要なエネルギである、請求項９１の方法。
【請求項９４】
前記倍数レジスタは、前記相変化材料の第２部分から成る、請求項８９の方法。
【請求項９５】
１数の補数を計算する方法において、
複数の状態を有するデジタル多状態相変化材料を提供し、前記状態は、リセット状態と、前記リセット状態のセットエネルギに対応する量のエネルギを印加することにより前記リセット状態から得られ前記リセット状態より低い抵抗を有するセット状態と、前記リセット状態と実質的に同一抵抗を有する１以上の中間状態とを有し、前記１以上の中間状態は前記リセット状態の前記セットエネルギより低い量のエネルギを印加することにより前記リセット状態から得られ、
前記相変化材料の第１部分に１数を格納し、前記格納することは前記数に対応するエネルギを前記相変化材料のリセット状態に提供することを含み、前記対応するエネルギは前記リセット状態の前記セットエネルギを超えず、
前記相変化材料の前記第１部分にセッティングエネルギを提供し、前記セッティングエネルギは前記相変化材料の前記第１部分をセット状態に変化させ、
前記相変化材料の第２部分に前記セッティングエネルギを提供する各ステップを備える、前記補数計算方法。
【請求項９６】
前記プログラミング状態の数は少なくとも２である、請求項３０の方法。
【請求項９７】
前記プログラミング状態の数は少なくとも３である、請求項３０の方法。
【請求項９８】
前記プログラミング状態の数は少なくとも４である、請求項３０の方法。
【国際調査報告】
2005527026.tif 000015