(57)【要約】      （修正有）【課題】より安全な暗号技術等に応用可能な、乱数処理方法を提供する。【解決手段】乱数処理装置１００は、異なる複数の電気的信号が印加されたとき、抵抗値が複数の可変抵抗値範囲の間を可逆的に遷移する性質を有するメモリセル９１と、抵抗値が１つの可変抵抗値範囲内にあるメモリセル９１から複数の異なる時刻のそれぞれにおいて抵抗値情報を取得することで複数の抵抗値情報を取得し、複数の抵抗値情報を用いて乱数データを生成する制御装置９３と、を備える。メモリセル９１は、抵抗値が１つの可変抵抗値範囲にあるとき、時間経過に伴って抵抗値がランダムに変動する性質を有する。【選択図】図１
2015212933.tif 000002
【特許請求の範囲】
【請求項１】
異なる複数の電気的信号が印加されたとき、抵抗値が複数の可変抵抗値範囲の間を可逆的に遷移する性質を有するメモリセルと、
抵抗値が１つの可変抵抗値範囲内にある前記メモリセルから複数の異なる時刻のそれぞれにおいて抵抗値情報を取得することで複数の抵抗値情報を取得し、前記複数の抵抗値情報を用いて乱数データを生成する制御装置と、を備え、
前記メモリセルは、当該抵抗値が前記１つの可変抵抗値範囲内にあるとき、時間経過に伴って前記抵抗値がランダムに変動する性質を有する、
乱数処理装置。
【請求項２】
前記メモリセルである第１メモリセルと、前記第１メモリセルとは異なる第２メモリセルとを含むメモリセルアレイを備え、
前記複数の抵抗値情報は第１の複数の抵抗値情報であり、
前記制御装置は、前記１つの可変抵抗値範囲内にある前記第２メモリセルから、複数の異なる時刻のそれぞれにおいて抵抗値情報を取得することで、第２の複数の抵抗値情報を取得し、前記第１の複数の抵抗値情報と前記第２の複数の抵抗値情報とを用いて乱数データを生成し、
前記第２メモリセルは、当該抵抗値が前記１つの可変抵抗値範囲内にあるとき、時間経過に伴って前記抵抗値がランダムに変動する性質を有する、
請求項１に記載の乱数処理装置。
【請求項３】
前記制御装置は、
２つの異なる時刻のそれぞれにおいて前記メモリセルから取得された２つの前記抵抗値情報の差分を求める差分取得器と、
差分が第１範囲に該当するか否かを判定する判定器と、
前記判定器の判定結果に基づいて前記乱数データを生成する生成器と、を備える、
請求項１または２に記載の乱数処理装置。
【請求項４】
前記制御装置は、
２つの異なる時刻のそれぞれにおいて前記メモリセルから取得された２つの前記抵抗値情報の大小関係を判定する判定器と、
前記判定器の判定結果に基づいて前記乱数データを生成する生成器と、を備える、
請求項１または２に記載の乱数処理装置。
【請求項５】
前記制御装置は、
前記複数の抵抗値情報を用いてディジタルデータを生成する生成器と、
前記ディジタルデータを用いて所定のアルゴリズムを実行することによって前記乱数データを生成する演算器と、を備える、
請求項１または２に記載の乱数処理装置。
【請求項６】
前記演算器は、前記ディジタルデータを入力値および初期値の少なくともいずれか一方として、生成多項式を演算することによって前記乱数データを生成する、
請求項５に記載の乱数処理装置。
【請求項７】
前記ディジタルデータは長さｎの固定長のデータであり、
前記演算器は、次の規則（Ａ）および（Ｂ）および（Ｃ）に従って接続されたｎ段のシフトレジスタを備える、
請求項６に記載の乱数処理装置。
（Ａ）ｘを２以上ｎ以下の整数として、前記シフトレジスタのｘ番目のレジスタには、ｘ−１番目のレジスタの出力が入力されるか、ｘ−１番目のレジスタの出力とｎ番目のレジスタの出力との排他的論理和が入力される。
（Ｂ）前記シフトレジスタの１番目のレジスタには、ｎ番目のレジスタの出力が入力されるか、前記ディジタルデータのいずれかのビットとｎ番目のレジスタの出力との排他的論理和が入力される。
（Ｃ）前記シフトレジスタの１番目のレジスタにｎ番目のレジスタの出力が入力される場合には、前記シフトレジスタの２番目以降のレジスタのいずれか少なくとも一つには、ｘ−１番目のレジスタの出力とｎ番目のレジスタの出力との排他的論理和が入力される。
【請求項８】
前記制御装置は、
前記複数の抵抗値情報を用いて長さｍの固定長のデータである第１のディジタルデータを生成する生成器と、
前記第１のディジタルデータに含まれるビットを互いに異なる組合せで反転させることで複数の新たなディジタルデータを生成する複数の反転器と、
前記第１のディジタルデータおよび前記複数の新たなディジタルデータのうち、出現頻度の最も低いものを選択して第２のディジタルデータとする選択器と、
前記第２のディジタルデータを用いて所定のアルゴリズムを実行することによって前記乱数データを生成する演算器と、
前記第２のディジタルデータの出現頻度に１を加える加算器と、
を備える、
請求項１または２に記載の乱数処理装置。
【請求項９】
前記制御装置は、
０より大きく１未満である係数を累積値に掛けて得られる値を新たな抵抗値情報として出力する出力器と、
前記抵抗値情報から前記新たな抵抗値情報を差し引いた値に前記累積値を加えた値を新たな累積値として記憶する累積器と、
複数の前記新たな抵抗値情報を用いて前記乱数データを生成する生成器と、
を備える、
請求項１または２に記載の乱数処理装置。
【請求項１０】
複数の可変抵抗値範囲は、第１抵抗値範囲と、前記第１抵抗値範囲よりも抵抗値が小さい第２抵抗値範囲とを含み、
前記１つの可変抵抗値範囲は、前記第１抵抗値範囲である、
請求項１から９のいずれか一項に記載の乱数処理装置。
【請求項１１】
複数の可変抵抗値範囲は、第１抵抗値範囲と、前記第１抵抗値範囲よりも抵抗値が小さい第２抵抗値範囲とを含み、
前記１つの可変抵抗値範囲は、前記第２抵抗値範囲である、
請求項１から９のいずれか一項に記載の乱数処理装置。
【請求項１２】
複数の可変抵抗値範囲は、第１抵抗値範囲と、前記第１抵抗値範囲よりも抵抗値が小さい第２抵抗値範囲とを含み、
前記制御装置は、
前記メモリセルの抵抗値を前記第１抵抗値範囲内に設定する際には、当該メモリセルの抵抗値を前記第１抵抗値範囲内に含まれる第１基準値以上に設定し、
前記メモリセルの抵抗値を前記第２抵抗値範囲内に設定する際には、当該メモリセルの抵抗値を前記第２抵抗値範囲内に含まれる第２基準値未満に設定し、
前記１つの可変抵抗値範囲は、前記第１基準値と前記第２基準値との間に設定される第３抵抗値範囲である、
請求項１から９のいずれか一項に記載の乱数処理装置。
【請求項１３】
前記制御装置は、第１の複数のメモリセルのそれぞれの抵抗値を前記複数の可変抵抗値範囲のいずれかに設定することによって、前記乱数データを前記第１の複数のメモリセルに記録する、
請求項１から１２のいずれか一項に記載の乱数処理装置。
【請求項１４】
前記制御装置は、前記乱数データを第１の複数のメモリセルに記録し、
前記第１の複数のメモリセルのそれぞれは、
異なる複数の電気的信号が印加されることによって、抵抗値が複数の可変抵抗値範囲の間を可逆的に遷移する、可変状態と、
前記可変状態に変化させるような電気的ストレスであるフォーミングストレスが印加されない限り前記可変状態とならず、かつ、抵抗値が前記可変抵抗値範囲のいずれとも重複しない初期抵抗値範囲にある、初期状態と、を取りうる性質を有し、
前記乱数データは、前記第１の複数のメモリセルの抵抗値が前記初期抵抗値範囲にあるか否かの違いを利用して記録される、
請求項１から１２のいずれか一項に記載の乱数処理装置。
【請求項１５】
前記乱数データは、第１乱数データであり、
前記制御装置は、さらに、第２の乱数データを第２の複数のメモリセルに記録し、
前記第２の複数のメモリセルのそれぞれは、
異なる複数の電気的信号が印加されることによって、抵抗値が複数の可変抵抗値範囲の間を可逆的に遷移する、可変状態と、
前記可変状態に変化させるような電気的ストレスであるフォーミングストレスが印加されない限り前記可変状態とならず、かつ、抵抗値が前記可変抵抗値範囲のいずれとも重複しない初期抵抗値範囲にある、初期状態と、を取りうる性質を有し、
前記第２の乱数データは、前記第２の複数のメモリセルのそれぞれが前記初期状態にあるか前記可変状態にあるかの違いを利用して記録される、
請求項１３に記載の乱数処理装置。
【請求項１６】
前記制御装置は、前記初期状態にある前記第２の複数のメモリセルの少なくとも一部にフォーミングストレスを印加することにより、前記第２乱数データを生成して記録する、
請求項１５に記載の乱数処理装置。
【請求項１７】
抵抗値が１つの可変抵抗値範囲内にあるメモリセルから複数の異なる時刻のそれぞれにおいて抵抗値情報を取得することで、複数の抵抗値情報を取得するステップＡと、
前記複数の抵抗値情報を用いて乱数データを生成するステップＢと、を含み、
前記メモリセルは、異なる複数の電気的信号が印加されることによって、当該抵抗値が前記１つの可変抵抗値範囲を含む複数の可変抵抗値範囲の間を可逆的に遷移する性質を有し、かつ、当該抵抗値が前記１つの可変抵抗値範囲内にあるとき、時間経過に伴って前記抵抗値がランダムに変動する性質を有する、
乱数処理方法。
【請求項１８】
前記メモリセルはメモリセルアレイに含まれる第１メモリセルであり、
前記複数の抵抗値情報は第１の複数の抵抗値情報であり、
前記乱数処理方法は、
抵抗値が前記１つの可変抵抗値範囲内にあって前記第１メモリセルとは異なる第２メモリセルから、複数の異なる時刻のそれぞれにおいて抵抗値情報を取得することで、第２の複数の抵抗値情報を取得するステップＡ’をさらに含み、
前記ステップＢでは、前記第１の複数の抵抗値情報と前記第２の複数の抵抗値情報とを用いて乱数データを生成し、
前記第２メモリセルは、異なる複数の電気的信号が印加されることによって、当該抵抗値が前記複数の可変抵抗値範囲の間を可逆的に遷移する性質し、かつ、
当該抵抗値が前記１つの可変抵抗値範囲内にあるとき、時間経過に伴って前記抵抗値がランダムに変動する性質を有する、
請求項１７に記載の乱数処理方法。
【請求項１９】
前記ステップＢは、
２つの異なる時刻のそれぞれにおいて前記メモリセルから取得された２つの前記抵抗値情報の差分を求めるステップＢ１と、
前記差分が第１範囲に該当するか否かを判定するステップＢ２と、
ステップＢ２における判定の結果を用いて前記乱数データを生成するステップＢ３と、を含む、
請求項１７または１８に記載の乱数処理方法。
【請求項２０】
前記ステップＢは、
２つの異なる時刻のそれぞれにおいて前記メモリセルから取得された２つの前記抵抗値情報の大小関係を判定するステップＢ４と、
ステップＢ４における判定の結果を用いて前記乱数データを生成するステップＢ５と、を含む、
請求項１７または１８に記載の乱数処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、乱数処理装置および乱数処理方法に関する。
【背景技術】
【０００２】
近年の情報化社会の発展に伴い、高度な情報セキュリティー技術が求められている。その手段として様々な暗号方式が利用されている。
【０００３】
各暗号方式において、典型的に、擬似乱数が用いられてきた。しかしながら、暗号方式の安全性は、乱数値のランダム性に依存する。乱数値のランダム性は、擬似乱数よりも、真性乱数（non-deterministic random number）あるいは物理乱数:physical random number）の方が高い。言い換えると、真性乱数および物理乱数は、擬似乱数よりも乱数の予測が困難である。
【０００４】
特許文献１は、ゲート電極へのパルス電圧の印加によってソース‐ドレイン間電流にランダムノイズが発生し、当該ランダムノイズから乱数が生成される技術を開示している。
【０００５】
特許文献２は、磁化が１／２の確率で反転するようなスピン注入電流がＭＲＡＭに供給され、これにより乱数が生成される技術を開示している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２９９５９５号公報
【特許文献２】特開２０１１−１１３１３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本開示は、より安全な暗号技術等に応用可能な、従来にない乱数処理方法を提供する。
【課題を解決するための手段】
【０００８】
本開示の乱数処理装置の一態様（ａｓｐｅｃｔ）は、異なる複数の電気的信号が印加されたとき、抵抗値が複数の可変抵抗値範囲の間を可逆的に遷移する性質を有するメモリセルと、抵抗値が１つの可変抵抗値範囲内にある前記メモリセルから複数の異なる時刻のそれぞれにおいて抵抗値情報を取得することで複数の抵抗値情報を取得し、前記複数の抵抗値情報を用いて乱数データを生成する制御装置と、を備え、前記メモリセルは、当該抵抗値が前記１つの可変抵抗値範囲にあるとき、時間経過に伴って前記抵抗値がランダムに変動する性質を有する。
【０００９】
これらの包括的または具体的な態様は、乱数処理方法、暗号システム、ＩＣカード、として実現されてもよく、それらの任意の組み合わせで実現されてもよい。
【発明の効果】
【００１０】
本開示の一態様によれば、より安全な暗号技術等に応用可能な、従来にない乱数処理方法を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施形態にかかる乱数処理装置の概略構成の一例を示すブロック図である。
【図２】図２は、実施形態にかかる乱数処理装置が備えるメモリセルの概略構成の一例を示す断面図である。
【図３】図３は、実施形態にかかる乱数処理装置が備えるメモリセルの抵抗値範囲の一例を示すグラフである。
【図４】図４は、可変状態にあるバイポーラ型抵抗変化素子の特性の一例を示す図である。
【図５】図５は、可変状態にあるユニポーラ型抵抗変化素子の特性の一例を示す模式図である。
【図６】図６は、抵抗変化素子の抵抗変化特性の一例を示す図である。
【図７】図７は、実施形態において１つの可変抵抗値範囲内にある１つメモリセルから連続して抵抗値を読み出した例を示す図である。
【図８Ａ】図８Ａは、パーコレーションモデル（percolation model）を用いて、フォーミング時における抵抗変化層（例えば局所領域）中のフィラメントの形成をシミュレートした結果の一例を示す図である。
【図８Ｂ】図８Ｂは、パーコレーションモデル（percolation model）を用いて、フォーミング時における抵抗変化層（例えば局所領域）中のフィラメントの形成をシミュレートした結果の一例を示す図である。
【図９】図９は、実施形態の乱数処理方法の一例を示すフローチャートである。
【図１０】図１０は、規格化累積印加時間と、初期状態から可変状態へ変化したメモリセルの数についての標準正規分布の偏差との関係をプロットした図である。
【図１１】図１１は、実施形態において１つの可変抵抗値範囲内にある１つのメモリセルから連続して抵抗値を読み出した例を示す図である。
【図１２】図１２は、第１実施例にかかる乱数処理装置の概略構成の一例を示すブロック図である。
【図１３】図１３は、第１実施例にかかる乱数処理装置の書き込みサイクルと読み出しサイクルの一例を示すタイミングチャートである。
【図１４】図１４は、第１実施例にかかる乱数処理装置が備えるセンスアンプの概略構成の一例を示すブロック図である。
【図１５】図１５は、第１実施例にかかる乱数処理装置が備えるセンスアンプの主要箇所の動作例を示すタイミングチャートである。
【図１６】図１６は、第１実施例にかかる乱数処理装置における放電時間の差を示すグラフである。
【図１７】図１７は、第１実施例の乱数生成回路の概略構成を示す回路図である。
【図１８】図１８は、特殊書き込みモードの第１動作例を示すフローチャートである。
【図１９】図１９は、図１８に示す特殊書き込みモードで書き込まれたメモリセルを特殊読み出しモードで読み出した結果の一例を示す図である。
【図２０】図２０は、図１８に示す特殊書き込みモードで書き込まれたデータを通常読み出しモードで読み出した結果の一例を示す図である。
【図２１】図２１は、特殊書き込みモードの第２動作例を示すフローチャートである。
【図２２】図２２は、第１実施例で得られた乱数データを離散フーリエ変換した結果を示す図である。
【図２３】図２３は、第２実施例の乱数生成回路の概略構成を示す回路図である。
【図２４】図２４は、第２実施例で得られた乱数データを離散フーリエ変換した結果を示す図である。
【図２５】図２５は、抵抗値と、その変動量の関係を示す図である。
【図２６】図２６は、書き込み直後における抵抗値変動を示す図である。
【図２７】図２７は、書き込み後２４時間経過したメモリセルの抵抗値変動を示す図である。
【図２８】図２８は、メモリセルアレイの各領域を乱数生成用メモリセル群、第１種データ記憶用メモリセル群、および、第２種データ記憶用メモリセル群に分割した例を示す図である。
【図２９】図２９は、第３実施例の乱数生成回路の概略構成を示す回路図である。
【図３０】図３０は、第３実施例の演算部における、８次の原始多項式（Ｘ８＋Ｘ４＋Ｘ３＋Ｘ２＋１）演算の回路を示す回路図である。
【図３１】図３１は、第４実施例の通信システムの構成例を示すブロック図である。
【発明を実施するための形態】
【００１２】
（本開示の基礎となった知見）
ＩＣカードは、ＩＣ（半導体集積回路）チップを搭載したカードである。ＩＣチップは、例えば、論理回路と、揮発および／または不揮発性メモリと、マイクロプロセッサーとを具備する。これらが、暗号化機能、ディジタル署名、およびディジタル認証機能などの各種情報セキュリティー機能を実現する。これらの機能が実行されるときには秘密鍵が用いられる。この場合、ＩＣカード内で真性乱数を生成して秘密鍵に適用すると、セキュリティーの安全性が向上する。
【００１３】
しかしながら、ＩＣカードのような超小型機器において、乱数生成のための回路は、小型化が要求される。さらに、例えばバッテリーが非搭載のＩＣカードでは、通信時にワイヤレス給電で得られる電力で、短時間のうちに各種機能を実行する必要がある。つまり、乱数生成において、低消費電力化と、生成速度の向上が同時に求められる。そこで本発明者らは、かかる要求に応えられるような真性乱数の生成器として、いくつかの先行技術を検討した。
【００１４】
特許文献１のように物理現象を利用して真性乱数を発生させる場合、乱数生成の回路を別途追加する必要がある。このため、ＩＣカードのような超小型機器への応用には、搭載回路の増加という潜在的な課題があると考えられた。
【００１５】
特許文献２は、スピン反転の確率が１／２となる書き込み電流をメモリ素子に流し、０または１をランダムにメモリ素子へ書き込む方式である。しかし、スピンの反転確率が１／２となる電流はチップやロット間でバラツク。そのため、書き込み電流の調整が非常に難しいと考えられた。
【００１６】
さらに本発明者らは、乱数の生成速度についても検討を行った。従来の物理乱数の発生方式において、乱数の生成速度が低いという課題があった。
【００１７】
乱数生成の専用回路において、例えば、複数チャンネルで並列的に乱数が生成されることにより、乱数の生成速度を上げることができる。しかし、従来の方式では、乱数生成の専用回路を複数チャンネル化すると、当該回路の増大をもたらす。すなわち、従来の方法では、乱数の生成速度の向上と、乱数生成回路を搭載した機器の小型化とを両立することは、困難であった。
【００１８】
一方、近年では、暗号の安全性強化のために鍵長が長くなっている。例えば、暗号生成スピードが２５０Ｋｂｉｔ／Ｓｅｃの場合、２０４８ｂｉｔの鍵長の生成には約８ｍＳｅｃ以上という長い時間が必要となる。電子パスポートや住民基本台帳といった重要な個人情報が扱われる機器において、指紋や顔写真等の大容量の電子データが認証に用いられることが検討されている。このような大容量データの通信を支えるために、乱数生成スピードの向上が求められる。
【００１９】
本発明者らは、以上のような課題を解決できる新規な乱数処理方法を鋭意検討した。その結果、本発明者らは、抵抗変化素子の抵抗値が時間経過と共にランダムに変化する現象を発見し、これを乱数生成に応用することに想到した。かかる方式では、より安全な暗号技術等に応用可能な、従来にない乱数処理方法を提供することができる。これにより、例えば、乱数生成を行う要素、乱数の記憶を行う要素、データの記憶を行う要素等を共通化することが可能となる。そのため、乱数生成のための回路が小型化されうる。抵抗変化素子の抵抗値の変化は極めて短い時間間隔（例えば、１０ｎＳｅｃオーダー）で生じる。そのため、暗号生成スピードが向上しうる。なお、以上の説明は、本開示に至った経緯を説明するものに過ぎず、本開示を限定する趣旨ではない。
【００２０】
以下、添付図面を参照しつつ、本開示の実施形態について説明する。
【００２１】
以下で説明する実施形態は、いずれも一具体例を示すものである。以下の実施形態で示される数値、形状、材料、組成、構成要素、それらの配置および接続、ステップ、ならびに、ステップの順序、電気的特性などは、あくまで一例である。それらは、本開示を限定するものではない。以下の実施形態における構成要素のうち、本開示の最上位概念を示す独立請求項に記載されていない構成要素は、任意の構成要素として説明される。図面において、同じ符号が付いたものは、説明が省略される場合がある。図面は、理解しやすくするために、それぞれの構成要素が模式的に示されているため、形状および寸法比等については正確な表示ではない場合がある。製造方法において、必要に応じて、各工程の順序等が変更されうる、および／または、他の公知の工程が追加されうる。
【００２２】
（実施形態の概要）
本開示の一態様に係る乱数処理方法は、抵抗値が１つの可変抵抗値範囲内にあるメモリセルから複数の異なる時刻のそれぞれにおいて抵抗値情報を取得することで、複数の抵抗値情報を取得するステップＡと、複数の抵抗値情報を用いて乱数データを生成するステップＢと、を含む。ここで、メモリセルは、異なる複数の電気的信号が印加されることによって、抵抗値が複数の可変抵抗値範囲の間を可逆的に遷移する可変状態を取りうる性質を有し、かつ、抵抗値が少なくとも１つの可変抵抗値範囲にある場合に時間経過に伴って抵抗値がランダムに変動する性質を有する。
【００２３】
かかる構成により、より安全な暗号技術等に応用可能な、従来にない乱数処理方法が提供されうる。
【００２４】
抵抗値情報は、抵抗値を直接検出することで取得されてもよい。あるいは、抵抗値情報は、抵抗値に関連する他の物理量の検出を通して取得されてもよい。他の物理量とは、例えば、電流量および電圧の減衰時間等である。
【００２５】
上記乱数処理方法において、メモリセルはメモリセルアレイに含まれる第１メモリセルであり、複数の抵抗値情報は第１の複数の抵抗値情報であってもよい。この場合、乱数処理方法は、抵抗値が１つの可変抵抗値範囲内にあって第１メモリセルとは異なる第２メモリセルから、複数の異なる時刻のそれぞれにおいて抵抗値情報を取得することで、第２の複数の抵抗値情報を取得するステップＡ’をさらに含んでもよい。加えて、ステップＢでは、第１の複数の抵抗値情報と第２の複数の抵抗値情報とを用いて乱数データを生成してもよい。ここで、第２メモリセルは、異なる複数の電気的信号が印加されることによって、抵抗値が複数の可変抵抗値範囲の間を可逆的に遷移する性質し、かつ、抵抗値が少なくとも１つの可変抵抗値範囲内にあるとき、時間経過に伴って抵抗値がランダムに変動する性質を有してもよい。かかる構成では、より高速に乱数が生成されうる。
【００２６】
言い換えると、上記乱数処理方法において、ステップＡでは、複数の異なる時刻のそれぞれにおいてメモリセルアレイを構成する複数のメモリセルのそれぞれから抵抗値情報を取得することで、複数の異なる時刻のそれぞれにおいて複数の抵抗値情報を取得してもよい。加えて、ステップＢでは、複数の異なる時刻のそれぞれにおいて取得された複数の抵抗値情報を用いて乱数データを生成してもよい。かかる構成では、より高速に乱数が生成されうる。
【００２７】
上記乱数処理方法において、ステップＢは、２つの異なる時刻のそれぞれにおいてメモリセルから取得された２つの抵抗値情報の差分を求めるステップＢ１と、差分が第１範囲に該当するか否かを判定するステップＢ２と、ステップＢ２における判定の結果を用いて乱数データを生成するステップＢ３と、を含んでもよい。
【００２８】
上記乱数処理方法において、ステップＢは、２つの異なる時刻のそれぞれにおいてメモリセルから取得された２つの抵抗値情報の大小関係を判定するステップＢ４と、ステップＢ４における判定の結果を用いて乱数データを生成するステップＢ５と、を含んでもよい。
【００２９】
上記乱数処理方法において、ステップＢは、複数の抵抗値情報を用いてディジタルデータを生成するステップＢ６と、ディジタルデータを用いて所定のアルゴリズムを実行することによって乱数データを生成するステップＢ７と、を含んでもよい。
【００３０】
上記乱数処理方法において、ステップＢ７は、ディジタルデータを入力値および初期値の少なくともいずれか一方として、生成多項式を演算することによって乱数データを生成するステップであってもよい。
【００３１】
上記乱数処理方法において、ディジタルデータは長さｎの固定長のデータであり、ステップＢ７は、ディジタルデータをｎ段のシフトレジスタに入力し、シフトレジスタは、次の規則（Ａ）および（Ｂ）および（Ｃ）に従うシフト動作を所定の回数行うことによって、乱数データを生成してもよい。
【００３２】
（Ａ）ｘを２以上ｎ以下の整数として、シフトレジスタのｘ番目のレジスタにはｘ−１番目のレジスタの出力が入力されるか、ｘ−１番目のレジスタの出力とｎ番目のレジスタの出力との排他的論理和が入力される。
【００３３】
（Ｂ）シフトレジスタの１番目のレジスタには、ｎ番目のレジスタの出力が入力されるか、ディジタルデータのいずれかのビットとｎ番目のレジスタの出力との排他的論理和が入力される。
【００３４】
（Ｃ）シフトレジスタの１番目のレジスタにｎ番目のレジスタの出力が入力される場合には、シフトレジスタの２番目以降のレジスタのいずれか少なくとも一つには、ｘ−１番目のレジスタの出力とｎ番目のレジスタの出力との排他的論理和が入力される。
【００３５】
上記乱数処理方法において、ステップＢは、複数の抵抗値情報を用いて長さｍの固定長のデータである第１のディジタルデータを生成するステップＢ８と、第１のディジタルデータに含まれるビットを互いに異なる組合せで反転させることで複数の新たなディジタルデータを生成するステップＢ９と、第１のディジタルデータおよび複数の新たなディジタルデータのうち、出現頻度の最も低いものを選択して第２のディジタルデータとするステップＢ１０と、第２のディジタルデータを用いて乱数データを生成するステップＢ１１と、第２のディジタルデータの出現頻度に１を加えるステップＢ１２と、を含んでもよい。
【００３６】
上記乱数処理方法において、ステップＢは、０より大きく１未満である係数を累積値に掛けて得られる値を新たな抵抗値情報として出力するステップＢ１３と、ステップＡで取得された抵抗値情報から新たな抵抗値情報を差し引いた値に累積値を加えた値を新たな累積値として記憶するステップＢ１４と、ステップＢ１３とステップＢ１４とを繰り返して得られる複数の新たな抵抗値情報を用いて乱数データを生成するステップＢ１５と、を含んでもよい。
【００３７】
上記乱数処理方法において、可変状態のメモリセルは、第１電気的信号を印加することによって抵抗値が第２抵抗値範囲から第２抵抗値範囲よりも大きい第１抵抗値範囲へと遷移し、第２電気的信号を印加することによって抵抗値が第１抵抗値範囲から第２抵抗値範囲へと遷移する性質を有し、かつ、抵抗値が第１抵抗値範囲にある場合に時間経過に伴って抵抗値がランダムに変動する性質を有してもよい。ここで、ステップＡは、抵抗値が第１抵抗値範囲内にあるメモリセルから複数の異なる時刻のそれぞれにおいて抵抗値情報を取得することで複数の抵抗値情報を取得するものであってもよい。
【００３８】
かかる構成では、抵抗値に対する抵抗値揺らぎの大きさが大きい第１抵抗値範囲のメモリセルが、乱数生成のために用いられる。そのため、より質の高い乱数データが得られうる。
【００３９】
上記乱数処理方法において、可変状態のメモリセルは、第１電気的信号を印加することによって抵抗値が第２抵抗値範囲から第２抵抗値範囲よりも大きい第１抵抗値範囲へと遷移し、第２電気的信号を印加することによって抵抗値が第１抵抗値範囲から第２抵抗値範囲へと遷移する性質を有し、かつ、抵抗値が第２抵抗値範囲にある場合に時間経過に伴って抵抗値がランダムに変動する性質を有してもよい。ここで、ステップＡは、抵抗値が第２抵抗値範囲内にあるメモリセルから複数の異なる時刻のそれぞれにおいて抵抗値情報を取得することで複数の抵抗値情報を取得するものであってもよい。
【００４０】
かかる構成では、メモリセルから抵抗値情報を取得する際の読み出しエラーの発生が抑制されうる。
【００４１】
上記乱数処理方法において、可変状態のメモリセルは、第１電気的信号を印加することによって、抵抗値が第２抵抗値範囲から第２抵抗値範囲よりも大きい第１抵抗値範囲へと遷移し、第２電気的信号を印加することによって抵抗値が第１抵抗値範囲から第２抵抗値範囲へと遷移する性質を有してもよい。ここで、第１抵抗値範囲は、例えば、読み出し時に高抵抗状態と判定される抵抗値範囲である。第２抵抗値範囲は、例えば、読み出し時に低抵抗状態と判定される抵抗値範囲である。可変状態のメモリセルを高抵抗状態に設定する際には、当該メモリセルの抵抗値を第１抵抗値範囲に含まれる第１基準値以上とし、可変状態のメモリセルを低抵抗状態に設定する際には、当該メモリセルの抵抗値を第２抵抗値範囲に含まれる第２基準値未満とするものであってもよい。言い換えると、可変状態のメモリセルの抵抗値を第１抵抗値範囲内に設定する際には、当該メモリセルの抵抗値を第１抵抗値範囲内に含まれる第１基準値以上に設定し、可変状態のメモリセルの抵抗値を第２抵抗値範囲内に設定する際には、メモリセルの抵抗値を第２抵抗値範囲内に含まれる第２基準値未満に設定するものであってもよい。ここで、ステップＡは、抵抗値が第１基準値と第２基準値との間に設定される第３抵抗値範囲にあるメモリセルから複数の異なる時刻のそれぞれにおいて抵抗値情報を取得することで複数の抵抗値情報を取得するものであってもよい。
【００４２】
かかる構成では、抵抗値が第１抵抗値範囲と第２抵抗値範囲との間にあるメモリセルが、乱数生成のために用いられる。これにより、より質の高い乱数データが生成されうる。
【００４３】
上記乱数処理方法は、第１の複数のメモリセルのそれぞれの抵抗値を前記複数の可変抵抗値範囲のいずれかに設定することによって、ステップＢで生成された乱数データを第１の複数のメモリセルに記録するステップＣをさらに備えてもよい。第１の複数のメモリセルのそれぞれは、異なる複数の電気的信号が印加されることによって、抵抗値が複数の可変抵抗値範囲の間を可逆的に遷移する、可変状態と、可変状態に変化させるような電気的ストレスであるフォーミングストレスが印加されない限り可変状態とならず、かつ、抵抗値が可変抵抗値範囲のいずれとも重複しない初期抵抗値範囲にある、初期状態と、を取りうるものであってもよい。
【００４４】
「可変抵抗値範囲のいずれとも重複しない初期抵抗値範囲」とは、ある抵抗値が初期抵抗値範囲に属する場合には当該抵抗値が可変抵抗値範囲に属さず、かつ、ある抵抗値が可変抵抗値範囲に属する場合には当該抵抗値が初期抵抗値範囲に属さないことをいう。
【００４５】
フォーミングストレスは、可変状態のメモリセルの抵抗値を複数の可変抵抗値範囲の間で可逆的に遷移させる異なる複数の電気的信号のいずれよりも、大きくてもよい。例えば、フォーミングストレスは、可変状態のメモリセルの抵抗値を可逆的に遷移させる異なる複数の電気的信号のいずれもよりも、振幅およびパルス幅の少なくとも一方が大きい。
【００４６】
なお、乱数データは、平文のままで記録されてもよいし、暗号化された後に記録されてもよい。以下、他の態様においても同様とする。
【００４７】
メモリセルアレイは、例えば、ステップＡで抵抗値情報が取得されるメモリセルと、第１の複数のメモリセルとを含んでもよい。かかる構成では、乱数処理のためのメモリセルと、乱数データを記憶するためのメモリセルとが、同一のメモリセルアレイ上に形成されうる。よって、装置が小型化され、消費電力が低減されうる。
【００４８】
上記乱数処理方法は、前記第１の複数のメモリセルの抵抗値が前記初期抵抗値範囲にあるか否かの違いを利用して、ステップＢで生成された乱数データを第１の複数のメモリセルに記録するステップＤをさらに備えてもよい。第１の複数のメモリセルのそれぞれは、異なる複数の電気的信号が印加されることによって、抵抗値が複数の可変抵抗値範囲の間を可逆的に遷移する、可変状態と、可変状態に変化させるような電気的ストレスであるフォーミングストレスが印加されない限り可変状態とならず、かつ、抵抗値が可変抵抗値範囲のいずれとも重複しない初期抵抗値範囲にある、初期状態と、を取りうるものであってもよい。
【００４９】
かかる構成では、乱数データが、より高い信頼性で記録されうる。
【００５０】
なお、第１の複数のメモリセルは、初期状態のメモリセルと可変状態のメモリセル以外のメモリセルを含んでいてもよい。例えば、第１の複数のメモリセルは、さらに、抵抗値が初期抵抗値範囲にも可変抵抗値範囲にも入らない不良メモリセルを一部に含んでいてもよい。例えば、抵抗値が可変抵抗値範囲にあったメモリセルの抵抗値が、時間の経過に伴って初期抵抗値範囲に入るようになってしまい、これにより不良メモリセルが発生する場合もありうる。このような不良メモリセルは、例えば、高温環境下に放置することで生じうる。不良メモリセルは、例えば、誤り訂正処理などにより正常なデータに訂正されてもよい。
【００５１】
例えば、可変状態にあるメモリセルが、高抵抗状態と低抵抗状態とを択一的にとってもよい。このとき、メモリセルが初期状態にある場合がデータの第１値に、メモリセルが高抵抗状態にある場合がデータの第２値に、メモリセルが低抵抗状態にある場合がデータの第３値に、それぞれ割り当てられてもよい。割り当てによって生成された３値データは、複数のメモリセルに記録されてもよい。例えば、第２値及び第３値は、それぞれ異なる可変抵抗値範囲に対応付けて割り当てられてもよい。
【００５２】
「多値データ」とは、２値以上のデータであり、例えば、３値データ、４値データである。
【００５３】
上記乱数処理方法は、ステップＢで生成された乱数データを第１乱数データとして第１の複数のメモリセルに記録するステップＥと、第２乱数データを第２の複数のメモリセルに記録するステップＦとをさらに含んでもよい。第１および第２の複数のメモリセルのそれぞれは、異なる複数の電気的信号が印加されることによって、抵抗値が複数の可変抵抗値範囲の間を可逆的に遷移する、可変状態と、可変状態に変化させるような電気的ストレスであるフォーミングストレスが印加されない限り可変状態とならず、かつ、抵抗値が可変抵抗値範囲のいずれとも重複しない初期抵抗値範囲にある、初期状態と、を取りうるものであってもよい。さらに、ステップＥにおいて、第１乱数データは、第１の複数のメモリセルの各抵抗値が少なくとも一つの可変抵抗値範囲にあるか否かの違いを利用して記録されてもよい。ステップＦにおいて、第２乱数データは、第２の複数のメモリセルのそれぞれが初期状態にあるか可変状態にあるかの違いを利用して記録されてもよい。
【００５４】
メモリセルアレイは、ステップＢで抵抗値情報が取得されるメモリセルと、第１の複数のメモリセルと、第２の複数のメモリセルとを含んでいてもよい。かかる構成では、第１乱数データを生成するためのメモリセルと、第１乱数データを記憶するためのメモリセルと、第２乱数データを記憶するためのメモリセルとが、同一のメモリセルアレイ上に形成されうる。よって、装置が小型化され、消費電力が低減されうる。
【００５５】
上記乱数処理方法において、ステップＦは、初期状態にある第２の複数のメモリセルの少なくとも一部にフォーミングストレスを印加することにより、第２乱数データを生成して記録するものであってもよい。
【００５６】
かかる構成では、複数の異なるメカニズムにより生成される乱数が組み合わされることで、より信頼性の高い暗号処理システムが実現されうる。
【００５７】
上記乱数処理方法において、ステップＦは、抵抗値が１つの可変抵抗値範囲にあるメモリセルから複数の異なる時刻のそれぞれにおいて抵抗値情報を取得することで複数の抵抗値情報を取得するステップＦ１と、複数の抵抗値情報を用いて第２乱数データを生成するステップＦ２と、第２乱数データを、各メモリセルの抵抗値が初期抵抗値範囲にあるか否かの違いを利用して記録するステップＦ３と、を含んでもよい。
【００５８】
かかる構成では、第２乱数データがより高い信頼性で記録されうる。
【００５９】
本開示の一態様にかかる乱数処理装置は、異なる複数の電気的信号が印加されることによって、抵抗値が複数の可変抵抗値範囲の間を可逆的に遷移する性質を有するメモリセルと、抵抗値が１つの可変抵抗値範囲内にあるメモリセルから複数の異なる時刻のそれぞれにおいて抵抗値情報を取得することで複数の抵抗値情報を取得し、複数の抵抗値情報を用いて乱数データを生成する制御装置と、を備える。メモリセルは、時間経過に伴って抵抗値がランダムに変動する少なくとも１つの可変抵抗値範囲を有する。抵抗値情報が取得されるメモリセルの抵抗値は、時間経過に伴って抵抗値がランダムに変動する可変抵抗値範囲内にある。
【００６０】
かかる構成により、より安全な暗号技術等に応用可能な、従来にない乱数処理装置が提供されうる。
【００６１】
上記乱数処理装置において、メモリセルはメモリセルアレイに含まれる第１メモリセルであり、複数の抵抗値情報は第１の複数の抵抗値情報であってもよい。この場合、乱数処理装置は、第１メモリセルと、前記第１メモリセルとは異なる第２メモリセルとを含むメモリセルアレイを備えてもよい。加えて、制御装置は、１つの可変抵抗値範囲内にある第２メモリセルから、複数の異なる時刻のそれぞれにおいて抵抗値情報を取得することで、第２の複数の抵抗値情報を取得し、第１の複数の抵抗値情報と第２の複数の抵抗値情報とを用いて乱数データを生成してもよい。ここで、第２メモリセルは、時間経過に伴って抵抗値がランダムに変動する少なくとも１つの可変抵抗値範囲を有してもよい。抵抗値情報が取得される第２メモリセルの抵抗値は、時間経過に伴って抵抗値がランダムに変動する可変抵抗値範囲内にあってもよい。かかる構成では、より高速に乱数が生成されうる。
【００６２】
言い換えると、上記乱数処理装置は、メモリセルを複数備えるメモリセルアレイを備え、制御装置は、複数の異なる時刻のそれぞれにおいて、メモリセルアレイを構成する複数のメモリセルのそれぞれから抵抗値情報を取得することで、複数の抵抗値情報を取得し、複数の抵抗値情報を用いて乱数データを生成してもよい。かかる構成では、より高速に乱数が生成されうる。
【００６３】
上記乱数処理装置において、制御装置は、２つの異なる時刻のそれぞれにおいてメモリセルから取得された２つの抵抗値情報の差分を求める、差分取得器と、差分が第１範囲に該当するか否かを判定する、第１判定器と、第１判定器の判定結果に基づいて乱数データを生成する、第１生成器と、を備えてもよい。
【００６４】
上記乱数処理装置において、制御装置は、２つの異なる時刻のそれぞれにおいてメモリセルから取得された２つの抵抗値情報の大小関係を判定する、第２判定器と、第２判定器の判定結果に基づいて乱数データを生成する、第２生成器と、を備えてもよい。
【００６５】
上記乱数処理装置において、制御装置は、複数の抵抗値情報を用いてディジタルデータを生成する第３生成器と、ディジタルデータを用いて所定のアルゴリズムを実行することによって乱数データを生成する第４生成器と、を備えてもよい。
【００６６】
上記乱数処理装置において、第４生成器は、ディジタルデータを入力値および初期値の少なくともいずれか一方として、生成多項式を演算することによって乱数データを生成してもよい。
【００６７】
上記乱数処理装置において、ディジタルデータは長さｎの固定長のデータであり、
第４生成器は、次の規則（Ａ）および（Ｂ）および（Ｃ）に従って接続されたｎ段のシフトレジスタを備えてもよい。
【００６８】
（Ａ）ｘを２以上ｎ以下の整数として、シフトレジスタのｘ番目のレジスタにはｘ−１番目のレジスタの出力が入力されるか、ｘ−１番目のレジスタの出力とｎ番目のレジスタの出力との排他的論理和が入力される。
【００６９】
（Ｂ）シフトレジスタの１番目のレジスタには、ｎ番目のレジスタの出力が入力されるか、ディジタルデータのいずれかのビットとｎ番目のレジスタの出力との排他的論理和が入力される。
【００７０】
（Ｃ）シフトレジスタの１番目のレジスタにｎ番目のレジスタの出力が入力される場合には、シフトレジスタの２番目以降のレジスタのいずれか少なくとも一つには、ｘ−１番目のレジスタの出力とｎ番目のレジスタの出力との排他的論理和が入力される。
【００７１】
上記乱数処理装置において、制御装置は、複数の抵抗値情報を用いて長さｍの固定長のデータである第１のディジタルデータを生成する第５生成器と、第１のディジタルデータに含まれるビットを互いに異なる組合せで反転させることで複数の新たなディジタルデータを生成する複数の反転器と、第１のディジタルデータおよび複数の新たなディジタルデータのうち、出現頻度の最も低いものを選択して第２のディジタルデータとする選択器と、最も出現頻度の低いディジタルデータを組み込んで乱数データを生成する第６生成器と、最も出現頻度の低いディジタルデータの出現頻度に１を加える加算器と、を備えてもよい。
【００７２】
上記乱数処理装置において、制御装置は、０より大きく１未満である係数を累積値に掛けて得られる値を新たな抵抗値情報として出力する出力器と、抵抗値情報から新たな抵抗値情報を差し引いた値に累積値を加えた値を新たな累積値として記憶する累積器と、複数の新たな抵抗値情報を用いて乱数データを生成する第７生成器と、を備えてもよい。
【００７３】
上記乱数処理装置において、可変状態のメモリセルは、第１電気的信号を印加することによって抵抗値が第２抵抗値範囲から第２抵抗値範囲よりも大きい第１抵抗値範囲へと遷移し、第２電気的信号を印加することによって抵抗値が第１抵抗値範囲から第２抵抗値範囲へと遷移する性質を有し、かつ、抵抗値が第１抵抗値範囲にある場合に時間経過に伴って抵抗値がランダムに変動する性質を有してもよい。加えて、制御装置は、抵抗値が第１抵抗値範囲にあるメモリセルから複数の異なる時刻のそれぞれにおいて抵抗値情報を取得することで複数の抵抗値情報を取得してもよい。
【００７４】
かかる構成では、抵抗値に対する抵抗値揺らぎの大きさが大きい第１抵抗値範囲のメモリセルが、乱数発生のために用いられる。これにより、抵抗値情報にランダムな変動が反映されやすくなり、より質の高い乱数データが得られうる。
【００７５】
上記乱数処理装置において、可変状態のメモリセルは、第１電気的信号を印加することによって抵抗値が第２抵抗値範囲から第２抵抗値範囲よりも大きい第１抵抗値範囲へと遷移し、第２電気的信号を印加することによって抵抗値が第１抵抗値範囲から第２抵抗値範囲へと遷移する性質を有し、かつ、抵抗値が第２抵抗値範囲にある場合に時間経過に伴って抵抗値がランダムに変動する性質を有し、制御装置は、抵抗値が第２抵抗値範囲にあるメモリセルから複数の異なる時刻のそれぞれにおいて抵抗値情報を取得することで複数の抵抗値情報を取得してもよい。
【００７６】
かかる構成では、メモリセルから抵抗値情報を取得する際の読み出しエラーの発生が抑制されうる。
【００７７】
上記乱数処理装置において、可変状態のメモリセルは、第１電気的信号を印加することによって、抵抗値が第２抵抗値範囲から第２抵抗値範囲よりも大きい第１抵抗値範囲へと遷移し、第２電気的信号を印加することによって抵抗値が第１抵抗値範囲から第２抵抗値範囲へと遷移する性質を有してもよい。ここで、第１抵抗値範囲は、例えば、読み出し時に高抵抗状態と判定される抵抗値範囲である。第２抵抗値範囲は、例えば、読み出し時に低抵抗状態と判定される抵抗値範囲である。制御装置は、可変状態のメモリセルを高抵抗状態に設定する際には、当該メモリセルの抵抗値を第１抵抗値範囲内に含まれる第１基準値以上とし、可変状態のメモリセルを低抵抗状態に設定する際には、当該メモリセルの抵抗値を第２抵抗値範囲内に含まれる第２基準値未満としてもよい。言い換えると、制御装置は、可変状態のメモリセルの抵抗値を第１抵抗値範囲内に設定する際には、当該メモリセルの抵抗値を第１抵抗値範囲内に含まれる第１基準値以上に設定し、可変状態のメモリセルの抵抗値を第２抵抗値範囲内に設定する際には、メモリセルの抵抗値を第２抵抗値範囲内に含まれる第２基準値未満に設定してもよい。ここで、制御装置は、抵抗値が第１基準値と第２基準値との間に設定される第３抵抗値範囲にあるメモリセルから複数の異なる時刻のそれぞれにおいて抵抗値情報を取得することで複数の抵抗値情報を取得してもよい。
【００７８】
かかる構成では、抵抗値が第１抵抗値範囲と第２抵抗値範囲との間にあるメモリセルが乱数生成のために用いられる。これにより、より質の高い乱数データが生成されうる。
【００７９】
上記乱数処理装置において、前記制御装置は、第１の複数のメモリセルのそれぞれの抵抗値を前記複数の可変抵抗値範囲のいずれかに設定することによって、前記乱数データを前記第１の複数のメモリセルに記録してもよい。第１の複数のメモリセルのそれぞれは、異なる複数の電気的信号が印加されることによって、抵抗値が複数の可変抵抗値範囲の間を可逆的に遷移する、可変状態と、可変状態に変化させるような電気的ストレスであるフォーミングストレスが印加されない限り可変状態とならず、かつ、抵抗値が可変抵抗値範囲のいずれとも重複しない初期抵抗値範囲にある、初期状態と、を取りうるものであってもよい。
【００８０】
メモリセルアレイは、抵抗値情報が取得されるメモリセルと、第１の複数のメモリセルとを含んでもよい。かかる構成では、乱数処理のためのメモリセルと、乱数データを記憶するためのメモリセルとが、同一のメモリセルアレイ上に形成されうる。よって、装置が小型化され、消費電力が低減されうる。
【００８１】
上記乱数処理装置において、制御装置は、乱数データを第１の複数のメモリセルに記録してもよい。第１の複数のメモリセルのそれぞれは、異なる複数の電気的信号が印加されることによって、抵抗値が複数の可変抵抗値範囲の間を可逆的に遷移する、可変状態と、可変状態に変化させるような電気的ストレスであるフォーミングストレスが印加されない限り可変状態とならず、かつ、抵抗値が可変抵抗値範囲のいずれとも重複しない初期抵抗値範囲にある、初期状態と、を取りうる性質を有してもよい。制御装置は、乱数データを、各メモリセルの抵抗値が初期抵抗値範囲にあるか否かの違いを利用して記録してもよい。
【００８２】
かかる構成では、乱数データがより高い信頼性で記録されうる。
【００８３】
上記乱数処理装置において、前記制御装置は、上記乱数データを第１乱数データとして第１の複数のメモリセルに記録し、第２の乱数データを第２の複数のメモリセルに記録してもよい。第１および第２の複数のメモリセルのそれぞれは、異なる複数の電気的信号が印加されることによって、抵抗値が複数の可変抵抗値範囲の間を可逆的に遷移する、可変状態と、可変状態に変化させるような電気的ストレスであるフォーミングストレスが印加されない限り可変状態とならず、かつ、抵抗値が可変抵抗値範囲のいずれとも重複しない初期抵抗値範囲にある、初期状態と、を取りうる性質を有していてもよい。制御装置は、第１の複数のメモリセルの各抵抗値が少なくとも一つの可変抵抗値範囲にあるか否かの違いを利用して、第１乱数データを記録してもよい。制御装置は、第２の複数のメモリセルのそれぞれが初期状態にあるか可変状態にあるかの違いを利用して、第２乱数データを記録してもよい。
【００８４】
メモリセルアレイは、乱数生成用に抵抗値情報が取得されるメモリセルと、第１の複数のメモリセルと、第２の複数のメモリセルとを含んでいてもよい。かかる構成では、第１乱数データを生成するためのメモリセルと、第１乱数データを記録するためのメモリセルと、第２乱数データを記録するためのメモリセルとが、同一のメモリセルアレイ上に形成されうる。よって、装置が小型化され、消費電力が低減されうる。
【００８５】
上記乱数処理装置において、制御装置は、メモリセルアレイにおいて、初期状態にあるメモリセルにフォーミングストレスを印加することにより、第２乱数データを生成して記録してもよい。
【００８６】
かかる構成では、複数の異なるメカニズムにより生成される乱数が組み合わされることで、より信頼性の高い暗号処理システムが実現されうる。
【００８７】
上記乱数処理装置において、制御装置は、抵抗値が１つの可変抵抗値範囲にあるメモリセルから複数の異なる時刻のそれぞれにおいて抵抗値情報を取得することで複数の抵抗値情報を取得し、複数の抵抗値情報を用いて第２乱数データを生成すると共に、第２乱数データを、各メモリセルの抵抗値が初期抵抗値範囲にあるか否かの違いを利用して記録してもよい。
【００８８】
かかる構成では、第２乱数データがより高い信頼性で記録されうる。
【００８９】
（実施形態）
［装置構成］
図１は、実施形態にかかる乱数処理装置の概略構成の一例を示すブロック図である。図２は、実施形態にかかるメモリセルの概略構成の一例を示す断面図である。
【００９０】
図１に示す例において、本実施形態の乱数処理装置１００は、メモリセルアレイ９０と、制御装置９３とを備えている。なお、制御装置は必ずしも乱数処理装置の一部である必要はない。乱数処理装置外に接続された制御装置が、以下に説明される動作を実行してもよい。
【００９１】
メモリセルアレイ９０は、複数のメモリセル９１がアレイ状に配置された構成を有する。なお、本実施形態の乱数処理装置は、複数のメモリセルを備えなくてもよく、例えば、単一のメモリセルのみを備えてもよい。
【００９２】
制御装置９３は、抵抗値が１つの可変抵抗値範囲内にあるメモリセル９１から、複数の異なる時刻のそれぞれにおいて抵抗値情報を取得する。これにより、複数の抵抗値情報が取得される。制御装置９３は、該複数の抵抗値情報を用いて乱数データを生成する。
【００９３】
制御装置９３は、複数の異なる時刻のそれぞれにおいて、メモリセルアレイ９０を構成する複数のメモリセル９１のそれぞれから抵抗値情報を取得してもよい。これにより、複数の異なる時刻のそれぞれにおいて複数の抵抗値情報が取得される。制御装置９３は、該複数の抵抗値情報を用いて乱数データを生成してもよい。
【００９４】
抵抗値情報とは、抵抗値と相関関係を有する情報である。抵抗値情報は、抵抗値そのものであってもよいし、抵抗値に応じて増減する値であってもよい。抵抗値に応じて増減する値は、例えば、メモリセルに直列または並列に接続されたキャパシタの放電時間、および／または、該放電時間に対応するカウント値等であってもよい。このとき、キャパシタは素子であることには限定されず、例えば配線などの寄生容量でもよい。
【００９５】
抵抗値情報は、所定の分解能のセンスアンプによって測定された値であってもよい。あるいは、抵抗値情報は、センスアンプによって測定された値が、閾値によって区分けされた複数の抵抗値範囲のいずれに該当するかを判定することによって得られた値であってもよい。その場合、複数の抵抗値範囲のそれぞれは、初期抵抗値範囲および可変抵抗値範囲のいずれかが、さらに細かく区分けされたものであってもよい。
【００９６】
抵抗値情報を用いて乱数データを生成できることは、抵抗値がランダムに変動することに起因する。そのメカニズムおよび乱数データ生成の具体的な方法については後述する。
【００９７】
制御装置９３は、選択されたメモリセル９１が初期状態にあるか可変状態にあるかを判定することによって記録されたデータを、読み出すことができるように構成されていてもよい。
【００９８】
図２に示す例において、メモリセル９１が備える抵抗変化素子１２０が、下地層１２２と、第１電極１２４と、抵抗変化層１２６と、第２電極１２８とを備えている。それぞれの抵抗変化素子１２０には、特定のメモリセルを選択するためのトランジスタやダイオードなどの選択素子（図示せず）が接続されてもよい。
【００９９】
可変状態のメモリセル９１は、異なる複数の電気的信号が印加されることによって、抵抗値が複数の可変抵抗値範囲の間を可逆的に遷移する性質を有する。
【０１００】
図３は、メモリセル９１の抵抗値範囲の一例を示すグラフである。図３に例示されるように、メモリセル９１は、少なくとも可変状態と初期状態の２つの状態を備えてもよい。
【０１０１】
可変状態とは、異なる複数の電気的信号が印加されることによって、抵抗値が複数の可変抵抗範囲の間を可逆的に遷移できる状態をいう。
【０１０２】
初期状態とは、抵抗値が可変抵抗値範囲のいずれとも重複しない初期抵抗値範囲にある状態をいう。初期状態にあるメモリセルは、可変状態に変化させるような電気的ストレスであるフォーミングストレスが印加されない限り可変状態とならない。例えば、フォーミングストレスは累積的なストレスであってもよい。その場合、ストレスの累積量が所定量を超えたときに、初期状態から可変状態に遷移する。メモリセル９１は、初期状態を取りうる素子でなくてもよい。メモリセル９１は、例えば、可変状態のみを有する、いわゆるフォーミングレスの素子であってもよい。
【０１０３】
メモリセルアレイ９０が備える複数のメモリセル９１は、可変状態のメモリセルと、初期状態のメモリセルと、を含んでもよい。メモリセルアレイ９０には、各メモリセル９１が初期状態にあるか可変状態にあるかの違いを利用して、データが記録されていてもよい。
【０１０４】
メモリセルアレイ９０には、例えば、後述する第１種データおよび第２種データの少なくとも一方が記録されうる。メモリセルアレイ９０は、第１種データが記録されたメモリセル９１と第２種データが記録されたメモリセル９１との両方を含んでいてもよい。
【０１０５】
メモリセル９１は、製造された後、かつ、フォーミングがされる前において、抵抗値が複数の可変抵抗値範囲の間を可逆的に遷移する状態でなくてもよい。フォーミングとは、所定の電気的ストレスをメモリセルに印加して、メモリセルの抵抗値が複数の可変抵抗値範囲の間を可逆的に遷移する状態へと、メモリセルを変化させることをいう。フォーミングのために印加される電気的ストレスは、例えば、所定の電圧と時間幅を有する電気的パルスであってもよく、複数の電気的パルスが組み合わされたものであってもよい。
【０１０６】
初期抵抗値範囲は、製造直後のメモリセル９１の抵抗値を含み、かつ、可変状態に変化した後のメモリセル９１の抵抗値を含まないように設定されうる。可変抵抗値範囲は、初期抵抗値範囲を含まず、かつ、可変状態に変化した後のメモリセル９１の抵抗値を含むように設定されうる。抵抗変化素子の不揮発性記憶素子を備えるメモリセルは、典型的に、上記の特性を備え得る。公知の様々な材料を用いて、かかる特性を備えるメモリセル９１が製造されうる。
【０１０７】
初期状態のメモリセル９１は、フォーミングストレスではない何らかの電気的ストレスを受けた状態を含む。言い換えると、初期状態のメモリセル９１は、可変状態に変化させるための電気的ストレスを除く、種々の電気的ストレスを受けた状態を含む。初期状態のメモリセル９１は、製造直後のメモリセル９１がフォーミングストレスではない何らかの電気的ストレスを受けて変化した状態を含みうる。その場合、そのメモリセル９１の抵抗値は、初期抵抗値範囲内に含まれうる。
【０１０８】
制御装置９３は、選択されたメモリセル９１が初期状態にあるか可変状態にあるかを判定することによって、記録されたデータを読み出してもよい。
【０１０９】
図３に示した例において、第１電極１２４はＴａＮ（窒化タンタル）、第２電極１２８はＩｒ（イリジウム）、抵抗変化層１２６はタンタル酸化物から構成される。抵抗変化層１２６の厚さは例えば５０ｎｍ以下である。抵抗変化層１２６は、酸素濃度の異なる２層の積層構造を有する。抵抗変化層１２６のうち、第１電極１２４に接する層は、酸素濃度が相対的に低い層である。この層の組成をＴａＯｘとすると、ｘは０＜ｘ＜２．５を満たす。抵抗変化層１２６のうち、第２電極１２８に接する層は、酸素濃度が相対的に高い層である。この層の組成をＴａＯｙとすると、ｙはｙ≧２．１を満たし、その厚さは例えば５．５ｎｍ程度である。第１電極１２４と抵抗変化層１２６との接触面および第２電極１２８と抵抗変化層１２６との接触面の面積は、例えば０．２５μｍ２以下である。フォーミングストレスとして、メモリセル９１にパルス電圧が繰り返し印加される。パルス電圧は、例えば、電圧＋３．５Ｖ、パルス幅５μＳｅｃを有する。
【０１１０】
図３に示される例において、メモリセルは、第１抵抗値範囲と第２抵抗値範囲との２つの可変抵抗値範囲をとり得る。ここでは、簡便のため、メモリセル９１の抵抗値が第１抵抗値範囲内にある状態は、高抵抗状態と呼ばれ、抵抗値が第２抵抗値範囲内にある状態は、低抵抗状態と呼ばれる。加えて、メモリセルの抵抗値を第１抵抗値範囲から第２抵抗値範囲へと変化させるためのパルスは、低抵抗化パルスと呼ばれ、メモリセルの抵抗値を第２抵抗値範囲から第１抵抗値範囲へと変化させるためのパルスは、高抵抗化パルスと呼ばれる場合がある。低抵抗化パルスは、第２電気的信号の一例である。高抵抗化パルスは、第１電気的信号の一例である。低抵抗化パルスは、例えば、電圧が−２．４Ｖ、パルス幅が５０ｎＳｅｃである。高抵抗化パルスは、例えば、電圧が＋１．８Ｖ、パルス幅が５０ｎＳｅｃである。なお、図２のメモリセル構造において、電圧は第１電極１２４を基準として第２電極１２８に正の電圧を印加する場合を正極性とする。
【０１１１】
その他の例として、第１電極１２４及び第２電極１２８は白金（Ｐｔ）、抵抗変化層１２６はハフニウム酸化物から構成されてもよい。抵抗変化層１２６の厚さは例えば３０ｎｍである。メモリセル９１の素子領域の形状は、直径３μｍの円形であってもよい。例えば、抵抗変化層１２６がＨｆＯ１．６から構成される場合、初期抵抗値は数ＭΩ程度であり、第１抵抗値範囲が１０００Ω以上〜３０００Ω以下、第２抵抗値範囲が１００以上３００Ω以下となる。この場合、フォーミングストレスを構成する複数の電圧パルスのそれぞれは、例えば、電圧２〜３Ｖ、パルス幅１００ｎＳｅｃを有する。低抵抗化パルスは、例えば、電圧が＋１．０Ｖ、パルス幅が１００ｎＳｅｃであり、高抵抗化パルスは、例えば、電圧が−１．３Ｖ、パルス幅が１００ｎＳｅｃである。
【０１１２】
図３に示される例では、初期抵抗値範囲の下限が、全ての可変抵抗値範囲の上限以上である。言い換えると、初期抵抗値範囲の下限は、複数の可変抵抗値範囲のうち抵抗値が最も大きいものの上限以上である。例えば、初期抵抗値範囲の下限は、２個の可変抵抗値範囲のうち抵抗値が最も大きい第１抵抗値範囲の上限に等しくてもよい。
【０１１３】
図３に示される例では、第１閾値は、初期抵抗値範囲の下限以下であり、かつ、全ての可変抵抗値範囲の上限以上である。言い換えると、第１閾値は、初期抵抗値範囲の下限以下であり、複数の可変抵抗値範囲のうち抵抗値が最も大きいものの上限以上である。例えば、第１閾値は、２個の可変抵抗値範囲のうち抵抗値が最も大きい第１抵抗値範囲の上限に等しくてもよい。第１閾値は、初期抵抗範囲の下限に等しくてもよい。なお、第１閾値と等しい値を有する抵抗値は、初期抵抗値範囲に属するものとして設定されてもよいし、複数の可変抵抗値範囲のうち抵抗値が最も大きいものに属するものとして設定されてもよい。
【０１１４】
図３に示される例では、第２閾値は、複数の可変抵抗値範囲のうち抵抗値が最も大きいものの下限以下であり、かつ複数の可変抵抗値範囲のうち抵抗値が最も小さいものの上限以上である。例えば、第２閾値は、２個の可変抵抗値範囲のうち抵抗値が最も大きい第１抵抗値範囲の下限以下であり、かつ２個の可変抵抗値範囲のうち抵抗値が最も小さい第２抵抗値範囲の上限以上である。例えば、第２閾値は、第１抵抗値範囲の下限または第２抵抗値範囲の上限に等しくてもよい。第１抵抗低範囲と第２抵抗値範囲とが隣接していてもよい。すなわち、第１抵抗値範囲を規定する２つの端点のうち小さい方の値と、第２抵抗値範囲を規定する２つの端点のうち大きい方の値とが一致していてもよい。なお、第２閾値と等しい値を有する抵抗値は、複数の可変抵抗値範囲のうち、第２閾値よりも大きな抵抗値を含む抵抗値範囲に属するものとして設定されてもよいし、第２閾値よりも小さな抵抗値を含む抵抗値範囲に属するものとして設定されてもよい。
【０１１５】
メモリセル９１の構成によっては、製造直後のメモリセル９１の抵抗値が、いずれの可変抵抗値範囲よりも小さい場合がある。すなわち、初期抵抗値範囲がいずれの可変抵抗値範囲よりも小さい場合がある。例えば、メモリセル９１内の抵抗変化層が鉄酸化物から構成される場合に、かかる特性が実現される。
【０１１６】
種々の鉄酸化物の抵抗率は、Ｆｅ３Ｏ４、ＦｅＯ、Ｆｅ２Ｏ３の順に高い。例えば、第１電極１２４はＰｔ（白金）、第２電極１２８はＰｔ（白金）、抵抗変化層１２６はＦｅ３Ｏ４から構成されうる。このとき、抵抗変化層１２６全体の厚さは、例えば５０ｎｍ以下としうる。
【０１１７】
例えば、第１電極１２４と抵抗変化層１２６との接触面が０．２５μｍ２以下であり、第２電極１２８と抵抗変化層１２６との接触面の面積が０．２５μｍ２以下であるとき、初期抵抗値は概ね２００Ωとなり、これは非常に低い抵抗値である。この初期状態のメモリセルに、例えば、第１電気的信号と同じ極性を有し、電圧の絶対値が３．５Ｖ、パルス幅が１０μＳｅｃのパルスを所定の回数を印加する。これにより、メモリセルの抵抗値は、初期抵抗値よりも抵抗値の大きい状態、例えば２０００Ω以上８０００Ω以下の高抵抗状態に推移する。これは、第２電極１２８と抵抗変化層１２６の接触界面の酸化が進行し、絶縁状態にあるＦｅ２Ｏ３の抵抗層が形成されたためと考えられる。
【０１１８】
可変状態のメモリセルの抵抗値は、電圧の絶対値が２．４Ｖである第２電気的信号の印加により、３００Ω以上５００Ω以下の第２抵抗値範囲へ遷移しうる。また、可変状態のメモリセルの抵抗値は、第２電気的信号と極性の異なる電圧の絶対値が２．４Ｖの第１電気的信号の印加により、メモリセルの抵抗値は、２０００Ω以上８０００Ω以下の第１抵抗値範囲へ遷移しうる。
【０１１９】
その他の例として、第１電極１２４及び第２電極１２８は白金（Ｐｔ）、抵抗変化層１２６はハフニウム酸化物から構成されてもよい。抵抗変化層１２６の厚さは例えば３０ｎｍである。メモリセル９１の素子領域の形状は、直径を３μｍの円形であってもよい。例えば、抵抗変化層１２６がＨｆＯ０．９から構成され、その初期抵抗値が抵抗変化しない場合、当該メモリセルは、電圧パルスがフォーミングストレスとして与えられて、可変状態になりうる。このとき、電圧パルスは、例えば、電圧４Ｖ、パルス幅１００μＳｅｃである。可変状態のメモリセルの抵抗値は、電圧が−１．３Ｖ、パルス幅が１００ｎＳｅｃである低抵抗化パルスの印加により、３０Ω以上９０Ω以下の第２抵抗値範囲へ遷移しうる。また、可変状態のメモリセルの抵抗値は、電圧が＋２．０Ｖ、パルス幅が１００ｎＳｅｃである高抵抗化パルスの印加により、１００Ω以上３００Ω以下の第１抵抗値範囲へ遷移しうる。
【０１２０】
かかる構成では、初期抵抗値範囲の上限が、全ての可変抵抗値範囲の下限以下であってもよい。言い換えると、初期抵抗値範囲の上限が、複数の可変抵抗値範囲のうち抵抗値が最も小さいものの下限以下であってもよい。例えば、初期抵抗値範囲の上限は、２個の可変抵抗値範囲のうち抵抗値が最も小さい第２抵抗値範囲の下限に等しくてもよい。
【０１２１】
第１閾値は、初期抵抗値範囲の上限以上であり、かつ、全ての可変抵抗値範囲の下限以下であってもよい。言い換えると、第１閾値は、初期抵抗値範囲の上限以上であり、複数の可変抵抗値範囲のうち抵抗値が最も小さいものの下限以下であってもよい。例えば、第１閾値は、２個の可変抵抗値範囲のうち抵抗値が最も小さい第２抵抗値範囲の下限に等しくてもよい。第１閾値は、初期抵抗値範囲の上限に等しくてもよい。
【０１２２】
第２閾値は、複数の可変抵抗値範囲のうち抵抗値が最も小さいものの上限以上であり、かつ複数の可変抵抗値範囲のうち抵抗値が最も大きいものの下限以下であってもよい。例えば、第２閾値は、２個の可変抵抗値のうち抵抗値が最も小さい第２抵抗値範囲の上限以上であり、かつ２個の可変抵抗値のうち抵抗値が最も大きい第１抵抗値範囲の下限以下であってもよい。例えば、第２閾値は、第１抵抗値範囲の下限または第２抵抗値範囲の上限に等しくてもよい。
【０１２３】
なお、隣り合う抵抗値範囲は必ずしも上限と下限とが隣接している必要はない。隣り合う抵抗値範囲同士の間に所定のマージンが設定されていてもよい。
【０１２４】
制御装置９３は、選択されたメモリセル９１の抵抗値が第１閾値よりも大きいか否かを判定する第１読み出しモードと、選択されたメモリセル９１の抵抗値が第２閾値よりも大きいか否かを判定する第２読み出しモードとを選択的に実行してもよい。これにより、記録されたデータが読み出される。
【０１２５】
第１閾値および第２閾値は、固定の値ではなく、任意に可変できてもよい。
【０１２６】
記録されたデータは、第１種データと第２種データとを含んでもよい。第１種データは、例えば、各メモリセル９１の抵抗値が初期抵抗値範囲にあるか否かの違いを利用して記録されている。第２種データは、例えば、各メモリセル９１の抵抗値が初期抵抗値範囲にあるか否かの違いを利用せずに、各メモリセル９１の抵抗値が少なくとも一つの可変抵抗値範囲にあるか否かの違いを利用して記録されている。
【０１２７】
メモリセルアレイ９０が、第１書き込みアドレス領域と、第２書き込みアドレス領域とを備えてもよい。この場合において、第１書き込みアドレス領域に第１種データが記録されており、第２書き込みアドレス領域に第２種データが記録されていてもよい。第１書き込みアドレス領域と、第２書き込みアドレス領域とは、必ずしも物理的な領域として分離されていなくてもよい。例えば、各メモリセル９１が、アドレスに関する所定の規則に応じて、第１書き込みアドレス領域と第２書き込みアドレス領域とに振り分けられていてもよい。
【０１２８】
第２書き込みアドレス領域は、例えば複数の可変状態のメモリセルから構成される領域である。例えば、初期状態の複数のメモリセルにフォーミングストレスが印加されることによって、第２書き込みアドレス領域が形成されてもよい。初期状態の複数のメモリセルは、例えば、製造直後のメモリセルアレイ９０の所定の領域に含まれる。この場合、フォーミングストレスは、第１種データを記録するためだけでなく、第２種データが書き込まれる第２書き込みアドレス領域を形成するために用いられうる。
【０１２９】
メモリセルアレイ９０を構成する複数のメモリセルに選択的にフォーミングストレスが印加されることによって、第１書き込みアドレス領域と第２書き込みアドレス領域とが設定されうる。そのため、それらのアドレス領域の容量配分や配置は自由に選択されうる。第１書き込みアドレス領域の一部領域に対してフォーミングストレスが印加されると、当該一部領域が第２書き込みアドレス領域へと変更されうる。
【０１３０】
第１書き込みアドレス領域と、第２書き込みアドレス領域とは、例えば、同一のメモリセルアレイ９０内に配置される。これにより、例えば第１書き込みアドレス領域と第２書き込みアドレス領域との間で情報が送受信される場合に、情報の秘匿性が向上しうる。
【０１３１】
図３に示される例では、第１種データは各メモリセル９１の抵抗値が初期抵抗値範囲にあるか否かの違いを利用して記録されている。図３に示される例では、第２種データは、各メモリセル９１の抵抗値が第２抵抗値範囲にあるか否かの違いを利用して記録されている。
【０１３２】
図３に示される例では可変抵抗値範囲の数は２であるが、可変抵抗値範囲の数は３以上であってもよい。すなわち、メモリセル９１は多値メモリであってもよい。
【０１３３】
なお、図３に示される抵抗変化素子において、例えば、初期抵抗値範囲は２×１０６Ω以上１．０×１０７Ω未満に、２つの可変抵抗値範囲は５×１０４Ω以上２×１０６Ω未満、及び５×１０３Ω以上５×１０４Ω未満に設定されうる。このとき、例えば、第１閾値は２×１０６Ωであり、第２閾値は５×１０４Ωである。
【０１３４】
［抵抗変化素子の構成］
図２に示される例において、第１電極１２４と第２電極１２８との間に抵抗変化層１２６が介在する。抵抗変化層１２６は、例えば金属酸化物、より詳細には例えば遷移金属酸化物で構成されうる。可変状態にあるメモリセル９１の抵抗変化素子１２０の抵抗値は、第１電極１２４と第２電極１２８との間に印加される電気的信号によって、複数の可変抵抗値範囲の間を可逆的に遷移する。
【０１３５】
初期状態にあるメモリセル９１の抵抗変化素子１２０の抵抗変化層１２６は、第１電極１２４と第２電極１２８との間を絶縁していてもよい。絶縁とは、例えば、第１電極１２４と第２電極１２８との間の抵抗値が２MΩ以上である状態である。抵抗変化素子１２０の抵抗変化層１２６は、絶縁体から構成された層を備えていてもよい。絶縁体とは、例えば、抵抗率が３０Ω・ｍ以上の材料である。抵抗変化素子１２０の抵抗変化層１２６の少なくとも一部が絶縁体から構成されることにより、初期状態のメモリセルの抵抗特性が安定して維持されうる。
【０１３６】
初期状態とは、抵抗変化素子を半導体プロセス等により製造した後であって、フォーミングストレスによって抵抗変化素子が可変状態となる前の状態であってもよい。
【０１３７】
抵抗変化素子の初期状態における抵抗値は、可変状態における抵抗値と異なり、抵抗変化素子の材料、大きさ、形状、及び製造条件等によって、ある程度調整されうる。特に、抵抗変化層１２６が積層構造である場合、酸素濃度の高い層の厚み、形成時の酸素濃度によって、その抵抗値が任意に調整されうる。
【０１３８】
上記のような初期状態は、電気的信号の印加によって抵抗値が遷移する可変状態に比べて、安定している。そのため、初期状態と可変状態との差異を利用することにより、データが安定して保持されうる。
【０１３９】
初期抵抗値範囲は、例えば、初期状態にある素子に読み出し電圧を印加することによって得られる抵抗値を含む。読み出し電圧は、例えば、可変状態にある素子の抵抗値を複数の可変抵抗値範囲の間で変化させる電気的信号、および、フォーミングストレスのいずれよりも小さい。
【０１４０】
電気的ストレスがフォーミングストレスであるか否かは、対象となるメモリセル９１が初期状態から可変状態へと変化するか否かによって決まる。対象となるメモリセル９１が初期状態から可変状態へと変化するための条件は、メモリセル９１毎にばらつく。すなわち、電気的ストレスがフォーミングストレスであるために必要な電気的ストレスの種々のパラメータは、絶対的な固定値ではなく、メモリセル９１毎に所定のバラツキを有しうる。種々のパラメータとは、例えば、メモリセル９１に印加される電圧振幅の大きさ、パルスの幅、および累積印加時間である。累積印加時間とは、例えば、抵抗状態が初期状態から可変状態に変化するまでに印加される複数の電気的パルスにおけるパルス幅の合計に相当する。
【０１４１】
フォーミングストレスは、典型的には、可変状態にあるメモリセルの抵抗値を複数の可変抵抗値範囲の間で可逆的に変化させるために印加される電気的信号よりも強い。例えば、フォーミングストレスは、電圧の絶対値、パルス幅、および累積印加時間の少なくともいずれかにおいて、可変状態にあるメモリセルの抵抗値を変化させるために印加される電気的信号よりも大きくてもよい。
【０１４２】
可変状態において、電圧およびパルス幅等は異なるが同極性の電気的信号を印加することにより抵抗値が変化する抵抗変化素子は、ユニポーラ型抵抗変化素子とよばれる。ユニポーラ型抵抗変化素子は、例えば、電圧が＋２Ｖでパルス幅が１μＳｅｃの電気的信号が印加されると高抵抗状態に変化し、電圧が＋４Ｖでパルス幅が５０ｎＳｅｃの電気的信号が印加されると低抵抗状態に変化する。ここで、電気的信号の電圧の極性は、第２電極１２８から第１電極１２４に電流が流れる向きを正とした。
【０１４３】
一方、可変状態において、異なる極性の電気的信号を印加することで抵抗値が変化する抵抗変化素子は、バイポーラ型抵抗変化素子とよばれる。バイポーラ型抵抗変化素子は、例えば、電圧が＋２Ｖでパルス幅が５０ｎＳｅｃの電気的信号が印加されると高抵抗状態に変化し、電圧が−２Ｖでパルス幅が５０ｎＳｅｃの電気的信号が印加されると低抵抗状態に変化する。ここで、電気的信号の電圧の極性は、第２電極１２８から第１電極１２４に電流が流れる向きを正とした。
【０１４４】
バイポーラ型抵抗変化素子において、例えば動作を安定にするために、高抵抗化パルス及び低抵抗化パルスの極性のみならず、それらのパルス幅や電圧の絶対値が異なっていてもよい。
【０１４５】
抵抗変化層１２６は金属酸化物から構成されてもよい。抵抗変化層１２６は、酸素不足型の金属酸化物から構成された層を備えてもよい。抵抗変化層１２６を構成する金属酸化物は、遷移金属酸化物およびアルミニウム酸化物の少なくともいずれか一方であってもよい。遷移金属酸化物は、例えば、タンタル酸化物、鉄酸化物、ハフニウム酸化物およびジルコニウム酸化物の少なくともいずれかであってもよい。
【０１４６】
ユニポーラ型抵抗変化素子の抵抗変化層の材料の例として、チタン（Ｔｉ）酸化物、ニッケル（Ｎｉ）酸化物、アルミニウム（Ａｌ）酸化物等が挙げられる。バイポーラ型抵抗変化素子の抵抗変化層の材料の例として、タンタル（Ｔａ）酸化物、ハフニウム（Ｈｆ）酸化物、アルミニウム（Ａｌ）酸化物、鉄（Ｆｅ）酸化物等が挙げられる。
【０１４７】
同じ材料の酸化物が用いられる場合でも、電極材料との組合せおよび酸化物の積層構造等によって、ユニポーラ型抵抗変化素子およびバイポーラ型抵抗変化素子の両方が得られる場合もある。以下、抵抗変化層がタンタル酸化物から構成される例について詳細に説明する。抵抗変化層がタンタル酸化物を含む場合、抵抗変化素子が良好な特性を示しうる。
【０１４８】
第１電極１２４および第２電極１２８の材料の例として、イリジウム（Ｉｒ）、白金（Ｐｔ）、タングステン（Ｗ）、銅（Ｃｕ）、アルミニウム（Ａｌ）、窒化チタン（ＴｉＮ）、窒化タンタル（ＴａＮ）および窒化チタンアルミニウム（ＴｉＡｌＮ）等が挙げられる。図２に示される例では、第１電極１２４が第２電極１２８に比べ大面積となっているが、これに限定されるものでない。例えば、第１電極１２４は、配線の一部であってもよい。第１電極１２４および第２電極１２８は、半導体プロセスにあわせ適宜、最適な形状にされうる。下地層１２２は、半導体プロセスに応じて適宜に省略または変更されうる。
【０１４９】
抵抗変化層１２６は、第１電極１２４に接続する第１抵抗変化層と、第２電極１２８に接続する第２抵抗変化層を含む積層体であってもよい。
【０１５０】
第１抵抗変化層は、酸素不足型の第１金属酸化物で構成され、第２抵抗変化層は、第１金属酸化物よりも酸素不足度が小さい第２金属酸化物で構成されうる。第２抵抗変化層は、絶縁体から構成された層であってもよい。例えば、第２抵抗変化層中に、電気パルスの印加に応じて酸素不足度が可逆的に変化する微小な局所領域が形成されている。局所領域は、酸素欠陥サイトから構成されるフィラメントを含むと考えられる。局所領域は、第２抵抗変化層を貫く導電パスであってもよい。絶縁体が金属酸化物から構成され、導電パスは、絶縁体よりも酸素含有率が低い酸素不足型の金属酸化物から構成されていてもよい。
【０１５１】
「酸素不足度」とは、化学量論的組成の金属酸化物を構成している酸素の量に対する、対象となる金属酸化物を構成している酸素の不足量の割合をいう。なお、ある金属の酸化物として複数の化学量論的組成が存在する場合、その金属酸化物の酸素不足度は、その中で最も抵抗値が高い化学量論的組成を基準として定義されうる。化学量論的組成の金属酸化物は、他の組成の金属酸化物と比べて、より安定であり、かつ、より高い抵抗値を有している。
【０１５２】
例えば、金属がタンタル（Ｔａ）の場合、上述の定義による化学量論的組成の酸化物はＴａ２Ｏ５であり、ＴａＯ２．５と表現されうる。ＴａＯ２．５の酸素不足度は０％であり、ＴａＯ１．５の酸素不足度は、酸素不足度＝（２．５−１．５）／２．５＝４０％となる。また、酸素過剰の金属酸化物において、酸素不足度は負の値となる。なお、本開示では、特に断りのない限り、酸素不足度は正の値、０、負の値も含むものとして説明される。
【０１５３】
酸素不足度の小さい酸化物は、化学量論的組成の酸化物により近く、それゆえ抵抗値が高い。酸素不足度の大きい酸化物は、酸化物を構成する金属により近く、それゆえ抵抗値が低い。
【０１５４】
「酸素含有率」とは、総原子数に占める酸素原子の比率である。例えば、Ｔａ２Ｏ５の酸素含有率は、総原子数に占める酸素原子の比率（Ｏ／（Ｔａ＋Ｏ））であり、７１．４ａｔｍ％となる。したがって、酸素不足型のタンタル酸化物の酸素含有率は、０より大きく、７１．４ａｔｍ％より小さい。例えば、第１金属酸化物を構成する金属と、第２金属酸化物を構成する金属とが同種である場合、酸素含有率は酸素不足度と対応関係にある。すなわち、第２金属酸化物の酸素含有率が第１金属酸化物の酸素含有率よりも大きいとき、第２金属酸化物の酸素不足度は第１金属酸化物の酸素不足度より小さい。
【０１５５】
抵抗変化層を構成する金属酸化物が含有する金属元素は、タンタル以外の金属であってもよい。そのような金属元素は、例えば、遷移金属、およびアルミニウム（Ａｌ）の少なくともいずれかである。遷移金属の例としては、タンタル（Ｔａ）、チタン（Ｔｉ）、ハフニウム（Ｈｆ）、ジルコニウム（Ｚｒ）、ニオブ（Ｎｂ）、タングステン（Ｗ）、ニッケル（Ｎｉ）、および鉄（Ｆｅ）等が挙げられる。遷移金属は複数の酸化状態をとることができるため、酸化還元反応により異なる抵抗状態に変化しうる。
【０１５６】
例えば、抵抗変化層１２６は、ハフニウム酸化物から構成されてもよい。この場合、例えば、第１金属酸化物の組成がＨｆＯｘであって、ｘが０．９以上１．６以下であり、かつ、第２金属酸化物の組成がＨｆＯｙであって、ｙがｘの値よりも大であってもよい。これにより、抵抗変化層の抵抗値が安定して高速に変化しうる。例えば、第２金属酸化物の膜厚は、３ｎｍ以上４ｎｍ以下としてもよい。
【０１５７】
例えば、抵抗変化層１２６は、ジルコニウム酸化物から構成されてもよい。この場合、例えば、第１金属酸化物の組成がＺｒＯｘであって、ｘが０．９以上１．４以下であり、かつ、第２金属酸化物の組成をＺｒＯｙであって、ｙがｘの値よりも大であってもよい。これにより、抵抗変化層の抵抗値が安定して高速に変化しうる。例えば、第２金属酸化物の膜厚は、１ｎｍ以上５ｎｍ以下としてもよい。
【０１５８】
第１金属酸化物を構成する第１金属と、第２金属酸化物を構成する第２金属とは、異なる金属であってもよい。この場合、第２金属酸化物は、第１金属酸化物よりも酸素不足度が小さくてもよい。言い換えると、第２金属酸化物は、第１金属酸化物よりも抵抗値が高くてもよい。このような構成により、第１電極１２４と第２電極１２８との間に電圧が印加されたとき、第２金属酸化物に、より多くの電圧が分配され、第２金属酸化物中に酸化還元反応が発生しやすくなる。
【０１５９】
第１抵抗変化層を構成する第１金属酸化物内に含有される第１金属と、第２抵抗変化層を構成する第２金属酸化物内に含有される第２金属とは、互いに異なっていてもよい。この場合、第２金属の標準電極電位は、第１金属の標準電極電位より低くてもよい。標準電極電位は、酸化特性を表す。標準電極電位が高い金属ほど、酸化しにくい。そのため、標準電極電位が相対的に低い第２金属酸化物において、酸化還元反応が起こりやすくなる。
【０１６０】
例えば、第１金属酸化物は酸素不足型のタンタル酸化物（ＴａＯｘ）であり、第２金属酸化物はチタン酸化物（ＴｉＯ２）であってもよい。チタンの標準電極電位は、−１．６３ｅＶであり、タンタルの標準電極電位は−０．６ｅＶである。このように、第２金属酸化物の標準電極電位が、第１金属酸化物の標準電極電位よりも低い場合、第２金属酸化物中でより酸化還元反応が発生しやすくなる。そのため、安定した抵抗変化動作が得られる。第１金属酸化物と第２金属酸化物のその他の組み合わせの例として、第１金属酸化物は酸素不足型のタンタル酸化物（ＴａＯｘ）であり、第２金属酸化物はアルミニウム酸化物（Ａｌ２Ｏ３）であってもよい。
【０１６１】
積層構造の抵抗変化層における抵抗変化現象は、次のように発現すると考えられる。可変状態において、抵抗値の高い第２金属酸化物の層は、微小な局所領域を有する。この局所領域中で酸化還元反応が起こって、局所領域中のフィラメント（導電パス）が変化する。これにより、局所領域の抵抗値が変化する。
【０１６２】
例えば、第２金属酸化物に接続する第２電極１２８に、第１電極１２４を基準にして正の電圧が印加されたとき、抵抗変化層中の酸素イオンが第２金属酸化物側に引き寄せられる。これによって、第２金属酸化物中の微小な局所領域中で酸化反応が発生し、局所領域中の酸素不足度が減少する。その結果、局所領域中のフィラメントがつながりにくくなり、抵抗値が増大すると考えられる。
【０１６３】
逆に、第２金属酸化物に接続する第２電極１２８に、第１電極１２４を基準にして負の電圧が印加されたとき、第２金属酸化物中の酸素イオンが第１金属酸化物側に押しやられる。これによって、第２金属酸化物中の微小な局所領域中で還元反応が発生し、局所領域中の酸素不足度が増加する。その結果、局所領域中のフィラメントがつながりやすくなり、抵抗値が減少すると考えられる。
【０１６４】
酸素不足度がより小さい第２金属酸化物に接続されている第２電極１２８は、例えば、白金（Ｐｔ）、イリジウム（Ｉｒ）、パラジウム（Ｐｄ）などから構成される。第２電極１２８を構成する材料の標準電極電位は、例えば、第２金属酸化物を構成する金属の標準電極電位、および、第１電極１２４を構成する材料の標準電極電位よりも高い。酸素不足度がより高い第１金属酸化物に接続されている第１電極１２４は、例えば、タングステン（Ｗ）、ニッケル（Ｎｉ）、タンタル（Ｔａ）、チタン（Ｔｉ）、アルミニウム（Ａｌ）、窒化タンタル（ＴａＮ）、窒化チタン（ＴｉＮ）などから構成される。第１電極１２４を構成する材料の標準電極電位は、例えば、第１金属酸化物を構成する金属の標準電極電位よりも低くてもよい。
【０１６５】
すなわち、第２電極１２８の標準電極電位Ｖ２、第２金属酸化物を構成する金属の標準電極電位Ｖｒ２、第１金属酸化物を構成する金属の標準電極電位Ｖｒ１、および、第１電極１２４の標準電極電位Ｖ１は、Ｖｒ２＜Ｖ２、およびＶ１＜Ｖ２なる関係を満足してもよい。さらに、それらは、Ｖ２＞Ｖｒ２、およびＶｒ１≧Ｖ１の関係を満足してもよい。
【０１６６】
このような構成とすることにより、第２電極１２８と第２金属酸化物の界面近傍の第２金属酸化物中において、選択的に酸化還元反応が発生する。これにより、安定した抵抗変化現象が得られうる。
【０１６７】
抵抗変化層１２６は、例えば、ＴａＯｘ（ただし、０≦ｘ＜２.５）で表される組成を有する第１抵抗変化層と、ＴａＯｙ（ただし、ｘ＜ｙ＜２．５）で表される組成を有する第２抵抗変化層とを含む積層構造を有している。抵抗変化層１２６は、第１抵抗変化層および第２抵抗変化層とは組成の異なる金属酸化物で構成される第３抵抗変化層をさらに含んでもよい。
【０１６８】
ここで、ＴａＯｘは、０．８≦ｘ＜１．９をさらに満足してもよい。ＴａＯｙは、２．１≦ｙ＜２．５をさらに満足してもよい。第２タンタル含有層の厚みは、１ｎｍ以上８ｎｍ以下であってもよい。酸素不足度の異なる層が積層されることにより、バイポーラ型における抵抗変化の方向が決定されうる。例えば、第２抵抗変化層が第２電極１２８に接し、第１抵抗変化層が第１電極１２４に接する。かかる構成によれば、第２電極１２８から第１電極１２４に電流が流れる向きに電圧が印加されることにより、抵抗変化素子１２０が高抵抗化する。反対に、第１電極１２４から第２電極１２８に電流が流れる向きに電圧が印加されることにより、抵抗変化素子１２０が低抵抗化する。なお、第２抵抗変化層が第１電極１２４に接し、第１抵抗変化層が第２電極１２８に接する場合、抵抗変化と電圧印加の向きとの関係が逆転する。
【０１６９】
［可変状態における抵抗変化素子の特性］
図４は、可変状態にあるバイポーラ型抵抗変化素子の特性の一例を示す。図４に示される例において、第１電極１２４はＴａＮから構成され、第２電極１２８はＩｒから構成される。抵抗変化層１２６は、ＴａＯｘ（ただし、０＜ｘ＜２．５）で表される組成を有する第１タンタル含有層と、ＴａＯｙ（ただし、ｘ＜ｙ）で表される組成を有する第２タンタル含有層を含む。第１タンタル含有層が第１電極１２４に接し、第２タンタル含有層が第２電極１２８に接している。第１タンタル含有層を構成するＴａＯｘは、０．８≦ｘ≦１．９を満足した。第２タンタル含有層を構成するＴａＯｙは、２．１≦ｙ≦２．５を満足する。第２タンタル含有層の厚みは、例えば、８ｎｍ以下である。抵抗変化層１２６全体の厚みは例えば５０ｎｍ以下である。各電極への接触面積は、図３の測定に用いた抵抗変化素子と等しい。
【０１７０】
図４の横軸は、印加される電気的信号の電圧を示し、縦軸は、電気的信号を印加した後の抵抗変化素子の抵抗値を示している。ここでは、第２電極１２８から第１電極１２４に電流が流れるような電気的信号の極性が、正極性である。抵抗値は、読み出し電圧ＶＲを印加したときの電流から算出されている。電気的信号の電圧は、図４の中のスタートの位置から、正方向に大きくなるように印加されている。印加電圧が＋１．１Ｖを超えた後、抵抗変化素子の抵抗値は徐々に上昇し、印加電圧が＋２．０Ｖのときに、抵抗値は約１０００００Ωに達している。その後、電気的信号の電圧は、０に近づき、さらに負方向に大きくなるように印加されている。印加電圧が−１．１Ｖのときに、抵抗値は約１００００Ω程度になっている。その後、電気的信号の電圧は、再び０に近づくように印加され、抵抗値はスタートの値に戻っている。図４に示される例において、低抵抗状態から高抵抗状態に変化させる高抵抗化電圧ＶＨと、高抵抗状態から低抵抗状態に変化させる低抵抗化電圧ＶＬとは、｜ＶＨ｜＝｜ＶＬ｜＝２．０Ｖを概ね満たす。高抵抗化電圧の絶対値と低抵抗化電圧の絶対値が同等の場合、共通の電源電圧を用いて、抵抗変化素子が可逆的に遷移しうる。
【０１７１】
図５は、IEDM Technical Digest. 13-15 Dec. 2004, p.587に開示されている、可変状態にあるユニポーラ型抵抗変化素子の特性の一例を示す。当該論文に示される通り、ＮｉＯ、ＴｉＯ２、ＨｆＯ２、ＺｒＯ２から構成された抵抗変化層を有する抵抗変化素子は、ユニポーラ特性を示す。また、それらの遷移金属酸化物から構成された抵抗変化層は、製造直後には絶縁体であって、かつフォーミングストレスを与えることによって可変状態に遷移する。
【０１７２】
抵抗変化層の材料と電極の材料との組合せ、および抵抗変化材料にドープされる不純物の材料等によっては、ユニポーラ型抵抗変化素子は、正電圧側でも負電圧側でも対称的に抵抗変化しうる。図５は、かかる素子の特性を例示する。
【０１７３】
図５に示される例では、バイアス電圧の絶対値が０．５Ｖを超えると、素子がリセット状態、つまり高抵抗状態へと推移する。バイアス電圧の絶対値が１．０Ｖを超えると、素子がセット状態、つまり低抵抗状態へと推移する。かかる素子は、同じ極性で電圧の異なる電気的信号が印加されることで、２個の抵抗値範囲の間を可逆的に遷移しうる。しかし、図５のような特性のユニポーラ型抵抗変化素子は、＋０．５Ｖ以上＋１Ｖ未満の正極性の電気的信号が印加されることで高抵抗化し、−１Ｖ以下の負極性の電気的信号が印加されることで低抵抗化する。言い換えれば、図５に示される特性を有する型抵抗変化素子は、バイポーラ型抵抗変化素子として利用されうる。
【０１７４】
抵抗変化素子は、印加される電気的信号の電圧値、パルス幅、および回数等の組合せによって、多値メモリとして利用されてもよい。例えば、タンタル酸化物から構成される抵抗変化層を有する抵抗変化素子は、良好な特性を示し、多値メモリへ応用されうる。
【０１７５】
図６は、抵抗変化素子の抵抗変化特性の一例を示す。横軸に電気的信号の印加回数、縦軸に電気的信号が印加された後の抵抗値を示す。前述と同様に、抵抗値は読み出し電圧ＶＲが印加されたときの電流から算出されている。三角点（▲）で示したものは負極性の電気的信号が印加された後の抵抗値を示す。四角点（■）は正極性の電気的信号が印加された後の抵抗値を示す。
【０１７６】
図６に示される例において、抵抗変化素子１２０の構成は、図３において説明された構成と同様である。
【０１７７】
図６から分かるように、正極性の電気的信号の電圧値が１３００ｍＶから１５００ｍＶに増加するにつれて、当該信号が印加された後の抵抗値は徐々に増加している。正極性の電気的信号の電圧値が１５００ｍＶに固定された場合、当該信号のパルス幅が１００ｎＳｅｃ、１０００ｎＳｅｃ、２０００ｎＳｅｃに増加するにつれて、当該信号が印加された後の抵抗値は徐々に増加している。正極製の電気的信号の電圧値が、比較的小さな１２００ｍＶに固定され、複数回繰り返し印加されると、当該信号が印加された後の抵抗値は徐々に増加する。かかる特性を有する抵抗変化素子１２０の抵抗値は、比較的小さな電圧パルスによって、微調整されうる。すなわち、図６に示されるような特性を有する抵抗変化素子は、３以上の可変抵抗値範囲に制御性よく設定されうる。
【０１７８】
例えば、センスアンプによって読み出された抵抗値が第２閾値よりも大きい場合にディジタルデータの０が出力され、該抵抗値が第２閾値よりも小さい場合にディジタルデータの１が出力される場合を考える。この場合、図６に示されるメモリセル９１に＋１３００ｍＶ以上の正極性のパルスが印加されたとき、ディジタルデータの０が出力される。一方、図６に示されるメモリセル９１に、負極性のパルス、または、＋１２００ｍＶ、１００ｎＳｅｃの正極性パルスが印加されたとき、ディジタルデータの１が出力される。なお、閾値の値と完全に一致する抵抗値を有するセルには、ディジタルデータの１が割り当てられてもよいし、０が割り当てられてもよい。
【０１７９】
例えば、センスアンプによって読み出された抵抗値が第３閾値よりも大きい場合にディジタルデータの０が出力され、該抵抗値が第３閾値よりも小さい場合にディジタルデータの１が出力される場合を考える。この場合、図６に示されるメモリセル９１に、＋１２００ｍＶ以上の正極性のパルスが印加されたとき、ディジタルデータの０が出力される。一方、図６に示されるメモリセル９１に、負極性のパルスが印加されたとき、ディジタルデータの１が出力される。
【０１８０】
このように２種類の閾値に基づいて、ディジタルデータの割り当てが実行されることにより、２種類のデータが作成されうる。また、２つの閾値に基づいて、３値データが出力されてもよい。
【０１８１】
抵抗変化素子の抵抗変化は、第２電極１２８と第１電極１２４とを電気的に接続する導電性パスが抵抗変化層１２６内に発生することによって、発生する。このことは、断面解析によって観察されている。このとき、導電性パスは例えば、直径３０〜１０nm以下である。導電性パスは、最先端の半導体プロセスにおけるリソグラフィーの加工限界よりも小さい。すなわち、導電性パスは、プロセスのばらつきの影響を受けにくい。そのため、上記で説明された抵抗変化素子は、それが微細化された場合においても、安定した抵抗変化特性を有しうる。
【０１８２】
抵抗変化素子の抵抗変化層は、数百℃を超えるような高温処理がされることなく形成されうる。このため、加熱プロセスによるＣ−ＭＯＳトランジスタの特性の劣化が回避される。抵抗変化素子は、フラッシュメモリなどのフローティングゲート型トランジスタを用いるメモリ素子に比べて、半導体プロセスとの親和性が高い。そのため、製造プロセスの微細化が進んでも、抵抗変化の信頼性が低下するおそれが少ない。そのため、例えば、制御装置等のロジック回路と抵抗変化素子とが同一チップ上に形成される場合であっても、ロジック回路の特性への影響を抑えつつ抵抗変化素子が形成されうる。ロジック回路と抵抗変化素子との作製プロセスが共通化される場合、製造コストが低減されうる。
【０１８３】
［メモリセルの抵抗値がランダムに変動するメカニズム］
メモリセル９１は、抵抗値が少なくとも１つの可変抵抗値範囲内にある場合に時間経過に伴って抵抗値がランダムに変動する性質を有する。言い換えると、メモリセル９１は、そこに属する抵抗値が時間経過に伴ってランダムに変動しうるような可変抵抗値範囲を、少なくとも１つ有する。
【０１８４】
図７は、１つの可変抵抗値範囲内にあるメモリセルから連続して抵抗値を読み出した例を示す。「抵抗値が少なくとも１つの可変抵抗値範囲内にある」とは、メモリセルが１つの抵抗状態にあることをいう。すなわち二値型のメモリセルである場合には、例えば、メモリセルが高抵抗状態にあって低抵抗状態にないことをいう。
【０１８５】
図７の実験に用いられたメモリセルの大きさは約４００ｎｍ×４００ｎｍである。下部電極はＴａＮから構成され、その厚さは約５０ｎｍである。上部電極の材料はイリジウムから構成され、その厚さは約１００ｎｍである。抵抗変化層は第１タンタル含有層と第２タンタル含有層を含む。第１タンタル含有層の厚さは約６５ｎｍであり、第２タンタル含有層の厚さは約５ｎｍである。高抵抗化パルスとして、選択素子と抵抗変化素子とを含めたメモリセルの両端に、電圧が１．８Ｖでパルス幅が５０ｎＳｅｃの電圧パルスが印加された。低抵抗化パルスとして、選択素子と抵抗変化素子とを含めたメモリセルの両端に、−電圧が２．４Ｖでパルス幅が５０ｎＳｅｃの電圧パルスが印加された。読み出しパルスとして、選択素子と抵抗変化素子とを含めたメモリセルの両端に、電圧が０．４Ｖでパルス幅が１００ｎＳｅｃの電圧パルスが印加された。高抵抗化パルスと低抵抗化パルスとが交互に印加されることで、抵抗変化素子が高抵抗状態と低抵抗状態とを可逆的に遷移することが確認された。その後、抵抗変化素子は、高抵抗化パルスが１回だけ印加されて、低抵抗状態から高抵抗状態に遷移した。その後、抵抗変化素子には低抵抗化パルスも高抵抗化パルスも印加されることなかった。抵抗変化素子には読み出しパルスが繰り返し印加され、１０００回、抵抗値情報の読み出しが行われた。読み出しの時間間隔は５μＳｅｃとした。
【０１８６】
図７において、横軸が読み出し回数、縦軸が規格化された抵抗値情報である。図７は、同じ構成を有する３つの抵抗変化素子Ａ、Ｂ、Ｃの抵抗値の揺らぎを示している。ここでいう抵抗値情報とは、後述する読み出し回路で得られるものである。抵抗値情報の値が大きいほど高い抵抗値を示し、値が小さいほど小さい抵抗値を示す。図７は、１つの抵抗状態にある抵抗変化素子の抵抗値情報が繰り返して読み出されたとき、その抵抗値情報がランダムに増減することを示している。図７は、素子Ａ、素子Ｂ、素子Ｃで、抵抗値変動の振幅および周期が大きく異なっていることも示している。
【０１８７】
ここで述べる抵抗値変動または抵抗値揺らぎとは、１つのメモリセルの抵抗値が、抵抗状態を変化させる電気的パルスが印加されていないにも関わらず、時間の経過と共に変動する現象を指す。言い換えると、１つの抵抗状態にある１つのメモリセルの抵抗値が、時間の経過とともに変動する現象を指す。抵抗状態を変化させる電気的パルスの例としては、高抵抗化パルス、および低抵抗化パルスが挙げられる。抵抗状態を変化させない電気的パルスの例としては、読み出しパルスが挙げられる。
【０１８８】
図８Ａ、図８Ｂは、パーコレーションモデル（percolation model）を用いて、フォーミング時における抵抗変化層（例えば局所領域）中のフィラメントの形成をシミュレートした結果の一例を示す。
【０１８９】
パーコレーションモデルとは、抵抗変化層中にランダムに分布した欠陥サイトの密度が増大するにつれて、欠陥サイト等のつながりが形成される確率が増加するという理論に基づくモデルである。ここで「欠陥」とは、例えば、金属酸化物中で酸素が欠損していることを意味し、「欠陥サイトの密度」は、例えば、酸素不足度と相関している。すなわち、酸素不足度が大きくなると、欠陥サイトの密度も大きくなる。
【０１９０】
図８Ａ、図８Ｂに示されるシミュレーションにおいて、抵抗変化層の酸素イオンサイトは、格子状に仕切られた領域（サイト）として近似的に仮定されている。この仮定に基づいて、確率的に発生する欠陥サイトによって形成されるフィラメントがシミュレーションで求められた。図８Ａおよび図８Ｂにおいて、“０”が含まれているサイトは抵抗変化層中に形成される欠陥サイトを表している。他方、空白となっているサイトは酸素イオンが占有しているサイトを表している。酸素イオンにより占有されているサイトは、導電パスのない高抵抗な領域を意味している。また、矢符は、上下、左右及び斜め方向に１個のサイトの範囲内で互いに接続された欠陥サイトの連なりを示している。この欠陥サイトの連なりは、抵抗変化層内に形成されるフィラメントに相当する。すなわち、矢符は、図中の上下方向に電圧が印加された場合に電流が流れるパスを示している。
【０１９１】
図８Ａに示されるように、抵抗変化層の下面と上面との間に電流を流すフィラメントは、ランダムに分布する欠陥サイトのうち、上端から下端までを接続する欠陥サイトのクラスターから構成される。このパーコレーションモデルに基づくと、フィラメントの本数及び形状は確率的に形成されることになる。フィラメントの本数及び形状の分布は、抵抗変化層の抵抗値のばらつきとなる。
【０１９２】
高抵抗化パルスによって酸素イオンがフィラメントに導入されると、当該酸素イオンが欠陥サイトと結合し、これによりフィラメントパスが切断されうる。これにより、抵抗変化層は高抵抗状態へと推移する。逆に、低抵抗化パルスは印加されると、酸素イオンの離脱が起こり、欠陥サイトが生成され、フィラメントパスが形成されうる。これにより、抵抗変化層は低抵抗状態へと推移する。各抵抗状態の間でフィラメントパスの本数に充分な差があれば、抵抗値の差分が大きくなり、抵抗値の判定マージンが増加する。
【０１９３】
次に、図７のように１つの抵抗状態にある１つの抵抗変化素子において、その抵抗値が揺らぐ現象のメカニズムについて説明する。
【０１９４】
各抵抗状態の抵抗値を決定するフィラメントパスの形状、本数および太さは、時間的に安定ではない。つまり、酸素サイトから酸素イオンが抜け出ることによって欠陥サイトが生成されたり、欠陥サイトへ酸素イオンが供給されることによって欠陥サイトが消滅したりすることにより、フィラメントパスの形状、本数および太さが微妙に増減する。これが時間的な抵抗値の揺らぎとして観測される。図８Ｂは、図８Ａに示される状態から、たった一つの欠陥サイトが隣接サイトと入れ替わっただけで、図８Ａにあったフィラメントパスの１つが断絶される例を示している。この場合、抵抗値が僅かに増加することになる。図による説明は省略するが、逆に、欠陥サイトが隣接サイトと入れ替わることにより新たなフィラメントパスが発生することもある。この場合は、僅かに抵抗値が減少する。図７のような抵抗値の揺らぎ現象は、かかるメカニズムにより発生すると考えられる。実際には、図のようなフィラメントパスの数は多数あり、その一部が増減するもののフィラメントパスの総数は大きくは変化しないと考えられる。すなわち、揺らぎ現象において、メモリセルの抵抗状態が別の抵抗状態に変化してしまうほどの大きなフィラメントパスの変化は生じないと考えられる。
【０１９５】
上記メカニズムにより、抵抗値が揺らぐ現象は、酸化物中の酸素イオンの移動により抵抗値が変動するあらゆる抵抗変化素子に当てはまると考えられる。例えば、第１電極と金属酸化物と第２電極とをこの順で積層した素子は、このような性質を有しうる。さらに、例えば、第１電極と遷移金属酸化物と第２電極とをこの順で積層した素子は、このような性質を示しやすい。
【０１９６】
［フォーミングがランダムに完了するメカニズム］
フォーミングストレスの印加によって、抵抗変化層中の酸素等の欠陥サイト等がつながることによりフィラメントが形成される場合を考える。
【０１９７】
フォーミング動作は、抵抗変化層の一部領域において金属酸化物内の欠陥サイトの密度を変化させ、フィラメントを形成する動作に対応する。例えば、電気的ストレスの印加が、初期状態において欠陥サイトが疎であった領域の一部を、欠陥サイトが密な状態に変化させる。それによって、欠陥サイトの連なりであるフィラメントが形成されうる。抵抗変化層が金属酸化物から構成される場合、抵抗変化層内の複数の欠陥サイトは、メモリセル毎にランダムに配置される。例えば、フィラメント形成の障壁となる欠陥サイト間の距離等は、メモリセル毎にランダムにばらついている。このため、仮に各メモリセルに一定の電気的ストレスが印加される場合であっても、フィラメントが形成されるまでに要するストレス量がメモリセル毎にランダムにばらつくと考えられる。その結果、初期状態にある複数のメモリセルに所定の電気的ストレスが印加された場合に、フォーミングが完了するメモリセルがランダムに発生すると考えられる。
【０１９８】
なお、酸素欠陥サイト等がつながることによってフィラメントパスが形成される材料であれば、フォーミングによる初期状態から可変状態への変化は、同様のメカニズムによって説明できると考えられる。そのため、例えば抵抗変化層に含まれる複数の層が、互いに異なる金属の酸化物から構成される場合であっても、同様のメカニズムが推察されうる。よって、初期状態のメモリセルに所定の電気的ストレスを印加した場合に、フォーミングが発生するか否かは、確率的に、すなわちランダムに、決定されうる。
【０１９９】
［抵抗値変動を利用した乱数データの生成方法］
図９は、実施形態の乱数処理方法の一例を示すフローチャートである。以下、図９を参照しつつ、実施形態の乱数処理方法について説明する。
【０２００】
図９に示されように、まず、ステップＳ１１において、複数の異なる時刻ので、抵抗値が１つの可変抵抗値範囲にあるメモリセル９１から抵抗値情報を取得する。
【０２０１】
次に、ステップＳ１２において、ステップＳ１１で得られた複数の抵抗値情報を用いて乱数データを生成する。
【０２０２】
メモリセル９１の抵抗値は、例えば図７に示されるように、複数の異なる時刻のそれぞれにおいてランダムに変動する。したがって、ステップＳ１１で得られる抵抗値情報も読み出しの度にランダムに変動するため、これを用いて乱数データが生成されうる。例えば、得られた抵抗値情報から決定された０または１を、抵抗値情報が読み出された順に並べることで、乱数データが得られうる。
【０２０３】
乱数データを生成する具体的な方法は特に限定されない。上述の抵抗値変動を利用して乱数データが生成されるものであれば、どのような方法であってもよい。このような物理現象を利用して乱数データが生成されることで、擬似乱数よりも高品質の乱数データが生成されうる。
【０２０４】
２つの異なる時刻にメモリセルから取得された２つの抵抗値情報の差分が求められてもよい。該差分がある範囲（第１範囲）に含まれるか否かが判定されることで、乱数データが生成されてもよい。例えば、差分＞０であれば“１”が出力され、差分≦０であれば“０”が出力されてもよい。
【０２０５】
２つの異なる時刻にメモリセルから取得された２つの抵抗値情報の大小関係が判定されてもよい。該判定結果を用いて乱数データが生成されてもよい。例えば、ある時刻の抵抗値情報が次の時刻の抵抗値情報よりも小さければ“１”が出力され、ある時刻の抵抗値情報が次の時刻の抵抗値情報より大きいか等しければ“０”が出力されてもよい。大小関係は、例えば、２つの抵抗値情報の差を用いて判定されてもよいし、２つの抵抗値情報の比を用いて判定されてもよい。
【０２０６】
［動作モードおよびコマンド］
乱数処理装置１００は、４以上の動作モードを有してもよい。この場合、乱数処理装置１００は、外部から４以上のコマンドから選択される１のコマンドを受領し、該コマンドに基づいて４以上の動作モードのうちの１つを選択的に実行してもよい。
【０２０７】
乱数処理装置１００は、第１書き込みモード、第１読み出しモード、第２書き込みモード、および第２読み出しモードのうち１つを選択的に実行してもよい。第１書き込みモードにおいて、乱数処理装置１００は、例えば、各メモリセル９１が初期状態にあるか可変状態にあるかの違いを利用したデータを書き込む。第１読み出しモードにおいて、乱数処理装置１００は、例えば、各メモリセル９１が初期状態にあるか可変状態にあるかの違いを利用したデータを読み出す。第２書き込みモードにおいて、乱数処理装置１００は、例えば、各メモリセル９１の抵抗値が初期抵抗値範囲にあるか否かの違いを利用せず、各メモリセル９１の抵抗値が少なくとも一つの可変抵抗値範囲にあるか否かの違いを利用したデータを書き込む。第２読み出しモードにおいて、乱数処理装置１００は、例えば、各メモリセル９１の抵抗値が初期抵抗値範囲にあるか否かの違いを利用せず、各メモリセル９１の抵抗値が少なくとも一つの可変抵抗値範囲にあるか否かの違いを利用したデータを読み出す。なお、本開示において、各メモリセル９１が初期状態にあるか可変状態にあるかの違いを利用したデータが、第１種データと呼ばれる場合がある。また、各メモリセル９１の抵抗値が初期抵抗値範囲にあるか否かの違いを利用せず、各メモリセル９１の抵抗値が少なくとも一つの可変抵抗値範囲にあるか否かの違いを利用したデータが、第２種データと呼ばれる場合がある。
【０２０８】
図３に示す例を用いて、４つのモードの具体例について説明する。
【０２０９】
特殊書き込みモードにおいて、制御装置９３は、入力データ“１”に対応して選択されるメモリセル９１にフォーミングストレスを印加させ、入力データ“０”に対応して選択されるメモリセル９１に電気的ストレスを印加させない。特殊書き込みモードは、第１書き込みモードの一例である。乱数処理装置１００の外部から入力され、特殊書き込みモードの実行を指示するコマンドは、特殊書き込みコマンドと呼ばれる。特殊書き込みコマンドは、第１書き込みコマンドの一例である。
【０２１０】
特殊読み出しモードにおいて、制御装置９３は、第１閾値を用いた判定により、メモリセル９１のデータを読み出させる。特殊読み出しモードは、第１読み出しモードの一例である。乱数処理装置１００の外部から入力され、特殊読み出しモードの実行を指示するコマンドは、特殊読み出しコマンドと呼ばれる。特殊読み出しコマンドは、第１読み出しコマンドの一例である。
【０２１１】
通常書き込みモードにおいて、制御装置９３は、入力データ“１”に対応して選択されるメモリセル９１に低抵抗化パルスを印加させ、入力データ“０”に対応じて選択されるメモリセル９１に高抵抗化パルスを印加させる。通常書き込みモードは、第２書き込みモードの一例である。乱数処理装置１００の外部から入力され、通常書き込みモードの実行を指示するコマンドは、通常書き込みコマンドと呼ばれる。通常書き込みコマンドは、第２書き込みコマンドの一例である。
【０２１２】
通常読み出しモードにおいて、制御装置９３は、第２閾値を用いた判定により、メモリセル９１のデータを読み出させる。通常読み出しモードは、第２読み出しモードの一例である。乱数処理装置１００の外部から入力され、通常読み出しモードの実行を指示するコマンドは、通常読み出しコマンドと呼ばれる。通常読み出しコマンドは、第２読み出しコマンドの一例である。
【０２１３】
［データへのアクセス制限の具体例］
かかる構成において、例えば、通常書き込みコマンドおよび通常読み出しコマンドは、乱数処理装置１００のマニュアルなどで広く公開されてもよい。一方、特殊書き込みコマンドおよび特殊読み出しコマンドは、乱数処理装置１００の製造者のみが保有する、すなわち秘匿されてもよい。
【０２１４】
乱数処理装置１００の製造者は、特殊書き込みコマンドを用いて、メモリセルアレイ９０の特定領域にパスワードを書き込んでおいてもよい。特定のユーザが乱数処理装置１００の外部からパスワードを入力したときに、例えば、乱数処理装置１００の制御装置９３は、受け取ったパスワードと、特殊読み出しモードで特定領域から読み出したパスワードとを照合してもよい。制御装置９３は、両者のパスワードが一致した場合にのみ通常書き込みモードでの書き込みおよび通常読み出しモードでの読み出しを許可してもよい。
【０２１５】
かかる構成を用いれば、乱数処理装置１００は、例えば、通常書き込みモードで、メモリセルアレイ９０内の所定の領域に有料コンテンツデータを記録しておき、特殊書き込みモードで、メモリセルアレイ９０内の他の領域に装置のＩＤ情報およびコンテンツ毎のシリアル情報等を記録しておくことができる。これにより、例えば、装置のＩＤ情報およびコンテンツ毎のシリアル情報等を予め知らされた特別な利用者のみが、メモリセルアレイ９０に記録された有料コンテンツにアクセスできる。このとき、特殊書き込みコマンドを知らない権限のない第三者は、特殊書き込みモードで書き込まれたデータを書き換えることができず、パスワード未設定状態を作り出すことが困難になる。
【０２１６】
乱数処理装置１００は、樹脂等により封止されてもよい。これにより、例えば、乱数処理装置１００の内部配線にプローブをあてることが困難となり、電気抵抗の測定による分析が困難となる。すなわち、例えば、利用者がＩＤ情報と特殊読み出しコマンドに相当するコマンドを漏洩しない限り、内部データは不正にアクセスされない。
【０２１７】
従来技術のフラッシュメモリが多値メモリとして用いられる場合、微細化が進むに従って、データ記録の信頼性が低下するおそれがある。一方、暗号化や認証に用いられるパラメータのデータの記録には、極めて高い信頼性が求められる。
【０２１８】
これに対して、抵抗変化素子を含むメモリセルを備える乱数処理装置１００は、微細化が進行した場合であっても、高い信頼性が保持されうる。特に、抵抗変化層がフィラメントを含む微小な局所領域を有する場合、上述の通り、微細化の影響を受けにくい。そのため、例えば暗号化または認証に用いられるパラメータのデータ等が、高い信頼性で記憶されうる。
【０２１９】
暗号化および認証のいずれか少なくとも一方を実行する暗号／認証処理部が、乱数処理装置１００と同一チップ上に形成されていてもよい。これにより、例えば、暗号／認証処理部と乱数処理装置１００との間で、暗号化パラメータ等のデータが送受信される場合であっても、インターフェース上で信号波形を盗み読みされるリスクが低減されうる。これにより、暗号化パラメータ等が漏洩するリスクが低減されうる。抵抗変化素子の抵抗状態を物理解析によって判別することは、ほぼ不可能であるため、物理的に暗号化パラメータ等が盗まれるリスクはほとんどない。
【０２２０】
従来技術のフラッシュメモリと制御装置とが混載される場合、両者の製造プロセスを共通化することは困難である。また、フラッシュメモリの製造における高温熱処理が、ロジック回路に悪影響を与えるおそれがあった。
【０２２１】
これに対して、抵抗変化素子を含むメモリセルを備える乱数処理装置１００は、製造工程に高温熱処理を必要とせず、Ｃ−ＭＯＳプロセスの半導体特性に悪影響を与えにくい。そのため、乱数処理装置１００とロジック回路との混載回路が、それらの特性を損なうことなく、あるいは、製造プロセスのコスト高を招くことなく、製造されうる。
【０２２２】
上記の例では、４つの動作モード、および、それらを指示する４つコマンドについて説明した。しかし、動作モードおよびコマンドの数と組合せはこれに限定されない。例えば、図６のように可変状態のメモリセルの抵抗値に７段階の抵抗値範囲が設定されうる場合、可変状態の抵抗値および初期状態の抵抗値を合わせて最大で８段階の抵抗値範囲が設定されうる。そのため、例えば、特殊書き込みモードで３値データの書き込みが行われ、通常書き込みモードで４値データの書き込みが行われてもよい。書き込みに用いられる抵抗値範囲の組合せは、利用システムに応じて適宜に選択されうる。
【０２２３】
［フォーミングストレス印加による可変状態への変化のランダム性］
初期状態にある素子の抵抗値を初期抵抗値範囲から所定の可変抵抗値範囲へと変化させる行為は、フォーミング(forming)と呼ばれる。例えば、高抵抗化パルスの電圧をＶＨ、パルス幅をＴＰＨとし、低抵抗化パルスの電圧をＶＬ、パルス幅ＴＰＬとし、フォーミングストレスの電圧をＶＦ、パルス幅をＴＰＦとするとき、ＶＨ、ＶＬ、ＶＦ、ＴＰＨ、ＴＰＬ、およびＴＰＦは、下記の条件１および条件２の少なくともいずれか一方を満たしてもよい。
条件１：｜ＶＦ｜＞｜ＶＨ｜および｜ＶＦ｜＞｜ＶＬ｜
条件２：ＴＰＦ＞ＴＰＨおよびＴＰＦ＞ＴＰＬ
このとき、通常書き込みモードでの書き込み条件では、フォーミングは実行されない。
【０２２４】
フォーミングストレスは、条件２を満たす複数の電気的ストレスであってもよい。複数の電気的ストレスは、同じ電圧を有していてもよい。あるいは、電気的ストレスの印加が繰り返される過程において、電圧および／またはパルス幅が段階的に増大されてもよい。
【０２２５】
仮に、メモリセルアレイ内にある初期状態の全メモリセルを可変状態に変化させるために、１つのメモリセルあたり、規格化された累積印加時間が１００００単位である電気的ストレスの印加が必要な場合を考える。このとき、例えば、１５０単位の電気的ストレスを印加した段階で電気的ストレスの印加を中止すると、全てのメモリセルが可変状態に変化することはない。しかしながら、実験の結果、この場合において、初期状態から可変状態へと変化するメモリセルがメモリセルアレイ内にランダムに発生しうることが判明した。
【０２２６】
すなわち、メモリセルアレイに初期状態から可変状態に変化させるような電気的ストレスが印加されたときに、初期状態から可変状態に変化するメモリセルと、初期状態のまま維持されるメモリセルとがランダムに発生しうる。
【０２２７】
図１０は、規格化された累積印加時間と、可変状態へ変化したメモリセルの数についての標準正規分布の偏差との関係の一例を示す。図１０に示される素子の構成は、図３に示される例で用いられたものと同等である。フォーミングストレスは、電圧が３．５Ｖ、最短のパルス幅が１０μＳｅｃの複数の電気的ストレスを含む。メモリセルの個数は２５６キロビットである。なお、図１０の累積印加時間は、最短パルス幅に基づく所定の係数で規格化された時間である。
【０２２８】
図１０に示されるように、フォーミングが完了した累積ビット数の正規分布は、累積印加時間に対してほぼ直線に分布している。このことは、初期状態から可変状態への変化が、極めてランダムに発生することを示している。このランダム性は、例えば、乱数処理装置ごとのユニークかつランダムなＩＤ情報を作成するために用いられうる。
【０２２９】
図１０において、規格化累積印加時間が約１５０（１．５×１０２）に達した時点で電気的ストレスの印加が停止されると、可変状態に変化したメモリセルと、可変状態に変化しなかったメモリセルとが、ほぼ半数ずつとなる。可変状態に変化するメモリセルのロケーションはランダムである。そのため、例えば、特殊書き込みモードが実行されると、メモリセルアレイにおける一部のメモリセルがランダムに選択され、初期状態から可変状態へと変化する。言い換えると、特殊書き込みモードにおいて、ランダムなデータが生成され、メモリセルアレイに記録される。このランダムなデータは、装置ごとに固有のデータである。
【０２３０】
このようなランダム性および固有性が発生する理由として、抵抗変化素子のプロセスばらつきや形状ばらつき以外に、例えば、導電パスが確率的に形成されることが考えられる。上述のとおり、金属酸化物中の欠陥サイトはメモリセル毎にランダムに配置されており、フォーミングでこれらの欠陥サイト間がつながることにより、フィラメントが形成される。そのため、仮に初期状態にある複数のメモリセルに一定の電気的ストレスが印加された場合であっても、フォーミングが完了するメモリセルは、統計的に（例えば標準正規分布様に）ばらついて発生すると考えられる。そのため、仮に特殊書き込みモードで複数のメモリセルに対して一様なストレスが印加される場合であっても、フィラメントが形成される素子と形成されない素子とが確率的に発生しうる。その確率は、電気的ストレスによって適宜調整されうる。なお、酸素欠陥サイト等がつながることによってフィラメントパスが形成される材料であれば、同様のメカニズムによって、ランダムなデータが生成されると推察される。
【０２３１】
従来技術において、擬似乱数は所定の関数を用いて生成される。しかしながら、関数および入力される初期値が同じであれば、演算回数に応じて同じ値が出力されてしまう。そのため、装置内で生成されるランダム値が予測されてしまうおそれがあった。
【０２３２】
メモリセルアレイにおける初期状態から可変状態への変化のランダム性は、予測不可能な乱数データの生成を実現する。特殊書き込みモードで生成された乱数データは、上述した乱数を得るための関数に入力される初期値として用いられてもよい。これにより、さらにランダム性が向上しうる。
【０２３３】
例えば、特殊書き込みモードで、乱数データがＩＤ情報およびシリアル情報として書き込まれてもよい。これにより、予測不可能な態様でＩＤ情報およびシリアル情報が生成され、記録されうる。特殊書き込みモードで書き込まれたＩＤ情報およびシリアル情報は、特殊読み出しモードで読み出されうる。したがって、例えば、特殊読み出しモードを実行する権限のあるユーザのみが、コンテンツを利用できる。
【０２３４】
本実施形態において、抵抗値変動を利用した乱数処理方法と、フォーミングストレス印加を利用した乱数処理方法とが組み合わせて利用されてもよい。
【０２３５】
［NIST SP800-22  統計的な乱数検定法について］
ここで、乱数を評価する検定方法の一例について説明する。アメリカ国立標準技術研究所(NIST: National Institute of Standard Technology)が定めるSP800-22（『A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications』 NIST, Special Publication 800-22 Revision1, Aug. 2008）は、任意のビット数を有するストリームデータのランダム性を評価する統計的な暗号用乱数検定法である。SP800-22は、１５種類の検定法から構成される。そのうち１Ｍｂｉｔ未満のストリームデータについては、SP800-22のうち、以下の９種類の検定法が適用されうる。
【０２３６】
１）1次元度数検定（frequency test）
２）ブロック単位の等頻度検定（frequency test within a block）
３）連検定（runs test）
４）ブロック単位の最長連検定（test for longest run of ones in a block）
５）２値行列ランク検定（binary matrix rank test）
６）離散フーリエ変換検定（discrete Fourier transform test）
１１）系列検定（serial test）
１２）近似エントロピー検定（approximate entropy test）
１３）累積和検定（cumulative sums (cusums) test ）
表１は具体的な評価概要を示す。各検定項目で算出される値（ｐ−Ｖａｌｕｅ）が０．０１以上であるとき、その検定に合格したとみなされる。本実施形態の方式により生成される乱数データのランダム性は、この検定法でテストされうる。この検定に合格した高品位の乱数データは、例えば暗号用に用いられうる。
【０２３７】
【表１】
2015212933.tif 000003
【０２３８】
［抵抗値変動を利用して乱数データを生成するときの課題］
図１１は、１つの可変抵抗値範囲にあるメモリセルから、連続して抵抗値が読み出された例を示す。図１１は、図７の素子Ａのグラフに相当する。以下、抵抗変化素子の抵抗値変動から乱数データが生成されるときの課題について、図１１を用いて説明する。
【０２３９】
物理的なランダム変動から乱数を生成するための最も単純な方法は次のようなものである。まず、ランダムに変動する値が取得される。次に、その値が所定の閾値と比較される。最後に、その比較結果に応じて０または１が割り当てられ、乱数が生成される。しかし、図１１に示されるように、抵抗値情報が読み出し回数に応じて大きく変動する場合、適切な乱数が生成されない。例えば、１つの閾値に基づいて０または１が割り当てられると、０ばかりとなる領域や、１ばかりとなる領域が発生してしまう。これに対して、例えば、所定の読み出し回数ごとに、０の数と１の数がほぼ半数になるような閾値（図１１中の破線）を設定し直す方法が考えられる。
【０２４０】
しかし、かかる方法でも、例えば図７の素子Ｂのように抵抗値が大きく変動する場合には、該変動の前後で、０または１の大きな偏りが発生してしまう。表２は、この方法により生成された乱数データが、前述した検定法に基づき評価された結果を示している。
【０２４１】
【表２】
2015212933.tif 000004
【０２４２】
表２から分かるように、多くの検定項目が不合格（Ｆａｉｌ）となっている。このことは、所定の読み出し回数毎に閾値を設定する方法であっても、暗号に利用可能な高品位の乱数が生成できない場合があることを示している。そこで、本発明者らは、抵抗変化素子の抵抗値変動から高品位な乱数データを生成する方法を検討した。以下に説明される実施例は、その一例である。
【０２４３】
［第１実施例］
第１実施例の乱数処理方法は、複数の抵抗値情報を用いて長さｍの固定長のデータである第１のディジタルデータを生成するステップと、第１のディジタルデータに含まれるビットを互いに異なる組合せで反転させることで複数の新たなディジタルデータを生成するステップと、第１のディジタルデータおよび複数の新たなディジタルデータのうち、出現頻度の最も低いものを選択して第２のディジタルデータとするステップと、第２のディジタルデータを用いて乱数データを生成するステップと、第２のディジタルデータの出現頻度に１を加えるステップと、を含む。
【０２４４】
＜メモリセルアレイおよび読み出し回路＞
第１実施例における乱数データ生成のアルゴリズムおよび回路方式を説明する前に、メモリセルアレイ及び抵抗値情報の読み出し回路の具体例について説明する。
【０２４５】
図１２は、第１実施例にかかる乱数処理装置の概略構成の一例を示すブロック図である。なお、図１２はあくまで一例であり、本実施形態の乱数処理装置の構成は、これに限定されない。
【０２４６】
図１２に示されるように、第１実施例の乱数処理装置０２０は、半導体基板上に、メモリ本体部００１を備えている。メモリ本体部００１は、メモリセルアレイ０２１と、行選択回路００３と、列選択回路００４と、を具備している。
【０２４７】
メモリセルアレイ０２１は、半導体基板の上の第１平面内において第１方向に互いに平行に延びる複数の第１配線ＷＬ０，ＷＬ１，ＷＬ２，…と、第１平面と平行な第２平面内において第２方向に互いに平行に延び、かつ第１配線と立体交差する複数の第２配線ＢＬ０，ＢＬ１，ＢＬ２，…と、これらの第１配線ＷＬ０，ＷＬ１，ＷＬ２，…および第２配線ＢＬ０，ＢＬ１，ＢＬ２，…の立体交差点のそれぞれに設けられたメモリセルＭ２１１，Ｍ２１２，Ｍ２１３，Ｍ２２１，Ｍ２２２，Ｍ２２３，Ｍ２３１，Ｍ２３２，Ｍ２３３，…とを備える。説明の簡便のため、以下では、第１配線はワード線と呼ばれ、第２配線はビット線と呼ばれる。メモリセルＭ２１１，Ｍ２１２，Ｍ２１３，Ｍ２２１，Ｍ２２２，Ｍ２２３，Ｍ２３１，Ｍ２３２，Ｍ２３３は、以下、「メモリセルＭ２１１，Ｍ２１２，…」と表される場合がある。
【０２４８】
メモリセルＭ２１１，Ｍ２１２，…は、抵抗変化素子Ｒ１１，Ｒ１２，Ｒ１３，Ｒ２１，Ｒ２２，Ｒ２３，Ｒ３１，Ｒ３２，Ｒ３３，…をそれぞれ備える。抵抗変化素子Ｒ１１，Ｒ１２，Ｒ１３，Ｒ２１，Ｒ２２，Ｒ２３，Ｒ３１，Ｒ３２，Ｒ３３，…は、以下。「抵抗変化素子Ｒ１１，Ｒ１２，…」と表される場合がある。抵抗変化素子Ｒ１１，Ｒ１２，…は、例えば、図２に示される構成を有する。メモリセルＭ２１１，Ｍ２１２，…は、トランジスタＴ１１，Ｔ１２，Ｔ１３，Ｔ２１，Ｔ２２，Ｔ２３，Ｔ３１，Ｔ３２，Ｔ３３，…をそれぞれ備える。トランジスタのＴ１１，Ｔ１２，Ｔ１３，Ｔ２１，Ｔ２２，Ｔ２３，Ｔ３１，Ｔ３２，Ｔ３３，…は、以下、「トランジスタＴ１１，Ｔ１２，…」と表される場合がある。ワード線ＷＬ０，ＷＬ１，ＷＬ２，…は、トランジスタＴ１１，Ｔ１２，…の制御端子（例えばゲート）にそれぞれ接続される。ビット線ＢＬ０，ＢＬ１，ＢＬ２，…は、抵抗変化素子Ｒ１１，Ｒ１２，…の一方の端子にそれぞれ接続されている。抵抗変化素子Ｒ１１，Ｒ１２，…の他方の端子は、トランジスタＴ１１，Ｔ１２，…の第１主端子にそれぞれ接続されている。
【０２４９】
抵抗変化素子Ｒ１１，Ｒ１２，…は、それぞれ、メモリセルＭ２１１，Ｍ２１２，…の中で、不揮発性記憶素子として動作する。図１２に示される例メモリセルは、１個のトランジスタと１個の抵抗変化素子から構成されている。言い換えると、図１２に示される乱数処理装置は、いわゆる１Ｔ１Ｒ型の記憶装置を備える。
【０２５０】
メモリセルアレイ０２１は、ワード線ＷＬ０，ＷＬ１，ＷＬ２，…に平行して配列されている複数のプレート線ＰＬ０，ＰＬ１，ＰＬ２，…を備えている。プレート線ＰＬ０，ＰＬ１，ＰＬ２，…は、トランジスタＴ１１，Ｔ１２，…の第２主端子にそれぞれ接続されている。トランジスタＴ１１，Ｔ１２，…において、第１主端子と第２主端子とのいずれがソースとなりいずれがドレインとなるかは、特に限定されず、具体的な動作に応じて適宜に設定されうる。それらは、例えば、トランジスタを流れる電流の方向、主要キャリアの電荷の正負等によって決定される。
【０２５１】
抵抗変化素子Ｒ１１，Ｒ１２，…は、上述したものと同様の構成とすることができる。そのため、抵抗変化素子Ｒ１１，Ｒ１２，…の詳細な説明は省略される。
【０２５２】
図１２に示される例において、トランジスタＴ１１，Ｔ１２，Ｔ１３，…はｎチャネル型ＭＯＳトランジスタである。これらは選択トランジスタとして機能する。トランジスタＴ１１，Ｔ１２，Ｔ１３，…の第１主端子は、それぞれ、抵抗変化素子Ｒ１１，Ｒ１２，Ｒ１３，…を介して、ビット線ＢＬ０に接続される。トランジスタＴ２１，Ｔ２２，Ｔ２３，…の第１主端子は、それぞれ、抵抗変化素子Ｒ２１，Ｒ２２，Ｒ２３，…を介して、ビット線ＢＬ１に接続される。トランジスタＴ３１，Ｔ３２，Ｔ３３，…の第１主端子は抵抗変化素子Ｒ３１，Ｒ３２，Ｒ３３，…を介して、ビット線ＢＬ２に接続されている。
【０２５３】
トランジスタＴ１１，Ｔ２１，Ｔ３１，…のゲートはワード線ＷＬ０に接続されている。トランジスタＴ１２，Ｔ２２，Ｔ３２，…のゲートはワード線ＷＬ１に接続されている。トランジスタＴ１３，Ｔ２３，Ｔ３３，…のゲートはワード線ＷＬ２に接続されている。
【０２５４】
トランジスタＴ１１，Ｔ２１，Ｔ３１，…の第２主端子はプレート線ＰＬ０に接続されている。トランジスタＴ１２，Ｔ２２，Ｔ３２，…の第２主端子はプレート線ＰＬ１に接続されている。トランジスタＴ１３，Ｔ２３，Ｔ３３，…の第２主端子はプレート線ＰＬ２に接続されている。
【０２５５】
図１２においてプレート線が各行で一本につながったように図示されているが、プレート線は複数のブロックに分かれていてもよい。
【０２５６】
乱数処理装置０２０は、さらに、制御装置を備える。制御装置は、書き込み回路０１１と、センスアンプ０１２と、乱数生成回路０３８と、切替え回路０３７と、電源制御回路００８と、論理制御回路０１０と、コマンドレジスタ０３３と、ステータスレジスタ０３４と、特殊コマンドレジスタ０３５と、入出力制御回路００７と、アドレスレジスタ００９と、Ｃａｓｈｅレジスタ０３１と、特殊データレジスタ０３２と、データレジスタ０３０と、を備えている。
【０２５７】
書き込み回路０１１は、行選択回路００３および列選択回路００４によって選択された１個以上のメモリセルに情報の書き込みを行う。行選択回路００３は、例えば、ゲートドライバを備える。書き込み回路０１１は、例えば、通常書き込みモード、特殊書き込みモード、および揺らぎ書き込みモードを選択的に実行しうる。書き込み回路０１１は、例えば、各モードを実行する回路を個別に備えてもよい。
【０２５８】
センスアンプ０１２は、選択されたメモリセルの抵抗値を検出し、抵抗値情報を出力する、および／または、２値以上の値（例えば、データ“１”および“０”）を判定する。センスアンプ０１２は、例えば、通常読み出しモード、特殊読み出しモード、および揺らぎ読み出しモードを選択的に実行しうる。センスアンプ０１２は、各モードを実行する回路とを個別に備えてもよい。
【０２５９】
乱数生成回路０３８は、センスアンプ０１２からの抵抗値情報を基に乱数データを生成する。
【０２６０】
切替え回路０３７は、書き込み動作、読み出し動作、乱数生成動作に応じて、各回路の接続を切り替える。書き込み動作の場合、切替え回路０３７は、列選択回路００４が選択したメモリセルを書き込み回路０１１に接続させる。これにより、データレジスタ０３０の出力値が書き込み回路０１１に出力される。読み出し動作の場合、切替え回路０３７は、列選択回路が選択したメモリセルをセンスアンプ０１２に接続させる。これにより、センスアンプ０１２の出力データがデータレジスタ０３０に出力される。乱数生成動作の場合、切替え回路０３７は、乱数生成回路０３８の出力した乱数データをデータレジスタ０３０に出力する。
【０２６１】
電源制御回路００８は、メモリセルにデータを書き込むために必要な複数の電源電圧を生成する。
【０２６２】
論理制御回路０１０は、外部から入力された制御信号に応じて、入出力制御回路００７を動作させる。また、論理制御回路０１０は、特殊コマンドレジスタ０３５およびコマンドレジスタ０３３に記憶されている制御コマンドに基づいて、乱数処理装置０２０の動作を制御する。
【０２６３】
入出力制御回路００７は、論理制御回路０１０からの指示に従って、入出力データバスを通じて入力データを取得する。入出力制御回路００７は、当該入力データから制御コマンドおよびアドレス情報を抽出する。入出力制御回路００７は、制御コマンドを特殊コマンドレジスタ０３５またはコマンドレジスタ０３３に保持させ、アドレス情報をアドレスレジスタに保持させる。入出力制御回路００７は、通常読み出しモードまたは特殊読み出しモードにおいて、ステータスレジスタ０３４およびＣａｓｈｅレジスタ０３１等に保持されたデータ等を外部に出力してもよい。
【０２６４】
例えば、論理制御回路０１０は、外部から入力された制御信号に基づいて、コマンド入力のタイミングを決定する。入出力制御回路００７は、このタイミングに基づいて、入力データを取得する。この入力データはコマンドパターンを含む。入出力制御回路００７は、コマンドパターンから、制御コマンドと、アドレス情報を抽出する。制御コマンドの例としては、通常書き込みコマンド、特殊書き込みコマンド、揺らぎ書き込みコマンド、通常読み出しコマンド、特殊読み出しコマンド、及び、揺らぎ読み出しコマンド等が挙げられる。揺らぎ書き込みコマンドとは、例えば、高抵抗状態及び低抵抗状態の間の中間的な抵抗状態に遷移させる書き込みであってもよい。通常書き込みコマンド、特殊書き込みコマンド、揺らぎ書き込みコマンドは、何れも異なるコマンドパターンである。特殊読み出しコマンドと、通常読み出しコマンドと、揺らぎ読み出しコマンドとは、何れも異なるコマンドパターンである。特殊書き込みコマンド、揺らぎ書き込みコマンド、特殊読み出しコマンド、および揺らぎ読み出しコマンドは、一般の利用者には公開されないコマンドであってもよい。
【０２６５】
コマンドレジスタ０３３は、制御コマンドを一時的に記憶する。コマンドレジスタ０３３は、例えば、通常書き込みコマンドまたは通常読み出しコマンドを記憶する。これらのコマンドに応じて、各種モードが選択される。制御コマンドは、外部から論理制御回路０１０に入力される制御信号と、外部から入出力制御回路００７に入力される入力データに基づいて生成される。
【０２６６】
ステータスレジスタ０３４は、メモリ装置の内部状態を装置外に知らせるためのステータス情報を一時記憶する。
【０２６７】
特殊コマンドレジスタ０３５は、例えば、特殊書き込みコマンド、揺らぎ書き込みコマンド、特殊読み出しコマンド、および揺らぎ読み出しコマンドを一時的に記憶する。これらのコマンドに応じて、各種モードが選択される。これらの制御コマンドのそれぞれは、外部から論理制御回路０１０に入力される制御信号と、外部から入出力制御回路００７に入力される入力データに基づいて生成される。
【０２６８】
アドレスレジスタ００９は、アドレス信号を保持する。アドレス信号は、複数のメモリセルＭ２１１，Ｍ２１２，…のうち、選択すべきメモリセルのアドレスを示す信号である。アドレスレジスタ００９は、当該アドレス信号に基づいて、行アドレス信号を行選択回路００３へ出力し、かつ、列アドレス信号を列選択回路００４へ出力する。
【０２６９】
行アドレス信号は、アドレス信号に示されたアドレスのうち、行のアドレスを示す信号である。列アドレス信号は、アドレス信号に示されたアドレスのうち、列のアドレスを示す信号である。図１２に示される例において、列アドレスに対応する１つのビットラインが列選択回路００４により選択され、行アドレスに対応する１つのワードラインが行選択回路により選択される。以下では、メモリセルアレイ内の複数のメモリセルの中から、単一のメモリセルが選択される例について説明する。なお、アドレスの選択はこれに限定されない。例えば、ＷＬ０が選択されたときに、ＢＬ０とＢＬ１とが同時に選択されてもよい。この場合、２個のメモリセルＭ２１１，Ｍ２２１が同時に選択される。書き込み回路０１１は、複数のメモリセルを同時に書き込んでもよい。センスアンプ０１２は、複数のメモリセルを同時に読み出してもよい。
【０２７０】
Ｃａｓｈｅレジスタ０３１は、例えば、入出力制御回路００７からの指示に応じて、メモリセルに書き込まれるべきデータを一時的に保持する。当該データは、例えば、通常書き込みモード、特殊書き込みモード、または揺らぎ書き込みモードが選択された場合に記憶される。なお、特殊書き込みモードにおいて当該データが固定である場合、当該データはＲＯＭに記憶されていてもよい。
【０２７１】
特殊データレジスタ０３２は、例えば、特殊読み出しモードまたは揺らぎ読み出しモードにおいて、センスアンプ０１２によって読み出されたデータを、一時的に記憶する。例えば、読み出しが複数回繰り返される場合には、各読み出しサイクルで読み出されるデータが、センスアンプ０１２から、データレジスタ０３０を介して、特殊データレジスタ０３２に順次受け渡される。
【０２７２】
乱数生成回路０３８は、揺らぎ読み出しモードにおいて読み出された抵抗値情報を基に、乱数データを生成する。
【０２７３】
データレジスタ０３０は、例えば、通常書き込みモード、特殊書き込みモード、または、揺らぎ書き込みモードの際に、Ｃａｓｈｅレジスタ０３１からデータを取得し、一時的に記憶する。データの取得および記憶は、書き込みサイクル毎に順次行われてもよい。
【０２７４】
図１２において、電源制御回路００８と、論理制御回路０１０と入出力制御回路００７と、コマンドレジスタ０３３と、ステータスレジスタ０３４と、特殊コマンドレジスタ０３５とを含む回路群は、制御回路群０１３と呼ばれる。制御回路群０１３は、メモリ本体部００１と同一チップ上に形成されていてもよい。これにより、制御回路群０１３とメモリ本体部００１との間の情報の送受信を盗み読みされるリスクが低減されうる。
【０２７５】
論理制御回路０１０は、通常書き込みモード、特殊書き込みモード、及び揺らぎ書き込みモードにおいて、切替え回路０３７を書き込み回路０１１に接続させる。Ｃａｓｈｅレジスタ０３１は、メモリセルに書き込まれるべきデータを蓄えている。入出力制御回路００７は、論理制御回路０１０の指示に基づいて、Ｃａｓｈｅレジスタ０３１からデータを取り出し、これをデータレジスタ０３０へ送り出す。書き込み回路０１１は、論理制御回路０１０からの指示により、データレジスタ０３０にあるデータを、所定の条件で、選択されたメモリセルに書き込む。これらの動作が、書き込みサイクル毎に、順次実行される。
【０２７６】
論理制御回路０１０は、通常読み出しモード、特殊読み出しモード、揺らぎ読み出しモードにおいて、切替え回路０３７をセンスアンプ０１２、および／または、乱数生成回路０３８に接続させる。センスアンプ０１２は、論理制御回路０１０からの指示により、各読み出しサイクルにおいて、選択されたメモリセルから、所定の条件で抵抗値情報を読み出す。センスアンプ０１２は、通常読み出しモードおよび特殊読み出しモードにおいて、抵抗値情報を所定の条件で判定することによってディジタルデータを生成し、これをデータレジスタ０３０に送る。あるいは、センスアンプ０１２は、揺らぎ読み出しモードにおいて、抵抗値情報を乱数生成回路０３８に送る。この場合、乱数生成回路０３８が、抵抗値情報に基づいて乱数データを生成し、これをデータレジスタ０３０に送る。データレジスタ０３０は、センスアンプ０１２から取得したディジタルデータ、または、乱数生成回路０３８から取得した乱数データを一時的に記憶する。Ｃａｓｈｅレジスタ０３１は、論理制御回路０１０からの指示により、データレジスタ０３０に記憶されているデータを取得し、これを蓄える。これらの動作が読み出しサイクル毎に、順次実行される。入出力制御回路００７は、論理制御回路０１０からの指示により、Ｃａｓｈｅレジスタ０３１に記憶されているデータを、乱数処理装置０２０の外部に出力する。
【０２７７】
入出力制御回路００７は、通常書き込みコマンドを取得すると、これをコマンドレジスタ０３３に保持させる。入出力制御回路００７は、書き込みアドレスを取得すると、これをアドレスレジスタ００９に保持させる。書き込み回路０１１は、論理制御回路０１０からの指示によって駆動する。書き込み回路０１１は、各レジスタの設定を元に、電気的信号を各メモリセルに印加する。これにより、所定のデータがメモリセルアレイに書き込まれる。
【０２７８】
入出力制御回路００７は、通常読み出しコマンドを取得すると、これをコマンドレジスタ０３３に保持させる。入出力制御回路００７は、読み出しアドレスを取得すると、これをアドレスレジスタ００９に保持させる。センスアンプ０１２は、論理制御回路０１０からの指示によって駆動する。センスアンプ０１２は、各レジスタの設定を元に、メモリセルアレイから所定のデータを読み出す。このデータは、データレジスタ０３０を介して、Ｃａｓｈｅレジスタ０３１に蓄えられる。所定の量のデータがＣａｓｈｅレジスタ０３１に蓄えられると、入出力制御回路００７は、そのデータを取得し、外部へと順次出力する。なお、Ｃａｓｈｅレジスタ０３１は省略されてもよい。
【０２７９】
論理制御回路０１０は、乱数処理装置０２０の内部状態を確認するためのコマンドを受け付けた場合、内部状態を調査し、内部状態を示すコードをステータスレジスタ０３４に保持させる。次いで、入出力制御回路００７が、ステータスレジスタ０３４に保持されたステータスコードを外部へと出力する。
【０２８０】
特殊書き込みコマンド、揺らぎ書き込みコマンド、特殊読み出しコマンド、および揺らぎ読み出しコマンドは、通常コマンドではアクセスできないような、特定のアドレス領域へのアクセスを許可するものであってもよい。これらのコマンドは、通常コマンドでは設定できないような、書き込み条件、または、読み出し条件等を設定するものであってもよい。
【０２８１】
入出力制御回路００７は、特殊書き込みコマンドを取得すると、これを特殊コマンドレジスタ０３５に保持させる。入出力制御回路００７は、書き込みアドレスを取得すると、これをアドレスレジスタ００９に保持させる。この書き込みアドレスは、例えば、通常書き込みモードではアクセスできないアドレスであってもよい。書き込み回路０１１は、論理制御回路０１０からの指示によって駆動する。書き込み回路０１１は、各レジスタの設定を元に、フォーミングストレスを各メモリセルに印加する。これにより、所定のデータがメモリセルアレイに書き込まれる。
【０２８２】
入出力制御回路００７は、特殊読み出しコマンドを取得すると、これを特殊コマンドレジスタ０３５に保持させる。入出力制御回路００７は、読み出しアドレスを取得すると、これをアドレスレジスタ００９に保持させる。この読み出しアドレスは、例えば、通常読み出しモードではアクセスできないアドレスであってもよい。センスアンプ０１２は、論理制御回路０１０からの指示によって駆動する。センスアンプ０１２は、各レジスタの設定を元に、メモリセルアレイから所定のデータを読み出す。このデータは、データレジスタ０３０を介して、Ｃａｓｈｅレジスタ０３１に蓄えられる。所定の量のデータがＣａｓｈｅレジスタ０３１に蓄えられると、入出力制御回路００７は、そのデータを取得し、外部へと順次出力する。
【０２８３】
入出力制御回路００７は、揺らぎ書き込みコマンドを取得すると、これを特殊コマンドレジスタ０３５に保持させる。入出力制御回路００７は、書き込みアドレスを取得すると、これをアドレスレジスタ００９に保持させる。この書き込みアドレスは、例えば、通常書き込みモードではアクセスできないアドレスであってもよい。書き込み回路０１１は、論理制御回路０１０からの指示によって駆動する。書き込み回路０１１は、各レジスタの設定を元に、各メモリセルに電気的信号を印加する。これにより、メモリセルが、例えば、高抵抗状態と低抵抗状態との間の中間的な抵抗状態に設定される。あるいは、高温環境下において安定な乱数生成を行うために、メモリセルは、低抵抗状態に設定されてもよい。なお、揺らぎ書き込みモードと、通常書き込みモードとは、同一の書き込み条件で実行されてもよい。この場合、特殊コマンドレジスタ０３５が省略され、コマンドレジスタ０３３が代用されてもよい。
【０２８４】
入出力制御回路００７は、揺らぎ読み出しコマンドを取得すると、これを特殊コマンドレジスタ０３５に保持させる。入出力制御回路００７は、読み出しアドレスを取得すると、これをアドレスレジスタ００９に保持させる。この読み出しアドレスは、例えば、通常読み出しモードではアクセスできないアドレスであってもよい。センスアンプ０１２は、論理制御回路０１０からの指示によって駆動する。センスアンプ０１２は、各レジスタの設定を元に、メモリセルアレイから繰り返し抵抗値情報を読み出す。乱数生成回路０３８は、この抵抗値情報を用いて乱数データを生成する。乱数データは、データレジスタ０３０を介して、Ｃａｓｈｅレジスタ０３１に蓄えられる。所定の量のデータがＣａｓｈｅレジスタ０３１に蓄えられると、入出力制御回路００７は、そのデータを取得し、外部へと順次出力する。このとき、抵抗値を読み出す対象となるメモリセルは、揺らぎ書き込みコマンドで書き込まれたメモリセルとする。
【０２８５】
図１３は、第１実施例にかかる乱数処理装置の書き込みサイクルと読み出しサイクルの一例を示すタイミングチャートである。以下、図１３を参照しつつ、通常書き込みモードと、通常読み出しモードにおける、１個のメモリセルに対する信号制御の一例について説明する。
【０２８６】
以下、信号線の制御がより複雑となるバイポーラ型抵抗変化素子の例について説明する。本例示を元にすれば、ユニポーラ型抵抗変化素子の書き込みまたは読み出しは、容易に設計されうる。なお、本実施形態に係る制御方法は、以下の例示に限定されない。
【０２８７】
ここでは、抵抗変化層が高抵抗状態の場合が情報“０”に、低抵抗状態の場合が情報“１”にそれぞれ割り当てられているものとする。高抵抗状態に対応する可変抵抗値範囲は、第１抵抗値範囲と呼ばれる場合がある。低抵抗状態に対応する可変抵抗値範囲は、第２抵抗値範囲と呼ばれる場合がある。説明の便宜上、以下では、メモリセルＭ２１１およびＭ２２２への書き込みおよび読み出しについて説明する。
【０２８８】
図１３において、抵抗変化素子の抵抗値を第１抵抗値範囲内へ変化させる高抵抗化電圧が、メモリセルの両端に印加される。高抵抗化電圧は、電圧ＶＨを有するパルス電圧である。抵抗変化素子の抵抗値を第２抵抗値範囲内へ変化させるための低抵抗化電圧が、メモリセル両端の電圧に印加される。低抵抗化電圧は、電圧ＶＬを有するパルス電圧である。高抵抗化電圧および低抵抗化電圧は、電源制御回路００８によって生成される。電源制御回路００８には、外部入力電源から電力が供給される。図１３において、ＶＨおよびＶＬはいずれも正の値とする。ここでは、ＶＨ＝ＶＬである場合を例として説明する。
【０２８９】
読み出し時には、読み出し電圧がメモリセル両端に印加される。読み出し電圧の電圧ＶＲの絶対値は、ＶＨおよびＶＬの絶対値よりも小さい。書き込み回路０１１は、プレート線に、印加方向に応じてＶＨ、ＶＬ、ＧＮＤのいずれかの電圧を供給する。種々のモードに応じて、各ビット線、プレート線に、電圧ＶＨ、ＶＬ、ＶＲのいずれかがチャージされる、または、ＧＮＤにディスチャージされる。
【０２９０】
メモリセルＭ２１１に対する書き込みサイクルにおいて、書き込み回路０１１は、当初、ビット線ＢＬ０とプレート線ＰＬ０の電圧をＧＮＤレベルに設定している。その後、行選択回路００３はワード線ＷＬ０に電圧ＶＤＤを印加し、これにより、Ｍ２１１のトランジスタＴ１１は導通状態になる。この状態で、パルス幅がＴＰＨであり電圧がＶＨである電気的パルスが、ビット線ＢＬ０に印加される。この電気的パルスは、メモリセルＭ２１１に情報“０”を書き込むための高抵抗化パルスである。その結果、メモリセルＭ２１１の抵抗変化素子１２０が高抵抗化状態に遷移する。言い換えると、メモリセルＭ２１１に情報“０”が書き込まれる。図１３の下段左側の模式図は、このときの印加状態Ａを示す。印加状態Ａにおいて、第２電極１２８から第１電極１２４にむけて電流が流れる。
【０２９１】
メモリセルＭ２２２に対する書き込みサイクルにおいて、書き込み回路０１１は、当初、全てのワード線を０Ｖに設定し、全てのビット線およびプレート線を電圧ＶＬ＝ＶＨに設定する。その後、行選択回路００３は、ワード線ＷＬ１に、電圧ＶＤＤを印加し、これにより、Ｍ２２２のトランジスタＴ２２は導通状態となる。この状態で、ＶＬ→０Ｖ→ＶＬと変化するパルス幅ＴＰＬの電気的パルスが、ビット線ＢＬ１に印加される。この電気的パルスは、メモリセルＭ２２２に情報“１”を書き込むための低抵抗化パルスである。その結果、メモリセルＭ２２２の抵抗変化素子１２０が低抵抗化状態に遷移する。言い換えると、メモリセルＭ２２２に情報“１”が書き込まれる。その後、行選択回路００３はワード線ＷＬ１に印加されている電圧ＶＤＤを０Ｖに変化させ、これによりトランジスタＴ２２が非導通状態になる。サイクルの最後に、書き込み回路０１１は、全てのビット線およびプレート線に印加されている電圧ＶＬ＝ＶＨを０Ｖに変化させる。図１３の下段右側の模式図は、このときの印加状態Ｂを示す。印加状態Ｂにおいて、第１電極１２４から第２電極１２８にむけて電流が流れる。
【０２９２】
メモリセルＭ２１１に対する読み出しサイクルにおいて、行選択回路００３は、ワード線ＷＬ０に電圧ＶＤＤを印加し、これにより、メモリセルＭ２１１のトランジスタＴ１１は導通状態になる。加えて、列選択回路００４は、メモリセルＭ２１１とセンスアンプ０１２とを接続させる。この状態で、高抵抗化パルスおよび低抵抗化パルスよりも電圧の絶対値が小さい読み出し電圧ＶＲが、ビット線ＢＬ０に印加される。読み出し電圧は、メモリセルの抵抗状態を変化させない。読み出し電圧は、例えば、センスアンプ０１２内のドライバ１３１から、所定の期間だけ出力される。その後、ビット線ＢＬ０がディスチャージされ、ビット線ＢＬ０の電圧ＶＲが、所定の時間で減衰する。この時間は、メモリセルの抵抗値と負荷容量などで決まる。負荷容量は、例えば、配線容量およびトランジスタの拡散容量等の合計で決まる。メモリセルＭ２１１の抵抗値が、第１抵抗値範囲内にセットされている場合、ディスチャージは比較的長い時間を要する。ディスチャージの時間が所定の閾値より大きいと判定されると、センスアンプ０１２は、高抵抗状態を示す情報“０”を出力する。この情報は、入出力制御回路００７から乱数処理装置の外部に出力される。
【０２９３】
メモリセルＭ２２２に対する読み出しサイクルにおいて、行選択回路００３は、ワード線ＷＬ１に電圧ＶＤＤを印加し、これにより、メモリセルＭ２２２のトランジスタＴ２２は導通状態となる。加えて、列選択回路００４は、メモリセルＭ２２２とセンスアンプ０１２とを接続させる。この状態で、読み出し用の電圧ＶＲが、ビット線ＢＬ１に印加される。その後、ビット線ＢＬ１がディスチャージされ、ビット線ＢＬ０の電圧ＶＲが、所定の時間で減衰する。メモリセルＭ２２２の抵抗値が、第２抵抗値範囲内にセットされている場合、ディスチャージは比較的短い時間で完了する。ディスチャージの時間が所定の閾値より小さいと判定されると、センスアンプ０１２は、低抵抗状態を示す情報“１”を出力する。この情報は、入出力制御回路００７から乱数処理装置の外部に出力される。
【０２９４】
なお、これら読み出しサイクルにおいて、書き込み回路０１１は、全てのプレート線と非選択のビット線に０Ｖを供給している。
【０２９５】
特殊書き込みモードまたは揺らぎ書き込みモードの場合、例えば、書き込み回路０１１が出力する電気的信号の電圧、パルス幅、および累積印加時間の少なくともいずれかは、通常書き込みモードの場合と異なる。
【０２９６】
特殊書き込みモードは、例えば、上述の通常書き込みモードに対して、高抵抗化パルスが第１電気的ストレスに置き換えられ、低抵抗化パルスが第２電気的ストレスに置き換えられたものとして説明されうる。例えば、高抵抗化パルスの電圧ＶＨは、第１電気的ストレスの電圧ＶＨＳＰに置き換えられ、低抵抗化パルスの電圧ＶＬは第２電気的ストレスの電圧ＶＬＳＰに置き換えられる。高抵抗化パルスのパルス幅ＴＰＨが第１電気的ストレスのパルス幅ＴＰＨＳＰに置き換えられ、低抵抗化パルスのパルス幅ＴＰＬが第２電気的ストレスのパルス幅ＴＰＬＳＰに置き換えられる。第２電気的ストレスは、フォーミングストレスの一例である。なお、電気的ストレスが印加されていない初期状態のメモリセルに情報（例えば“０”）を割り当てる場合、第１電気的ストレスは印加されなくてもよい。言い換えると、第１電気的ストレスにおいて、電圧ＶＨＳＰが０Ｖであり、パルス幅ＴＰＨＳＰが０ｎＳｅｃであってもよい。第１電気的ストレスおよび第２電気的ストレスのそれぞれは、単一の電圧パルス幅でもよいし、複数の電圧パルスを含んでもよい。
【０２９７】
なお、特殊書き込みモードにおけるＶＨＳＰ、ＴＰＨＳＰ、ＶＬＳＰ、ＴＰＬＳＰと、通常書き込みモードにおけるＶＨ、ＴＰＨ、ＶＬ、ＴＰＬとは、少なくとも１つが異なっていればよい。
【０２９８】
揺らぎ書き込みモードは、例えば、上述の通常書き込みモードに対して、高抵抗化パルスが第１揺らぎ書き込みパルスに置き換えられ、低抵抗化パルスが第２揺らぎ書き込みパルスに置き換えられたものとして説明されうる。例えば、高抵抗化パルスの電圧ＶＨは、第１揺らぎ書き込みパルスの電圧に置き換えられる。第１揺らぎ書き込みパルスの電圧は、例えば、ＶＨＲＮ１以上ＶＨＲＮ３以下の値を有する。低抵抗化パルスの電圧ＶＬは、第２揺らぎ書き込みパルスの電圧ＶＬＲＮに置き換えられる。このとき、ＶＨＲＮ１、ＶＨＲＮ２およびＶＨＲＮ３は、ＶＨＲＮ１＜ＶＨＲＮ２＜ＶＨＲＮ３の関係を満たす。高抵抗化パルスのパルス幅ＴＰＨは、第１揺らぎ書き込みパルスのパルス幅ＴＰＨＲＮに置き換えられる。低抵抗化パルスのパルス幅ＴＰLは、第２揺らぎ書き込みパルスのパルス幅ＴＰＬＲＮに置き換えられる。なお、第１揺らぎ書き込みパルスおよび第２揺らぎ書き込みパルスは、“０”または“１”を書き込むための電圧パルスでなくてもよい。揺らぎ書き込みモードにおいて、第１揺らぎ書き込みパルスおよび第２揺らぎ書き込みパルスは、メモリセルの抵抗値を、乱数生成に適した抵抗値範囲内におさめるための電圧パルスである。
【０２９９】
センスアンプ０１２が、抵抗値情報を得るためのカウンタ１３４を備える場合、カウンタ１３４がカウントできる数には上限値がある。そのため、揺らぎ書き込みモードにおいて、メモリセルの抵抗値は、当該抵抗値に対応するカウント値がカウンタ１３４の上限値以下におさまるように設定される。さらに、メモリセルの抵抗値は、所定の下限値以上におさまるように設定されてもよい。これにより、良質な乱数データが得られうる。これは、抵抗値の絶対値が大きい素子が、抵抗値の絶対値が小さい素子よりも、大きな抵抗値変動を示すことに起因する(例えば、図７参照)。図６に示されるように、メモリセルの抵抗値が、印加される電圧の増大に伴って増加する場合、第１揺らぎ書き込みパルスは、段階的に電圧が増加する複数の電気的パルスから構成されていてもよい。例えば、書き込み回路０１１は、メモリセルから読み出される抵抗値情報が所定の範囲内に入るまで、電気的パルスの電圧をＶＨＲＮ１→ＶＨＲＮ２→ＶＨＲＮ３と徐々に上げてもよい。加えて、書き込み回路０１１は、所定の範囲内に入ったメモリセルに対して、電気的パルスの印加を停止してもよい。
【０３００】
次に揺らぎ読み出しモード、特殊読み出しモード、および通常読み出しモードにおける、センスアンプ０１２の具体的な構成と動作の一例を示す。
【０３０１】
図１４は、第１実施例にかかるセンスアンプの概略構成の一例を示すブロック図である。図１５は、第１実施例にかかるセンスアンプの主要箇所の動作例を示すタイミングチャートである。図１４において、破線で囲まれた列選択回路００４は、上述した通りであるので説明が省略される。図１４において、切替え回路０３７は省略されている。切替え回路０３７は、図１４に示される線ＮＷＲの電位がローレベルのときに、列選択回路００４と書き込み回路０１１を接続させ、線ＮＷＲの電位がハイレベルのときに、列選択回路００４とセンスアンプ０１２とを接続させる。
【０３０２】
図１４において、レファレンス電圧発生回路１３０は、論理制御回路０１０からの入力Ａに基づき、所定の基準電位を出力する。レファレンス電圧発生回路１３０は、例えば、ラダー抵抗と、半導体スイッチを備える。レファレンス電圧発生回路１３０において、例えば、電源電圧ＶＤＤはラダー抵抗によって分圧され、これにより複数の所定の電位が生成される。さらに、レファレンス電圧発生回路１３０内の半導体スイッチ等が、複数の電位のいずれかを選択して、これを基準電位として出力する。レファレンス電圧発生回路１３０は、例えば、第１基準電位Ｖｒｅｆ１および第２基準電位Ｖｒｅｆ２を出力しうる。第１基準電位Ｖｒｅｆ１および第２基準電位Ｖｒｅｆ２は、Ｖｒｅｆ１＞Ｖｒｅｆ２の関係を満たす。基準電位を生成する回路は、他の構成であってもよい。特殊読み出しモード、通常読み出しモード、および揺らぎ読み出しモードにおける第２基準電位Ｖｒｅｆ２は、それぞれ異なっていてもよい。
【０３０３】
スイッチＳＷ３は、論理制御回路０１０からの入力Ｂに応じてスイッチングされる。言い換えると、入力Ｂは、スイッチ制御信号である。スイッチＳＷ３は、ローレベルの信号が入力されたとき、ＯＦＦとなり、ハイレベルの信号が入力されたとき、ＯＮとなる。スイッチＳＷ３がＯＦＦとなると、レファレンス電圧発生回路１３０からノードＣへの入力状態が、ＨｉＺ（ハイインピーダンス）状態へと切り替わる。スイッチＳＷ３がＯＮとなると、ドライバ１３１を介して、第１基準電位Ｖｒｅｆ１の電位が、ノードＣに出力される。
【０３０４】
なお、実際にはドライバ１３１やその他の回路を構成するトランジスタや配線等の電圧降下によって、入出力の電圧値は多少異なりうる。しかし、以下では、説明の簡単化のために、電圧降下等の影響は無視できるものとして説明される。
【０３０５】
ノードＣは、メモリセルアレイ０２１内の選択されたメモリセルに接続されている。例えば、Ｍ２１１のメモリセルの抵抗値情報が読み出される場合を想定する。まず、全てのビット線とワード線が０Ｖに設定される。図１４において、論理制御回路０１０は、線ＮＷＲをハイレベルにし、線Ｙ０をハイレベルとし、線Ｙ１〜Ｙｎをローレベルにする。これにより、ビット線ＢＬ０が選択される。さらに、行選択回路００３は、選択ワード線ＷＬ０をハイレベルにし、ＷＬ０を除く非選択ワード線をローレベルする。また、選択ビット線ＢＬ０に接続されるノードＣに、第１基準電位Ｖｒｅｆ１が印加される。第１基準電位Ｖｒｅｆ１は、読み出し電圧ＶＲである。
【０３０６】
ノードＣとグランド間にはキャパシタＣＣ２が接続されており、キャパシタＣＣ２は、選択されたメモリセルと並列に接続される。キャパシタＣＣ２は、例えば、配線容量、および／または、トランジスタの拡散容量であってもよいし、別個の容量素子であってもよい。
【０３０７】
読み出し速度の高速化のために、キャパシタＣＣ２の容量は、小さくてもよい。スイッチＳＷ３に入力されるスイッチ制御信号（入力Ｂ）がハイレベルとなり、これによりノードＣの電位は第１基準電位Ｖｒｅｆ１となる。その後、スイッチ制御信号がローレベルとなり、レファレンス電圧発生回路１３０からノードＣへの入力状態がハイインピーダンス（ＨｉＺ）状態になる。これにより、キャパシタＣＣ２が放電を開始する。放電により、ノードＣの電位が、Ｖｒｅｆ１から徐々に減少する。この減少の時定数は、キャパシタＣＣ２の容量と、キャパシタＣＣに並列に接続されているメモリセルの抵抗値により定まる。
【０３０８】
すなわち、選択されたメモリセルの抵抗値が低いと、ノードＣを流れる電流が多くなり、ノードＣの電位の低下は速くなる。一方、選択されたメモリセルの抵抗値が高いと、ノードＣを流れる電流が少なくなるため、ノードＣの電位の低下は遅くなる。
【０３０９】
図１５は、センスアンプの主要箇所の動作例を示すタイミングチャートである。図１５は、メモリセルの状態（ａ）に示されるように、前半は選択されたメモリセルが低抵抗状態ＬＲで、後半が高抵抗状態ＨＲである場合を例示する。それぞれに対し、（ｂ）で示されるタイミングで、入力Ｂがハイレベルに変化する。入力Ｂがハイレベルである期間に、（ｃ）で示されるように、ノードＣにＶｒｅｆ１の電圧が印加される。
【０３１０】
入力Ｂがハイレベルからローレベルに切り替わると、スイッチ回路ＳＷ３はＯＦＦとなり、レファレンス電圧発生回路１３０からノードＣへの入力状態がＨｉＺになる。そのため、ノードＣの電位は徐々に低下する。ノードＣの電位が第２基準電位Ｖｒｅｆ２よりも小さくなるまでの時間は、選択されたメモリセルが低抵抗状態ＬＲのときは短く、選択されたメモリセルが高抵抗状態ＨＲのときは遅い。本実施例では、この時間に相当するカウント値が抵抗値情報として用いられる。
【０３１１】
図１４に示されるレベル比較器１３２は、レファレンス電圧発生回路１３０が出力する第２基準電位Ｖｒｅｆ２とノードＣの電位とを比較する。レベル比較器１３２は、第２基準電位Ｖｒｅｆ２よりもノードＣの電位が大きければ、ローレベルの信号を出力し、小さければハイレベルの信号を出力する。すなわち、スイッチ制御信号がハイレベルからローレベルに切り替わってから、レベル比較器１３２の出力信号がローレベルからハイレベルに変化するまでの時間は、選択されたメモリセルが低抵抗状態ＬＲである場合は短く、選択されたメモリセルが高抵抗状態ＨＲである場合は長い。
【０３１２】
カウンタ１３４は、入力Ｂがハイレベルの期間はゼロとなる。カウンタ１３４は、入力Ｂがローレベルであり、かつ、レベル比較器１３２からの入力がローレベルであるとき、入力されるクロック(図示せず)の周期に従ってカウントアップする。カウンタ１３４において、カウント値がオーバフローしない様に、カウント値の上限値が設定されていてもよい。
【０３１３】
カウンタ１３４の動作は、図１５の（ｅ）に示される。図１３の（ｅ）に示すように、入力Ｂがローレベルに変化した直後から、カウンタ１３４のカウントアップが開始される。ノードＣの電位が第２基準電位Ｖｒｅｆ２を下回るタイミングでカウントアップが停止する。選択されたメモリセルが低抵抗状態ＬＲにあるとき、カウントアップが停止したときのカウント値は、例えば１５である。選択されたメモリセルが高抵抗状態ＨＲにあるとき、カウントアップが停止したときのカウント値は、例えば３５である。図１３の（ｇ）に示されるように、信号Ｒｒｅｎ１は、１クロックの期間だけハイレベルになる。このとき、カウント値が、ラッチ１３８に入力される。図１３（ｈ）に示されるように、ラッチ１３８は、このカウント値をホールドする。
【０３１４】
図１４の入力Ｃは、例えば、通常読み出しモードに対応した閾値である。入力Ｃは、通常閾値レジスタ１３６にセットされる。入力Ｄは、例えば、特殊読み出しモードに対応した閾値である。入力Ｄは、特殊閾値レジスタ１３７にセットされる。
【０３１５】
入力Ｅは、例えば、特殊読み出しモードと通常読み出しモードとを切り替える切り替え信号である。入力Ｅは、スイッチＳＷ５を切り替える。切り替え信号がハイレベルのとき、スイッチＳＷ５は、図１４に示される端子Ｈに接続される。切り替え信号がローレベルのとき、スイッチＳＷ５は、図１４に示される端子Ｌに接続される。
【０３１６】
かかる切り替えにより、通常閾値レジスタ１３６および特殊閾値レジスタ１３７のいずれかに保持されている閾値が、比較器１３５に、入力ｂとして入力される。通常読み出しモードの閾値は、例えば、高抵抗状態ＨＲに対応するカウント値と、低抵抗状態ＬＲに対応するカウント値とを判別する値である。図１５の（ｄ）に示される例では、この閾値は、２０である。
【０３１７】
比較器１３５には、カウンタ１３４から出力されたカウント値が入力ａとして入力される。比較器１３５は、入力されたカウント値と入力された閾値とを比較する。比較器１３５は、入力ａが入力ｂ以上のとき、選択されたメモリセルが高抵抗状態ＨＲにあると判断し、出力Ａとして情報“０”を出力する。比較器１３５は、入力ａが入力ｂ未満のとき、選択されたメモリセルが低抵抗状態ＬＲにあると判断し、出力Ａとして情報“１”を出力する。
【０３１８】
出力Ａは、データレジスタ０３０がデータを取込みタイミングで、データレジスタ０３０に出力される。出力Ａは、データレジスタ０３０にラッチされる。
【０３１９】
以上のように、センスアンプ０１２は、選択されたメモリセルの抵抗値に応じてノードＣの電位の減衰時間が異なることを利用して、選択されたメモリセルの抵抗値情報を読み出す。その結果、センスアンプ０１２は、メモリセルの抵抗状態に応じたバイナリ値を出力Ａとして出力しうる。
【０３２０】
センスアンプ０１２は、より詳細な抵抗値情報に相当するカウント値を、出力Ｂとして出力してもよい。出力Ｂは、例えば、クロック周期の分解能で出力される。出力Ｂは、メモリセルの抵抗値と相関をもつ値である。出力Ｂは、物理量としてはメモリセルの両端電圧の放電時間を表す数値であるものの、メモリセルの抵抗値を示す情報である。出力Ｂは、書き込み回路０１１および論理制御回路０１０へと入力される。出力Ｂは、例えば、ベリファイ（Ｖｅｒｉｆｙ）動作（第１および第２動作例のＳＴＥＰ６参照）において用いられうる。
【０３２１】
なお、入力Ｃの値やカウンタ１３４、ラッチ１３８のホールド値は、図１５に例示された値に限定されるものでない。それらの値は、例えば、カウンタ１３４のカウントクロック周波数、キャパシタＣＣ２の容量、第１基準電位Ｖｒｅｆ１および第２基準電位Ｖｒｅｆ２、定電流源１２９の電流量、およびスイッチＳＷ４の状態、およびメモリセルの抵抗値のバラツキ等に応じて変動しうる。
【０３２２】
次に、読み出される抵抗値の測定範囲を変更する方法の一例について説明する。これにより、例えば、通常読み出しモードと特殊読み出しモードとで、読み出される抵抗値の測定範囲が切り替えられる。
【０３２３】
図１４に示されるセンスアンプ０１２において、定電流源１２９は、スイッチＳＷ４を介してノードＣに接続されている。定電流源１２９は、例えば、ｐチャネル型ＭＯＳＦＥＴを含んでもよいし、カレントミラー回路を含んでもよい。
【０３２４】
スイッチＳＷ４は、論理制御回路０１０からの入力Ｅがハイレベルの時にオンとなり、ローレベルの時にオフとなる。スイッチＳＷ４がオンのとき、ノードＣに一定の電流が供給される。このとき、キャパシタＣＣ２からの放電時間は長くなる。
【０３２５】
図１６は、図１４に示されるセンスアンプ０１２において、スイッチＳＷ４がオンの場合とオフの場合のノードＣを流れる電流値の変化を示す。図１６において、横軸はカウンタ１３４のカウント値を示し、縦軸は規格化セル電流値を示す。規格化セル電流値とは、選択されたメモリセルに対して所定の電圧を印加したときに当該メモリセルを流れる直流電流を規格化したものである。規格化セル電流値は、メモリセルの抵抗値の逆数に相当する。つまり、図１６は、センスアンプ０１２で読み出されるメモリセルの抵抗値情報と、当該メモリセルを実際に流れる電流量との相関関係を表す。
【０３２６】
カウント値とセル電流は、セル電流＝Ｃ１×ＴＣ２、Ｔ＝カウント値×クロック周期、Ｃ１、Ｃ２は定数、の関係を概ね満たす。図１６において、破線はスイッチＳＷ４がオフの場合のセル電流の時間変化を示し、実線はスイッチＳＷ４がオンの場合のセル電流の時間変化を示す。
【０３２７】
図１６に示されるように、スイッチＳＷ４がオフの場合、カウント値が２０から１００まで変化すると、セル電流値は約１０から１まで変化する。スイッチＳＷ４がオンの場合、カウント値が２０から１００まで変化すると、セル電流値は約１５から５まで変化する。
【０３２８】
すなわち、カウント値の測定範囲は、図１４に示されるスイッチＳＷ４によって、切り替えられる。具体的には、スイッチＳＷ４がオンのとき、センスアンプ０１２の測定範囲は、比較的低い抵抗値に相当する抵抗値情報を測定するために適した範囲に、設定されうる。これにより、センスアンプ０１２は、例えば、選択されたメモリセルの抵抗値が第１抵抗値範囲と第２抵抗値範囲のいずれの範囲内にあるかを、精度良く判定できる。これは、通常読み出しモードに相当する。
【０３２９】
一方、スイッチＳＷ４がオフのとき、センスアンプ０１２の測定範囲は、比較的高い抵抗値に相当する抵抗値情報を測定するために適した範囲に、設定されうる。これにより、センスアンプ０１２は、例えば、選択されたメモリセルの抵抗値が初期抵抗値範囲と第１抵抗値範囲のいずれの範囲内にあるかを、精度良く判定できる。これは、特殊読み出しモードに相当する。
【０３３０】
なお、読み出しの分解能は、スイッチＳＷ４のオンオフのみでなく、定電流源１２９の電流量、カウンタ１３４に入力されるクロックの周波数、第１基準電位Ｖｒｅｆ１および第２基準電位Ｖｒｅｆ２の大きさ、およびキャパシタＣＣ２の容量等によって調整されうる。例えば、クロックの周波数が増加すると、読み出しの分解能が上昇する。
【０３３１】
読み出しの測定範囲は、比較的高い抵抗値が短い時間で読み出されるように設定されてもよい。そのような設定は、例えば、第１基準電位Ｖｒｅｆ１および第２基準電位Ｖｒｅｆ２を大きくすること、定電流源１２９の電流を減らすこと、または、キャパシタＣＣ２の容量を減らすこと等によって実現されうる。逆に、読み出しの測定範囲は、比較的低い抵抗値が短時間で読み出されるよう設定されてもよい。そのような設定は、例えば、第１基準電位Ｖｒｅｆ１および第２基準電位Ｖｒｅｆ２を小さくすること、定電流源１２９の電流を増やすこと、または、キャパシタＣＣ２の容量を増やすこと等によって実現されうる。
【０３３２】
なお、第１基準電位Ｖｒｅｆ１が大き過ぎる場合、当該電位によって選択されたメモリセルの抵抗状態が変化するおそれがある。そのため、第１基準電位Ｖｒｅｆ１は、メモリセルの抵抗状態が変化しないように、所定の値以下の値に設定されうる。
【０３３３】
＜乱数生成回路＞
以下、本実施例に係る乱数生成回路の構成例について説明する。本実施例に係る乱数生成回路は、メモリセルアレイから１バイトデータを読み出し、読み出された１バイトデータとビット反転データとの中から最も出現頻度が低いものを選択し、これを出力する。ビット反転データとは、読み出された１バイトデータを構成している８個のビットのうちいずれか１つが反転されたデータである。
【０３３４】
図１７は、第１実施例の乱数生成回路の概略構成を示す回路図である。以下、図１７を参照しつつ、乱数生成回路０３８について説明する。
【０３３５】
図１７において、センスアンプ０１２は図１４を参照しつつ説明されたものと等しいので、その説明は省略される。図１７に示される乱数生成回路０３８は、センスアンプ０１２から８つの抵抗値情報を受け取り、８チャンネルＣＨ０〜ＣＨ７でこれらを並列処理して、乱数を生成する。
【０３３６】
揺らぎ読み出しモードにおいて、センスアンプ０１２は、選択されたメモリセルから、列選択回路００４を介して、抵抗値情報を取得する。例えば、８つのメモリセルから、８つの抵抗値情報が取得される。
【０３３７】
信号Ｒｒｅｎ１は、上述したように、１クロック幅のラッチタイミングを指示するパルスである。また、信号Ｒｒｅｎ２は、信号Ｒｒｅｎ１に対して１クロック分だけ遅延してラッチタイミングを指示するパルスである。信号Ｒｒｅｎ３は、信号Ｒｒｅｎ１に対して２クロック分だけ遅延してラッチタイミングを指示するパルスである。
【０３３８】
センスアンプ０１２および乱数生成回路０３８は、８チャンネルＣＨ０〜ＣＨ７の判定ブロック１５０を備える。図１７において、判定ブロック１５０は、破線で示されている。各チャンネルにおける判定ブロック１５０は、例えば、同一の回路を備えている。以下では１つのチャンネルＣＨ０について説明する。
【０３３９】
センスアンプ０１２内にあるラッチ１３８が、信号Ｒｒｅｎ１が指示するタイミングで、抵抗値情報をホールドする。センスアンプ０１２は、例えば、１つのメモリセルから抵抗値情報を複数回読み出す。これにより、１つのメモリセルの抵抗値の時間変化を反映した複数の抵抗値情報が取得される。ラッチ１３８は、読み出し動作の都度、信号Ｒｒｅｎ１が指示するラッチタイミングで、抵抗値情報を出力Ｂとして出力する。
【０３４０】
ラッチ１３９は、信号Ｒｒｅｎ１が指示するタイミングで、ラッチ１３８から出力された抵抗値情報をラッチする。すなわち、ラッチ１３９は、ラッチ１３８がホールドする抵抗値情報よりも１つ前に読み出された抵抗値情報をホールドする。ラッチ１３８からの抵抗値情報と、ラッチ１３９からの抵抗値情報とは、信号Ｒｒｅｎ１が指示するタイミングで、減算器に入力される。減算器は、ラッチ１３８からの抵抗値情報の値から、ラッチ１３９からの抵抗値情報を減算し、検出器１４１に出力する。言い換えると、減算器は、時間的に前後関係にある２つの抵抗値情報の差を求める。
【０３４１】
図１７中に、検出器１４１の論理表が示される。該論理表に示す通り、検出器１４１は、入力が０より大きければ“１”を出力し、入力が０より小さければ“−１”を出力し、入力が０と等しければ“０”を出力する。検出器１４１からの出力は、０／１判定器１４２に、入力Ｙとして入力される。
【０３４２】
０／１判定器１４２には、後述するラッチ１４０からの出力が入力Ｘとして入力される。図１７中に、０／１判定器１４２の論理表が示される。０／１判定器１４２は、入力Ｙが“１”のとき“１”を出力し、入力Ｙが“−１”のとき“０”を出力する。また、０／１判定器１４２は、入力Ｙが“０”のとき入力Ｘをそのまま出力してもよい。例えば、０／１判定器１４２は、入力Ｙが“０”のとき、０／１判定器１４２の前回の出力がＸＯＲ回路での演算を経てラッチ１４０にラッチされた値を、今回の出力として出力してもよい。
【０３４３】
０／１判定器１４２からの出力Ｓは、ＸＯＲ回路に入力される。また、ビット反転データバスの最下位ビットから最上位ビットの値は、それぞれ、入力ｂ０から入力ｂ７として、ＸＯＲ回路に入力される。ＸＯＲ回路は、０／１判定器１４２からの出力Ｓと、ビット反転データバスからのビット値との排他的論理和（ＸＯＲ）を求め、これをラッチ１４０に出力する。
【０３４４】
ラッチ１４０は、ＸＯＲ回路からの入力を、信号Ｒｒｅｎ２が指示するタイミングでラッチする。８つのチャンネルＣＨ０〜ＣＨ７における８つのラッチ１４０の出力は、８ビットのデータとして、データバスＢにまとめられる。このとき、チャンネルＣＨ０のラッチ１４０からの出力は、当該データの最下位ビットとなり、チャンネルＣＨ７のラッチ１４０からの出力は、当該データの最上位ビットとなる。また、８つのチャンネルＣＨ０〜ＣＨ７における８つの０／１判定器１４２の出力Ｓは、８ビットのデータバスＡにまとめられる。
【０３４５】
破線１５１で囲まれたブロックは、データパターンカウント部１５１を示す。データパターンカウント部１５１は、データバスＢから１バイトデータが入力される毎に、そのデータが示す値が入力された回数をカウントアップする。
【０３４６】
データバスＢのデータは、２５６個の等号演算器１４３に入力される。２５６個の等号演算器１４３は、入力された８ビットの値が、００ｈ、０１ｈ、０２ｈ・・・・ＦＤｈ、ＦＥｈ、ＦＦｈ（１６進表記）のいずれと等しいかを判定する。各等号演算器１４３は、入力されるデータバスＢの１バイトデータが、自身の保有する値と等しいか否かを判定する。その結果、等号演算器１４３は、それらの値が等しい場合には“１”を出力し、等しくない場合には“０”を出力する。２５６個のアップカウンタ１４４には、２５６個の等号演算器１４３からの出力が、それぞれ入力される。各アップカウンタ１４４は、信号Ｒｒｅｎ３が指示するタイミングにおいて入力が“１”であるときに、カウントアップする。
【０３４７】
破線１５２で囲まれたブロックは、１ビット反転データ生成部１５２を示す。８個のＸＯＲ回路１４５は、データバスＡを介して入力される１バイトデータと、固定の１バイトデータとの間で、ビットごとの排他的論理和を求める。８個のＸＯＲ回路１４５に入力される固定の１バイトデータは、それぞれ、０１ｈ、０２ｈ、０４ｈ、０８ｈ、１０ｈ、２０ｈ、４０ｈ、８０ｈ（１６進表記）で表される。これにより、データバスＡを介して入力される１バイトデータを構成する８つのビットのうち、最下位ビットから最上位ビットまでのいずれか１ビットだけが反転された、８種の互いに異なる１ビット反転データが生成される。
【０３４８】
１ビット反転データ生成部１５２は、９個の選択回路（ＭＵＸ）１４６を備える。各ＭＵＸ１４６は、チャンネル選択ポートと、２５６個の入力チャンネルポートを持つ。各ＭＵＸ１４６は、入力チャンネルポートを介して、データパターンカウント部１５１内の２５６個のアップカウンタ１４４から、カウント値が入力される。９個のＭＵＸ１４６のうち８個には、チャンネル選択ポートを介して、対応する８個のＸＯＲ回路１４５から、８種の１ビット反転データがそれぞれ入力される。残りの１個には、チャネル選択ポートを介して、データバスＡからの１バイトデータが直接入力される。各ＭＵＸ１４６は、チャンネル選択ポートを介して入力されたデータに対応するアップカウンタ１４４のカウント値を、チャンネルＤＴ０〜ＤＴ８から出力する。
【０３４９】
すなわち、データバスＡの１バイトデータのデータパターン、および、該１バイトデータから生成された８種の１ビット反転データの各データパターンのそれぞれに対する現時点までの出現回数が、各ＭＵＸ１４６から出力される。
【０３５０】
１ビット反転データ生成部１５２は、ビット反転マスク生成回路１４７（図１７ではＭＩＮと表示）を備える。ビット反転マスク生成回路１４７は、チャンネルＤＴ０〜ＤＴ８から入力されるカウント値のうち最小のものを抽出し、それに対応するビット反転マスク信号を出力する。ビット反転マスク信号は、８つの判定ブロック１５０から出力される１バイトデータの何番目のビットを反転させるか、あるいは、いずれのビットも反転させないかを指示する。例えば、ビット反転マスク生成回路１４７は、チャンネルＤＴ０、ＤＴ１、ＤＴ２、ＤＴ３、ＤＴ４、ＤＴ５、ＤＴ６、ＤＴ７、ＤＴ８を選択するときに、ビット反転マスク信号として００ｈ、０１ｈ、０２ｈ、０４ｈ、０８ｈ、１０ｈ、２０ｈ、４０ｈ、８０ｈを、それぞれ出力する。
【０３５１】
なお、チャンネルＤＴ０〜ＤＴ８から入力されるカウント値のうち最小となるものが複数あるとき、ビット反転マスク生成回路１４７は、それらのいずれかに対応するビット反転マスク信号を出力してもよい。チャンネルＤＴ０〜ＤＴ８に入力されカウント値のうち最小となるものが複数あり、かつ、それらの中にチャンネルＤＴ０から入力されたカウント値が含まれるとき、例えば、ビット反転マスク生成回路１４７は、チャンネルＤＴ０を優先的に選択してもよい。チャンネルＤＴ０〜ＤＴ８に入力されカウント値のうち最小となるものが複数あるとき、ビット反転マスク生成回路１４７は、前回選択されたチャンネルとは異なるチャンネルを選んでもよい。これにより、選択チャンネルが偏らない。このように、１ビット反転データ生成部１５２は、新たに得られた１バイトデータが、８種の１ビット反転データの何れよりも出現頻度が少ないか否かを判定する。８種の１ビット反転データのいずれかの出現頻度が、元の１バイトデータの出現頻度よりも少ない場合、０／１判定器１４２の出力が修正される。
【０３５２】
具体的には、０／１判定器１４２からの出力と、ビット反転マスク生成回路１４７からの出力との間の排他的論理和（ＸＯＲ）が、ラッチ１４０に入力される。例えば、チャンネルＣＨ０〜ＣＨ８で生成される１バイトデータのうち１ビット目が反転される場合、ビット反転マスク生成回路１４７は、ビット反転マスク信号として０１ｈを出力する。その結果、チャンネルＣＨ０の判定ブロック１５０内のＸＯＲ回路に、ビット反転データバスからの“１”が、入力ｂ０として入力される。その結果、ＸＯＲ回路は、０／１判定器１４２から入力Ｓを反転され、これがラッチ１４０にラッチされる。一方、１バイトデータの１ビット目が反転されない場合には、ＸＯＲ回路に、“０”が入力ｂ０として入力され、０／１判定器１４２の出力がそのままラッチ１４０にラッチされる。
【０３５３】
このように、データパターンカウント部１５１と１ビット反転データ生成部１５２とは、乱数評価回路を成している。この乱数評価回路は、１バイトデータの出現パターンに偏りが発生しないように、０／１判定器１４２の判定結果を補正する。この補正により、読み出された１バイトデータと、８種の１ビット反転データとのうち、最も出現頻度が低いデータが出力される。
【０３５４】
８個のメモリセルの抵抗値情報がそれぞれ２０００回ずつ読み出され、この抵抗値情報が図１７に示される乱数生成回路０３８に入力され、乱数データが生成された。この乱数データは、１６Ｋｂｉｔのビットストリームデータであった。表３は、これにより得られた乱数が前述したＮＩＳＴ  ＳＰ８００−２２に基づいて検定された結果を示す。
【０３５５】
【表３】
2015212933.tif 000005
【０３５６】
表３が示すように、当該乱数は、全ての検定項目を合格（Ｐａｓｓ）している。よって、第１実施例の乱数処理装置は、暗号に用いるための乱数を生成する装置として充分な性能を有する。
【０３５７】
このように、第１実施例の乱数処理装置は、抵抗変化素子の抵抗値の変動を用いてデバイス固有の物理乱数を高品位に生成できる。
【０３５８】
たとえば、特許文献１に示される従来技術において、物理乱数を生成するために、ソース‐ドレイン間電流の変動がマルチバイブレータ回路で増幅されていた。このような乱数生成装置は、回路規模の小型化と、乱数生成の高速化との両立が難しい。例えば、並列処理で乱数を生成しようとすると、マルチバイブレータ回路等が複数必要となり、回路規模の増大を招いてしまう。あるいは、特許文献２に示されるように、１チャンネルのみで乱数が生成される場合、乱数生成スピードが遅くなる。例えば、乱数生成スピードが２５０Ｋｂｐｓの場合、２５６バイトの暗号用の鍵データを得るために８ｍＳｅｃも時間を要する。
【０３５９】
一方、第１実施例のように、乱数処理装置が通常書き込みモードおよび通常読み出しモードを実行可能な場合、すなわち、乱数処理装置が不揮発性記憶装置としても機能する場合、不揮発性記憶装置のセンスアンプが、乱数処理装置のセンスアンプとして共用されうる。例えば、暗号データの通信および記憶が可能なコントローラＬＳＩは、典型的に、不揮発性記憶装置が搭載される。この不揮発性記憶装置は、センスアンプを備え、このセンスアンプは抵抗値の揺らぎを増幅することができる。そのため、乱数処理装置は、このセンスアンプを流用することができる。言い換えると、乱数処理装置は、典型的な不揮発性記憶装置が備えるセンスアンプ以外に、乱数処理用のセンスアンプを別個に備えなくてもよい。加えて、乱数生成回路は、例えばロジック回路であり、これはアナログのセンスアンプよりも十分に小さい。このような構成により、乱数処理装置は小型化されうる。
【０３６０】
不揮発性記憶装置のセンスアンプは、典型的に、複数のメモリセルの抵抗値を並列処理で読み出すことができる。第１実施例では、この複数の抵抗値情報が、複数のチャンネルの乱数生成回路に入力される。これにより、複数ビットからなる乱数データが高速で生成されうる。第１実施例の乱数処理装置は、例えば、１回の読み出しを２μＳｅｃで行い、かつ、８ビットの並列処理で乱数を生成できる。これにより、第１実施例の乱数処理装置は、従来技術に比して、高速に乱数データを生成することができる。なお、抵抗値の揺らぎを読み出す時間間隔は、揺らぎの特性に応じて適宜調整されうる。揺らぎの特性は、揺らぎ書き込みモードの書き込み条件によって、適宜調整されうる。
【０３６１】
＜他の乱数生成回路＞
図１７を参照しながら説明された乱数評価回路は一例である。乱数評価回路として、別の方式が用いられてもよい。例えば、乱数評価回路は、所定数のデータに含まれる“１”と“０”の数がほぼ同数になるように、０／１判定器の出力Ｓを補正してもよい。乱数評価回路は、所定数のデータに含まれる“１”の連続数の出現頻度が所定の分布を満たすように、０／１判定器の出力Ｓを補正してもよい。あるいは、図１７に示される乱数評価回路は、検出器１４１が“０”を出力するときのみ、０／１判定器の出力Ｓを補正してもよい。これにより、抵抗変化素子の物理的な抵抗値の変動がより反映された乱数データが生成されうる。
【０３６２】
＜特殊書き込みモードの第１動作例＞
特殊書き込みモードの動作例を説明する。ここでは、乱数処理装置が第１実施例で示される構成を備える場合について例示される。ただし、他の装置構成においても同様の動作が可能である。
【０３６３】
特殊書き込みモードは、例えば、行選択回路００３と、列選択回路００４と、アドレスレジスタ００９と、書き込み回路０１１と、センスアンプ０１２と、制御回路群０１３と、データレジスタ０３０と、Ｃａｓｈｅレジスタ０３１と、特殊データレジスタ０３２と、切替え回路０３７とにより実行されうる。なお、他のモードも、同様の構成により実行されうる。
【０３６４】
抵抗変化素子１２０は、例えば、図３に示される特性を有する。具体的には、第１電極１２４を基準として、第２電極１２８に、電圧が＋２．４Ｖ、パルス幅が５０ｎＳｅｃの電気的信号が印加されると、抵抗変化素子１２０の抵抗値が第２抵抗値範囲から第１抵抗値範囲へと変化する。第１電極１２４を基準として、第２電極１２８に、電圧が−２．４Ｖ、パルス幅が５０ｎＳｅｃの電気的信号が印加されると、抵抗変化素子１２０の抵抗値が第１抵抗値範囲から第２抵抗値範囲へと変化する。言い換えると、抵抗変化素子１２０は、±２．４Vの電気的信号を印加することで、第１抵抗値範囲と第２抵抗値範囲とを可逆的に遷移する、バイポーラ特性を有する。特殊書き込みモードにおいて、例えば、電圧の絶対値が３Ｖであり、パルス幅が１μＳｅｃの電気的ストレスが、初期状態の抵抗変化素子１２０に印加される。この電気的ストレスの印加によって抵抗変化素子１２０が可変状態に変化しなかった場合、電気的ストレスが抵抗変化素子１２０に再度印加される。例えば、この電気的ストレスは、例えば、先に印加された電気的ストレスに比べて、電圧の絶対値が０．１Ｖ大きく、パルス幅が５倍である。この処理が繰り返されことによって、各抵抗変化素子１２０に累積的に電気的ストレスが印加される。そして、各抵抗変化素子１２０が可変状態に変化すると、フォーミング処理が完了する。
【０３６５】
図１８は、特殊書き込みモードの第１動作例を示すフローチャートである。図１８においては、入力されたデータがメモリセル９１に書き込まれる場合が想定されている。なお、可変状態への変化のランダム性によって乱数データが生成され、かつ書き込まれる場合においても、書き込むべきデータが予め決まっていないこと以外は、同様に説明されうる。
【０３６６】
ＳＴＥＰ１において、書き込みコマンドと、データを書き込むべきアドレス、書き込むべきデータが乱数処理装置１００の外部から入力される。なお、可変状態への変化のランダム性によって乱数データが生成され、かつ書き込まれる場合、書き込むべきデータは入力されず、データを書き込むべきアドレスの替わりに乱数データが生成される領域を示すアドレスが入力される。
【０３６７】
ＳＴＥＰ２において、ＳＴＥＰ１で入力された書き込みコマンドが第１書き込みコマンドであるか否かが判定される。ＳＴＥＰ２の判定結果がＮＯであれば処理が中止される。
【０３６８】
ＳＴＥＰ２の判定結果がＹＥＳであれば、ＳＴＥＰ３に進む。ＳＴＥＰ３において、ＳＴＥＰ１で入力されたアドレスのメモリセル９１が選択され、入力されたデータに応じて、初期状態のまま維持すべきメモリセルに電気的ストレスが印加されないようにマスクが施される。初期状態のまま維持すべきメモリセルは、例えば、書き込むべきデータの“０”に対応する。
【０３６９】
ＳＴＥＰ４において、選択されたメモリセルのうちマスクされていないメモリセル、つまり初期状態から可変状態へと変化させるべきメモリセルに対して、電気的ストレスが印加される。電気的ストレスの電圧の初期値は３Ｖ、パルス幅の初期値は１μＳｅｃとする。この電気的ストレスは、フォーミングストレスの少なくとも一部である。初期状態から可変状態へと変化させるべきメモリセルは、例えば、書き込むべきデータの“１”に対応する。
【０３７０】
ＳＴＥＰ５において、センスアンプ０１２は、フォーミング判定用の読み出しモードに設定される。例えば、図１４のスイッチＳＷ４がオフとなり、測定範囲が高抵抗側に設定される。
【０３７１】
ＳＴＥＰ６において、センスアンプ０１２のカウンタ１３４がホールドするカウント値が４０未満であるか否か、および電気的ストレスの印加回数が５回を超えているか否かが判定される。ＳＴＥＰ６の判定結果のいずれかがＹＥＳであれば処理が終了する（エンド）。
【０３７２】
ＳＴＥＰ６の判定結果のいずれもがＮＯであれば、ＳＴＥＰ７において、直前に印加した電気的ストレスに対して、電圧が０．１Ｖ増加され、パルス幅が５倍増加された新たな電気ストレスが設定される。そして、ＳＴＥＰ４に戻って新たな電気的ストレスがメモリセルに印加される。このようにして、初期状態から可変状態へと変化させるべきメモリセルが可変状態へ変化するまで、ＳＴＥＰ４〜ＳＴＥＰ７が繰り返される。なお、図１８に示す例では、電気的ストレスの印加回数に上限が設けられている。これにより、無限ループが防止される。
【０３７３】
電気的ストレスの印加回数の上限を超えても、メモリセルが可変状態に変化しない場合、当該メモリセルが不良セルと判断され、エラーログが出力されてもよい。図１８に示されるフローが、複数ビットに対して並列で実行される場合、ＳＴＥＰ６の判定結果がＹＥＳになるまでに電気的ストレスが印加される回数は、ビット毎に異なる。そのため、ＳＴＥＰ６の判定結果がＹＥＳになったメモリセルは、それ以降の電気的ストレスの印加を禁止するマスクが施されてもよい。この場合、例えば、並列処理されるメモリセルの全てについてＳＴＥＰ６の判定結果がＹＥＳになったときにフローが終了する。
【０３７４】
図１９は、図１８に示す特殊書き込みモードで書き込まれたデータを、特殊読み出しモードで読み出した結果の一例を示す。図２０は、図１８に示す特殊書き込みモードで書き込まれたデータを、通常読み出しモードで読み出した結果の一例を示す。図１９および図２０は、特殊書き込みモードで０〜Ｆ（１６進表記）までの値が書き込まれたメモリセル群を、特殊読み出しモードおよび通常読み出しモードでそれぞれ読み出した結果を示している。
【０３７５】
図１９および図２０に示される例において、特殊読み出しモードと通常読み出しモードとの間では、クロック周波数、読み出し電圧、第２基準電位Ｖｒｅｆ２および判定時間を同一とし、スイッチＳＷ４のオンオフのみを異ならせている。
【０３７６】
スイッチＳＷ４のオンオフが異なると、定電流源からノードＣに供給される電流量が異なり、ノードＣの電位が減衰するまでのカウント値が異なる。そのため、スイッチＳＷ４のオンオフが異なると、抵抗値とカウント値とを対応付ける係数（例えば、上述の定数Ｃ１、Ｃ２）が異なる。そのため、特殊読み出しモードと通常読み出しモードとで、同じ判定値に基づいてカウント値が判定された場合であっても、実質的には、異なる判定値に基づいて抵抗値が判定されたことになる。言い換えると、特殊読み出しモードにおける読み出しは、第１閾値を用いた読み出しであり、通常読み出しモードにおける読み出しは、第１閾値とは異なる第２閾値を用いた読み出しである。
【０３７７】
図１９および図２０において、左側の４列に示されるカウント値は、図１４のカウンタ１３４がホールドした値を示す。各カウント値は判定値の４０と比較され、判定値よりも大きいビットは“０”が割り当てられ、小さいビットは“１”が割り当てられた。これにより得られた４ビットの値が、図１９および図２０の右側の１列に、１６進表記で示されている。なお、カウンタ１３４の上限値は２５５であり、それより大きな値は制限されている。
【０３７８】
図１９に示されるように、メモリセル群が特殊読み出しモードで読み出された場合、フォーミングが完了していないメモリセルは、全て２５５の最大値を示し、フォーミングが完了したメモリセルは９〜１０の値を示した。これらを判定して得られる４ビットの値は、１６進表記で０からＦまでの所定の値であった。
【０３７９】
図２０に示されるように、メモリセル群が通常読み出しモードで読み出された場合、大部分のカウント値は上限値である２５５を示した。また、これらを判定して得られる４ビットの値の大半は０であった。このように、特殊書き込みモードで書き込まれたデータは、特殊読み出しモードによってのみ、正確に読み出される。なお、フォーミングが完了したメモリセルでもカウント値が大きくばらついているのは、フォーミングが完了したメモリセルの抵抗値が、そのままの状態では、第１抵抗値範囲内にも、第２抵抗値範囲内にも入りうるためである。
【０３８０】
上記の動作例では、初期状態のメモリセルの抵抗値が可変状態のメモリセルの抵抗値よりも高い例について説明した。しかし、初期状態のメモリセルの抵抗値が可変状態のメモリセルの抵抗値よりも低い場合でも、判定の方法および印加するパルスの極性および電圧等を適宜に変更することで、同様の動作が可能である。
【０３８１】
＜特殊書き込みモードの第２動作例＞
図２１は、特殊書き込みモードの第２動作例を示すフローチャートである。第２動作例において、特殊書き込みモードにおいて初期状態から可変状態に変化したメモリセルのうち、一部のメモリセルの抵抗値が第２抵抗値範囲内に設定され、他部のメモリセルの抵抗値が第１抵抗値範囲内に設定される。例えば、それらは、ランダムに振り分けられる。かかる方法では、特殊書き込みモードで書き込まれたメモリセルが通常読み出しモードで読み出されたときに、何らかのデータが記憶されているかのように見せかけることができる。
【０３８２】
図２１において、図１８を参照しながら説明された第１動作例とＳＴＥＰの番号が等しいものは、第１動作例で説明した動作と同じとすることができるので説明を省略する。
【０３８３】
ＳＴＥＰ６の判定結果がＹＥＳの場合、例えば、メモリセルの抵抗値は第１抵抗値範囲に達している。このとき、ＳＴＥＰ１０においてランダム値が生成され、ＳＴＥＰ１１において、そのランダム値が“０”であるか“１”であるかが判定される。ランダム値が“０”の場合、そのまま何もせずにＳＴＥＰ８に移行して処理が終了する。ランダム値が“１”の場合、ＳＴＥＰ１２において、メモリセルに対して低抵抗化パルスが印加され、メモリセルの抵抗値が第２抵抗値範囲へと低下する。その後、ＳＴＥＰ８に移行して処理が終了する。
【０３８４】
かかる動作により、可変状態へ変化したメモリセルの抵抗値がランダムに第２抵抗値範囲内に入る。よって、当該データが通常読み出しモードで読み出されたときに、全ビットがゼロとなるような固定のデータパターンは出力されない。そのため、特殊書き込みモードでデータが書き込まれている領域の特定が回避され、データの秘匿効果が更に向上できる。
【０３８５】
書き込むべきデータによっては、“１”の割合が非常に少量の場合がある。この場合、ＳＴＥＰ１２が実行されると、逆に秘匿データが盗み読みされるリスクが増加しうる。従って、書き込むべきデータに応じて、ＳＴＥＰ１２の処理に制限が設けられてもよい。
【０３８６】
上記の動作例では、初期状態のメモリセルの抵抗値が可変状態のメモリセルの抵抗値よりも高い例について説明した。しかし、初期状態のメモリセルの抵抗値が可変状態のメモリセルの抵抗値よりも低い場合でも、判定の方法および印加するパルスの極性および電圧等を適宜に変更することで、同様の動作が可能である。
【０３８７】
［第２実施例］
第２実施例の乱数処理方法は、０より大きく１未満である係数を累積値に掛けて得られる値を新たな抵抗値情報として出力するステップと、抵抗値情報から新たな抵抗値情報を差し引いた値に累積値を加えた値を新たな累積値として記憶するステップと、これらのステップを繰り返して得られる複数の新たな抵抗値情報を用いて乱数データを生成するステップと、を含む。
【０３８８】
第１実施例の乱数処理装置は、表３に示されるように、１６Ｋｂｉｔの高品位な乱数を生成しうる。しかし、第１実施例において、例えば、ビット数が１Ｍｂｉｔのとき、離散フーリエ変換検定の結果が不合格（Ｆａｉｌ）となる場合がある。この結果が表４に示される。
【０３８９】
【表４】
2015212933.tif 000006
【０３９０】
すなわち、第１の実施例の乱数処理装置は、ビット数の小さい乱数を高品質に生成できるが、ビット数の大きい乱数を高品質に生成できないおそれがある。
【０３９１】
図２２は、第１実施例で得られたビット数の大きい乱数データを、離散フーリエ変換した結果を示す。図２２中の点線で囲まれる領域に示されるように、高周波成分のレベルは、低周波成分のレベルよりも大きくなっている。つまり、第１実施例は、ビットストリームにおいて、“０”と“１”の間の変化が短周期で発生しやすいと考えられる。これは、第１実施例の乱数処理装置が、一つ前に読み出した抵抗値情報と現在の抵抗値情報との差分を抽出する微分回路を備えることに起因すると推察される。第２実施例は、かかる課題を解決するものである。
【０３９２】
図２３は、第２実施例の判定ブロックの概略構成を示す回路図である。以下、第２実施例の回路構成を、図２３を参照しつつ説明する。
【０３９３】
第２実施例の乱数処理装置は、図１７に示される第１実施例の判定ブロック１５０を、図２３に示される判定ブロック１６５に置き換えたものである。第２実施例の乱数処理装置における判定ブロック以外の構成は、第１実施例と同じである。よって、第１実施例と第２実施例とで共通する構成要素については同一の符号および名称が付され、詳細な説明が省略される。
【０３９４】
図２３に示されるように、判定ブロック１６５は、抵抗値情報の低周波数変動分を抽出する積分回路１６０を備える。積分回路１６０は、ローパスフィルタとも呼ばれる。判定ブロック１６５は、第１実施例（図１７）の検出器１４１の替わりに、積分回路１６０からの出力が入力される検出器１６３（ＤＥＴｂ）を備える。以下、その動作を説明する。
【０３９５】
センスアンプ０１２および乱数生成回路０３８は、８チャンネルＣＨ０〜ＣＨ７の判定ブロック１６５を備える。各チャンネルにおける判定ブロック１６５は、例えば、同一の回路を備えている。以下では、図２３に示される１つのチャンネルＣＨ０について説明する。
【０３９６】
ラッチ１３８およびラッチ１３９は、第１実施例と同様に、信号Ｒｒｅｎ１が指示するタイミングで、それまでホールドしていた抵抗値情報を出力Ｂとして出力し、かつ、新たな抵抗値情報をホールドする。
【０３９７】
減算器は、第１実施例と同様に、ラッチ１３８からの抵抗値情報の値から、ラッチ１３９からの抵抗値情報を減算し、これを検出器１６３に出力する。
【０３９８】
積分回路１６０において、信号Ｒｒｅｎ１が指示するタイミングで、以下の一連の演算が行われて、ラッチ１６１にホールドされる値が更新される。まず、ラッチ１６１の出力に対して係数乗算器１６２の指定する所定の係数が乗算される。次いで、ラッチ１３８の出力Ｂから当該乗算値が減算される。次いで、当該減算値とラッチ１６１の出力とが加算される。最後に、当該加算値がラッチ１６１に新たにラッチされる。なお、図２３に示される例において、係数乗算器１６２の指定する所定の係数は、１／４である。
【０３９９】
検出器１６３は、減算器の出力が入力Ｄとして入力され、積分回路１６０の出力が入力Ｔとして入力され、ラッチ１３８の出力Ｂが入力Ｒとして入力される。
【０４００】
図２３中に、検出器１６３の論理表が示される。検出器１６３において、入力Ｄが０より大きく、かつ、入力Ｒが入力Ｔよりも大きければ、“１”を出力し、入力Ｄが０より小さく、かつ、入力Ｒが入力Ｔよりも小さければ“−１”を出力し、それ以外では“０”を出力する。
【０４０１】
検出器１６３からの出力は、０／１判定器１４２に、入力Ｙとして入力される。０／１判定器１４２以降の動作は、図１７において説明されたものと等しい。以上の構成により、判定ブロック１６５は、抵抗値情報の変化における高周波成分の偏重を抑制しうる。
【０４０２】
図２４は、第２実施例で生成された乱数データを離散フーリエ変換した結果を示す。図２４に示されるように、高周波成分への偏りが解消され、全帯域において均一な周波数特性が得られていた。表５は、第２実施例で得られた１Ｍｂｉｔの乱数データを検定した結果を示す。当該乱数データは、離散フーリエ変換検定を合格（Ｐａｓｓ）している。よって、第２実施例の乱数処理装置は、ビット数の大きい、高品質な乱数を生成できる。
【０４０３】
【表５】
2015212933.tif 000007
【０４０４】
なお、第２実施例と第１実施例とは、組み合わせて実施されてもよい。
【０４０５】
［センスアンプの調整］
センスアンプが取得することができる抵抗値情報は、上限値と下限値とを有する。例えば、図１４に示されるカウンタ１３４は、カウント値の上限値と下限値とを有する。これは、メモリセルの抵抗値において、センスアンプがその抵抗値の差異を検出できるような所定の範囲が存在することを意味する。そのため、例えばメモリセルの抵抗値がこの範囲の上限値よりも大きいかったり、下限値よりも小さかったりすると、センスアンプはこの抵抗値情報の変化を読み取れない。
【０４０６】
従って、乱数データの生成動作の前に、センスアンプで読み出し可能な抵抗値の範囲が調整されてもよい。これは、定電流源１２９の電流量、第１基準電位Ｖｒｅｆ１、第２基準電位Ｖｒｅｆ２、およびキャパシタＣＣ２の容量等によって調整されうる。
【０４０７】
［メモリセルの抵抗状態と得られる乱数データ］
本発明者は、第２実施例の乱数処理方法で生成された種々の乱数データを検定し、それらの乱数データにおいて次の特徴を見出した。この特徴は、第２実施例の乱数処理方法で生成された乱数データに限らず、本実施形態の乱数処理方法で生成された乱数データに共通すると考えられる。
【０４０８】
高抵抗状態にあるメモリセルから読み出された抵抗値情報に基づいて生成された乱数は、低抵抗状態にあるメモリセルから読み出された抵抗値情報に基づいて生成された乱数に比べて、高いランダム性を有しうる。これは次の理由によるものと推察される。高抵抗状態にあるメモリセルは、低抵抗状態にあるメモリセルに比べてフィラメントパスの本数が少なく、フィラメントの径が細い。そのため、フィラメントに局所的な接合や断絶がわずかに発生した場合であっても、それがメモリセルの抵抗値の変化に与える影響が大きくなりうる。すなわち、高抵抗状態にあるメモリセルは、抵抗値の大きさに対する抵抗値揺らぎの変動量が大きい。そのため、高抵抗状態にあるメモリセルから取得された抵抗値情報は、ランダムな揺らぎが反映されたものになりやすい。したがって、高抵抗状態にあるメモリセルを用いて生成された乱数は、高いランダム性を有しうる。
【０４０９】
抵抗値揺らぎの変動量が大きい場合、乱数が所望のランダム性を満たす限りにおいて、例えば、抵抗値情報を取得する際のサンプリングの分解能が低く設計されてもよい。これにより、例えば、回路規模の削減や低消費化が実現されうる。
【０４１０】
なお、通常読み出しモードによってメモリセルが高抵抗状態であることが確認された後に、当該メモリセルを用いて乱数データが生成されてもよい。あるいは、通常書き込みモードによってメモリセルが高抵抗状態に設定された後に、当該メモリセルを用いて乱数データが生成されてもよい。
【０４１１】
低抵抗状態にあるメモリセルから取得される抵抗値情報は、高抵抗状態にあるメモリセルから取得される抵抗値情報よりも、誤差が少ない。例えば、図１４に示されるセンスアンプ０１２において、抵抗値が小さいメモリセルの方が、メモリセルを流れる読み出し電流の電流量が大きい。そのため、低抵抗状態のメモリセルの抵抗値の変動は、大きな電流量の変化として現れる。そのため、読み出しエラーが発生する可能性が低減されうる。したがって、例えば高温時にセンスアンプ内にリーク電流が発生しても、その影響を受けずに抵抗値情報が取得されうる。その結果、低抵抗状態にあるメモリセルを用いて生成される乱数データは、装置周辺温度が高温な環境下でも良好なランダム性を有しうる。
【０４１２】
なお、通常読み出しモードによってメモリセルが低抵抗状態であることが確認された後に、当該メモリセルを用いて乱数データが生成されてもよい。あるいは、通常書き込みモードによってメモリセルが低抵抗状態に設定された後に、当該メモリセルを用いて乱数データが生成されてもよい。
【０４１３】
なお、乱数データを生成するためのメモリセルは、乱数生成のための専用のメモリセルでなくてもよい。例えば、データ記憶用のメモリセルを用いて乱数が生成されてもよい。乱数生成のための領域とデータ記憶用の領域とが共用される場合、メモリ容量が節約され、回路規模の増大が抑制されうる。この場合、例えば、乱数生成前に、メモリセルに記憶されているデータを一時記憶用のメモリに退避させ、乱数生成後に、これをメモリセルに書き戻してもよい。さらに、データを一時的に退避させた後で、メモリセルが、乱数生成に適した所定の抵抗状態に書き換えられてもよい。
【０４１４】
［書き込み条件の調整］
メモリセルの抵抗値が、センスアンプがその抵抗値の差異を検出できるような所定の範囲に入るように、当該メモリセルへの書き込み条件が調整されてもよい。書き込み条件とは、例えば、パルス電圧やパルス幅である。
【０４１５】
図２５は、メモリセルの抵抗値と、その変動量との関係を示す。横軸はｎ回目に読み出された抵抗値を示し、縦軸はｎ＋１回目に読み出された抵抗値を示す。図２５は、メモリセルからｎ回目に読み出された抵抗値と、当該メモリセルからｎ＋１回目の読み出された抵抗値とがどの程度変化するかを表している。図２５中の１点鎖線は、ｎ回目の読み出しとｎ＋１回目の読み出しとで抵抗値の変化がない場合の基準線を示す。各データ点、基準線から外れるほど、ｎ回目の読み出しとｎ＋１回目の読み出しとで抵抗値の変化が大きい。なお、抵抗変化素子の構成は、図３において説明されたものと同一であった。
【０４１６】
図２５に示されるように、閾値αと閾値βとの間では、それ以外に比べて、抵抗値の変動がより大きい。抵抗値の変動が大きいことは、メモリセルに情報が保存される場合には問題となる。しかし、抵抗値の変動が大きいことは、乱数データの生成にとっては有利である。
【０４１７】
よって、例えば、低抵抗状態に“１”を、高抵抗状態に“０”を割り当てることによってデータが記録される場合、低抵抗状態のメモリセルの抵抗値が閾値α未満となり、高抵抗状態のメモリセルの抵抗値が閾値β以上となるように設定される。閾値αは、本開示における第２基準値の一例である。閾値βは、本開示における第１基準値の一例である。例えば、低抵抗状態とすべきメモリセルは、低抵抗化電圧が印加された後、その抵抗値が閾値α未満であることが確認（ｖｅｒｉｆｙ）される。高抵抗状態とすべきメモリセルは、高抵抗化電圧が印加された後、その抵抗値が閾値β以上であることが確認（ｖｅｒｉｆｙ）される。これにより、低抵抗状態と高抵抗状態の間に十分なマージンが確保されうる。
【０４１８】
なお、通常読み出しモードにおいて、メモリセルの抵抗値が低抵抗状態にあるか高抵抗状態にあるかを判定するための第２閾値は、例えば、閾値αと閾値βの中央値に設定される。つまり、通常読み出しモードにおいて、読み出された抵抗値が第２閾値以上であれば高抵抗状態と判定され、第２閾値より小さければ低抵抗状態と判定される。
【０４１９】
乱数生成用のメモリセルとして、抵抗値が、閾値αと閾値βとの間に設定されてもよい。閾値α以上、閾値β未満の範囲は、本開示における第３抵抗値範囲の一例である。例えば、揺らぎ書き込みモードにおいて、メモリセルの抵抗値が第３抵抗値範囲に収まるように設定されてもよい。これにより、抵抗値変動から乱数データが抽出されやすくなる。
【０４２０】
例えば、抵抗値が閾値αであるときのカウンタ１３４のカウント値がα’であり、抵抗値が閾値βであるときのカウント値がβ’であるとき、カウント値が、閾値α’より大きく閾値β’より小さい範囲になるように、書き込み条件が調整されてもよい。
【０４２１】
例えば、選択されたメモリセルに低抵抗化パルスが印加された後、当該メモリセルに高抵抗化パルスよりも低いエネルギーの電気的パルスが印加されてもよい。さらに、当該メモリセルに、徐々にエネルギーが高くなる複数の電気的パルスが印加されてもよい。抵抗値情報が所望の範囲に入れば、印加が中止されてもよい。あるいは、例えば、高抵抗化パルスが印加された後、当該メモリセルに低抵抗化パルスよりも低いエネルギーの電気的パルスが印加されてもよい。さらに、当該メモリセルに、徐々に高くなる複数の電気的パルスが印加されてもよい。
【０４２２】
ここで、低いエネルギーの電気的パルスとは、電圧の絶対値が低い、またはパルス幅が狭い電気的パルスを意味する。高いエネルギーの電気的パルスとは、電圧の絶対値が高い、またはパルス幅が広い電気的パルスを意味する。
【０４２３】
例えば、低抵抗化パルスの電圧が−２．４Ｖであり、高抵抗化パルスの電圧が＋１．８Ｖであったとする。この場合、まず、選択されたメモリセルに、パルス電圧−２．４Ｖ、パルス幅５０ｎＳｅｃの低抵抗化パルスが印加される。その後、当該メモリセルに、例えば、パルス電圧＋１．３Ｖ、パルス幅５０ｎＳｅｃの電気的パルスが印加される。
【０４２４】
その後、当該メモリセルの抵抗値情報が読み出され、閾値α’を超えているか否かが判定されてもよい。判定結果がＹｅｓとなったメモリセルは、電気的パルスの印加が中止され、判定結果がＮｏとなったメモリセルは、例えば、パルス電圧＋１．４Ｖ、パルス幅５０ｎＳｅｃの電気的パルスが印加される。
【０４２５】
このように、抵抗値が閾値αを超えるように、電気的パルスのエネルギーを徐々に増加させながら、電気的パルスの印加と抵抗値情報の読み出しとが繰り返されてもよい。閾値βを超えたメモリセルがあれば、そのメモリセルに低抵抗化パルスである−２．４Ｖが印加され、やり直してもよい。これにより、抵抗値が、最終的に閾値αと閾値βの間に収束しうる。
【０４２６】
［抵抗値変動における変動幅の経時変化］
以下、書き込み後の時間経過に伴う抵抗値変動の大きさの変化について説明する。図２６は、書き込み直後における抵抗値変動を示す。図２７は、図２６と同一の抵抗変化素子における、書き込み後２４時間経過した後の抵抗値変動を示す。
【０４２７】
図２６および図２７において、測定された抵抗変化素子は高抵抗状態であった。この高抵抗状態は、低抵抗状態にある抵抗変化素子に高抵抗化パルスが印加されることにより設定された。抵抗変化素子の構成、およびパルスの電圧やパルス幅は、図３において説明されたものと同様とした。
【０４２８】
２つの図から分かるように、書き込みから時間が経過すると、抵抗値変動の振幅および頻度が小さくなる。よって、書き込みからの時間経過が短いメモリセルから抵抗値情報が読み出されると、抵抗値変動が検出されやすい。本発明者らは、書き込みから読み出しまでの間の時間経過が短いほど、質の高い乱数データが生成されることを確認している。
【０４２９】
よって、書き込みからの経過時間が短いメモリセルから抵抗値情報が読み出されてもよい。例えば、書き込み動作が行われた時刻がタイムスタンプ情報としてメモリセルアレイの一部に保存されてもよい。書き込み時刻からの経過時間が所定の閾値を超えている場合に、再度の書き込み動作が行われてもよい。再度の書き込み動作において、例えば、高抵抗状態にある抵抗変化素子に、低抵抗化パルスが印加され、その後、高抵抗化パルスが印加されてもよい。
【０４３０】
［可変状態のメモリセルに乱数データが書き込まれる場合］
乱数生成回路により生成された乱数データが可変状態のメモリセルに一時記憶される動作の一例について説明する。図２８に示される例において、メモリセルアレイ９０は、乱数生成用メモリセル群９５、第１種データ記憶用メモリセル群９６、および、第２種データ記憶用メモリセル群９７に分割されている。
【０４３１】
乱数生成用メモリセル群９５は、乱数データを生成するための抵抗値情報が読み出されるメモリセル群である。乱数生成用メモリセル群９５は、例えば揺らぎ書き込みモードにおいて、所定の抵抗状態に設定されていてもよい。乱数生成用メモリセル群９５の抵抗値は、例えば、閾値αと閾値βの間に入るように設定されていてもよい。
【０４３２】
第１種データ記憶用メモリセル群９６は、各メモリセルが初期状態にあるか可変状態にあるかの違いを利用してデータが記録されるメモリセル群である。第２種データ記憶用メモリセル群９７は、可変状態にあるメモリセルを用いて、各メモリセルの抵抗値が初期抵抗値範囲にあるか否かの違いを利用せずに、各メモリセルの抵抗値が少なくとも一つの可変抵抗値範囲にあるか否かの違いを利用して記録するメモリセル群である。
【０４３３】
以下、図１２のブロック図を参照しつつ、乱数データが可変状態のメモリセルに書き込まれる場合の処理の流れを説明する。
【０４３４】
論理制御回路０１０が外部からの制御信号に基づいて、入出力制御回路００７を動作させる。入出力制御回路００７は、論理制御回路０１０が指示するタイミングで、入力データから揺らぎ読み出しコマンドを抽出し、これをコマンドレジスタ０３３に保持させる。入出力制御回路００７は、アドレスレジスタ００９に、乱数生成用メモリセル群９５に対応するアドレスを指定するアドレス信号をセットする。揺らぎ読み出しモードにおいて、乱数生成用メモリセル群９５の各メモリセルから抵抗値情報が読み出されて、センスアンプ０１２を介して乱数生成回路０３８へと送られる。このサイクルが読み出し毎に繰り返される。乱数生成回路０３８は、抵抗値情報に基づいて乱数データを生成し、これをデータレジスタ０３０に格納させる。
【０４３５】
外部のホストコンピュータが即時に乱数データを必要としていれば、乱数データは、入出力制御回路００７を介して、ホストコンピュータに出力されてもよい。あるいは、例えばホストコンピュータの負荷が大きい状態にある時、乱数データは乱数処理装置０２０内に保持され、ホストコンピュータの負荷が小さくなった時に、乱数データがホストコンピュータに出力されてもよい。この場合、乱数データは、例えば、一時的にメモリセルアレイ内に記憶されてもよい。これにより、通信データの暗号化や復号化が必要になったタイミングで、乱数データが出力される。
【０４３６】
図２８に示す構成によれば、乱数生成回路０３８によって生成された乱数データは、乱数生成用メモリセル群９５が含まれるメモリセルアレイの別領域に保存されうる。この場合、例えば、次のように動作する。
【０４３７】
乱数データがデータレジスタ０３０に保持されると、第２種データ記憶用メモリセル群９７のいずれかに対応するアドレスを指定するアドレス信号が、アドレスレジスタ００９にセットされる。切替え回路０３７は、書き込み回路０１１と列選択回路００４とを接続する。行選択回路００３および列選択回路００４は、アドレス信号に基づいて、第２種データ記憶用メモリセル群９７内の所定の複数のメモリセルを選択する。データレジスタ０３０に保持された乱数データが、選択された複数のメモリセルに書き込まれる。書き込み条件は、例えば、先述の通常書き込みモードと同様のものであってもよい。
【０４３８】
乱数データは、例えば、1ワード相当の長さの単位で、第２種データ記憶用メモリセル群９７に書き込まれてもよい。この場合、第２種データ記憶用メモリセル群９７に記録される乱数データの長さが必要な条件を満たすまで、上記の動作が繰り返されてもよい。
【０４３９】
乱数データが第２種データ記憶用メモリセル群９７に記録された後に、ステータスレジスタ０３４に乱数データ準備完了のステータス情報がセットされる。ホストコンピュータは、乱数処理装置０２０からステータス情報を適宜取得する。ホストコンピュータは、乱数データ準備完了のステータス情報を取得したときに、乱数処理装置０２０に、乱数データを出力させる指示を送ることができる。当該指示に基づいて、乱数データは、第２種データ記憶用メモリセル群９７から読み出され、入出力制御回路００７を介して出力される。
【０４４０】
第２種データ記憶用メモリセル群９７から乱数データを読み出す回数は、上限値が設定されてもよい。これにより、乱数データは設定された回数のみ使用される。これにより、セキュリティー上のリスクが低減されうる。ステータスレジスタ０３４は、現在保存されている乱数データが読み出された回数を保持してもよい。同一の乱数データの読み出し回数が所定の値を超えたとき、当該乱数データは消去されてもよい。
【０４４１】
第２種データ記憶用メモリセル群９７に一時的に記録された乱数データは、例えば、暗号用の鍵データとして使用されうる。メモリセルアレイ０２１が乱数生成用メモリセル群９５と第２種データ記憶用メモリセル群９７とを備えるため、乱数処理装置０２０は、一時記憶のためのメモリ（例えば、ＳＲＡＭ）を別途備えなくてもよい。そのため、回路規模がより小さくなりうる。
【０４４２】
従来技術において、一次記憶のためのメモリは、典型的に、揮発性メモリであった。揮発性メモリに記憶されたデータは電源供給を絶つと消えてしまう。一方、第２種データ記憶用メモリセル群９７は、不揮発性メモリである。不揮発性メモリに記憶されたデータは、電源供給を絶っても保持される。そのため、乱数処理装置０２０は、例えば、必要なときだけ電源を入り切りするような間欠動作に適用されうる。これにより、消費電力が低減されうる。乱数処理装置０２０は、例えば、エナジーハーベストを備えたモバイル製品のように、電源供給が不安定になりやすい用途に適用されうる。この場合、電源供給が瞬間的に失われても、乱数データが失われず、したがって、乱数データを生成しなおす必要がない。これにより、時間のロスが解消されうる。
【０４４３】
なお、乱数データは、可変状態のメモリセルに、平文のままで書き込まれてもよいし、暗号化されて書き込まれてもよい。
【０４４４】
［初期状態のメモリセルに乱数データが書き込まれる場合］
乱数生成回路により生成された乱数データが初期状態のメモリセルに半永久的に記憶される動作の一例について説明する。メモリセルアレイの構成は図２８と同様とすることができるので、対応する構成要素には同一の符号および名称を付して、詳細な説明を省略する。
【０４４５】
以下、図１２のブロック図を参照しつつ、乱数データが初期状態のメモリセルに書き込まれる場合の処理の流れを説明する。
【０４４６】
乱数データが可変状態のメモリセルに書き込まれる場合と同様に、乱数生成回路０３８によって生成された乱数データが、データレジスタ０３０に格納される。
【０４４７】
例えば、乱数データは、乱数処理装置０２０における固有の暗号鍵、あるいは、乱数処理装置０２０とホストコンピュータとが一体化された装置における固有の暗号鍵として使用されうる。この場合、乱数データは、メモリセルアレイ内に半永久的に記憶されうる。
【０４４８】
乱数データがデータレジスタ０３０に保持されると、第１種データ記憶用メモリセル群９６のいずれかに対応するアドレスを指定するアドレス信号が、アドレスレジスタ００９にセットされる。切替え回路０３７は、書き込み回路０１１と列選択回路００４とを接続する。行選択回路００３および列選択回路００４は、アドレス信号に基づいて、第１種データ記憶用メモリセル群９６の所定の複数のメモリセルを選択する。データレジスタ０３０に保持された乱数データが、選択された複数のメモリセルに書き込まれる。
【０４４９】
書き込み条件は、例えば、先述の特殊書き込みモードと同様のものであってもよい。例えば、選択された複数のメモリセルの一部に、フォーミングストレスが印加される。
【０４５０】
乱数データは、例えば、1ワード相当の長さの単位で、第１種データ記憶用メモリセル群９６に書き込まれてもよい。この場合、第１種データ記憶用メモリセル群９６に記録される乱数データの長さが必要な条件を満たすまで、上記の動作が繰り返されてもよい。
【０４５１】
第１種データ記憶用メモリセル群９６に半永久的に記録された乱数データは、例えば、装置固有の暗号鍵として使用されうる。メモリセルアレイ０２１が乱数生成用メモリセル群９５と第１種データ記憶用メモリセル群９６とを備えることにより、乱数処理装置０２０は、半永久的な記録のためのライトワンス型メモリを別途備えなくてもよい。そのため、回路規模がより小さくなりうる。乱数データが記録される複数のメモリセルのうち、可変状態にすべきメモリセルのみにフォーミングストレスが印加され、初期状態に維持すべきメモリセルにフォーミングストレスが印加されなくてもよい。初期状態に維持すべきメモリセルに強いストレス印加が加わらないため、データの保持特性が向上しうる。
【０４５２】
例えば、設計者は、信頼ある利用者のみが特殊な手続きを実行した場合にのみ、第１種データ記憶用メモリセル群９６に記録された乱数データを読み出せるように、乱数処理装置０２０を設計してもよい。これにより、乱数データの秘匿性が向上しうる。
【０４５３】
なお、乱数データは、初期状態のメモリセルに、平文のままで書き込まれてもよいし、暗号化されて書き込まれてもよい。
【０４５４】
その他の変形例として、乱数データの一部が初期状態のメモリセルに書き込まれ、その残部が可変状態のメモリセルに書き込まれてもよい。この場合、乱数データが、異なる領域に、異なる抵抗値範囲に分散して記憶されるため、乱数データの秘匿性が向上しうる。
【０４５５】
［第３実施例］
第３実施例は、複数の抵抗値情報からディジタルデータが生成され、該ディジタルデータを用いた所定のアルゴリズムが実行されることによって乱数データが生成されるものである。
【０４５６】
これにより、例えば抵抗値の変動幅が小さくなった場合でも、良好な乱数データが生成されうる。
【０４５７】
図２９は、第３実施例の乱数生成回路の概略構成を示す回路図である。以下、図２９を参照しつつ、乱数生成回路０３８について説明する。
【０４５８】
図２６および図２７に示したように、メモリセルの抵抗値の変動幅は、書き込み直後は大きく、書き込みから２４時間経過後は小さい。しかし、その後、この小さな抵抗値変動は、長期にわたり継続する。したがって、変動幅が小さい抵抗値から良好な乱数が生成されれば、抵抗値の変動幅を大きくするための書き直し動作が削減されうる。
【０４５９】
図２９の判定ブロック３２０は、０／１判定器１４２とラッチ１４０との間の排他的論理和の回路が省かれている点を除き、図１７の判定ブロック１５０において同一の記号が付されているものは同じ動作をする。よって、詳細な説明が省略される。
【０４６０】
図２９に示される乱数生成回路０３８は、演算部３００を備える。図２９に示す例において、８つのチャンネルＣＨ０〜ＣＨ７の判定ブロック３２０からの出力が、演算部３００に、入力ＤＩ０〜ＤＩ７として入力される。入力ＤＩ０〜ＤＩ７のそれぞれは“０”または“１”の値を有する。入力ＤＩ０〜ＤＩ７から構成される１バイトデータは、本開示における「ディジタルデータ」の一例である。演算部３００は、入力ＤＩ０〜ＤＩ７から構成されるディジタルデータを演算し、出力ＲＮ０〜ＲＮ７を出力する。出力ＲＮ０〜ＲＮ７から構成される1バイトデータは、新たなディジタルデータである。この新たなディジタルデータは、乱数データである。乱数生成回路０３８は、抵抗値情報を取得する度に、出力ＲＮ０〜ＲＮ７から構成される乱数データを生成する。
【０４６１】
演算部３００には、種々の演算方式が用いられうる。演算部３００は、入力されたディジタルデータを用いて演算を行い、乱数を抽出できるものであればよい。演算方式の例として、生成多項式、ハッシュ関数、及び誤り訂正に用いられるパリティー生成回路などが挙げられる。演算部３００において、複数の演算方式を実行する複数の演算回路が、選択的に切り替えられてもよい。これにより、乱数生成回路０３８がハッキングされるリスクが低減されうる。
【０４６２】
以下では、演算部３００が生成多項式演算を実行し、８つのチャンネルＣＨ０〜ＣＨ７の判定ブロック３２０から出力されたディジタルデータが、当該演算の入力値および初期値の少なくともいずれか一方として用いられる例を説明する。
【０４６３】
演算部３００に入力されるディジタルデータは、例えば、長さｎの固定長のデータである。演算部３００は、ｎ段のシフトレジスタを備える。ディジタルデータがシフトレジスタに入力されると、該シフトレジスタが、次の規則（Ａ）、（Ｂ）および（Ｃ）に従うシフト動作を所定の回数行う。
（Ａ）ｘを２以上ｎ以下の整数として、シフトレジスタのｘ番目のレジスタにはｘ−１番目のレジスタの出力が入力されるか、ｘ−１番目のレジスタの出力とｎ番目のレジスタの出力との排他的論理和が入力される。
（Ｂ）シフトレジスタの１番目のレジスタには、ｎ番目のレジスタの出力が入力されるか、ディジタルデータのいずれかのビットとｎ番目のレジスタの出力との排他的論理和が入力される。
（Ｃ）シフトレジスタの１番目のレジスタにｎ番目のレジスタの出力が入力される場合には、シフトレジスタの２番目以降のレジスタのいずれか少なくとも一つには、ｘ−１番目のレジスタの出力とｎ番目のレジスタの出力との排他的論理和が入力される。
【０４６４】
図３０は、演算部３００が８段のシフトレジスタを備える例を示す。図３０に示される演算部３００は、８次の原始多項式（Ｘ８＋Ｘ４＋Ｘ３＋Ｘ２＋１）演算を回路化したものである。原始多項式の次数および種類、ならびにそれを実現する回路は、これに限定されない。それらは、乱数データの品質と回路規模とを鑑みて適宜設計されうる。例えば、演算部３００の回路は、判定ブロックのチャンネルの数に応じて、適宜設計されうる。
【０４６５】
原始多項式は生成多項式の１種である。生成多項式は、入力が一定である場合、周期性を有するパターンを出力する。パターンの周期は、生成多項式の次数に依存する。例えば、８次の原始多項式の出力は２５５ビットの周期を有し、１６次の原始多項式の出力は６５５３５ビットの周期を有する。すなわち、生成多項式の次数が高いほど、出力されるパターンの周期が長くなり、同じパターンが出現する確率が減る。そのため、生成多項式は、その次数が例えば１６次以上である場合に、質の高い乱数を生成することができる。
【０４６６】
乱数生成に用いるメモリセルの数が多いほど、物理情報源が増えるため、乱数の質が向上する。例えば、乱数生成のための抵抗値情報が取得されるメモリセルの数が１６個以上である場合、質の高い乱数が生成されうる。抵抗値情報が取得されるメモリセルの数は、乱数生成回路０３８が並列処理できるチャンネル数よりも多くてもよい。その場合、抵抗値情報が、複数回に分けて取得されてもよい。例えば、並列処理できるチャンネル数が８であって、１６個のメモリセルから抵抗値情報が取得される場合、１６個のメモリセルのうちの８個のメモリセルから抵抗値情報が取得され、その後、別の８個のメモリセルから抵抗値情報が取得されてもよい。
【０４６７】
図３０において、演算部３００は、ラッチ３０１〜３０８を備える。演算部３００は、例えば、ラッチ３０１〜３０８にラッチを指示する制御部（図示せず）をさらに備える。ラッチ３０１〜３０８のそれぞれは、制御部からの指示に基づいて、入力ａまたは入力ｂの何れかを所定のクロック毎にラッチする。選択回路（ＭＵＸ）３１０は、制御部からの指示（図示せず）に基づいて、演算部３００への入力ＤＩ０〜ＤＩ７と、“０”とのうちの何れか１つを出力する。出力されるデータは、選択回路３１０によって、クロックの周期毎に切り替えられる。この出力データは、シフトレジスタの入力データとなる。
【０４６８】
入力ＤＩ０〜ＤＩ７は、入力ａとしてラッチ３０１〜３０８にそれぞれ入力される。選択回路３１０の出力とラッチ３０８の出力ＲＮ７との排他的論理和は、ラッチ３０１に入力ｂとして入力される。
【０４６９】
ラッチ３０１，３０５，３０６，３０７の出力は、１つ後のラッチ３０２，３０６，３０７，３０８に、入力ｂとしてそれぞれ入力される。ラッチ３０２，３０３，３０４の各出力とラッチ３０８の出力ＲＮ７との排他的論理和が、１つ後ろのラッチ３０３，３０４，３０５に、入力ｂとしてそれぞれ入力される。
【０４７０】
つまり、演算部３００において、ラッチ３０１〜３０８は、シフトレジスタを構成する。図３０に示されるシフトレジスタは、出力ＲＮ７に応じて、一部のレジスタ間で“１”および“０”を反転させる。
【０４７１】
入力ＤＩ０〜ＤＩ７が演算処理の初期値である場合、制御部からの指示に従って、入力ＤＩ０〜ＤＩ７がラッチ３０１〜ラッチ３０８にそれぞれラッチされてもよい。演算処理の開始時において入力ＤＩ０〜ＤＩ７の全てが“０”であり、これにより、ラッチ３０１〜ラッチ３０８の全てが“０”をラッチしてもよい。言い換えると、ラッチ３０１〜ラッチ３０８がラッチする値が、全て “０”に初期化されてもよい。その後、クロックが各ラッチに入力される毎に、演算が実行される。演算が所定の回数実行された後、各ラッチ３０１〜３０８の出力ＲＮ０〜ＲＮ７が、演算部３００の出力として出力される。出力ＲＮ０〜ＲＮ７で構成されるデータは、乱数データとなる。
【０４７２】
入力ＤＩ０〜ＤＩ７が演算処理の入力データである場合、選択回路３１０は、入力ＤＩ０〜ＤＩ７のいずれか１つを選択し、これを選択回路３１０およびラッチ３０１間のＸＯＲ回路に出力する。選択回路３１０は、入力ＤＩ０〜ＤＩ７から選択される１つを、クロック毎に、順次切り替える。
【０４７３】
演算部３００は、入力ＤＩ０からＤＩ７を、初期値として用いるか、入力データとして用いるかを選択してもよい。例えば、演算部３００に最初に入力される入力ＤＩ１〜ＤＩ７は、初期値として利用されてもよい。その後に演算部３００に入力される入力ＤＩ１〜ＤＩ７は、入力データとして利用されてもよい。演算処理が実行される回数、すなわち、ラッチに入力されるクロックの数は、少なくとも判定ブロック３２０のチャンネルの数以上に設定される。
【０４７４】
以上の構成によれば、抵抗値情報から生成されたディジタルデータが、演算部によってシャフリングされるため、ランダム性が向上する。そのため、たとえ抵抗値の変動量が小さい場合であっても、高品質の乱数データが生成されうる。また、抵抗値の変動量を大きくするための書き直し動作が削減されうる。
【０４７５】
第３実施例と第１実施例とが組み合わされたものが実施されてもよい。第３実施例と第２実施例とが組み合わされたものが実施されてもよい。第３実施例と第２実施例と第１実施例とが組み合わされたものが実施されてもよい。
【０４７６】
［第４実施例］
第４実施例は、フォーミングによる乱数生成と、抵抗値変動を利用した乱数生成とが併用された認証方法を開示する。
【０４７７】
図３１は、第４実施例の通信システム２００の構成例を示すブロック図である。図３１において、通信システム２００は、リーダライタ２０１と、ＩＣカード２０２とを含む。リーダライタ２０１と、ＩＣカード２０２とは、例えば、それぞれが有するアンテナなどを介して無線による通信を行う。
【０４７８】
リーダライタ２０１の入出力Ｉ／Ｆ部２０４は、ＲＦアンテナを有している。入出力Ｉ／Ｆ部２０４は、所定の電磁波を輻射する。また、入出力Ｉ／Ｆ部２０４は、ＩＣカード２０２からの電磁波を負荷の変化を利用して検出する。すなわち、入出力Ｉ／Ｆ部２０４は、ＩＣカード２０２が近づけられたか否かを検出する。入出力Ｉ／Ｆ部２０４は、例えば、発振回路（図示せず）から供給される所定の周波数の搬送波を、ＣＰＵ２０５から供給されるデータに基づいて変調する。入出力Ｉ／Ｆ部２０４は、被変調波をアンテナ（図示せず）から出力することで、近傍に配置されたＩＣカード２０２に各種のデータを送信する。あるいは、入出力Ｉ／Ｆ部２０４は、アンテナを介して、ＩＣカード２０２からの被変調波を受信する。入出力Ｉ／Ｆ部２０４は、当該被変調波を復調してデータを取得し、当該データをＣＰＵ２０５に供給する。
【０４７９】
リーダライタ２０１は乱数処理装置２１５を備える。乱数処理装置２１５は、本実施形態の乱数処理装置である。例えば、乱数処理装置２１５は、第１実施例または第２実施例で説明されたものであってもよい。以下の説明では、上述の各実施例と共通する要素については同一の符号および名称が付され、適宜説明が省略される。なお、第４実施例において、乱数処理装置２１５が不揮発性記憶装置としても機能する。
【０４８０】
ＲＯＭ部２１０は、例えば、乱数処理装置２１５が備える第２種データ記憶用メモリセル群９７のうちの所定のアドレス領域に相当する。リーダライタ２０１のＣＰＵ２０５は、ＲＯＭ部２１０記憶されているプログラムをＲＡＭ２０３にロードし、該プログラムを用いて各種の処理を実行する。ＲＡＭ２０３は、ＣＰＵ２０５が各種の処理を実行するために必要なデータなどを一時的に記憶しうる。ＲＡＭ２０３は、ＳＲＡＭ（Static Random Access Memory）やＤＲＡＭ（Dynamic Random Access Memory）などの揮発性記憶装置であってもよい。あるいは、ＲＡＭ２０３は、ＲｅＲＡＭからなる第２種データ記憶用メモリセル群９７の一部であってもよい。
【０４８１】
ＣＰＵ２０５は、暗号処理部２０６を制御する。暗号処理部２０６は、予め定められた暗号アルゴリズムに基づいて、データの暗号化と復号化を行う。暗号アルゴリズムの例として、トリプルＤＥＳ（Data Encryption Standard）、ＡＥＳ（Advanced Encryption Standard）などが挙げられる。これらは、１つの秘密鍵を用いて暗号化と復号化が行われる共通鍵暗号方式の暗号アルゴリズムである。暗号アルゴリズムは、暗号化時の鍵と復号化時の鍵とを異ならせて暗号通信を行う公開鍵方式でもよい。このような暗号アルゴリズムの例として、ＲＳＡ暗号が挙げられる。この場合、秘密鍵記憶部２０８は、通信相手の公開鍵と、通信者自身の秘密鍵の両方を格納してもよい。
【０４８２】
リーダライタ２０１においてデータの暗号化または復号化を行う場合、例えば、ＣＰＵ２０５は、秘密鍵と、暗号化または復号化すべきデータとを、暗号処理部２０６に供給する。秘密鍵は、例えば、乱数処理装置２１５内の所定のアドレス領域である秘密鍵記憶部２０８に記憶されている。暗号処理部２０６は、供給された秘密鍵を用いてデータの暗号化または復号化を実行する。
【０４８３】
乱数生成回路２０７は、前述したように抵抗値変動を利用して乱数を生成する。
【０４８４】
データ記憶部２０９は、ＣＰＵ２０５がプログラムを実行する上で必要なデータを記憶している。データ記憶部２０９において、所定のデータが平文のまま記憶されていてもよいし、秘密鍵で暗号化されて記憶されていてもよい。所定のデータは、乱数以外のデータであってもよい。なお、所定のデータは、初期状態のメモリセルを利用して記憶されていてもよいし、可変状態のメモリセルを利用して記憶されていてもよい。
【０４８５】
秘密鍵記憶部２０８は、前述した第１種データ記憶用メモリセル群９６の少なくとも一部であってもよいし、第２種データ記憶用メモリセル群９７の少なくとも一部であってもよい。秘密鍵記憶部２０８が第１種データ記憶用メモリセル群９６の少なくとも一部である場合、秘密鍵が抵抗変化素子の初期状態と可変状態との違いで記憶される。そのため、通常読み出しコマンドでは秘密鍵は読み出されず、鍵情報が隠蔽されうる。
【０４８６】
秘密鍵記憶部２０８において、秘密鍵は、平文のままで記憶されてもよいし、暗号化されて記憶されてもよい。秘密鍵記憶部２０８において、秘密鍵で暗号化された所定のデータが、秘密鍵と併せて記憶されていてもよい。所定のデータは、乱数以外のデータが暗号化されたものであってもよい。
【０４８７】
上述のように、可変状態にあるメモリセルから“０”と“１”のディジタルデータが読み出される場合、第２閾値を用いて“０”と“１”の判定が行なわれる。第２閾値で第１種データ記憶用メモリセル群９６の抵抗値情報が読み出された場合、ほとんどのメモリセルの抵抗値情報が“０”に判定される。そのため、正規のデータが読み出されない。
【０４８８】
メモリセルアレイ内の自由なアドレスに、第１種データ記憶用メモリセル群９６と第２種データ記憶用メモリセル群９７とが配置されうる。よって、第三者が、メモリセルを直接プローブして抵抗値を物理的に読み出そうとしても、そのメモリセルが第１種データ記憶用メモリセル群９６および第２種データ記憶用メモリセル群９７のいずれに属するのかを特定できない。
【０４８９】
以上のように、図３１に示す通信システム２００は、秘密鍵の漏洩に対し強い耐タンパ性（tamper resistant）を有しうる。さらに、第１種データ記憶用メモリセル群９６は、高温においてのデータ保持特性にも優れる。そのため、第１種データ記憶用メモリセル群９６に秘密鍵が記憶される場合、データ誤りが低減されうる。
【０４９０】
秘密鍵記憶部２０８に記憶される秘密鍵は、ＩＣカード２０２の秘密鍵記憶部２２６に記憶されている秘密鍵と同じものであってもよい。ＩＣカード２０２内の固有ＩＤの読み出しを許可されたリーダライタ２０１のみに、予め秘密鍵が記憶されていてもよい。
【０４９１】
固有ＩＤは固有ＩＤ記憶部２２５に記憶されている。固有ＩＤ記憶部２２５は、第１種データ記憶用メモリセル群９６の少なくとも一部であってもよいし、第２種データ記憶用メモリセル群９７の少なくとも一部であってもよい。固有ＩＤが、第１種データ記憶用メモリセル群９６の少なくとも一部に記憶される場合、秘密鍵を第１種データ記憶用メモリセル群９６に記憶させた場合と同様の効果が得られうる。
【０４９２】
固有ＩＤは、例えば、ＩＣカードごとに固有の乱数である。固有ＩＤは、例えば、フォーミングによってメモリセルをランダムに可変状態に変化させることによって生成されてもよい。この場合、固有ＩＤは、乱数の生成に伴って、第１種データ記憶用メモリセル群９６に記憶される。あるいは、固有ＩＤは、抵抗値変動を利用して生成された乱数データであってもよい。さらに、固有ＩＤが、第１種データ記憶用メモリセル群９６に書き込まれてもよい。
【０４９３】
固有ＩＤ記憶部２２５において、固有ＩＤは、平文のままで記憶されてもよいし、暗号化されて記憶されてもよい。固有ＩＤ記憶部２２５において、固有ＩＤで暗号化された所定のデータが、固有ＩＤと併せて記憶されていてもよい。所定のデータは、乱数以外のデータが暗号化されたものであってもよい。
【０４９４】
ＩＣカード２０２の入出力Ｉ／Ｆ部２２０は、例えば、コイル状のアンテナとキャパシタを含むＬＣ回路であってもよい。この場合、ＩＣカードのアンテナがリーダライタ２０１に近づけられると、リーダライタ２０１から輻射される電磁波に応じて、ＬＣ回路が共振する。入出力Ｉ／Ｆ部２２０は、共振電流を整流化および安定化し、これをＩＣカード２０２の各部に直流電源として供給してもよい。
【０４９５】
入出力Ｉ／Ｆ部２２０は、アンテナを介して受信した被変調波を検波し、被変調波を復調してデータを取得する。入出力Ｉ／Ｆ部２２０は、このデータをディジタルデータにデコードし、ＣＰＵ２２１に供給する。ディジタルデータは、例えば、位相同期回路（図示せず）に入力され、当該位相同期回路は、前記ディジタルデータのサンプリング周波数に等しい固定の周波数と固定の位相を有するクロック信号を発生させる。このクロック信号は、例えば、ディジタルデータのデータラッチに使用されうる。
【０４９６】
入出力Ｉ／Ｆ部２２０は、所定のデータをリーダライタ２０１に送信できる。例えば、入出力Ｉ／Ｆ部２２０は、ＣＰＵ２２１から入力されたデータをエンコードする。その後、入出力Ｉ／Ｆ部２２０は、このエンコードされたデータに応じてアンテナの負荷を変動させることによって、所定の周波数の搬送波を変調する。被変調波は、アンテナを介してリーダライタ２０１に送信される。
【０４９７】
ＩＣカード２０２は乱数処理装置２３０を備える。乱数処理装置２３０は本実施形態の乱数処理装置である。例えば、乱数処理装置２３０は、第１実施例または第２実施例で説明されたものであってもよい。以下の説明では、上述の各実施例と共通する要素については同一の符号および名称が付され、適宜説明が省略される。なお、第４実施例において、乱数処理装置２３０が不揮発性記憶装置としても機能する。
【０４９８】
乱数処理装置２３０は、乱数生成回路２２４、固有ＩＤ記憶部２２５、秘密鍵記憶部２２６、データ記憶部２２７およびＲＯＭ部２２８を備える。乱数生成回路２２４は、抵抗値変動を利用して乱数を生成する。固有ＩＤ記憶部２２５は、ＩＣカードごとの固有ＩＤを記憶する。秘密鍵記憶部２２６は、秘密鍵を記憶する。データ記憶部２２７は、ＣＰＵ２２１がプログラムを実行する上で必要なデータが記憶されている。ＲＯＭ部２２８は、ＣＰＵ２２１が実行するプログラムが記憶されている。固有ＩＤ記憶部２２５、秘密鍵記憶部２２６、データ記憶部２２７およびＲＯＭ部２２８は、例えば、１つのメモリセルアレイに包含されていてもよい。ＣＰＵ２２１は、ＲＯＭ部２２８に記憶されているプログラムをＲＡＭ２２３にロードし、各種の処理を実行しうる。
【０４９９】
ＣＰＵ２２１は、暗号処理部２２２を制御する。暗号処理部２２２は、予め定められた暗号アルゴリズムに基づいて、データの暗号化と復号化を行う。
【０５００】
公開鍵方式において、例えば、ＩＣカード２０２は、リーダライタ２０１から公開鍵を入手し、当該公開鍵で所定のデータを暗号化し、暗号文データをリーダライタ２０１側に送信する。あるいは、ＩＣカード２０２は、リーダライタ２０１から暗号文データを受信し、秘密鍵記憶部２２６に予め記憶してある秘密鍵にてこれを復号化する。以上の点以外は、公開鍵方式も共通鍵方式と同様である。以下、暗号アルゴリズムが共通鍵方式である例について説明する。
【０５０１】
ＩＣカード２０２において、秘密鍵記憶部２２６と固有ＩＤ記憶部２２５は、例えば、第１種データ記憶用メモリセル群９６の少なくとも一部である。ＣＰＵ２２１は、特殊読み出しコマンドを乱数処理装置２３０に送り、秘密鍵記憶部２２６から秘密鍵を取得し、ＣＰＵ２２１に送信する。ＣＰＵ２２１は、秘密鍵と、暗号化または復号化すべきデータとを、暗号処理部２２２に供給する。暗号処理部２２２は、秘密鍵を用いて、データの暗号化または復号化を実行する。
【０５０２】
データ記憶部２２７は、例えば、ＣＰＵ２２１がプログラムを実行する上で必要なデータが記憶されている。データ記憶部２２７において、所定のデータが平文のまま記憶されていてもよいし、秘密鍵で暗号化されて記憶されていてもよい。所定のデータは、初期状態のメモリセルを利用して記憶されていてもよいし、可変状態のメモリセルを利用して記憶されていてもよい。
【０５０３】
秘密鍵記憶部２２６において、秘密鍵は、平文のままで記憶されてもよいし、暗号化されて記憶されてもよい。秘密鍵記憶部２２６において、秘密鍵で暗号化された所定のデータが、秘密鍵と併せて記憶されていてもよい。所定のデータは、乱数以外のデータが暗号化されたものであってもよい。
【０５０４】
このような通信システム２００において、固有ＩＤを用いた認証が行われ、その後、セッションＩＤおよびセッション鍵を用いた暗号データの通信が行われうる。例えば、固有ＩＤは、フォーミングにより生成された乱数データであり、セッションＩＤおよびセッション鍵は、抵抗値変動を利用して生成された乱数データである。
【０５０５】
第１に、ＩＣカード２０２とリーダライタ２０１間で、固有ＩＤを用いて認証が実行されるステップについて説明する。
【０５０６】
ＣＰＵ２２１は、特殊読み出しコマンドを乱数処理装置２３０に送信し、固有ＩＤ記憶部２２５から固有ＩＤを取得し、秘密鍵記憶部２２６から秘密鍵を取得し、これらをＣＰＵ２２１に送信する。ＣＰＵ２２１は、秘密鍵と固有ＩＤとを暗号処理部２２２に供給する。暗号処理部２２２は、秘密鍵を用いて固有ＩＤを暗号化する。暗号化された固有ＩＤは、ＩＣカード２０２の入出力Ｉ／Ｆ部２２０からリーダライタ２０１の入出力Ｉ／Ｆ部２０４に送信され、リーダライタ２０１のＣＰＵ２０５に供給される。
【０５０７】
ＣＰＵ２０５は、特殊読み出しコマンドを乱数処理装置２１５に送信し、秘密鍵記憶部２０８から秘密鍵を取得する。ＣＰＵ２０５は、秘密鍵と暗号化された固有ＩＤとを暗号処理部２０６に供給する。暗号処理部２０６は、秘密鍵を用いて、暗号化された固有ＩＤを復号化する。復号化された固有ＩＤは、全固有ＩＤ記憶部２１１に記憶されている複数の固有ＩＤのそれぞれと照合される。復号化された固有ＩＤが、全固有ＩＤ記憶部２１１に記憶されている複数の固有ＩＤのうちの１つと一致した場合、ＩＣカード２０２がデータ通信を行う資格を有すると認証される。そして、その後のデータ通信が継続して実行される。
【０５０８】
全固有ＩＤ記憶部２１１において、各固有ＩＤは、平文のままで記憶されてもよいし、暗号化されて記憶されてもよい。全固有ＩＤ記憶部２１１において、固有ＩＤで暗号化された所定のデータが、固有ＩＤと併せて記憶されていてもよい。所定のデータは、乱数以外のデータが暗号化されたものであってもよい。
【０５０９】
第２に、セッションＩＤおよびセッション鍵を用いて、ＩＣカード２０２とリーダライタ２０１間でデータ通信が実行されるステップについて、説明する。
【０５１０】
乱数生成回路２２４は、必要に応じた所定ビット数の乱数データを生成する。乱数データは、ＩＣカード２０２とリーダライタ２０１との間で行われる通信において、セッションＩＤおよびセッション鍵として利用される。セッションＩＤは、通信相手と１つのセッションだけで用いられるＩＤである。セッション鍵は、そのセッションにおいて送受信されるデータの暗号化または復号化に使用される暗号鍵である。セッションごとに暗号鍵が変わると、仮に１つのセッション鍵がハッキングにより漏洩しても、次のセッションでは鍵データが変更される。これにより、暗号データが守られ、セキュリティー性の高い暗号通信が可能となる。
【０５１１】
ＣＰＵ２２１は、乱数生成回路２２４で生成された乱数データを、セッション鍵としてデータ記憶部２２７に記憶させる。ＣＰＵ２２１は、セッション鍵と、秘密鍵記憶部２２６から取得した秘密鍵とを、暗号処理部２２２に供給する。暗号処理部２２２は、秘密鍵を用いて、セッション鍵を暗号化する。
【０５１２】
暗号化されたセッション鍵はセッションＩＤとしてデータ記憶部２２７に保存される。セッションＩＤはＩＣカード２０２の入出力Ｉ／Ｆ部２２０からリーダライタ２０１の入出力Ｉ／Ｆ部２０４に送信され、リーダライタ２０１のＣＰＵ２０５に供給される。
【０５１３】
ＣＰＵ２０５は、乱数処理装置２１５に特殊読み出しコマンドを送信し、秘密鍵記憶部２０８から秘密鍵を取得する。ＣＰＵ２０５は、暗号処理部２０６に、秘密鍵とセッションＩＤを供給する。暗号処理部２０６は、秘密鍵を用いて、セッションＩＤを復号化し、セッション鍵を得る。
【０５１４】
ＩＣカード２０２のＣＰＵ２２１の指示に基づき、暗号処理部２２２は、送信すべきデータを、セッション鍵を用いて暗号化する。暗号文データは、ＩＣカード２０２の入出力Ｉ／Ｆ部２２０からリーダライタ２０１の入出力Ｉ／Ｆ部２０４に送信され、リーダライタ２０１のＣＰＵ２０５に供給される。リーダライタ２０１のＣＰＵ２０５の指示に基づき、暗号処理部２０６は、既に入手済みのセッション鍵を用いて、暗号文データを復号化して平文データを得る。
【０５１５】
逆方向の通信も同様である。すなわち、ＣＰＵ２０５の指示に基づき、暗号処理部２０６は、既に入手済みのセッション鍵を用いて、送信すべきデータを暗号化する。暗号文データは、リーダライタ２０１の入出力Ｉ／Ｆ部２０４からＩＣカード２０２の入出力Ｉ／Ｆ部２２０に送信され、ＩＣカード２０２のＣＰＵ２２１に供給される。ＣＰＵ２２１の指示に基づき、暗号処理部２２２は、暗号文データを、セッション鍵を用いて復号化し、平文データを得る。
【０５１６】
以上のように、通信システム２００によれば、乱数の生成、固有ＩＤの記憶、秘密鍵の記憶、データの記憶、プログラムデータの記憶が、１つの乱数処理装置内で実現されうる。乱数処理装置が不揮発性記憶装置としても機能することにより、真性乱数の生成回路を別途追加しなくても、暗号通信が実現されうる。そのため、回路規模が小さくなり、例えばＩＣカードのような、モバイル型のアプリケーションに適用されうる。
【０５１７】
乱数生成回路２０７で生成された乱数データは、乱数処理装置２１５の外部に読み出されることなく、乱数処理装置２１５内の所定の記憶部に記憶されうる。言い換えると、乱数処理装置２１５の内部で閉じた処理として、乱数データの生成および記憶が行われうる。そのため、例えば、第三者が、外部（例えばＣＰＵ２０５）から乱数処理装置２１５の乱数データを読み出し、乱数データを任意のデータに改竄して、改竄されたデータを記憶部に記憶させるようなリスクを回避できる。また、その結果、第三者が、乱数データを読み出して、別の乱数処理装置に書き込んで複製するようなリスクからも防衛できる。これは、乱数処理装置２３０においても同様である。
【０５１８】
ＲＡＭ２０３は、乱数処理装置２１５が備えるメモリセルアレイの一部であってもよい。ＲＡＭ２２３は、乱数処理装置２３０が備えるメモリセルアレイの一部であってもよい。
【０５１９】
上記説明から、当業者にとっては、本開示の多くの改良や他の実施形態ができることは明らかである。従って、上記説明は、例示としてのみ解釈されるべきである。上記説明において、構造および／又は機能の詳細は実質的に変更されうる。
【産業上の利用可能性】
【０５２０】
本開示の一態様は、例えば、ＩＣカードや、暗号システム、通信システム等に利用されうる。
【符号の説明】
【０５２１】
００１  メモリ本体部
００３  行選択回路
００４  列選択回路
００７  入出力制御回路
００８  電源制御回路
００９  アドレスレジスタ
０１０  論理制御回路
０１１  書き込み回路
０１２  センスアンプ
０１３  制御回路群
０２０  乱数処理装置
０２１  メモリセルアレイ
０３０  データレジスタ
０３１  Ｃａｓｈｅレジスタ
０３２  特殊データレジスタ
０３３  コマンドレジスタ
０３４  ステータスレジスタ
０３５  特殊コマンドレジスタ
０３７  切替え回路
０３８  乱数生成回路
９０  メモリセルアレイ
９１  メモリセル
９３  制御装置
９５  乱数生成用メモリセル群
９６  第１種データ記憶用メモリセル群
９７  第２種データ記憶用メモリセル群
１００  乱数処理装置
１２０  抵抗変化素子
１２２  下地層
１２４  第１電極
１２６  抵抗変化層
１２８  第２電極
１２９  定電流源
１３０  レファレンス電圧発生回路
１３１  ドライバ
１３２  レベル比較器
１３４  カウンタ
１３５  比較器
１３６  通常閾値レジスタ
１３７  特殊閾値レジスタ
１３８  ラッチ
１３９  ラッチ
１４０  ラッチ
１４１  検出器
１４２  ０／１判定器
１４３  等号演算器
１４４  アップカウンタ
１４５  ＸＯＲ回路
１４６  選択回路（ＭＵＸ）
１４７  ビット反転マスク生成回路
１５０  判定ブロック
１５１  データパターンカウント部
１５２  １ビット反転データ生成部
１６０  積分回路
１６１  ラッチ
１６２  係数乗算器
１６３  検出器
１６５  判定ブロック
２００  通信システム
２０１  リーダライタ
２０２  ＩＣカード
２０３  ＲＡＭ
２０４  入出力Ｉ／Ｆ部
２０５  ＣＰＵ
２０６  暗号処理部
２０７  乱数生成回路
２０８  秘密鍵記憶部
２０９  データ記憶部
２１０  ＲＯＭ部
２１１  全固有ＩＤ記憶部
２１５  乱数処理装置
２２０  入出力Ｉ／Ｆ部
２２１  ＣＰＵ
２２２  暗号処理部
２２３  ＲＡＭ
２２４  乱数生成回路
２２５  固有ＩＤ記憶部
２２６  秘密鍵記憶部
２２７  データ記憶部
２２８  ＲＯＭ部
２３０  乱数処理装置
３００  演算部
３０１  ラッチ
３０２  ラッチ
３０３  ラッチ
３０４  ラッチ
３０５  ラッチ
３０６  ラッチ
３０７  ラッチ
３０８  ラッチ
３１０  選択回路（ＭＵＸ）
３２０  判定ブロック
ＢＬ０，ＢＬ１，ＢＬ２，…  ビット線
Ｃ  ノード
ＣＣ２  キャパシタ
Ｍ２１１，Ｍ２１２，…  メモリセル
Ｔ１１，Ｔ１２，…  トランジスタ
ＷＬ０，ＷＬ１，ＷＬ２，…  ワード線
ＰＬ０，ＰＬ１，ＰＬ２，…  プレート線
【図１】
2015212933.tif 000008
【図２】
2015212933.tif 000009
【図３】
2015212933.tif 000010
【図４】
2015212933.tif 000011
【図５】
2015212933.tif 000012
【図６】
2015212933.tif 000013
【図７】
2015212933.tif 000014
【図８Ａ】
2015212933.tif 000015
【図８Ｂ】
2015212933.tif 000016
【図９】
2015212933.tif 000017
【図１０】
2015212933.tif 000018
【図１１】
2015212933.tif 000019
【図１２】
2015212933.tif 000020
【図１３】
2015212933.tif 000021
【図１４】
2015212933.tif 000022
【図１５】
2015212933.tif 000023
【図１６】
2015212933.tif 000024
【図１７】
2015212933.tif 000025
【図１８】
2015212933.tif 000026
【図１９】
2015212933.tif 000027
【図２０】
2015212933.tif 000028
【図２１】
2015212933.tif 000029
【図２２】
2015212933.tif 000030
【図２３】
2015212933.tif 000031
【図２４】
2015212933.tif 000032
【図２５】
2015212933.tif 000033
【図２６】
2015212933.tif 000034
【図２７】
2015212933.tif 000035
【図２８】
2015212933.tif 000036
【図２９】
2015212933.tif 000037
【図３０】
2015212933.tif 000038
【図３１】
2015212933.tif 000039