(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-09
(45)【発行日】2024-09-18
(54)【発明の名称】乱数生成器
(51)【国際特許分類】
G06F 7/58 20060101AFI20240910BHJP
G11C 11/16 20060101ALI20240910BHJP
G11C 13/00 20060101ALI20240910BHJP
H01L 29/82 20060101ALI20240910BHJP
H10N 50/20 20230101ALI20240910BHJP
【FI】
G06F7/58 680
G11C11/16
G11C13/00 400G
H01L29/82 Z
H10N50/20
(21)【出願番号】P 2020152266
(22)【出願日】2020-09-10
【審査請求日】2023-08-02
(31)【優先権主張番号】P 2019190987
(32)【優先日】2019-10-18
(33)【優先権主張国・地域又は機関】JP
【新規性喪失の例外の表示】特許法第30条第2項適用 令和1年9月14日 ウェブサイトで公開(ウェブサイトのアドレス https://mvl.jpn.org) 「MTJベース高性能真性乱数生成器の構成」(多値倫理研究ノート第42巻第10号)
【新規性喪失の例外の表示】特許法第30条第2項適用 令和1年9月14日 ホテルメリージュ宮崎(宮崎市橘通東3丁目1-11)において開催された第42回多値論理フォーラムで発表(講演タイトル:MTJベース高性能真性乱数生成器の構成)
(73)【特許権者】
【識別番号】504157024
【氏名又は名称】国立大学法人東北大学
(73)【特許権者】
【識別番号】594164542
【氏名又は名称】キヤノンメディカルシステムズ株式会社
(74)【代理人】
【識別番号】110001771
【氏名又は名称】弁理士法人虎ノ門知的財産事務所
(72)【発明者】
【氏名】羽生 貴弘
(72)【発明者】
【氏名】鬼沢 直哉
(72)【発明者】
【氏名】玉越 晃
(72)【発明者】
【氏名】藤田 博之
(72)【発明者】
【氏名】山形 仁
【審査官】征矢 崇
(56)【参考文献】
【文献】特表2014-531669(JP,A)
【文献】特開2011-113136(JP,A)
【文献】Yong Shim et al.,Biased Random-Walk Using Stochastic Switching of Nano-magnets: Application to SAT Solver [online],IEEE, [検索日2024.03.25], インターネット,2018年03月06日,p.1-8,<URL:https://ieeexplore.ieee.org/ielaam/16/8318799/8307273-aam.pdf>
【文献】Satoshi Oosawa et al.,Design of an STT-MTJ Based True Random Number Generator Using Digitally Controlled Probability-Locked Loop [online],IEEE, [検索日2024.03.25], インターネット,2015年08月10日,p.1-4,<URL:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7182089>
(58)【調査した分野】(Int.Cl.,DB名)
G06F7/58
G11C11/16
G11C13/00
H01L29/82
H10N50/20
G09C1/00
(57)【特許請求の範囲】
【請求項1】
磁気トンネル接合素子の磁性層に電流を流すことにより前記磁性層の磁化を確率的に反転させる書き込み部と、
前記磁化を読み取る読み出し部と、
前記読み出し部が読み取った前記磁化を基に乱数を生成する信号出力部と、
を備える乱数生成器であって、
前記乱数生成器は、
前記書き込み部及び前記読み出し部の制御を行うシーケンス制御部を備え、
前記シーケンス制御部は、
第1の期間に前記書き込み部に前記電流を流させるよう制御し、
前記第1の期間の終了後、前記第1の期間より長い期間である第2の期間経過後に、前記読み出し部に前記磁化を読み取らせ
、
前記乱数生成器には、複数の前記磁気トンネル接合素子が直列接続されて配置され、
前記書き込み部は、前記複数の前記磁気トンネル接合素子に前記電流を流すことにより、前記複数の磁気トンネル接合素子それぞれの前記磁性層の磁化を互いに独立に確率的に反転させ、
前記読み出し部は、前記複数の磁気トンネル接合素子それぞれの前記磁化を読み取る、
乱数生成器。
【請求項2】
前記第2の期間は、前記磁性層に蓄積された電荷が消失するまでの期間である、請求項1に記載の乱数生成器。
【請求項3】
前記第2の期間は、前記第1の期間の3倍以上の期間である、請求項1に記載の乱数生成器。
【請求項4】
前記第2の期間は、15ns以上の期間である、請求項1に記載の乱数生成器。
【請求項5】
前記乱数生成器は、前記電流の制御を行うフィードバック制御部を備え、
前記フィードバック制御部は、
前記磁化を基に生成されたバイナリ信号より得られた計数値を閾値と比較し、
前記計数値が前記閾値を下回っている場合には、前記計数値が増加するように前記書き込み部が流す前記電流を制御し、前記計数値が前記閾値を上回っている場合には、前記計数値が減少するように前記書き込み部が流す前記電流を制御し、前記計数値が前記閾値と等しい場合には、前記書き込み部が流す前記電流を維持する、請求項1に記載の乱数生成器。
【請求項6】
前記乱数生成器には、直列接続された前記複数の磁気トンネル接合素子が複数個並列接続され、
前記信号出力部は、並列接続された個々の前記複数の磁気トンネル接合素子から得られた情報を統合して、前記乱数を生成する、請求項
1に記載の乱数生成器。
【請求項7】
前記信号出力部が出力した信号を一時的に格納するバッファを更に備える、請求項1に記載の乱数生成器。
【請求項8】
前記信号出力部は、前記磁気トンネル接合素子の電気的特性を取得するための基準回路と、
前記読み出し部が出力する信号と、前記基準回路が出力する信号との間で差動増幅を行って前記乱数の基となる差動増幅信号を生成する差動増幅器と
を備える、請求項1に記載の乱数生成器。
【請求項9】
前記基準回路は、直列接続された2つの前記磁気トンネル接合素子を有する、請求項
8に記載の乱数生成器。
【請求項10】
前記乱数生成器には、前記磁気トンネル接合素子の書き込み電流の最大値と、電源電圧条件とに基づいて定められた数の前記複数の前記磁気トンネル接合素子が直列接続されて配置される、請求項
1に記載の乱数生成器。
【請求項11】
磁気トンネル接合素子の磁性層に電流を流すことにより前記磁性層の磁化を確率的に反転させる書き込み部と、
前記磁化を読み取る読み出し部と、
前記読み出し部が読み取った前記磁化を基に乱数を生成する信号出力部と、
を備える乱数生成器であって、
前記乱数生成器は、
前記書き込み部及び前記読み出し部の制御を行うシーケンス制御部を備え、
前記シーケンス制御部は、
第1の期間に前記書き込み部に前記電流を流させるよう制御し、
前記第1の期間の終了後、前記第1の期間より長い期間である第2の期間経過後に、前記読み出し部に前記磁化を読み取らせ、
前記乱数生成器は、前記電流の制御を行うフィードバック制御部を備え、
前記フィードバック制御部は、
前記磁化を基に生成されたバイナリ信号より得られた計数値を閾値と比較し、
前記計数値が前記閾値を下回っている場合には、前記計数値が増加するように前記書き込み部が流す前記電流を制御し、前記計数値が前記閾値を上回っている場合には、前記計数値が減少するように前記書き込み部が流す前記電流を制御し、前記計数値が前記閾値と等しい場合には、前記書き込み部が流す前記電流を維持し、
前記乱数生成器は、電圧の入力を受けることにより電圧を所定の動作モードで電流へ変換することで前記電流を出力させるV-Iコンバータを有し、
前記シーケンス制御部は、前記V-Iコンバータへの電圧の入力により前記電流を流させるよう制御するものであって、
前記フィードバック制御部は、複数の前記動作モードを切替可能であり、
前記フィードバック制御部は、少なくとも前記磁気トンネル接合素子を含む範囲の温度を検出する温度センサーを有し、前記温度センサーが検出した温度に基づいて、前記V-Iコンバータの動作モードを切り替える
、乱数生成器。
【請求項12】
磁気トンネル接合素子の磁性層に電流を流すことにより前記磁性層の磁化を確率的に反転させる書き込み部と、
前記磁化を読み取る読み出し部と、
前記読み出し部が読み取った前記磁化を基に乱数を生成する信号出力部と、
を備える乱数生成器であって、
前記乱数生成器は、
前記書き込み部及び前記読み出し部の制御を行うシーケンス制御部を備え、
前記乱数生成器には、複数の前記磁気トンネル接合素子が直列接続されて配置され、
前記書き込み部は、前記複数の前記磁気トンネル接合素子に前記電流を流すことにより、前記複数の磁気トンネル接合素子それぞれの前記磁性層の磁化を互いに独立に確率的に反転させ、
前記読み出し部は、前記複数の磁気トンネル接合素子それぞれの前記磁化を読み取る、
乱数生成器。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書等に開示の実施形態は、乱数生成器に関する。
【背景技術】
【0002】
乱数を生成させる方法として、数学アルゴリズムを用いて乱数を生成させる方法がある。
【0003】
しかしながら、これらの数学アルゴリズムにより生成される乱数は、決定論的計算に基づき生成される擬似的な乱数であるため、真の乱数(これを真性乱数と呼ぶ)ではなく、ある一定の周期性を持つ。加えて、初期値が特定されると乱数が完全に再現されてしまうなどの脆弱性を本質的に有している。このような観点から一定の周期性などを持たない真性乱数を生成することが実用上必要不可欠である。
【先行技術文献】
【非特許文献】
【0004】
【文献】S. Mukaida, N. Onizawa, and T. Hanyu, “Design of a low-powerMTJ-based true random number generator using a multi-voltage/currentconverter”,2018 IEEE 48th International Symposium on Multiple-Valued Logic (ISMVL), 2018年5月, pp. 156-161
【発明の概要】
【発明が解決しようとする課題】
【0005】
本明細書等に開示の実施形態が解決しようとする課題の一つは、質の良い、(すなわち、乱雑性の高い)乱数をできるだけ低コストで(すなわち、少ないハードウェア量で、かつ電力消費の少ないハードウェアで)生成させることである。ただし、本明細書等に開示の実施形態により解決される課題は上記課題に限られない。後述する実施形態に示す各構成による各効果に対応する課題を、本明細書等に開示の実施形態が解決する他の課題として位置づけることもできる。
【課題を解決するための手段】
【0006】
実施形態に係る乱数生成器は、書き込み部と、読み出し部と、信号出力部とを備える。書き込み部は、磁気トンネル接合素子の磁性層に電流を流すことにより前記磁性層の磁化を確率的に反転させる。読み出し部は、当該磁化を読み取る。信号出力部は、読み出し部が読み取った磁化を基に乱数を生成する。乱数生成器は、書き込み部及び読み出し部の制御を行うシーケンス制御部を備え、シーケンス制御部は、第1の期間に前記書き込み部に電流を流させるよう制御し、第1の期間の終了後、第1の期間より長い期間である第2の期間経過後に、読み出し部に磁化を読み取らせる。
【図面の簡単な説明】
【0007】
【
図1】
図1は、実施形態に係る乱数生成器を示す図である。
【
図2】
図2は、実施形態に係る乱数生成器において用いられる磁気トンネル接合素子について説明した図である。
【
図3】
図3は、比較例に係る乱数生成器のシーケンスチャートの一例について説明した図である。
【
図4】
図4は、比較例に係る乱数生成器におけるMTJ素子への電荷の蓄積について説明した図である。
【
図5】
図5は、実施形態に係る乱数生成器のシーケンスチャートの一例を示す図である。
【
図6】
図6は、実施形態に係る乱数生成器におけるMTJ素子への電荷の蓄積について説明した図である。
【
図7】
図7は、1個のMTJ素子を使用する場合における実施形態に係る乱数生成器の回路の一例を示す図である。
【
図8】
図8は、複数のMTJ素子の自由層端子同士を直列接続する場合における実施形態に係る乱数生成器の回路の一例について説明した図である。
【
図9】
図9は、複数のMTJ素子の自由層端子同士を直列接続する場合における実施形態に係る乱数生成器のシーケンスチャートの一例を示す図である。
【
図10】
図10は、実施形態に係る乱数生成器における信号出力回路の構成を示した図である。
【
図11】
図11は、実施形態に係る背景について説明した図である。
【
図12A】
図12Aは、実施形態に係る乱数生成器における信号出力回路の一例を示した図である。
【
図12B】
図12Bは、実施形態に係る乱数生成器における差動増幅器の回路の一例を示す図である。
【
図12C】
図12Cは、実施形態に係る乱数生成器における基準回路の回路の一例を示す図である。
【
図13】
図13は、直列接続された複数のMTJ素子を、更に並列接続した場合における実施形態に係る乱数生成器の信号出力回路の一例を示す図である。
【
図14A】
図14Aは、実施形態に係る乱数生成器のシーケンスチャートの一例を示す図である。
【
図14B】
図14Bは、実施形態に係る乱数生成器のシーケンスチャートの一例を示す図である。
【
図15】
図15は、実施形態に係る乱数生成器のシーケンスチャートの別の一例を示す図である。
【
図16】
図16は、実施形態に係る乱数生成器の回路の一例を示す図である。
【
図17】
図17は、実施形態に係る乱数生成器の回路の一例を示す図である。
【
図18】
図18は、実施形態に係る乱数生成器のフィードバック処理回路の構成を示した図である。
【
図19】
図19は、実施形態に係る乱数生成器が行うフィードバック制御の処理の流れを表すフローチャートである。
【発明を実施するための形態】
【0008】
以下、図面を参照しながら、乱数生成器の実施形態について詳細に説明する。ここで、互いに同じ構成には共通の符号を付して、重複する説明は省略する。
【0009】
(第1の実施形態)
図1は、第1の実施形態に係る乱数生成器100と、乱数生成器100に接続される周辺機器を示した図である。乱数生成器100は、MTJ素子110と、シーケンス制御回路160と、MTJ制御回路200と、信号出力回路150と、バッファ190と、フィードバック制御回路180とを備え、入力装置201、メモリ210、ディスプレイ220、処理回路230に適宜接続される。MTJ制御回路200は、V-Iコンバータ115と、書き込み回路120と、読み出し回路130と、消去回路140とを備える。なお、シーケンス制御回路160、書き込み回路120、読み出し回路130、消去回路140、信号出力回路150、フィードバック制御回路180は、それぞれ、シーケンス制御部、書き込み部、読み出し部、消去部、信号出力部、フィードバック制御部の一例である。
【0010】
MTJ素子110は、後述する磁気トンネル接合を利用した素子である。書き込み回路120、読み出し回路130、消去回路140は、それぞれ、MTJ素子110に対してそれぞれ書き込み、読み出し、消去の制御を行う回路により例えば構成される。また、シーケンス制御回路160は、例えば電子回路等で構成され、書き込み回路120、読み出し回路130、消去回路140の動作の制御を行う。ここで、シーケンス制御回路160は、書き込み回路120の制御の際、所定の電子回路で構成されるV-Iコンバータ115に電圧を印加し、V-Iコンバータ115が印加された電圧を電流に変換することで、書き込み回路120の制御を行う。シーケンス制御回路160は、典型的には、デジタル入力をアナログ信号に変換するDAC(Digital Analog Converter)を備える。信号出力回路150、バッファ190及びフィードバック制御回路180は、それぞれ所定の電子回路等で構成され、それぞれ、MTJ素子110に読み出し電流を流した時の電圧値を読み取り乱数ビット値を生成する処理、出力した乱数を一時的に蓄積する処理、乱数生成器100のフィードバック制御を行う処理をそれぞれ実行する。
【0011】
また、入力装置201は、操作者からの各種指示や情報入力を受け付ける、例えば、マウスやトラックボール等のポインティングデバイス、モード切替スイッチ等の選択デバイス、あるいはキーボード等の入力デバイスである。メモリ210は、乱数生成器100により生成された乱数や、種々のデータを記憶するメモリであり、例えば、RAM(Random Access Memory)、フラッシュメモリ等の半導体メモリ素子、ハードディスク、光ディスク等である。ディスプレイ220は、種々の解析結果等をユーザに表示するディスプレイであり、例えば液晶表示器等の表示デバイスである。
【0012】
乱数生成器100が生成した乱数は、処理回路230が実行するプログラムにおいて使用される。処理回路230は、プログラムをメモリ210から読み出し、実行することで各プログラムに対応する機能を実現するプロセッサである。なお、ここで、「プロセッサ」という文言は、例えば、CPU(Central Processing Unit)、GPU(Graphical Processing Unit)或いは、特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)、プログラマブル論理デバイス(例えば、単純プログラマブル論理デバイス(Simple Programmable Logic Device:SPLD)、複合プログラマブル論理デバイス(Complex Programmable Logic Device:CPLD)、及びフィールドプログラマブルゲートアレイ(Field Programmable Gate Array:FPGA))等の回路を意味する。プロセッサはメモリ230に保存されたプログラムを読み出し実行することで機能を実現する。
【0013】
以下、各部分の詳細について、
図2~17を用いて順次説明する。
【0014】
なお、本明細書の全体構成としては、まずはじめに、
図2を用いて、磁気トンネル接合(MTJ:Magnetic Tunnel Junction)素子110の動作及び乱数生成の原理について説明する。
図3~
図7では、第1の実施形態に係る乱数生成器100においてシーケンス実行時にDeactivation Timeを用いる構成について説明する。
図8及び
図9では、複数の磁気トンネル接合素子110が直列接続されて配置される構成について説明する。
図10~
図12Cでは、信号出力回路150の信号処理において差動増幅を行う構成について説明する。
図13~
図15では、直列接続された磁気トンネル接合素子110を、さらに並列接続する構成について説明する。
図16~
図17では、さらなる実施形態について説明する。
図18~
図19では、乱数生成器のフィードバック制御について、特に3状態フィードバック制御について説明する。
【0015】
はじめに、
図2を用いて、磁気トンネル接合(MTJ:Magnetic Tunnel Junction)素子110の動作及び実施形態に係る乱数生成器100が乱数を生成させる原理について説明する。
【0016】
図2に、磁気トンネル接合(MTJ:Magnetic Tunnel Junction)110の構成が示されている。MTJ素子110は、ナノメートルスケールの薄い絶縁層を2つの強磁性層で挟んだ積層構造で構成され、典型的には、磁化方向が反転しにくい強磁性層である参照層11と、磁化方向が反転しやすい強磁性層である自由層10と、その間の絶縁体12(トンネル障壁)とからなる。ここで、トンネル磁気抵抗(TMR:Tunnel Magneto Resistance)効果により、参照層11と自由層10との間の電気抵抗が、参照層11の磁化に対する自由層10の磁化の向きによって変化する。具体的には、磁化の向きが同じであれば低抵抗、逆であれば高抵抗となる。このことを利用して、MTJ素子110は、例えば、メモリとして用いることができる。
【0017】
ところで、MTJ素子110に対しては、スピン注入磁化反転により、自由層10の磁化方向を反転させることができる。すなわち、
図2において、書き込み回路120が、MTJ素子110の自由層10に例えば端子14から端子15へ、左から右へ書き込み電流16を流したとすると、流した電流に応じて、一定の確率で自由層10の磁化方向が反転する。ここで、自由層10の磁化方向が反転した場合、参照層11と自由層10との間の電気抵抗が変化するので、読み出し回路130が、端子13と端子14及び端子15の間に、すなわち絶縁体12を挟んで参照層11と自由層10との間に読み出し電流17を流し、端子13と端子14または端子15との間の電圧値を測定することで、参照層11と自由層10との間の電気抵抗を読み出すことができる。なお、書き込み回路120が流す電流の大きさに応じて、自由層10の磁化方向が反転する確率は変化し、電流の大きさが小さい極限では磁化方向が反転する確率は0%に近く、また、電流の大きさが大きい極限では磁化方向が反転する確率は100%に近くなる。すなわち、書き込み回路120が流す電流の大きさを適切に選べば、自由層10の磁化方向が反転する確率が、概ね50%となるように調整することができる。後述するように、乱数生成器としてMTJ素子110を用いる場合、書き込み回路120が書き込み時に流す電流の値は、自由層10の磁化方向が反転する確率が、概ね50%となるような値に設定される。
【0018】
また、消去回路140が、例えば、MTJ素子110の自由層10に書き込み電流とは逆向きに十分大きな電流、すなわち、自由層10の磁化方向が反転してもとの状態に戻る確率がほぼ100%になるような電流を自由層10に流すことで、自由層10の磁化をリセットすることができる。
【0019】
続いて、MTJ素子110を用いた乱数生成について説明する。
【0020】
乱数を生成させる方法として、所定の数学アルゴリズムに用いて乱数を生成させる方法がある。しかしながら、これらの数学アルゴリズムにより生成される乱数は、実際には確定的な計算により生成される擬似的な乱数であるため、真の乱数ではなく、一定の周期性を持つ。このような観点から一定の周期性を持たない乱数を生成することがのぞましい。ここで、例えば、電流を流したときの磁化の反転現象を乱数生成に用いると、電流を流した時の磁化の反転は量子力学により与えられる確率的な過程であるので、生成される乱数の非周期性が物理的に保証される。
【0021】
ここで、上述したように、書き込み回路120が上述の所定の書き込み電流を流すと、概ね50%の確率で、自由層10の磁化方向が反転する。従って、書き込み回路120が書き込み電流を流したあと、読み出し回路130が参照層11と自由層10の間の電気抵抗を測定し、例えば、高抵抗状態を「1」、低抵抗状態を「0」とすることで、書き込み回路120の書き込み電流に対して、50%の確率で、それぞれ「1」及び「0」となるバイナリ信号を得ることできる。このように、MTJ素子110は、乱数生成器100として用いることができる。
【0022】
続いて、シーケンス制御回路160の行う制御について説明する。シーケンス制御回路160は、書き込み回路120、読み出し回路130及び消去回路140に制御信号を送信することにより、MTJ素子110の制御を行う。
【0023】
まずはじめに、比較例に係る乱数生成器100においてシーケンス制御回路160が行う制御について説明する。
【0024】
図3に、比較例に係る乱数生成器100において、シーケンス制御回路160が実行するシーケンスの一例が示されている。
【0025】
はじめに、シーケンス制御回路160は、書き込み期間5において、V-Iコンバータ115に書き込み電圧1を印加する。書き込み回路120は、V-Iコンバータ115により生成された書き込み電流16を、MTJ素子110の自由層10に流す。これにより、自由層10の磁化が、一定の確率で反転する。続いて、書き込み期間5の直後の読み出し期間6において、シーケンス制御回路160の制御を受けた読み出し回路130は、読み出し電圧2を印加する。これにより、自由層10と参照層11との間の抵抗が読み出される。信号出力回路150は、MTJ素子110に読み取り電流を流した時の電圧値を基に、1ビットの乱数4を生成する。続いて、シーケンス制御回路160の制御を受けた消去回路140は、消去期間7において、消去電圧3を印加し、書き込み電流16と逆方向に電流を流す。これにより、MTJ素子110の自由層10の磁化がリセットされる。ここで、書き込み期間5、読み出し期間6、及び消去期間7は、それぞれ概ね5nsであり、これらの期間は概ね連続する期間となる。
【0026】
しかしながら、このような比較例のシーケンスチャートでは、生成された乱数の乱数としての質が低下する場合があった。
【0027】
そこで、我々は、
図3の比較例のシーケンスチャートを用いた場合に生成された乱数の乱数としての質が低下する原因の一つとして、自由層10に電荷が蓄積されることに着目した。
【0028】
図4は、比較例に係るシーケンスチャートにおいて、自由層10に蓄積される電荷のシミュレーションを行ったシミュレーション結果である。すなわち、比較例に係るシーケンスチャートを実行した場合、グラフ9aで示されるように、消去期間7においては、電荷の蓄積パラメータは0から1に変化し、電荷が蓄積する。つづいて、グラフ9bで示されるように、書き込み期間5において、電荷の蓄積パラメータは1から-0.23に変化する。つづいて、グラフ9cで示されるように、読み出し期間6において、電荷の蓄積パラメータは、-0.23からゆるやかに回復する。
【0029】
すなわち、比較例に係るシーケンスにおいては、読み出し期間6の開始時に、電荷の蓄積パラメータが0でない値をとり、電荷の一部が読み出し期間6の開始時に、自由層10に残留している。この結果、生成された乱数の質が低下する場合があった。
【0030】
実施形態は、かかる知見に基づくものである。すなわち、実施形態の乱数生成器100は、磁気トンネル接合素子の磁性層に電流を流すことにより当該磁性層の磁化を確率的に反転させる書き込み回路120と、磁化を読み取る読み出し回路130と、読み出し回路130が読み取った磁化を基に乱数を生成する信号出力回路150と、書き込み回路120及び読み出し回路130の制御を行うシーケンス制御回路160とを備えるものであって、シーケンス制御回路160は、第1の期間に書き込み回路120に電流を流させるように制御し、第1の期間の終了後、第2の期間経過後に、読み出し回路130に磁化を読みとらせるものである。ここで、第2の期間は、典型的には第1の期間より長い期間であり、例えば第1の第1の期間の3倍以上の期間であり、例えば15ns以上の期間である。このことにより、生成された乱数の品質を高めることができる。
【0031】
図5に、実施例に係る乱数生成器100において、シーケンス制御回路160が実行するシーケンスの一例が示されている。
【0032】
はじめに、シーケンス制御回路160は、第1の期間である書き込み期間5において、V-Iコンバータ115に書き込み電圧1を印加し、書き込み回路120に電流を流させるように制御する。書き込み期間5は、例えば、5nsであり、書き込み電流は、例えば100μAである。
【0033】
続いて、シーケンス制御回路160は、磁性層である自由層10に蓄積された電荷が消失するまでの時間である第2の期間8aだけ読み取り回路130を待機させる。以下、第2の期間8aを、必要に応じて、待機時間(deactivation time)と称する。磁性層である自由層10に蓄積された電荷が消失するまでの時間である第2の期間8aは、典型的には第1の期間5よりは長い期間であり、例えば第1の期間の3倍以上の期間、例えば15nsである。
【0034】
続いて、シーケンス制御回路160は、第1の期間の終了後、第2の期間8a経過後の読み出し期間6に、読み出し回路130に読み出し電圧2を印加させ磁化を読み取らせる。読み出しの期間は、例えば5nsであり、読み出し電流は10μA程度である。
【0035】
続いて、シーケンス制御回路160は、消去期間7に、消去回路140に消去電圧3を印加し、MTJ素子110の自由層10の磁化をリセットする。ここで、消去電流は、おおむね-600μA程度である。
【0036】
続いて、シーケンス制御回路160は、消去回路140により磁性層である自由層10に蓄積された電荷が消失するまでの時間である第3の期間8bだけ、書き込み回路120を待機させる。消去回路140により磁性層である自由層10に蓄積された電荷が消失するまでの時間である第3の期間8bは、典型的には消去期間7よりは長い期間であり、例えば消去期間の3倍以上の期間、例えば15nsである。
【0037】
図6は、実施形態に係るシーケンスチャートにおいて、自由層10に蓄積される電荷のシミュレーションを行ったシミュレーション結果である。すなわち、実施形態に係るシーケンスチャートを実行した場合、グラフ9dに示されるように、書き込み期間9dにより電荷の蓄積を表すパラメータが0から-0.5に変化し、書き込み期間9dの終了後には自由層10に電荷が蓄積されているが、15nsの待機時間を挟むことにより、曲線9eに示されるように、待機時間の終わりでは電荷の蓄積を表すパラメータが0となる。この結果、グラフ9fに示されるように、読み出し期間における電荷の蓄積を表すパラメータが0で推移する。この結果、生成される乱数の質が向上する。
【0038】
続いて、グラフ9gに示されるように、消去期間9gにより電荷の蓄積を表すパラメータが0から1に変化し、消去期間9gの終了後には自由層10に電荷が蓄積されているが、15nsの待機時間を挟むことにより、曲線9hに示されるように、待機時間の終わりでは電荷の蓄積を表すパラメータが0となる。別の言い方をすれば、
図4、
図6、及び上述するMTJの電荷の蓄積を表すパラメータは、磁化の反転確率Pにより定義され、消去または書き込み電流により、正にチャージされるときは反転確率Pに等しく、負にチャージされるときは、反転確率Pに負の符号を付けた値に等しい動作を示す。この結果、次の書き込みサイクルを電荷の蓄積を表すパラメータが0の状態から開始することができ、生成される乱数の質が向上する。
【0039】
このように、磁性層に蓄積された電荷が消失するまでの期間を待機時間としてシーケンスに組み込むことで、生成される乱数の質を向上させることができる。
【0040】
図7に、1個のMTJ素子を使用する場合における乱数生成器100の回路構成が示されている。
図1と
図7において、同じ符号が割り振られている構成は、それぞれ対応する構成となる。なお、差動増幅器151及びDAC184については、それぞれ
図10及び
図18で説明する。
【0041】
なお、
図5及び
図7では、乱数生成器100が1個のMTJ素子110のみを使用して乱数を生成する場合について説明したが、実施形態はこれに限られない。乱数生成器100には、複数のMTJ素子110が直列接続されて配置されてもよい。これにより、1度の電流の注入で複数のMTJ素子110に関して乱数生成することができる。
図8及び
図9を用いて、複数の磁気トンネル接合素子110を直列接続する構成について説明する。
図8は、複数のMTJ素子を直列接続する場合における回路の一例であり、
図9は、かかる場合のシーケンスチャートの一例である。
【0042】
図8において、複数のMTJ素子110であるMTJ
1~MTJ
10は直列に接続されている。ここで、複数のMTJ素子110であるMTJ
1~MTJ
10が直列に接続されるとは、それらの素子の自由層10同士が直列に接続されることを意味し、従って、書き込み回路120が一度電流を流すと、当該電流により、複数のMTJ素子110の自由層10のそれぞれの磁化の方向が一度に一定の確率で反転する。すなわち、複数のMTJ素子110に関する書き込みは、一度に行われる。換言すると、書き込み回路120は、複数のMTJ素子110に電流を流すことにより、複数MTJ素子それぞれの磁性層の磁化を互いに独立に確率的に反転させる。なお、電流による磁化の方向の反転は、確率的な現象であるから、例えばあるMTJ素子110で磁化の方向が反転したからといって、隣のMTJ素子110でも同じく磁化の方向が反転するとは限らず、磁化の方向が反転するか否かは、MTJ素子110ごとに独立に観測される。
【0043】
一方で、
図8の回路図からもわかる通り、各MTJ素子110に対する読み出しは、MTJ素子110ごとに独立に行われる。すなわち、複数のMTJ素子110に関する読み出しは、MTJ素子110ごとに順次行われる。すなわち、読み出し回路130は、複数のMTJ素子それぞれの磁化(すなわち磁化状態に応じた抵抗値の大小)を読み取る。
【0044】
図9に、複数の磁気トンネル接合素子110を直列接続する場合のシーケンスチャートの一例が示されている。一つの磁気トンネル接合素子110を用いて乱数生成を行う場合のシーケンスチャートである
図5と、読み出し期間6に印加される読み出し電圧2以外の構成は同様であるので繰り返しての説明は省略する。複数の磁気トンネル接合素子110を直列接続する場合、読み出し期間6は、それぞれのMTJ素子の読み出し期間12a、12b、12c、…から構成される。例えば、読み出し回路130は、読み出し期間12a中に、1番目のMTJ素子MTJ
1の読み出しを行い、読み出し期間12b中に、2番目のMTJ素子MTJ
2の読み出しを行い、読み出し期間12c中に、3番目のMTJ素子MTJ
3の読み出しを行い、これらの読み出しは順次行われる。
【0045】
このように、それぞれのMTJ素子ごとに独立に乱数ビットが生成されるので、実施形態に係る乱数生成器100は、1回の読み出し期間6で複数ビットの乱数を生成することができ、乱数生成の効率が上昇する。
【0046】
続いて、
図10~
図12Cを用いて、MTJ素子110からの出力信号に対する信号出力回路150の信号処理について説明する。
【0047】
図10は、実施形態に係る乱数生成器における信号出力回路の構成を示した図である。
図10に示されるように、実施形態では、読み出し回路130がMTJ素子110に流す読み出し電流により得られた電圧と、後述する基準回路152により得られた基準電流により得られた電圧の差を、差動増幅器151が増幅することにより、信号出力回路150は、出力信号を生成する。
【0048】
まず、
図11を用いて、信号出力回路150がかかる構成を有する背景について説明する。
図11に、読み出し回路130の回路構成の一例が示されている。
図11の回路において、読み出し回路130における出力電圧20とインバーターINV
1の閾値電圧V
TH1とが比較され、例えば出力電圧20が閾値電圧V
TH1を上回る場合には出力結果V
outは1となり、出力電圧20が閾値電圧V
TH1を下回る場合には出力結果V
outは0となる。ここで、通常、出力電圧20は、MTJ素子110が低抵抗である場合には、閾値電圧V
TH1を下回り、逆にMTJ素子110が高抵抗である場合には、閾値電圧V
TH1を上回るように設計される。
【0049】
しかしながら、読み出し回路130の電子回路は、MTJ素子110などの素子、およびスイッチング素子回路自身の抵抗のばらつきがある。この結果、例えば、MTJ素子110が低抵抗である場合でも、閾値電圧VTH1を上回ったり、逆にMTJ素子110が高抵抗である場合には、閾値電圧VTH1を下回ってしまったりし、その結果常に0または1が出力され、回路が正しく動作しない場合がある。
【0050】
かかる背景に鑑みて、実施形態に係る乱数生成器100においては、信号出力回路150は、磁気トンネル接合素子の電気的特性を取得するための基準回路152を設ける。つづいて、差動増幅器151が、読み出し回路130が出力する信号と、基準回路が出力する信号との間で差動増幅を行って、乱数の基となる差動増幅信号を生成し後段の回路に出力する。これにより、回路自身のばらつきが影響する読み出し回路130の動作を安定させることができる。
【0051】
図12A、
図12B及び
図12Cに、かかる回路構成の一例が示されている。
図12Aは、信号出力回路150の全体構成を示し、
図12Aの読み出し回路130及び差動増幅器151は、
図10の対応する構成にそれぞれ対応する。
図12Bは、差動増幅器151と差動増幅器151に接続される基準回路152についてより詳細に示した図である。
図12Bに示されているように、差動増幅器151は、読み出し回路130からの出力電圧153と、基準回路152からの出力電圧との差を増幅して後段の回路に出力する。ここで、基準回路152が出力する電圧は、MTJ素子110の低抵抗時の電圧をV
Lとし、MTJ素子110の高抵抗時の電圧V
Hとして、例えば(V
L+V
H)/2となるように設計される。これにより、信号出力回路150は、MTJ素子110が低抵抗時には、信号値「0」を後段の回路に出力し、MTJ素子110が高抵抗時には、信号値「1」を後段の回路に安定に出力することができる。
【0052】
次に、基準回路152の動作について説明する。
図12Cは、基準回路152において、MTJ素子の参照抵抗値を決定する回路170の内部回路図である。ここで、基準回路152における回路170は、直列接続された2つのMTJ素子を有する。ここでの、直列接続とは前記とは異なり、MTJ素子を可変抵抗素子と見なした場合の接続である。一例として、
図12Cに示されているように、回路170において、MTJ素子174及びMTJ素子175が、抵抗読み出し時のパス173において、直列接続されるように配置される。
【0053】
ここで、基準回路152は、書き込みパス171及び書き込みパス172を用いて、MTJ素子174とMTJ素子175とに互いに逆向きに大きい電流を流すことにより、MTJ素子174の抵抗及びMTJ素子175の抵抗のうち、片方が低抵抗時の抵抗となり、他方が高抵抗時の抵抗となるように調整を行う。一例として、基準回路152は、
図12Cに示される方向でMTJ素子174とMTJ素子175とに互いに逆向きに電流を流すことにより、MTJ素子174の抵抗を高抵抗R
H状態に固定し、MTJ素子175の抵抗を低抵抗R
L状態にする。
【0054】
続いて、基準回路152は、回路の動作を書き込みパス171及び書き込みパス172から読み出しパス173に変更する。この時、MTJ素子174とMTJ素子175とは直列接続されるから、回路の合成抵抗はRL+RHとなる。従って、回路170は、読み出しパス173の動作時に、読み出し回路130の出力電流をIとして、I/2の電流を読み出すパス173に流すことにより、(VL+VR)/2の出力電圧を出力することができる。このような構成を取ることで、信号出力回路150の動作を安定させることができる。
【0055】
続いて、
図13~
図15を用いて、直列接続された磁気トンネル接合素子110を、さらに並列接続する構成について説明する。直列接続された磁気トンネル接合素子110を、さらに並列接続することで、単位時間に生成することのできる乱数の数を増加させることができ、乱数の生成効率を更に高めることができる。
【0056】
【0057】
図13は、直列接続された磁気トンネル接合素子110を、さらに並列接続した場合の回路構成の一例を示している。すなわち、乱数生成器100には、直列接続された複数のMTJ素子110が複数個並列接続される。
図13の例では、MTJ01、MTJ02、MTJ03、MTJ04、MTJ05の5つのMTJ素子110が直列接続され、これが、RBG_0、RBG_1、RBG_2の3列に並列接続されている場合が示されている。ここで、MTJ素子のそれぞれについて、書き込み回路120、読み出し回路130、及び消去回路140が、これまでに述べた処理を行って、信号の書き込み、読み出し及び消去を行う。ここで、書き込み処理については1列のMTJ素子に対して同時に処理が行われるのに対して、読み出し処理については、MTJ素子一つ一つに対して、順番に処理が行われる。例えば、読み出し回路130は、MTJ01、MTJ02,MTJ03、MTJ04、MTJ05のMTJ素子それぞれについて、順番に読み出し処理を行う。また、信号出力回路150は、それぞれのMTJ素子に読み出し電流を流した時の電圧値と、上述の基準回路152との出力結果を比較して差動増幅器151(Differential Amplifier)による差動増幅処理を行って、乱数信号を生成し、一列分の乱数信号を生成する。例えば、信号出力回路150は、MTJ素子MTJ01に読み出し電流を流した時の出力電圧と、MTJ素子MTJ01に対応する基準回路152により出力される出力電圧とを比較して差動増幅器DA01による差動増幅処理を行って、1個の乱数信号を生成する。また、信号出力回路150は、MTJ素子MTJ02に読み出し電流を流した時の出力電圧と、MTJ素子MTJ02に対応する基準回路152により出力される出力電圧とを比較して差動増幅器DA02による差動増幅処理を行って、1個の乱数信号を生成する。MTJ素子MTJ03、MTJ04、MTJ05等についても同様の処理が行われ、これらの1個の乱数信号が複数個まとめられて、一列分の乱数信号が生成される。
【0058】
このように、
図13に示されるように、信号出力回路150は、列RBG_0について、MTJ素子MTJ01、MTJ02、MTJ03、MTJ04、MTJ05に読み出し電流を流した時に得られる電圧値を基に一列分の乱数信号154a(乱数列RN0)を生成し、列RBG_1について、MTJ素子MTJ11、MTJ12、MTJ13、MTJ14、MTJ15に読み出し電流を流した時に得られる電圧値を基に一列分の乱数信号154b(乱数列RN1)を生成し、列RBG_2について、MTJ素子MTJ21、MTJ22、MTJ23、MTJ24、MTJ25に読み出し電流を流した時に得られる電圧値を基に一列分の乱数信号154c(乱数列RN2)を生成する。続いて、信号出力回路150は、乱数信号154aと乱数154bと乱数信号154cとをORゲート155で結合し、乱数を連続的に生成し、結果をバッファ190に出力する。すなわち、信号出力回路150は、並列接続された個々のMTJ素子から得られた情報を統合して、乱数を生成する。バッファ190は、信号出力回路150が出力した信号を一時的に格納し、適当な長さの乱数列が生成されると、生成された最終的な乱数列を、処理回路230に出力する。
【0059】
バッファ190の役割としては、複数サイクルで出力されるビット列の時間間隔を均等にすることが挙げられる。実施形態に係るシーケンスは、待機時間を含むので、生成された乱数列は時間的に不均等になりやすいが、バッファ190が存在することで、生成された乱数列が時間的に均等となる。
【0060】
また、信号出力回路150の出力端子は、フィードバック制御回路180と接続され、MTJ素子110に入力される電流に関するフィードバック制御も合わせて行われる。
【0061】
図14Aに、シーケンス制御回路160がかかる処理を実行するにあたって実行するシーケンスの一例が示されている。書き込み回路120は、書き込み期間1aにおいて、シーケンス制御回路160の制御を受けてV-Iコンバータ115に入力された電圧に基づいて生成された電流を、列RBG_0について、即ちMTJ素子MTJ01、MTJ02等に流す。読み出し回路130は、シーケンス制御回路160の制御を受けて、書き込み期間1aから所定の待機時間(Deactivation Time)である15nsが経過したのち、読み出し期間2aにおいて、MTJ素子MTJ01、MTJ02等に、読み出し電圧を印加する。また、読み出し期間2aの経過後、消去回路140は、消去期間3aにおいて、MTJ素子MTJ01、MTJ02等の磁化をリセットする。また、書き込み回路120は、磁化のリセットから所定の待機時間経過後、再び書き込み処理を行う。
【0062】
また、これらの列の隣の列である列RBG_1、即ちMTJ素子MTJ11、MTJ12等について、書き込み回路120は、書き込み期間1aが経過した直後の書き込み期間1bにおいて、シーケンス制御回路160の制御を受けてV-Iコンバータ115に入力された電圧に基づいて生成された電流を、MTJ素子MTJ11、MTJ12等に流す。また、同様に、読み出し回路130は、シーケンス制御回路160の制御を受けて、書き込み期間1bから所定の待機時間である15nsが経過したのち、読み出し期間2bにおいて、MTJ素子MTJ11、MTJ12等に、読み出し電圧を印加する。また、読み出し期間2bの経過後、消去回路140は、消去期間3bにおいて、MTJ素子MTJ11、MTJ12等の磁化をリセットする。また、書き込み回路120は、磁化のリセットから所定の待機時間経過後、再び書き込み処理を行う。
【0063】
同様に、更に隣の列である列RBG_2、即ちMTJ素子MTJ21、MTJ22等について、書き込み回路120は、書き込み期間1bが経過した直後の書き込み期間1cにおいて、シーケンス制御回路160の制御を受けてV-Iコンバータ115に入力された電圧に基づいて生成された電流を、MTJ素子MTJ21、MTJ22等に流す。また、同様に、読み出し回路130は、シーケンス制御回路160の制御を受けて、書き込み期間1cから所定の待機時間が経過したのち、読み出し期間2cにおいて、MTJ素子MTJ21、MTJ22等に、読み出し電圧を印加する。また、読み出し期間2cの経過後、消去回路140は、消去期間3cにおいて、MTJ素子MTJ21、MTJ22等の磁化をリセットする。また、書き込み回路120は、磁化のリセットから所定の待機時間経過後、再び書き込み処理を行う。
【0064】
続いて、
図14Bを用いて、生成される乱数列について説明する。
図14Bのシーケンスチャートでは、各列に読み出し電圧が印加されるタイミングと、生成される乱数列が示されている。
【0065】
はじめに、読み出し回路130は、列RBG_0について、読み出し期間2aにおいてMTJ素子MTJ01、MTJ02等に読み出し電圧を印加し、これに伴って信号出力回路150は乱数信号154a(乱数列RN0)を生成する。具体的には、読み出し回路130は、読み出し期間2aにおいてMTJ素子MTJ01に読み出し電圧を印加し、これに伴って信号出力回路150は乱数信号15aを生成する。読み出し回路130は、読み出し期間2aにおいてMTJ素子MTJ02に読み出し電圧を印加し、これに伴って信号出力回路150は乱数信号15bを生成する。読み出し回路130は、読み出し期間2aにおいてMTJ素子MTJ03に読み出し電圧を印加し、これに伴って信号出力回路150は乱数信号15cを生成する。これらの一連の処理により、信号出力回路150は乱数信号154a(乱数列RN0)を生成する。
【0066】
同様に、読み出し回路130は、列RBG_1について、読み出し期間2bにおいてMTJ素子MTJ11、MTJ12等に読み出し電圧を印加し、これに伴って信号出力回路150は乱数信号154b(乱数列RN1)を生成する。また、読み出し回路130は、列RBG_2について、読み出し期間2cにおいてMTJ素子MTJ21、MTJ22等に読み出し電圧を印加し、これに伴って信号出力回路150は乱数信号154c(乱数列RN2)を生成する。
【0067】
ここで、ORゲート155は、列RBG_0について生成された乱数列RN0と、列RBG_1について生成された乱数列RN1と、列RBG_2について生成された乱数列RN2との間でOR処理を行う。これにより、
図14Bの最下段に示されるように、期間16全体を通じて、信号出力回路150は、乱数列を連続的に生成することができる。
【0068】
なお、実施形態は上述の例に限られず、例えば
図15のようにMTJ素子110を9並列に接続してもよい。ここで、
図15のようにMTJ素子110を9並列にする理由は以下の通りである。すなわち、一つのMTJ素子110に着目すると、45nsあたり1ビットの乱数が生成される。また、一つのMTJ素子110に着目すると、読み出しに要する時間は5nsである。従って、45ns÷5ns=9並列とすると、常にいずれかのMTJ素子でデータの読み出しが行われていることになる。従って、それら並列回路それぞれのデジタル信号をOR回路で加算することにより、信号出力回路150は、待機時間なしに、連続的に乱数生成を行うことができる。
【0069】
図16は、直列接続するMTJ素子数が接続可能な最大個数となるn個とする乱数生成器100の構成を示す。最大個数のnは、温度及びプロセス変動により決まるMTJの磁化反転確率が50%となるための書き込み電流の最大I
SW_maxと、最小の電源電圧条件V
DD_minにより、MTJ単体の書き込み電極間の抵抗をR
w_mtjとして、図に示す書き込み電流経路に沿う各MOSのソース・ドレイン間の電圧をV
sd_1,V
sd_2,V
sd_3、V
sd_4とすると、直列接続されたn個のMTJの書き込み電極n
0-n
1間の電位降下が、I
SW_max×R
w_mtj×n<V
DD_min-(V
sd_1+V
sd_2+V
sd_3+V
sd_4)を満たす最大の整数nとして決めることができる。換言すると、乱数生成器100には、MTJ素子の書き込み電流の最大値I
SW_maxと、電源電圧条件V
DD_minとに基づいて定められた数nの複数の前記磁気トンネル接合素子が直列接続されて配置される。
【0070】
図17は、直列接続されたn個のMTJ素子を、並列接続可能な最大個数となるm列とした乱数生成器100のシーケンスを示す。図では、直列接続されたn個のMTJ素子で構成された各乱数生成の列RBG
0~RBG
m-1の書き込み期間t
W、読み出し期間t
R、消去期間t
Eと、所定の待機時間15nsを読み出し期間t
Rと書き込み期間t
Wの直前に設けた動作のタイミングと、各読み出し期間t
Rが、MTJ1素子当りの読み出し期間をt
RSとしてn個のMTJの連続する読み出し期間t
R=t
RS×nとして各MTJの読み出しを行うことを示し、各列RBG
0~RBG
m-1の動作のタイミングは読み出し期間t
Rづつずらしたタイミングとすることにより、1周期となるt
CYCの期間にn×m個のMTJから連続する乱数列RNが生成される。従って、並列接続する乱数生成列の最大個数mは、t
CYC/t
Rを越えない最大の整数として決定される。
【0071】
続いて、
図18及び
図19を用いて、実施形態に係る乱数生成器100が行うフィードバック制御について説明する。
【0072】
ここで、フィードバック制御とは、書き込み回路120がMTJ素子110に入力する電流の値を、信号出力回路150に基づいて制御する処理のことをいう。すなわち、フィードバック制御回路180は、MTJ素子110の磁性層に流す電流の制御を行う。より具体的には、書き込み回路120がMTJ素子110に入力する電流の値は、V-Iコンバータ115に入力される電圧の値を制御することにより行われる。フィードバック制御回路180は、バイナリカウンタ181と、デジタルコンパレータ182と、アップダウンカウンタ183と、DAC184と、one hot encoder185とからなる。
【0073】
バイナリカウンタ181は、信号出力回路150から出力された乱数の数をカウントするカウンタである。デジタルコンパレータ182は、バイナリカウンタか181から出力された出力結果を、閾値と比較するコンパレータである。アップダウンカウンタ183は、V-Iコンバータに入力する電圧の大きさを表すカウンタである。アップダウンカウンタは、例えば10ビットのカウンタであり、すなわち、V-Iコンバータに入力される電圧値が、10ビットのデジタル信号で表現される。one-hot encoder185は、与えられた入力に対して、1ビットのみについて信号値が1でありそれ以外のビットについてすべての信号値が0となるような出力を与えるような回路である。DAC(Digital Analog Converter)184は、デジタル入力をアナログ信号に変換する回路である。V-Iコンバータ115は、入力される電圧を、電流に変換して出力する回路である。なお、以下の実施例では、V-Iコンバータ115が、8モードの異なるV-I変換特性で動作可能なマルチV-Iコンバータである場合について説明する。なお、バイナリカウンタ181、デジタルコンパレータ182、アップダウンカウンタ183、DAC184,V-Iコンバータ115は、例えば所定の電子回路として実現される。
【0074】
はじめに、MTJ素子110を用いた乱数生成器100においてフィードバック制御が必要となる理由について簡単に説明する。
【0075】
MTJ素子110を用いた乱数生成器100の動作原理としては、MTJ素子110に電流Iを注入した時の自由層10の磁化の反転が確率的過程であることを利用している。ここで、磁化の反転確率Pは、MTJ素子110の自由層10に注入される電流Iに対して鋭敏に変化する。すなわち、磁化の反転確率Pがちょうど50%であるような電流Iのレンジは小さなものとなる。また、磁化の反転確率Pは、温度T等の環境によっても変化する。ここで、磁化の反転確率Pが50%からずれると、乱数の品質に影響を与えるため、磁化の反転確率Pは高い精度で50%であることが重要である。従って、何らかのネガティブフィードバック機構を用いて、磁化の反転確率Pが高い精度で50%である状態が維持されることが重要となる。
【0076】
このような背景のもと、実施形態に係る乱数生成器では、バイナリカウンタ181とデジタルコンパレータ182を用いて磁化の反転確率Pが50%より多いか少ないか、あるいは50%に等しいかを判定し、それに応じてV-Iコンバータ115への入力電圧を制御することで、このようなフィードバック機構を実現している。
【0077】
続いて、
図19を用いて、実施形態に係る乱数生成器100が実行するフィードバック制御の処理の手順について説明する。
【0078】
はじめに、ステップS100において、信号出力回路150が、1ビットの乱数を生成し、ステップS110において、バイナリカウンタ181に出力する。バイナリカウンタ181は、例えば信号出力回路150から出力された乱数の数が規定のカウント値になるまで、信号出力回路150から出力された乱数の数のカウントを受け付ける。ここで、規定のカウント値とは、例えば1024,2048、4096、8192等である。
【0079】
なお、このカウント値としては、大きすぎるとフィードバックに時間がかかる一方で、小さすぎるとフィードバックが適切でなくなる。すなわち、N個の乱数が生成された場合、0と1が完全に50%で等確率で生成されたとしても、生成される0の個数と1の個数とは、統計的誤差によりNの平方根程度はばらつく。この結果を、0と1が生成される確率が50%からずれていると誤って判断して0と1が生成される確率を変えてしまうと、制御に不安定が生じる。従って、所定のカウント値は、ある程度大きい値、例えば8192等が望ましい。一方で、規定のカウント値が大きすぎると、フィードバックが働くまでの時間がかかってしまうので、それらの効果との兼ね合いでカウント値が選択される。
【0080】
また、バイナリカウンタ181は、受け付けたカウントのうち、値が「1」であるデータの個数、及び値が「0」であるデータの個数をカウントする。
【0081】
バイナリカウンタ181が、規定のカウント値に達しない場合、(ステップS120 No)、バイナリカウンタ181は、引き続きデータの入力を受け付ける。一方、バイナリカウンタ181が、規定のカウント数に達した場合(ステップS120 Yes)、続いて、ステップS130において、バイナリカウンタ181は、蓄積されたカウント値、すなわち値が「1」であるデータの個数、または値が「0」であるデータの個数、をデジタルコンパレータ182に出力する。
【0082】
続いて、ステップS140において、デジタルコンパレータ182は、ステップS130でバイナリカウンタ181から取得したカウント数を、閾値と比較する。すなわち、フィードバック制御回路180は、磁化を基に生成されたバイナリ信号より得られた計数値であるカウント値を、閾値と比較する。ここで、閾値は、例えば、ステップS120における規定のカウント値に、0.5を乗じた値になる。例えば、ステップS120における規定のカウント数が、「4096」であった場合、デジタルコンパレータ182がカウント値と比較する閾値は、「2048」となる。すなわち、この場合、規定のカウント数4096個のデータのうち、「1」であるデータのカウント数が、2048より大きいか、小さいか、あるいは等しいかに応じて、以降のフィードバック制御が行われることになる。
【0083】
ここで、カウント値が閾値と比較して小さい場合、処理はステップS150Aと進み、アップダウンカウンタの値が1増加し、カウント値が大きくなる方向へのV-Iコンバータ115の電圧制御が行われる。一方、カウント値が閾値と比較して大きい場合、処理はステップS150Bへと進み、アップダウンカウンタの値が1減少し、カウント値が小さくなる方向へのV-Iコンバータ115の電圧制御が行われる。すなわち、フィードバック制御回路180は、磁化を基に生成されたバイナリ信号より得られた計数値が閾値を下回っている場合には、計数値が増加するように書き込み回路120が流す電流を制御し、逆に計数値が閾値を上回っている場合には、計数値が減少するように書き込み回路120が流す電流を制御する。
【0084】
なお、アップダウンカウンタ183は、V-Iコンバータ115への入力電圧を制御するためのデジタル信号であり、例えばアップダウンカウンタ183の値が大きくなるほど、ステップS130におけるカウント値が大きくなる。逆に、アップダウンカウンタ183の値が小さくなると、ステップS130におけるカウント値が小さくなる。
【0085】
以下の実施形態では、V-Iコンバータ115が、V-I特性を8モードに切り替え可能なマルチV-Iコンバータであり、アップダウンカウンタ183が、10ビットのデジタル信号である場合である場合について説明する。ここで、アップダウンカウンタ183の10ビットは、マルチV-IコンバータであるV-Iコンバータ115のV-I特性のモードを表す3ビットのデジタルデータと、当該モードにおいてV-Iコンバータ115へ入力される電圧の大きさを示す7ビットのデジタルデータからなる。
【0086】
ここで、例えば上位3ビットが「000」の場合はV-Iコンバータ115は第1のモードで動作し、上位3ビットが「001」の場合はV-Iコンバータ115は第2のモードで動作し、上位3ビットが「010」の場合は、V-Iコンバータ115は第3のモードで動作する。ここで、V-Iコンバータ115が第Nのモードで動作するとは、V-Iコンバータ115が第NのV-I特性で動作することを意味する。また、例えば、アップダウンカウンタ183の値が「0010000000」である場合にV-Iコンバータ115に入力される電圧の大きさは、アップダウンカウンタ183の値が「0001111111」である場合にV-Iコンバータ115に入力される電圧の大きさと近接するものとなる。また、アップダウンカウンタ183の値が「0100000000」である場合にV-Iコンバータ115に入力される電圧の大きさは、アップダウンカウンタ183の値が「0111111111」である場合にV-Iコンバータ115に入力される電圧の大きさと近接するものとなる。このように、アップダウンカウンタ183の値が、「0000000000」から、「1111111111」まで連続的に変化するとき、必要に応じてV-Iコンバータ115の動作モードが切り替わりながら、MTJ素子110に入力される電流が連続的に変化する。
【0087】
このように、V-Iコンバータ115が、N個のモードのV-I特性で動作するマルチV-Iコンバータである場合、シングルV-Iコンバータと比較して、V-Iコンバータの出力電流の誤差が一定である場合、ステップS130のカウント値及びV-Iコンバータへの入力電圧の誤差は、おおむねN倍まで許容されることとなり、MTJ素子110への入力電流を高精度で制御することができる。
【0088】
以上を踏まえ、ステップS160において、アップダウンカウンタ183は、更新されたアップダウンカウンタのカウンタ値の下7ビットの値に基づいて、DAC184にアップダウンカウンタのカウンタ値の下7ビットの値を送信し、DAC184は、取得したアップダウンカウンタのカウンタ値の下7ビットの値に基づいて、V-Iコンバータ115への入力電圧Vinの値を設定する。また、ステップS170において、アップダウンカウンタ183は、更新されたアップダウンカウンタのカウンタ値の上3ビットの値をOne-hot encoder185に受け渡し、One-hot encoder185は、受け渡された情報に基づいて、V-Iコンバータ115の動作モードを制御する。このような処理を行うことで、実施形態に係るフィードバック制御回路180は、例えば「1」の割合が50%より多い場合には、「1」の生成の割合を少なくし、逆に「1」の割合が50%少ない場合には、「1」の生成の割合を多くする制御を行うことができ、「0」と「1」のそれぞれが生成される割合を、50%に近い状態に維持することができる。
【0089】
続いて、ステップS140において、ステップS130のカウント値が閾値と等しい場合の処理について説明する。ステップS140において、ステップS130のカウント値が等しい場合、デジタルコンパレータ182は、V-Iコンバータ115に入力される入力電圧の値及び書き込み回路120がMTJ素子110に入力する電流の値を維持する。換言すると、フィードバック制御回路180は、磁化を基に生成されたバイナリ信号より得られた計数値と等しい場合には、書き込み回路120が流す電流を維持する。すなわち、デジタルコンパレータ182は、バイナリカウンタが出力するカウント数と閾値とを比較し、カウント値が閾値と比較して、小さい場合、大きい場合、及び等しい場合の3種類の制御を行う。
【0090】
ここで、3種類目の制御である、カウント数と閾値とが等しい場合に、V-Iコンバータ115に入力される入力電圧の値及び書き込み回路120がMTJ素子に入力する電流の値を維持する処理を導入する理由としては、フィードバック制御を安定させることが挙げられる。カウント数と閾値とが等しい場合の制御を含まず2種類の制御のみの場合でも、理論的には、フィードバック制御は行うことは可能であると考えられる。しかしながら、現実には、例えば「1」と「0」の信号が完全に等確率で生成されている場合でも、統計的ばらつきにより、「1」の信号が生成される個数と「0」の信号が生成される個数にはばらつきが生じる。従って、このようなばらつきに過剰に最適化して処理を行うことは、かえってフィードバック制御の安定性を損なうことになると考えられる。
【0091】
なお、本明細書中で「等しい」とは、完全に同一である場合のみではなく、ある誤差の範囲で、例えばカウント差が2以内の場合は等しいと考えて、3種類の制御を行ってもよい。一例として、ステップS140において、カウント数が閾値と比較して3以上小さい場合はステップS150Aの処理が行われ、カウント数が閾値と比較して3以上大きい場合にはステップS150Bの処理が行われ、カウント数と閾値との差が2以下の場合には現在の状態が維持される。このように、あえて現在の状態から制御を行わない処理を含んで制御を行うことで、フィードバック制御の安定性を高めることができる。
【0092】
実施形態は上述に述べた例に限られない。実施形態では、V-Iコンバータ115が、複数のモードのV-I特性において動作するマルチV-Iコンバータである場合について説明したが、実施形態はこれに限られず、V-Iコンバータ115は、1つのモードのV-I特性において動作するシングルV-Iコンバータであってもよい。また、V-Iコンバータ115の動作モードは8モードでなくてもよく、V-Iコンバータ115の動作モード数に応じて、アップダウンカウンタ183の構成は適宜変更してもよい。
【0093】
また、先に述べたように、MTJ素子110の磁化の反転確率Pは、温度T等の環境によっても変化する。装置の初期動作段階から反転確率Pを50%に維持させるため、MTJ素子110の温度Tを検出する温度センサーを新たに設け、この温度センサーが検出した温度に基づいてV-Iコンバータ115の初期の動作モードを決定するよう構成しても良い。換言すると、かかる実施形態に係る乱数生成器100は、電圧の入力を受け付けることにより電圧を所定の動作モードで電流へ変換することで電流を出力させるV-Iコンバータ115と、V-Iコンバータ115への電圧の入力により電流を流させるよう制御するシーケンス制御回路160とを備える。フィードバック制御回路180は、複数の当該動作モードを切り替え可能な変換部(図示しない)を備える。フィードバック制御回路180は、少なくともMTJ素子110を含む範囲の温度を検出する温度センサー(図示しない)を有し、当該温度センサーが検出した温度に基づいて、変換部の機能により、V-Iコンバータ115の動作モードを切り替える。
【0094】
具体的には、温度センサーが検出した温度TとV-Iコンバータ115の初期の動作モードとを対応付けるテーブルを別に記憶しておき、温度センサーが検出した温度Tに基づいて、フィードバック制御回路180が、アップダウンカウンタ183の上位3ビットの初期値を定める。続いて、フィードバック制御回路180は、変換部の機能により、定められたアップダウンカウンタ183の上位3ビットの初期値に基づいて、V-Iコンバータ115の動作モードを切り替える。アップダウンカウンタ183の上位3ビットによりV-Iコンバータ115の動作モードが定まるため、これにより環境温度に応じた最適なV-Iコンバータ115の動作モードを定めることができ、より安定な初期動作となる。なお、乱数発生器が動作し始めた後には、温度センサーの温度検出ではなく、「0085」段落で述べたフィードバック制御によってV-Iコンバータ115の動作モードが動的に変化することとなる。
【0095】
以上述べた少なくとも一つの乱数生成器によれば、質の良い乱数を生成させることができる。
【0096】
いくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施、実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更、実施形態同士の組み合わせを行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0097】
110 MTJ素子
115 V-Iコンバータ
120 書き込み回路
130 読み出し回路
140 消去回路
150 信号出力回路
160 シーケンス制御回路
180 フィードバック制御回路
190 バッファ