以下の実施の形態においては、便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明する。特に明示した場合を除き、それらは互いに無関係ではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
さらに、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の機能を有する部材には同一または関連する符号を付し、その繰り返しの説明は省略する。また、以下の実施の形態では、特に必要なとき以外は同一または同様な部分の説明を原則として繰り返さない。
以下に説明する複数の実施の形態においては、スピンセル間の相互作用演算の演算結果を、所定の規則に従って反転させる。これにより、イジングモデルのエネルギーの演算において、演算結果が停滞するのを回避し、解く問題の最適解を求めることが可能とされる。
(実施の形態1)
図1は、イジングモデルの計算を行うイジング計算機100の構成を示す概念図である。イジング計算機100は、半導体集積回路装置2を用いてイジングモデルの計算を行う。同図において、1は、イジングモデルのスピンの値を記憶(格納)するスピンセルを示している。イジングモデルの計算を行う際に用いられる半導体集積回路装置2は、図1に示すように、複数のスピンセル1を有しており、複数のスピンセル1間で相互作用が働く。図1においては、相互作用が3として示されており、同図では、物理的に隣接するスピンセル1間で影響する相互作用が示されている。この場合、物理的に隣接するスピンセル1とは、1個のスピンセル1に対して、同図においてその上下、左右に配置された4個のスピンセル1を意味している。勿論、1個のスピンセル1に対して、その上下、左右のいずれか1箇所あるいは2箇所にスピンセル1が配置されていない場合には、隣接するスピンセルの数は、3個あるいは2個となる。
イジングモデルのエネルギーの演算においては、半導体集積回路装置2内に配置された複数のスピンセル1同士が、相互作用3を繰り返し、それぞれのスピンセル1自体が持つ値が変わっていく、イジング計算機100全体のスピンセル1の値と相互作用3の係数で計算されるエネルギーが減少する方向に演算が行われる。イジングモデルのエネルギーEの具体的な演算では、スピンセル1の値と相互作用3の係数だけでなく、スピンセル1に影響する外部磁場係数も考慮される。外部磁場係数を考慮した、イジングモデルのエネルギーEは、式(1)で表される。
E=−ΣJijσiσj―Σhiσi・・・式(1)
式(1)において、iおよびjは、それぞれスピンセルの番号を示し、σi
およびσjは、i番目およびj番目のスピンセルの状態(値:+1または−1)を示している。また、Jijは、i番目のスピンセルとj番目のスピンセル間の相互作用の係数(相互作用係数)を示し、hiは、i番目のスピンセルに対する外部磁場係数を示している。
図2は、演算により求めたイジングモデルのエネルギーを模式的に示した模式図である。同図において、横軸は解空間を示し、縦軸はエネルギーを示している。イジングモデルの解は、エネルギーが低い状態に相当する。そのため、イジングモデルのエネルギーの演算は、エネルギーが減少する方向に行われる。すなわち、基本的には、図1に示した相互作用3により、エネルギーが減少するように、図2において矢印で示した方向に変化する。イジング計算機100においては、図2において最適解として示されている最もエネルギーの低い状態を、解として求めることが必要とされる。ところが、実際のエネルギーの状態を見ると、図2に示したように、エネルギーの低い状態は、最適解だけでなく、局所解1、2も存在する。すなわち、局所解1および2においても、その周囲よりもエネルギーの低い状態となっている。そのため、イジング計算機100において、相互作用等を基にして、エネルギーの演算を行い、局所解の状態に到達すると、その状態で停滞してしまう。例えば、イジング計算機100によって、図2において開始点として示されている状態から、エネルギーの演算を開始した場合、エネルギーが減少して、局所解1の状態まで到達するが、その状態で停滞し、実際に求めたい最適解の状態まで到達しない。
図3は、実施の形態1に係わる半導体集積回路装置23の構成を示す模式図である。この半導体集積回路装置23は、図1に示した半導体集積回路装置2と類似しているので、ここでは相違点を主に説明する。半導体集積回路装置23においては、複数のスピンセル1のそれぞれに、メモリ回路4が追加されている。また、この実施の形態においては、互いに物理的に隣接するスピンセル1のそれぞれに設けられているメモリ回路4は、少なくとも1ビットのデータを格納し、互いに直列的に接続されている。例えば、図3では、3行(R1〜R3)3列(C1〜C3)に、マトリクス状に配置されたスピンセル1が示されており、それぞれのスピンセル1にメモリ回路4が設けられている。例えば、列C1に注目した場合、互いに物理的に隣接した行R3と行R2のそれぞれ配置されたスピンセル1におけるメモリ回路4は、互いに直列的に接続され、隣接した行R2と行R1のそれぞれに配置されたスピンセル1におけるメモリ回路4は、互いに直列的に接続されている。同様に、列C1に物理的に隣接した列C2で行R1におけるスピンセル1内のメモリ回路4は、列C1の行R1内のメモリ回路4と直列的に接続されている。同様にして、残りのメモリ回路4も、隣接するスピンセル1内のメモリ回路4に接続されている。互いにメモリ回路4を直列的に接続するのに際して、一方のメモリ回路4の出力が他方のメモリ回路4の入力に接続される。これにより、複数のスピンセル1のそれぞれに設けられたメモリ回路4によって、1個のシフトレジスタが構成されている。見方を変えた場合、実施の形態1では、図1の半導体集積回路装置2に対して、シフトレジスタが半導体集積回路装置23に設けられていると見なすことができる。
シフトレジスタには、状態を変更するための変更データが入力される。図3に示した例では、列C1の行R3に配置されたスピンセル1に設けられたメモリ回路4が、シフトレジスタの入力段とされており、このメモリ回路4(列C1、行R3)に変更データが入力される。変更データは、ビット列として入力され、シフトレジスタを順次移動する。図3では、変更データであるビット列が、“0100111010111・・・”として示されている。このようなビット列、すなわち2値信号の列が、シフトレジスタを順次伝播し、循環する。これにより、各スピンセル1内のメモリ回路4に、所望の2値信号を記憶させることが可能となる。
スピンセル1の構成は後で詳しく説明するが、スピンセル1に設けられたメモリ回路4に記憶(格納)させた2値信号が、特定の論理値(例えば、2値信号“1”)に該当する変更データの場合、スピンセル1において演算した相互作用の結果を反転させ、スピンの値として当該スピンセル1に記憶する。相互作用の結果を反転させて、スピンセル1に格納されるスピンの値とすることにより、図2においては、エネルギーの状態は矢印の方向へしか変化しなかったが、逆の方向へ変化する場合が生じる。これにより、演算により求めているエネルギーの状態が、局所解1または2の状態で停滞することを防ぎ、最適解の状態へ到達することが可能となる。
複数のメモリ回路4により構成されたシフトレジスタに保持される2値信号“1”、“0”のビット列は、エネルギーの状態によって変更する必要がある。これは、常に高い確率で相互作用の演算結果を反転させると、エネルギーが下がる方向に動作しないためである。よって、時間の経過とともに演算結果を反転させる確率を低減する必要がある。すなわち、エネルギーの演算を行っている時間が経つに従って、変更データであるビット列中に含まれる、演算結果を反転させる所定の論理値(2値信号“1”)の比率を低減する必要がある。
図4は、演算結果を反転させる所定の論理値(2値信号“1”)の出現頻度を示す図である。図4では、時間の経過とともに、所定の論理値(“1”)の比率が、時間の経過とともに、0.5から0へ減少させている。メモリ回路4により構成されたシフトレジスタの代わりに、例えばインバータ回路を直列に接続して用いることも考えられるが、この場合には、複数のスピンセル1のそれぞれに、任意の変更データを記憶させることが困難である。
<変更データにおける所定の論理値の出現頻度調整>
図5は、実施の形態1に係わる半導体集積回路装置23の構成を示すブロック図である。図5には、図3に示した半導体集積回路装置23のうち、メモリ回路4により構成されるシフトレジスタと、当該シフトレジスタを制御する制御部分が抜き出して示されている。すなわち、図5には、複数のメモリ回路4により構成されるシフトレジスタに格納される変更データであるビット列において、所定の論理値(“1”)の出現頻度を制御する部分が示されている。
図5において、5は選択スイッチ、6は論理積(AND)を求める2入力のAND回路、7は論理和(OR)を求める2入力のOR回路である。また、図5において、21は、選択スイッチ5を制御する制御回路である。制御回路21は、AND回路6の出力を選択する割合のデータ(AND割合データ)を保持する割合レジスタ22Aと、OR回路7の出力を選択する割合のデータ(OR割合データ)を保持する割合レジスタ22Oとを有している。割合レジスタ22Aおよび割合レジスタ22Oには、AND割合データを指定するAND指定情報およびOR割合データを指定するOR指定情報が供給される。
後で図7を用いて説明するが、スピンセル1のそれぞれが、メモリ回路4に関連したAND回路6、OR回路7および選択スイッチ5を有しており、図5では、1個のスピンセル1に含まれるメモリ回路4、AND回路6、OR回路7および選択スイッチ5が、一点鎖線で囲まれている。図5から理解されるように、図5には、2個の列(C1、C2)で2個の行(Rn、Rn+1)に配置された4個のスピンセル1に対応するメモリ回路4、AND回路6、OR回路7および選択スイッチ5が示されている。なお、図5において、一点破線によって囲まれていない2個のメモリ回路4は、隣接する行Rn−1、Rn+2に配置されたスピンセル1に含まれるメモリ回路4を示している。
スピンセル1に含まれる選択スイッチ5は、3個の入力と1個の出力とを有しており、選択線を介して制御回路21から供給される選択信号SELi(i=1、2)に従って、3個の入力のうちのいずれか1つを選択し、出力へ接続する。選択線は、それぞれの行に配置されており、図5においては、行Rnに配置された選択線と、行Rn+1に配置された選択線が示されている。制御回路21から選択線に供給される選択信号SEL1、SEL2に従って、行Rnに配置された複数のスピンセル1のそれぞれにおける選択スイッチ5が制御され、行Rn+1に配置された複数のスピンセル1のそれぞれにおける選択スイッチ5が制御される。
それぞれのスピンセル1に含まれるメモリ回路4、AND回路6、OR回路7および選択スイッチ5の動作は、互いに同じである。そのため、ここでは、列C1で行Rnに配置されたスピンセル1(列C1、行Rn)に含まれるメモリ回路4、AND回路6、OR回路7および選択スイッチ5を代表として説明する。
メモリ回路4の出力は、2入力のAND回路6および2入力のOR回路7のそれぞれの一方の入力と、選択スイッチ5の入力とに供給されている。また2入力のAND回路6および2入力のOR回路7のそれぞれの他方の入力には、隣接するスピンセル1におけるメモリ回路4の出力が供給される。ここで説明しているスピンセル1は、列C1で行Rnに配置されているため、隣接するスピンセル1としては、列C1で行Rn+1に配置されたスピンセル1(列C1、行Rn+1)が該当し、そのスピンセル1におけるメモリ回路4の出力が、AND回路6およびOR回路7のそれぞれの他方の入力に供給されている。
列C1で行Rnに配置されたスピンセル1におけるAND回路6およびOR回路7のそれぞれの出力は、選択スイッチ5の入力に供給される。選択スイッチ5は、選択信号SEL1に従って、3個の入力のうちの1個を選択し、隣接するスピンセル1内のメモリ回路4の入力に供給する。これにより、当該スピンセル(列C1、行Rn)におけるAND回路6は、スピンセル1(列C1、行Rn+1)におけるメモリ回路4からの変更データと、当該スピンセル(列C1、行Rn)におけるメモリ回路4からの変更データとの間で、論理積に相当する論理演算を実行する。同様に、当該スピンセル(列C1、行Rn)におけるOR回路7は、スピンセル1(列C1、行Rn+1)におけるメモリ回路4からの変更データと、当該スピンセル(列C1、行Rn)におけるメモリ回路4からの変更データとの間で、論理和に相当する論理演算を実行する。
これにより、選択スイッチ5は、選択信号SEL1に従って、論理積に相当する論理演算を実施した結果の論理値、論理和に相当する論理演算を実施した結果の論理値、または論理演算を実施していない論理値を、隣接するスピンセル1(列C1、行Rn−1)におけるメモリ回路4へ供給し、書き込みを行う。ここで、論理演算を実施していない論理値は、メモリ回路4からの出力を意味している。
残りのスピンセルにおけるメモリ回路4、AND回路6、OR回路7および選択スイッチ5においても同様に、選択信号に従って、隣接するスピンセル1におけるメモリ回路4の出力と、当該スピンセル1におけるメモリ回路4との間で実施された論理演算により得られた論理積の値、論理和の値あるいは論理演算を実施していない値が、選択スイッチ5によって選択され、隣接するスピンセル1のメモリ回路4へ供給される。
図5では、2列(C1、C2)で2行(Rn、Rn+1)に配置されたスピンセル1のみが示されているが、図示しない行、列にも、同様にスピンセル1が配置され、それぞれのスピンセル1には、メモリ回路4、AND回路6、OR回路7および選択スイッチ5が設けられている。また、各行には、それぞれ選択信号が配置されている。
制御回路21は、複数の行に配置されている複数の選択線から、AND割合データを保持する割合レジスタ22Aからの割合データに従った数の選択線を選択し、選択した選択線のそれぞれに対して、選択スイッチ5がAND回路6の出力を選択して、出力するような選択信号を形成する。また、制御回路21は、複数の行に配置されている複数の選択線から、OR割合データを保持するレジスタ22Oからの割合データに従った数の選択線を選択し、選択した選択線のそれぞれに対して、選択スイッチ5がOR回路7の出力を選択して、出力するような選択信号を形成する。すなわち、制御回路21は、選択線の総数に対して、AND割合データによって指定された割合の数だけ、選択スイッチ5がAND回路6の出力を選択するような選択信号を出力し、選択線の総数に対して、OR割合データによって指定された割合の数だけ、選択スイッチ5がOR回路7の出力を選択するような選択信号を出力する。
また、制御回路21は、AND割合データおよびOR割合データによって指定されなかった選択線の数に対して、選択スイッチ5がメモリ回路4の出力を選択するような制御信号を出力する。このようにすることにより、AND指定情報によって、選択スイッチ5がAND回路6の出力(論理積出力)を選択する数の割合を設定することが可能となる。またOR指定情報によって、選択スイッチ5がOR回路7の出力(論理和出力)を選択する数の割合を設定することが可能となる。さらに、AND指定情報およびOR指定情報によって指定しない数により、論理演算が実施されていない数の割合を設定することが可能となる。
変更データ、すなわちメモリ回路4によって構成されるシフトレジスタに格納されているビット列における所定の論理値(“1”)の出現頻度は、AND指定情報およびOR指定情報によって定める。所定の論理値の出現頻度を下げる場合には、AND指定情報により、選択スイッチ5によってAND回路6の出力が選択される割合を上昇させる。これにより、隣接するメモリ回路4の値との間で求めた論理積の結果が、次の段のメモリ回路4に書き込まれることになる。前段および前々段のメモリ回路4間で論理積を求めると、前段および前々段のメモリ回路4の値がともに“1”の場合に“1”が出力され、前段および前々段のメモリ回路4の一方、または、両方が“0”の場合には“0”が出力される。そのため、前段および前々段のメモリ回路4間で求められた論理積の結果は、2値信号“0”が出力される確率が高く、メモリ回路4に書き込まれる論理値は、2値信号“0”となる確率が高くなる。
例えば、列C1で行Rn−1に配置されたスピンセル1におけるメモリ回路4には、列C1で行Rnに配置されたスピンセル1におけるメモリ回路4からの出力と、列C1で行Rn+1に配置されたスピンセル1におけるメモリ回路4からの出力との間で論理積の論理演算が行われた結果が、書き込まれることになる。よって、選択スイッチ5によってAND回路6の出力を選択すれば、ビット列に含まれる所定の論理値(“1”)の出現頻度を低下させることが可能となる。
一方、ビット列における所定の論理値(“1”)の出現頻度を上げる場合には、OR指定情報によって、選択スイッチ5によりOR回路7の出力が選択される割合を上昇させる。これによって、隣接するスピンセル1におけるメモリ回路4の値との間で求めた論理和の結果が、次の段のメモリ回路4に書き込まれる。論理和を取ると、前段および前々段のメモリ回路4の値がともに2値信号“0”の場合に、選択スイッチ5から“0”が出力され、前段および前々段のメモリ回路4の一方、または、両方が“1”の場合には、選択スイッチ5からは2値信号“1”が出力される。そのため、所定の論理値(“1”)が出力される確率が高くなり、書き込まれる論理値は“1”の確率が高くなる。
同じく、列C1で行Rn−1に配置されたスピンセル1におけるメモリ回路4を例にして説明すると、列C1で行Rnに配置されたスピンセル1におけるメモリ回路4からの出力と、列C1で行Rn+1に配置されたスピンセル1におけるメモリ回路4からの出力との間で論理和の論理演算が行われた結果が、書き込まれることになる。よって、選択スイッチ5によって、OR回路7の出力を選択すれば、ビット列に含まれる所定の論理値(“1”)の出現頻度を上昇させることが可能となる。
また、複数の行のうち、選択スイッチ5によってメモリ回路4の出力を、そのまま選択する行を設けることも可能である。すなわち、AND指定情報およびOR指定情報によって指定されない行におけるスピンセル1内のメモリ回路4の出力を、この行に隣接した行へ伝えることが可能である。例えば、AND指定情報および/またはOR指定情報によって、複数の行における特定の行では、AND回路6またはOR回路7の出力が選択されるようにし、その特定の行に隣接する行(例えば前段および/または後段の行)では、メモリ回路4の出力が選択されるような組み合わせを選択することも可能である。このような組み合わせを用いることにより、所定の論理値の出現頻度を柔軟に変更することが可能となる。
図5においては、行Rn、Rn+1のような行単位で、AND回路6、OR回路7あるいはメモリ回路4の出力を選択して、隣接する行へ出力し、隣接する行におけるメモリ回路4に書き込む例を示したが、これに限定されるものではない。例えば、スピンセル1毎に、AND回路6、OR回路7あるいはメモリ回路4の出力を選択して、隣接するスピンセル1内のメモリ回路4へ書き込むようにしてもよい。勿論、この場合には、制御回路21からスピンセル1へ選択信号(例えばSEL1、SEL2)を伝達する選択線は、行単位に共通に用いられるのではなく、1個あるいは複数個のスピンセル1に対して共通に用いられることになる。
それぞれのスピンセル1に含まれるAND回路6、OR回路7および選択スイッチ5は、スピンセル1内のメモリ回路4から出力される変更データ(ビット)の論理値を調整あるいは変更する回路と見なすことができる。このように見た場合、それぞれのスピンセル1は、変更データ(ビット)を格納するメモリ回路4と、メモリ回路4に結合され、隣接するスピンセル内のメモリ回路4へ調整(あるいは変更)された変更データ(ビット)を供給する調整(変更)回路を備えていると見なすことができる。ここで、調整回路は、先に説明したAND回路6、OR回路7および選択スイッチ5を備えていることになる。
また、複数の調整回路により、メモリ回路4により構成されるシフトレジスタに格納される変更データにおける所定の論理値の数が調整あるいは変更されていると見なすことができる。
さらに、調整回路は、前段におけるメモリ回路4との間で行われた論理演算(論理積あるいは論理和)の結果を転送する第1モードと、メモリ回路4の出力を転送する第2モードとを有しており、選択信号SELiによって、第1モードまたは第2モードが選択されると見なすこともできる。この場合、第2モードにおいて、さらに論理積の結果あるいは論理和の結果が選択されることになる。
図5において、列C1で行Rnに配置されたスピンセル1における調整回路を第1調整回路として見た場合、第1調整回路は、列C1で行Rn+1に配置されたスピンセル1のメモリ回路4(第1のメモリ回路)のデータと、列C1で行Rnに配置されたスピンセル1のメモリ回路4(第2のメモリ回路)のデータとの間で論理演算(論理積または論理和)を実行する。この第1調整回路は、列C1で行Rn−1に配置されたスピンセル1のメモリ回路4(第3のメモリ回路)へ、選択信号SEL1(第1制御信号)に従って、論理演算の結果または第2のメモリ回路のデータを供給して、第3のメモリ回路4へ書き込む。
また、図5において、列C2で行Rn+1に配置されたスピンセル1における調整回路を第2調整回路として見た場合、第2調整回路は、列C2で行Rnに配置されたスピンセル1のメモリ回路(第4のメモリ回路)のデータと、列C2で行Rn+1に配置されたスピンセル1のメモリ回路4(第5のメモリ回路)のデータとの間で論理演算を実行する。この第2調整回路は、列C2で行Rn+2に配置されたスピンセル1のメモリ回路(第6のメモリ回路)へ、制御信号SEL2(第2制御信号)に従って、論理演算の結果または第5のメモリ回路のデータを供給して、第6のメモリ回路へ書き込む。
図6は、図5に示した構成を用いて、所定の論理値(“1”)の出現頻度を変化させた場合の出現頻度を示す図である。同図には、イジングモデルの計算を行っている期間において、所定の論理値の出現頻度を変更する例が示されている。イジングモデルの計算の開始時においては、図4と同様に、メモリ回路4によって構成されたレジスタにおいて、所定の論理値が発生している頻度は、0.5程度にされている。計算の初期段階では、レジスタにおける所定の論理値の出現頻度を増加させるために、OR指定情報(図5)によって、OR回路7の出力を選択する行を増やす。時間の経過に伴って、レジスタを構成するスピンセル1におけるメモリ回路4には、隣接するスピンセル1における調整回路からの変更データが、書き込まれながら、順次シフトする。OR回路7の出力を選択する行が増加されたことにより、調整回路からは所定の論理値(“1”)へ変更された変更テータ(ビット)が、出力される確率が高まる。これにより、時間か経過するのに従って、図6に示すように、初期段階では、所定の論理値(“1”)の比率が、上昇する。
所定の論理値の比率が、例えば0.8程度になったら、AND指定情報によってAND回路7の出力を選択する行の数を増加させる。これにより、調整回路からは、所定の論理値(“1”)とは異なる論理値(“0”)が出力される確率が高まる。メモリ回路4のそれぞれには、隣接するスピンセル1における調整回路からの出力が、時間の経過とともに、書き込まれ、順次シフトする。その結果、レジスタを構成する複数のメモリ回路4に格納されている論理値としては、時間の経過に伴って“0”が増加する。すなわち、所定の論理値の比率が低下する。特に制限されないが、図6に示すような比率を発生させるためには、計算初期の段階でOR回路7の出力を選択する選択スイッチ5の数は、計算後半の段階で、AND回路6の出力を選択する選択スイッチ5の数よりも多くされる。
図6に示すように、比率が0.8に到達しているか否かは、例えば、メモリ回路4により構成されたシフトレジスタから、そのときの変更データを読み出して、読み出した変更データに含まれる所定の論理値(“1”)の数を判定することにより達成することが可能である。すなわち、全ての行における調整回路を、前記した第2モードにして、シフト動作をさせることにより、メモリ回路4により構成されているシフトレジスタから、そのときの変更データを取り出すことが可能である。このようにして取り出した変更データにおいて、所定の論理値(“1”)の数を求めることにより、所定の論理値(“1”)の比率を求めることが可能となる。
<スピンセル1の構成>
図7は、スピンセル1の構成を示すブロック図である。同図において、4は、メモリ回路である。前述したように、複数のメモリ回路4を直列的に接続することにより、変更データであるビット列を保持するシフトレジスタが構成される。8は、調整回路であり、図5に示したAND回路6、OR回路7および選択スイッチ5を備えており、選択信号SELi(図5では、i=1または2)に従って、図5で説明したように、AND回路6の出力、OR回路7の出力またはメモリ回路4の出力を、切り換えて出力する。なお、メモリ回路4の出力を、そのまま出力する場合は、スルーとして、図7には示されている。
また、図7において、9は、メモリ素子を示しており、10は、相互作用を演算する演算回路を示しており、LGは、反転論理回路(変更回路)を示している。スピンセル1は、図7に示すように複数のメモリセル9を備えている。それぞれのメモリセル9は、互いに同じ構成を有しているが、それぞれには、格納するデータが定まっており、同図では、格納するデータを表す符号が、それぞれのメモリセル9に付されている。以後の説明では、メモリセル9を参照する際には、格納するデータを表す符号も適時参照として用いる。
メモリセル9(N)は、このスピンセル1のスピンの値を格納するメモリセルであり、メモリセル9(IS0)、9(IS1)のそれぞれは、このスピンセル1に対する外部磁場係数を格納するメモリセルであり、格納する外部磁場係数は、このスピンセル1特有の値である。メモリセル9(IU0、IU1、IL0、IL1、IR0、IR1、ID0およびID1)のそれぞれは、このスピンセル1の周辺に配置されるスピンセルから、このスピンセル1に対する影響を演算するための相互作用の係数を格納するメモリセルである。図7において、NU、NL、NRおよびNDのそれぞれは、このスピンセル1の周辺に配置されるスピンセルからのスピンの値である。図7では、図7に示したスピンセル1に対して、紙面の上側、左側、右側および下側にそれぞれスピンセルが配置されている場合が示されている。すなわち、上側、左側、右側および下側のそれぞれに隣接して、スピンセルが配置され、これらの4個のスピンセルが、図7に示したスピンセル1に対して周辺に配置されたスピンセルとなっている。
上側に配置されたスピンセルから、図7に示したスピンセル1への相互作用係数が、メモリセルIU0、IU1に格納され、左側に配置されたスピンセルからの相互作用係数が、メモリセルIL0、IL1に格納され、右側に配置されたスピンセルからの相互作用係数が、メモリセルIR0、IR1に格納される。同様に、下側に配置されたスピンセルらの相互作用係数が、メモリセルID0、ID1に格納される。この場合、上側に配置されたスピンセルからのスピンの値は、NUであり、左側に配置されたスピンセルからのスピンの値は、NLであり、右側に配置されたスピンセルのスピンの値は、NRであり、下側に配置されたスピンセルのスピンのあたいは、NDである。
メモリセルNに格納された当該スピンセル1のスピンの値は、このスピンセル1に隣接している4個のスピンセルに対して、スピンの値NU、NL、NRおよびNDとして供給される。ここでは、1個のスピンセルに対して、その周辺に配置された4個のスピンセルからの相互作用に基づいて、演算を行う例を示しているが、この数に限定されるものではなく、数が変化しても、スピンセルは、基本的には同様な構成を有する。
イジング計算機100において、相互作用の演算を実施するとき、メモリセルIS0、IS1からの外部磁場係数、メモリセルIU0、IU1、IL0、IL1、IR0、IR1、ID0およびID1からの相互作用係数および周辺のスピンセルからのスピンの値NU、NL、NRおよびNDが、演算回路10に供給され、演算回路10は、これらのデータに基づいて、相互作用の演算を行う。概略的には、周辺に配置され、隣接したスピンセルからのスピン値NU、NL、NRおよびNDと相互作用係数とによって、相互作用の演算が行われる。
この実施の形態において、演算回路10は、排他的論理和回路EORU、EORL、EORRおよびEORDと、スイッチSWS、SWU、SWL、SWRおよびSWDと、多数決論理回路とを備えている。スイッチSWSは、メモリセルIS0からの外部磁場係数によって制御され、スイッチSWSがオン状態にされたとき、メモリセルIS1からの外部磁場係数が、多数決論理回路へ供給される。また、スイッチSWU、SWL、SWRおよびSWDのそれぞれは、メモリセルIU0、IL0、IR0およびID0のそれぞれからの相互作用係数によって制御され、スイッチSWU、SWL、SWRおよびSWDのそれぞれがオン状態にされたとき、排他的論理和回路EORU、EORL、EORRおよびEORDのそれぞれの出力が、多数決論理回路へ供給される。
メモリセルIU1、IL1、IR1およびID1のそれぞれの相互作用係数と、それぞれのメモリセルに対応するスピンセルからのスピンの値NU、NL、NRおよびNDとが、排他的論理和回路EORU、EORL、EORRおよびEORDに供給される。これにより、それぞれの排他的論理和回路EORU、EORL、EORRおよびEORDは、隣接するスピンセルのスピンの値と、そのスピンセルに関する相互作用係数との間で、排他的論理和の演算を行い、その結果が、多数決論理回路へ供給される。
例えば、外部磁場の影響が存在する場合、メモリセルIS0からの外部磁場係数により、スイッチSWSがオン状態とされ、相互作用の影響が存在する場合、メモリセルIU0、IL0、IR0およびID0からの相互作用係数によってスイッチSWU、SWL、SWRおよびSWDがオン状態にされる。スイッチSWU、SWL、SWRおよびSWDがオン状態にされると、隣接した4個のスピンセルのスピンの値と、それぞれのスピンセルに対応する相互作用係数との間で排他的論理和が求められ、多数決論理回路に供給される。多数決論理回路は、供給されているメモリセルIS1からの外部磁場に関するデータと、4個の排他的論理和回路EORU、EORL、EORRおよびEORDからの相互作用に関するデータとにおける2値信号“1”と“0”の数を数え、数の多い論理値(“1”または“0”)に対応する論理値をデータNEWとして出力する。例えば、2値信号“0”の数が多い場合には、データNEWとして論理値“0”を出力し、反対に2値信号“1”の数が多い場合には、データNEWとして論理値“1”を出力する。
反転論理回路LGは、多数決論理回路から出力されたデータNEWをうけ、メモリ回路4の出力に従って、データNEWの論理値を反転あるいは非反転し、反転あるいは非反転のデータNEWVを形成して、メモリセルNへ書き込む。例えば、メモリ回路4の出力が論理値“1”の場合、反転論理回路LGは、データNEWの論理値を反転して、データNEWVを生成する。これに対して、メモリ回路4の出力が論理値“0”の場合には、反転論理回路LGは、データNEWの論理値を反転せずに、データNEWVとして出力する。すなわち、データNEWVは、データNEWに対して非反転の状態となる。
メモリ回路4の出力が論理値“1”の場合には、反転論理回路LGによって、演算回路10の演算結果であるデータNEWが反転されて、スピンの値を格納するメモリセルNに書き込まれることになる。すなわち、演算回路10からのデータNEWが論理値“1”(“0”)であった場合、スピンの値を格納するメモリセルNには、論理値“0”(“1”)が書き込まれることになる。相互作用の演算結果が反転されるため、イジング計算機100で演算中に、図2に示したようにエネルギーが局所解の状態に陥ることを防ぐことが可能となる。
メモリ回路4には、隣接スピンセルより、変更データが供給され、調整回路8の出力は、隣接スピンセルへ供給される。この場合、図5において説明したように、隣接するスピンセルにおける調整回路からの出力が、メモリ回路4へ供給され、図7に示した調整回路8の出力は、隣接するスピンセルのメモリ回路へ供給されることになる。
この実施の形態においては、メモリセルN、IS0、IS1、IU0、IU1、IL0、IL1、IR0、IR1、ID0およびID1のそれぞれは、共通の相補データ線BLT、BLBに接続されており、この共通の相補データ線BLT、BLBを介して、外部磁場係数、相互作用係数の書き込みおよび/または読み出しが可能とされている。また、スピンの値を格納するメモリセルNについては、メモリセルNからスピンの値の読み出しおよび/または書き込みが可能とされている。
<メモリセルNの構成>
図8は、スピンの値を保持するメモリセルの構成を示す回路図である。また、図9は、メモリセルNの動作を説明するための波形図である。この実施の形態におけるメモリセルNは、基本的にはSRAM(スタティック型メモリ)により構成されている。メモリセルNは、電源電圧Vdと接地電圧Vsとの間に接続された1対のインバータ回路IV1、IV2と、転送用の電界効果型トランジスタ(以下、電界効果型トランジスタは、MOSFETと称する)TRT、TRBと、クロック型インバータCI1、CI2と、インバータ回路IV3とを備えている。
1対のインバータ回路IV1、IV2は、互いに入力と出力がクロスするように接続されている。すなわち、インバータ回路IV1の入力は、インバータ回路IV2の出力に接続され、インバータ回路IV2の入力はインバータ回路IV1の出力に接続されている。インバータ回路IV1の入力は、転送用のMOSFETTRTを介して、相補データ線BLT、BLBの内の相補データ線BLTに接続され、インバータ回路IV2の入力は、転送用のMOSFETTRBを介して相補データ線BLT、BLBの内の相補データ線BLBに接続されている。また、転送用のMOSFETTRT、TRBのそれぞれのゲートは、ワード線WLに接続されている。インバータ回路IV1およびIV2のそれぞれの入力(出力)は、記憶ノードNT、NBとされる。
ワード線WLがハイレベルにされることにより、転送用のMOSFETTRT、TRBがオン状態にされると、相補データ線BLT、BLBと記憶ノードNT、NBが電気的に接続される。例えば、相補データ線BLT、BLBを所定の電圧にプリチャージし、その後でワード線WLの電圧をハイレベルにすることにより、相補データ線BLT、BLBの電圧は、記憶ノードNT、NBの電圧に従って変化する。これにより、メモリセルNに保持されているデータ、すなわちスピンの値が読み出される。
一方、メモリセルNへのスピンの値の書き込みは、この実施の形態においては、複数のパスを有している。すなわち、第1の書き込みパスは、相補データ線BLT、BLBを用いた書き込みパスであり、第2の書き込みパスは、クロック型インバータCI1、CI2を用いた書き込みパスである。
第1の書き込みパスでは、書き込むべきスピンの値に従って、相補データ線BLTと相補データ線BLBの電圧値が定められる。この場合、相補データ線BLTと相補データ線BLBの電圧は、相補的な電圧にする。例えば、相補データ線BLTをハイレベルにし、相補データ線BLBをロウレベルにする。ワード線WLをハイレベルにすることにより、転送用のMOSFETTRT、TRBがオン状態にされると、相補データ線BLTのハイレベルが、記憶ノードNTに伝達され、相補データ線BLBのロウレベルが、記憶ノードNBに伝達される。クロスするように接続された1対のインバータ回路IV1、IV2は、記憶ノードNB、NTの電位を保持するように帰還動作をおこない、スピンの値に対応した電圧を記憶ノードNT、NBに保持する。これにより、第1の書き込みパスを用いた書き込みが行われ、ワード線をロウレベルにすることにより、保持される。
第2の書き込みパスでは、クロック型インバータ回路CI1およびCI2のそれぞれを介して、相補的な書き込みデータが、記憶ノードNT、NBへ伝達されることにより、行われる。この実施の形態においては、この第2の書き込みパスを用いて、反転論理回路LG(図7)からのデータNEWVが、スピンの値としてメモリセルNに書き込まれる。
クロック型インバータ回路CI1、CI2のそれぞれは、クロック信号CLKI、CLKIBによって、その動作が制御される。ここで、クロック信号CLKIとCLKIBとは、相補的なクロック信号である。すなわち、クロック信号CLKIがハイレベルへ変化するとき、クロック信号CLKIBはロウレベルへ変化し、クロック信号CLKIがロウレベルへ変化するとき、クロック信号CLKIBはハイレベルへ変化する。クロック型インバータ回路CI1、CI2のそれぞれは、例えばクロック信号CLKIがハイレベル(CLKIBがロウレベル)へ変化することにより、動作する。すなわち、このとき、クロック型インバータ回路CI1、CI2は、入力に供給されている信号を反転して、出力する。一方、クロック信号CLKIがロウレベル(CLKIBがハイレベル)のときには、クロック型インバータ回路CI1、CI2のそれぞれの出力は、ハイインピーダンス状態となる。
クロック型インバータ回路CI1の入力には、反転論理回路LG(図7)からデータNEWVが供給され、クロック型インバータ回路CI2の入力にはインバータ回路IV3を介してデータNEWVが供給されている。また、クロック型インバータ回路CI1の出力は、記憶ノードNBに接続され、クロック型インバータ回路CI2の出力は、記憶ノードNTに接続されている。これにより、クロック型インバータ回路CI1は、それが動作したとき、データNEWVに対して反転した電圧を記憶ノードNBへ供給し、クロック型インバータ回路CI2は、それが動作したとき、データNEWVと同相の電圧を記憶ノードNTへ供給する。これにより、ワード線WLをハイレベルへ変化させなくても、記憶ノードNB、NTのそれぞれは、データNEWVに従った電圧となり、データNEWVの書き込みが行われる。また、クロック信号CLKIをロウレベルにすることにより、記憶ノードNB、NTがデータNEWVに従って変化するのを防ぐことが可能となり、スピンの値が保持される。
次に、図9を用いて、第2の書き込みパスの動作を説明する。図9(A)は、クロック信号CLKIの電圧波形を示しており、図9(B)は、クロック信号CLKIBの電圧波形を示している。また、図9(C)は、反転論理回路LGから出力されるデータNEWVの電圧波形を示しており、図9(D)は、記憶ノードNTおよびNBの電圧波形を示している。図9において、横軸は時間を示し、縦軸は電圧を示している。
先に説明したように、クロック信号CLKIとクロック信号CLKIBとは相補的な信号である。そのため、図9(A)および(B)に示すように、クロック信号CLKIとCLKIBとは互いに反転された状態となっている。クロック信号CLK1がロウレベルからハイレベルへ変化すると、そのときのデータNEWVの電圧に従って、記憶ノードNB、NTの電圧が変化する。クロック信号CLKIがロウレベルへ変化すると、クロック型インバータ回路CI1、CI2のそれぞれの出力がハイインピーダンス状態となるため、記憶ノードNB、NTの電圧が維持される。図9では、期間T1において、クロック信号CLKIがハイレベルへ変化するとき、データNEWVはロウレベルであるため、記憶ノードNBの電位はハイレベルとなり、記憶ノードNTの電位はロウレベルとなる。次に、クロック信号CLKIがロウレベルへ変化することにより、記憶ノードNB、NTの電圧は維持される。次の期間T2においては、データNEWVがハイレベルであるため、記憶ノードNBの電圧はロウレベルとなり、記憶ノードNTの電圧はハイレベルとなる。このようにして、反転論理回路LGから供給されたデータNEWVに従って、スピンの値が、メモリセルNに書き込まれ、保持される。
この実施の形態においては、演算回路10(図5)によって、相互作用の演算が行われた場合には、その演算結果は、反転論理回路LG(図5)によって反転または非反転とされ、データNEWVとしてメモリセルNへ供給される。メモリセルNにおいては、前記した第2の書き込みパスを用いて、クロック信号CLKI(CLKIB)に同期して、データNEWVの書き込みが行われる。すなわち、演算により求められたスピンの値に応じた値が、メモリセルNに書き込まれる。また、メモリセルNに格納されているスピンの値は、ワード線WLをハイレベルにすることにより、読み出すことができる。さらに、相補データ線BLT、BLBへスピンの値を設定し、ワード線WLをハイレベルにすることにより、相補データ線BLT、BLBを用いた第1の書き込みパスで、スピンの値をメモリセルNへ書き込むこともできる。
図8に示したメモリセルNの構成は一例であり、これに限定されるものではない。例えば、図8においては、1対のインバータ回路IV1、IV2として、Pチャンネル型MOSFET(以下、P型MOSFETと称する)とNチャンネル型MOSFET(以下、N型MOSFETと称する)により構成された所謂CMOS型のインバータ回路が用いられているが、高抵抗素子を負荷として用いるインバータ回路であってもよい。
<演算回路10の構成>
次に、図7に示した演算回路10について、その一例の構成と動作を、図10〜図13を用いて説明する。図10〜図12は、演算回路10の構成を示す回路図である。また、図13(A)〜(E)は、演算回路10の動作を説明するための波形図である。図面が複雑になるのを避けるために、演算回路10の構成は、図10〜図12に分けて示してある。また、これらの図には示されていないが、メモリセルIS1、IU1、IL1,IR1およびID1のそれぞれからの信号は、図示しないインバータ回路によって、位相反転された信号が形成されている。
以下の説明を容易にするために、メモリセルIS0、IS1のそれぞれからの外部磁場係数は、信号IS0、IS1として示す。また、メモリセルIU0、IL0、IR0およびID0のそれぞれから供給される相互作用係数は、信号IU0、IL0、IR0およびID0として示す。さらに、メモリセルIU1、IL1、IR1およびID1のそれぞれから供給される相互作用係数は、信号IU1T、IL1T、IR1TおよびID1Tとして示す。また、図示しないインバータ回路によって、信号IU1T、IL1T、IR1TおよびID1Tに対して位相反転された信号は、信号IU1B、IL1B、IR1BおよびID1Bとして示す。
図7においては、演算回路10の理解を容易にするために、演算回路10の構成を、排他的論理和回路、スイッチおよび多数決論理回路と言う機能で説明した。図10〜図12は、これらの機能を効率よく構成した演算回路10の回路を示している。すなわち、図10および図11に示す回路によって、それぞれ隣接するスピンセルからのスピンの値と当該隣接するスピンセルに関する相互作用係数との排他的論理和が、それぞれ求められ、求められた複数の排他的論理和が、電流的に加算される。電流的な加算により、加算した排他的論理和の論理値“1”と“0”の数の差に対応した電流が得られる。数の差に対応した電流は電圧に変換され、図12に示した回路に供給される。図12に示した回路では、図10および図11に示す回路から供給された電圧の比較を行い、比較の結果をデータNEWとして出力する。
次に、図10〜図12を用いて具体的に、演算回路10の構成を説明する。
図10において、CTは、後で説明する図11の第2共通線CBと対を構成する第1共通線であり、P型MOSFETTP1を介して電源電圧Vdに接続されている。このP型MOSFETT1のゲートには、クロック信号CLKIが供給され、クロック信号CLKIがロウレベルになることにより、第1共通線CTを電源電圧Vdへプリチャージする。また、図10において、SLは、共通接地線であり、N型MOSFETTP2を介して接地電圧Vsに接続されている。このN型MOSFETTP2のゲートには、クロック信号CLKIが供給され、クロック信号CLKがハイレベルになることにより、共通接地線SLには、接地電圧Vsが供給される。
第1共通線CTと共通接地線SLとの間には、複数の単位排他論理回路ISU、IUU、ILU、IRUおよびIDUが互いに並列的に接続されている。複数の単位排他論理回路ISU、IUU、ILU、IRUおよびIDUは、互いに同じ構成を有しており、供給される信号のみが異なっている。
すなわち、単位排他論理回路ISUには、外部磁場係数の信号IS0、IS1TおよびIS1Bと、例えば電源電圧Vdに相当するハイレベル(図では“H”と記載)が供給されている。また、単位排他論理回路IUUには、隣接するスピンセルのスピンの値に対応した信号NUT、NUBと、この隣接するスピンセルとの間の相互作用係数の信号IU0、IU1T、IU1Bが供給されている。単位排他論理回路ILUには、隣接するスピンセルのスピンの値に対応した信号NLT、NLBと、この隣接するスピンセルとの間の相互作用係数の信号IL0、IL1T、IL1Bが供給されている。
単位排他論理回路IRUには、隣接するスピンセルのスピンの値に対応した信号NRT、NRBと、この隣接するスピンセルとの間の相互作用係数の信号IR0、IR1T、IR1Bが供給されている。さらに、単位排他論理回路IDUには、隣接するスピンセルのスピンの値に対応した信号NDT、NDBと、この隣接するスピンセルとの間の相互作用係数の信号ID0、ID1T、ID1Bが供給されている。
単位排他論理回路ISU、IUU、ILU、IRUおよびIDUのそれぞれは、互いに同じ構成を有しているため、ここでは、単位排他論理回路IUUを代表として、その構成と動作を説明する。単位排他論理回路IUUは、排他的論理和の論理演算機能と、スイッチSWUの機能とを備えている。排他的論理和の機能は、第1共通線CTとノードnとの間に並列的に接続された2個の直列回路により達成されている。2個の直列回路のうちの一方の直列回路は、互いに直列接続されたN型MOSFETT1、T3を有し、他方の直列回路は、互いに直列接続されたN型MOSFETT2、T4を有している。また、スイッチSWUの機能は、ノードnと共通接地線SLとの間に接続されたN型MOSFETT5によって達成される。
一方の直列回路を構成するN型MOSFETT1のゲートには、隣接するスピンセルからのスピンの値に対応した信号NUTが供給され、N型MOSFETT3のゲートには、当該隣接するスピンセルとの間の相互作用係の信号IU1Tが供給されている。また、他方の直列回路を構成するN型MOSFETT2のゲートには、信号NUTに対して反転された信号NUBが供給され、N型MOSFETT4のゲートには、信号IU1Tに対して反転された信号IU1Bが供給されている。また、N型MOSFETT5のゲートには、隣接するスピンセルとの間の相互作用係数の信号IU0が供給されている。
P型MOSFETTP1によって、第1共通線CTが、プリチャージされた後、N型MOSFETTP2がオン状態となる。N型MOSFETTP2がオン状態にされることにより、演算回路10による演算が開始される。このとき、相互作用係数の信号IU0がハイレベルであれば、N型MOSFETT5がオン状態となる。このN型MOSFETT5がオン状態となっている期間において、スピンの値に対応した信号NUまたは相互作用係数の信号IU1のいずれか一方がハイレベルとなり、他方がロウレベルとなると、2個の直列回路のうちのいずれか1つの直列回路を電流I1またはI2が流れる。
これに対して、N型MOSFETT5がオン状態となっている期間において、スピンの値に対応した信号NUおよび相互作用係数の信号IU1の両方がハイレベルまたはロウレベルになると、2個の直列回路のいずれにおいても電流(I1、I2)は流れない。単位排他論理回路IUUを電流I1またはI2が流れることにより、第1共通線CTの電圧が電源電圧Vdから接地電圧Vsへ向けて低下する。一方、電流I1およびI2が流れないと、第1共通線CTの電圧は、電源電圧Vdに維持される。
これにより、単位排他論理回路IUUは、スイッチSWUの機能を有するとともに、隣接するスピンセルからのスピンの値に対応した信号NUT(NUTB)と隣接するスピンセルとの間の相互作用係数の信号IU1T(IU1B)との間で排他的論理和を求め、求めた値を第1共通配線CTからの電流(I1、I2)として出力することになる。
言い換えるならば、隣接するスピンセルのスピンの値(信号IU1T)の論理値と、このスピンセルとの間の相互作用係数の値(信号NUT)の論理値が、同じ場合には、第1共通線CTの電圧は低下し、論理値“0”となり、互いに異なる論理値の場合には、第1共通線CTの電圧は維持し、論理値“1”となる。
信号IU0がロウレベルのときには、N型MOSFETT5はオフ状態となる。従って、このときに、単位排他論理回路IUUを、電流(I1およびI2)は、流れない。メモリセルIU0に格納されている相互作用係数は、隣接するスピンセルから相互作用の影響を取り入れるか否かを定める係数であると見なすことができる。この場合、メモリセルIU0からの信号IU0が、ハイレベル(論理値“1”)の場合には、該当するスピンセルからの相互作用の影響を、相互作用の演算に取り込み、ロウレベル(論理値“0”)の場合には、該当するスピンセルからの相互作用の影響が、演算に取り込まれない。
他の単位排他論理回路ILU、IRU、IDUについても、スイッチSWL、SWR、SWDの機能を有し、それぞれ供給されているスピンの値に対応する信号と相互作用係数の信号との間で排他的論理和を求め、求めた値を、第1共通線CTからの電流として出力する。
単位排他論理回路ISUについては、N型MOSFETT1およびT2のそれぞれのゲートにハイレベルが常時供給され、N型MOSFETT3のゲートに外部磁場係数の信号IS1Tが供給され、N型MOSFETT4のゲートに、信号IS1Tに対して反転された信号IS1Bが供給されている。また、スイッチSWUとして機能するN型MOSFETT5のゲートには、外部磁場係数の信号IS0が供給されている。これにより、外部磁場係数の信号IS0によってN型MOSFETT5がオン状態にされたときには、外部磁場係数IS1Tの電圧にかかわらずに、単位排他論理回路ISUは、第1共通線CTから電流(I1またはI2)を流すことになる。
この場合、N型MOSFETT1およびT2は設けずに、N型MOSFETT3およびT4のそれぞれが、ノードnと第1共通線CTとの間に接続されるようにしてもよいが、N型MOSFETT1およびT2を設けることにより、残りの単位排他論理回路と同様な構成となり、同じパターンの繰り返しにでき、半導体集積回路装置として製造するのに適している。
単位排他論理回路のそれぞれにおいて求められた排他論理和の結果は、第1共通線CTから共通接地線SLへ電流を流すか否かとして表される。そのため、第1共通線CTの電圧が、プリチャージされた電圧から、接地電圧Vsへ向かって低下する時間は、電流を流す単位排他論理和回路の数に依存する。
図11は、図10と同様に、相互作用の演算を行う回路を示している。図11に示す回路は、図10に示した回路と類似している。図11において、CBは、第2共通線を示しており、SLは、共通接地線を示している。第2共通線は、図10に示した第1共通線CTと同様に、クロック信号CLKIによって制御されるP型MOSFETTP3を介して電源電圧Vdに接続されている。また、共通接地線SLは、クロック信号CLKIによって制御されるN型MOSFETTP4を介して接地電圧Vsに接続されている。
図11に示す演算を行う回路においても、図10と同様に、複数の単位排他論理回路ISBU、IUBU、ILBU、IRBUおよびIDBUを備えており、これらの単位排他論理回路ISBU、IUBU、ILBU、IRBUおよびIDBUは、第2共通線と共通接地線SLとの間に並列的に接続されている。これらの単位排他論理回路ISBU、IUBU、ILBU、IRBUおよびIDBUのそれぞれは、図10に示した単位排他論理回路ISU、IUU、ILU、IRUおよびIDUのそれぞれと同じ構成を有しており、また、単位排他論理回路ISU、IUU、ILU、IRUおよびIDUのそれぞれに供給される信号と同じ信号が供給されている。
しかしながら、供給された信号は、単位排他論理回路において、図10とは異なるN型MOSFETのゲートに供給されている。すなわち、図11に示した単位排他論理回路IUBUには、図10に示した単位排他論理回路IUUと、同じ信号NUT、NUB、IU1T、IU1BおよびIU0が供給されるが、単位排他論理回路IUUとは、相補的な論理結果を出力するようにされている。他の単位排他論理回路も同様で、単位排他論理回路ILBUは、単位排他論理回路ILUと相補的な論理結果を出力し、単位排他論理回路IRBUは、単位排他論理回路IRUと相補的な論理結果を出力し、単位排他論理回路IDBUは、単位排他論理回路IDUと相補的な論理結果を出力する。なお、外部磁場係数に関する単位排他論理回路ISBUは、単位排他論理回路ISUと同じ論理結果を出力する。
ここでも、単位排他論理回路IUUに対応する単位排他論理回路IUBUを代表として、その構成と動作を説明する。単位排他論理回路IUBUの構成は、単位排他論理回路IUUと同じで、ノードnと第2共通線CBとの間に並列に接続された2個の直列回路と、ノードnと共通接地線SLとの間に接続されたN型MOSFETT5とを有している。2個の直列回路のうちの一方の直列回路を構成するN型MOSFETT1のゲートには、相互作用係数の信号NUTが供給され、N型MOSFETT3のゲートには、スピンの値に対応した信号IU1Bが供給されている。また、他方の直列回路を構成するN型MOSFETT2のゲートには、相互作用係数の信号NUBが供給され、N型MOSFETT4のゲートには、スピンの値に対応した信号IU1Tが供給されている。
クロック信号CLK1によってP型MOSFETTP3がオン状態にされ、第2共通線CBが電源電圧Vdにプリチャージされた後、クロック信号CLKIがハイレベルへ変化される。これにより、先に述べたように、相互作用の演算が開始される。信号IU0によって、隣接するスピンセルのスピンの値による相互作用の影響を、取り込むことが指示される場合、すなわち、信号IU0がハイレベルにされた場合、信号NUTと信号IU1Tとが異なるレベル(ハイレベルまたはロウレベル)のとき、N型MOSFETT1とT3またはN型MOSFETT2とT4がオン状態となる。これにより、2個の直列回路のうちのいずれか1個で電流(I1またはI2)が流れることになる。
これに対して、信号NUTと信号IU1Tが同じレベルのときには、N型MOSFETT1またはT3、またはN型MOSFETT2またはT4がオフ状態となる。この結果、信号NUTと信号IU1Tとが同じレベルのときには、2個の直列回路のいずれにおいても、電流(I1、I2)は流れない。これにより、第2共通線CBの電圧は、信号NUTと信号IU1Tとが同じレベルのときには、低下し、信号NUTと信号IU1Tとが異なるレベルのときには、維持される。
言い換えるならば、スピンの値(信号NUT)と相互作用係数(信号IU1T)とが、異なる論理値のとき、第2共通線CBの電圧が低下し、スピンの値(信号NUT)と相互作用係数(信号IU1T)とが、同じ論理値のとき、第2共通線CBの電圧が維持される。これにより、単位排他論理回路IUBUは、図10に示した単位排他論理回路IUUとは相補的な演算結果を出力することになる。
残りの単位排他論理回路ILBU、IRBUおよびIDBUについても、同様に、図10に示した単位排他論理回路ILU、IRUおよびIDUと相補的な演算結果を出力する。なお、外部磁場係数に関する単位排他論理回路ISBUは、図10に示した単位排他論理回路ISUと同じ演算結果を出力する。
図11に示した第2共通線CBも、図10に示した第1共通線CTと同様に、その電圧が、プリチャージされた電源電圧Vdから接地電圧Vsへ向けて低下する時間は、単位排他論理回路ISBU、IUBU、ILBU、IRBUおよびIDBUを流れている電流に依存する。すなわち、第2共通線CBの電圧は、電流を流す単位排他論理和回路の数に依存する。
図10に示した単位排他論理回路IUU、ILU、IRUおよびIDUでは、スピンの値と相互作用係数とが同じ論理値のとき、電流(I1またはI2)が流れる。これに対して、図11に示した単位排他論理回路IUBU、ILBU、IRBUおよびIDBUでは、スピンの値と相互作用係数とが異なる論理値のとき、電流(I1またはI2)が流れる。
そのため、周辺に配置されたスピンセルからのスピンの値と、スピンセルとの間の相互作用係数とが、例えば同じ論理値になる数が多い場合には、第2共通線CBの電圧の低下は、第1共通線CTの電圧の低下よりも遅くなる。言い換えるならば、異なる論理値となる数が多い場合には、第1共通線CTの電圧の低下が、第2共通線CBの電圧低下よりも遅くなる。
図12は、第1共通線CTの電圧の低下と第2共通線CBの電圧の低下との間の時間差を基にして、データNEWを生成する回路を示している。図12において、CTおよびCBは、先に説明した第1共通線および第2共通線を示している。また、同図において、T8およびT9は、P型MOSFET、T6、T7およびT10〜T12は、N型MOSFETを示している。
P型MOSFETT8のソースは、電源電圧Vdに接続され、そのドレインは、N型MOSFETT10のドレインに接続され、そのゲートは、N型MOSFETT10のゲートに接続されている。また、P型MOSFETT9のソースは、電源電圧Vdに接続され、そのドレインは、N型MOSFETT11のドレインに接続され、そのゲートは、N型MOSFETT11のゲートに接続されている。N型MOSFETT10およびT11のそれぞれのソースは、スイッチ用のN型MOSFETT12を介して接地電圧Vsに接続されている。
P型MOSFETT8およびN型MOSFETT10のそれぞれのゲートと、P型MOSFETT9およびN型MOSFETT11のそれぞれのドレインは、入出力ノードCLTに接続されている。入出力ノードCLTは、転送用のN型MOSFETT6を介して第1共通線CTに接続され、さらにインバータ回路IV4の入力に接続されている。また、P型MOSFETT9およびN型MOSFETT11のそれぞれのゲートと、P型MOSFETT8およびN型MOSFETT10のそれぞれのドレインは、入出力ノードCLBに接続されている。当該入出力ノードCLBは、転送用のN型MOSFETT7を介して第2共通線CBに接続され、さらにインバータ回路IV5の入力に接続されている。
転送用のN型MOSFETT6およびT7のそれぞれは、クロック信号CLKIによって、スイッチ制御され、スイッチ用のN型MOSFETT12は、クロック信号CLKIBによってスイッチ制御される。
クロック信号CLKIをハイレベルにすることにより、N型MOSFETT6およびT7がオン状態となり、第1共通線CTの電圧は入出力ノードCLTに伝達され、第2共通線CBの電圧は入出力ノードCLBに伝達される。
クロック信号CLKIがロウレベルとなり、クロック信号CLKIBがハイレベルにされることにより、スイッチ用のN型MOSFETT12がオン状態となる。これにより、N型MOSFETT10およびT11のソースに接地電圧Vsが供給されると、P型MOSFETT8およびN型MOSFETT10により第1のインバータ回路が構成される。同様に、P型MOSFETT9およびN型MOSFETT11により第2のインバータ回路が構成される。第1のインバータ回路と第2のインバータ回路は、互いに入力と出力が交差(クロス)接続されているため、入出力ノードCLTとCLBとの間の電圧差を増幅するような帰還動作を行う。
この実施の形態においては、特に制限されないが、入出力ノードCLTにおける電圧がインバータ回路IV4によってバッファされ、データNEWとして出力される。勿論、インバータIV5の出力をデータNEWとしてもよいし、インバータ回路IV4およびIV5のそれぞれの出力を用いてデータNEWを生成するようにしてもよい。
図13は、図10〜図12に示した演算回路10の動作を説明する波形図である。図13において、横軸は時間を示し、縦軸は電圧を示している。図13(A)は、クロック信号CLKIの電圧波形を示しており、周期的に変化している、図13(B)は、クロック信号CLKIを位相反転して形成したクロック信号CLKIBの電圧波形を示している。クロック信号CLKIが周期的に変化するため、クロック信号CLKIBも周期的に変化している。
図13(C)は、第1共通線CTおよび第2共通線CBのそれぞれの電圧変化を示している。ここで、第2共通線CBにおける電圧の変化は破線で示されている。また、図13(D)は、入出力ノードCLTおよびCLBの電圧の変化を示している。ここでも、入出力ノードCLBにおける電圧の変化は破線で示されている。図13(E)は、演算回路10から出力されるデータNEWの電圧変化を示している。この図13(E)に示すデータNEWは、図12に示したインバータIV4の出力に相当すると見なすことができる。
時刻t1の前の時点では、クロック信号CLKIはロウレベルとなっている。これにより、P型MOSFETTP1、TP3がオン状態となり、第1共通線CT、第2共通線CBのそれぞれが、電源電圧Vdにプリチャージされる。時刻t1において、クロック信号CLKIがハイレベルへ変化することにより、N型MOSFETTP2、TP4および転送用のN型MOSFETT6、T7がオン状態となる。これにより、演算回路10が、相互作用の演算を開始する。
一方、周辺に配置されているスピンセルからのスピンの値(NU、NL、NRおよびND)とそれぞれのスピンセルに対応する相互作用係数(IU0、IL0、IR0、ID0、IU1、IL1、IR1、ID1)の信号が、図10および図11に示した各単位排他論理回路に供給される。また、外部磁場係数(IS0、IS1)の信号も、図10および図11に示した単位排他論理回路へ供給される。このときのスピンの値の論理値と相互作用係数の論理値とが一致する数(あるいは一致しない数)によって、第1共通線CTおよび第2共通線CBの電圧が電源電圧Vdから徐々に低下する。このときの低下する速度は、スピンの論理値と相互作用の論理値とが一致している数(あるいは一致していない数)によって、変わる。すなわち、一致している数が、一致していない数に比べて多ければ、第1共通線CTの電圧が、第2共通線CBの電圧よりも早く低下し、一致していない数が、一致している数よりも多ければ、第2共通線CBの電圧が、第1共通線CTの電圧よりも早く低下する。図13に示した時刻t1から時刻t2の間を例にすれば、スピンの値と相互作用係数との間の論理値が一致している数が、一致していない数に比べて多い、そのため、第1共通線CTの電圧の低下が、第2の共通線CBの電圧の低下よりも早くなっている。この第1共通線CTおよび第2共通線CBのそれぞれの電圧変化は、転送用のN型MOSFETT6およびT7を介して、入出力ノードCLTおよびCLBに伝達される。
次に、時刻t3において、クロック信号CLKIがロウレベルにされ、クロック信号CLKIBがハイレベルへ変化することにより、スイッチ用のN型MOSFETT12がオン状態となる。これにより、P型MOSFETT8、N型MOSFETT10により構成されるインバータ回路と、P型MOSFETT9、N型MOSFETT11により構成されるインバータ回路とによる帰還動作が開始して、入出力ノードCLTとCLBとの間の電圧差が増幅される。時刻t2の後の時刻t3において、インバータ回路IV4から、入出力ノードCLTの電圧に応じた電圧を有するデータNEWが出力される。
また、時刻t3において、クロック信号CLKIがロウレベルとなることにより、P型MOSFETTP1、TP3がオン状態となり、再び、第1共通線CTおよび第2共通線CBのプリチャージが行われる。このとき、転送用のN型MOSFETT6およびT7はオフ状態となるため、第1共通線CTおよび第2共通線CBのプリチャージが行われているとき、第1共通線CT、第2共通線CBと入出力ノードCLT、CLBは電気的に分離される。時刻t4において、クロック信号CLKIがハイレベルに変化することにより、以降は、上記した動作が繰り返される。
上述したように、スピンの値と相互作用係数との間で、論理値が一致する数が、一致しない数に比べて多い場合、第1共通線CTの電圧が、第2共通線CBの電圧より早く低下する。反対に、論理値が一致しない数が、一致する数に比べて多い場合には、第1共通線CTの電圧は、第2共通線CBの電圧より遅くて低下する。例えば時刻t2のような所定のタイミングで、第1共通線CTと第2共通線CBの電圧を見た場合、論理値が一致する数が多い場合は、第1共通線CTの電圧が第2共通線CBの電圧に比べて低い。反対に、論理値が一致しない数が多い場合には、第1共通線CTの電圧が第2共通線CBの電圧に比べて高い。
2入力の排他的論理和演算においては、2入力の論理値が一致した場合、演算結果は論理値“0”となり、一致しない場合の演算結果は論理値“1”となる。上記した所定のタイミングで、第1共通線CTの電圧を見た場合、周辺のスピンセルのスピンの値と相互作用係数との間で、それぞれ実行された複数の排他的論理演算の結果において、一致した数が、一致しない数に比べて多い場合、第2共通線CBの電圧よりも低くなり、反対に一致した数が、一致しない数に比べて少ない場合は、第2共通線CBの電圧よりも高くなる。すなわち、排他的論理演算の結果において、多数となる論理値に従って、第1共通線CTの電圧は、第2共通線CBの電圧に対して高い値あるいは低い値となる。言い換えるならば、第1共通線CTの電圧は、複数の排他的論理演算結果の多数決によって決定される。同様に、第2共通線CBの電圧も、複数の排他的論理演算結果の多数決によって決定される。
この実施の形態においては、第1共通線CTと第2共通線CBとの間の電圧差が、帰還動作により増幅される。例えば、第1共通線CTの電圧が、第2共通線CBの電圧に比べて低い場合には、帰還動作により入出力ノードCLTの電圧はロウレベルとなり、入出力ノードCLBの電圧はハイレベルとなる。反対に、第1共通線CTの電圧が、第2共通線CBの電圧に比べて高い場合には、帰還動作により入出力ノードCLTの電圧はハイレベルとなり、入出力ノードCLBの電圧はロウレベルとなる。すなわち、スピンの値と相互作用係数との間で論理値が一致する数が、一致しない数に比べて多いときには、入出力ノードCLTはロウレベルとなり、一致する数が、一致しない数に比べて少ないときには、入出力ノードCLTはハイレベルとなる。また、データNEWは、入出力ノードCLTの電圧を反転した信号であるため、データNEWは、スピンの値と相互作用係数との間で論理値が一致する数が、一致しない数に比べて多いとき、ハイレベルとなり、一致する数が、一致しない数に比べて少ないとき、ロウレベルとなる。
この実施の形態においては、帰還動作により、第1共通線CTと第2共通線CBとの間の電圧差が増幅されるが、第1共通線CTと第2共通線CBとの間で電圧比較を行い、その電圧差を拡大していると見なすこともできる。第1共通線CTと第2共通線CBとの間の電圧比較を行えば、スピンの値と相互作用係数との間で論理値が一致する数が、一致しない数に比べて多いか否かの判定を行うことが可能である。そのため、図12に示した回路に限定されず、第1共通線CTの電圧と第2共通線CBの電圧とを比較する比較回路であってもよい。
この実施の形態においては、第1共通線CTおよび第2共通線CBのそれぞれの電圧が、排他的論理和の結果の数に従って変化する。この場合、第1共通線CTの電圧は、排他的論理和の結果に従って変化し、第2共通線CBの電圧は、排他的論理和の結果に対して相補的な関係を有する結果に従って変化する。これにより、第1共通線CTと第2共通線CBとの間で、早いタイミングで電圧差が生じるようにすることが可能とされ、データNEWの形成を早くすることが可能である。しかしながら、例えば所定の基準電圧を定め、基準電圧と第1共通線CTあるいは第2共通線CBの電圧を比較するようにしてもよい。この場合には、図11に示した回路あるいは図10に示した回路を省略することが可能となり、小型化を図ることが可能となる。
<イジング計算機および半導体集積回路装置の全体構成>
図14は、イジング計算機100および半導体集積回路装置の全体構成を示すブロック図である。イジング計算機100は、複数の半導体集積回路装置23−1〜23−nと、制御装置1400を備えている。複数の半導体集積回路装置23−1〜23−nは、互いに同じ構成を有しているため、同図においては、半導体集積回路装置23−1につてのみ、その構成が示されている。制御装置1400は、複数の半導体集積回路装置23−1〜23−nのそれぞれを制御する装置であって、それぞれの半導体集積回路装置23−1〜23−nに対して、アドレス信号、AND指定情報、OR指定情報を形成し、供給する。また、制御装置1400は、それぞれの半導体集積回路装置23−1〜23−nとの間でデータの送受信を行い、データの書き込みおよび/または読み出しを行う。
半導体集積回路装置23−1を代表として、半導体集積回路装置23−1〜23−nの構成を説明する。半導体集積回路装置23−1は、行列(マトリクス)状に配置された複数のスピンセル12を有している。特に制限されないが、この実施の形態においては、スピンセル12は、64列で16行に配置されており、同図には、これらのうち、4列で4行に配置されたスピンセル12が、N00〜N03、N10〜N13、N20〜N23およびN30〜N33として示されている。ここで、図示したスピンセルにおいて、符号Nに付された最初の数字は、列(列0〜列3)を示し、次に付された数字は、行(行0〜行3)を示している。ここでは、説明を容易にするために、図14に示した4列4行のスピンセル12を用いて説明するが、残りのスピンセルについても、構成および動作は同様である。また、これらのスピンセル12の配置は、実際の半導体集積回路装置における配置に合わせて描かれている。
それぞれのスピンセル12は、図7に示した構成を有している。先ず、図7に示したスピンセル1と図14に示したスピンセル12との対応関係を説明しておく。説明に際しては、図7に示したスピンセル1が、図14においてN11として示されているスピンセル12である場合を例にする。
図14において、BL1〜BL4は、それぞれ相補データ線対を示しており、それぞれは、行列状に配置されたスピンセル12のマトリクスにおいて、各列に配置され、列に配置された複数のスピンセル12に接続されている。相補データ線対BL1〜BL4のそれぞれは、1対の相補データ線を有しており、スピンセル12(N11)では、相補データ線対BL2を構成する1対の相補データ線が、図7において、相補データ線BLT、BLBとして示されている。図7を用いて説明したように、相補データ線BLT、BLBには、メモリセル9(N、IS0、IS1、IU0、IU1、IL0、IL1、IR0、IR1、ID0およびID1)が接続されている。
図14において、WL[0:10]〜WL[33:43]のそれぞれは、ワード線であり、スピンセル12のマトリクスの各行に配置され、それぞれの各行に配置されたスピンセル12に接続されている。図14において、ワード線[0:10]は、ワード線WL0〜WL10を意味している。すなわち、ワード線WL0〜WL10の11本のワード線を、纏めて1本のワード線[0:10]として示している。他のワード線WL[11:21]〜WL[33:43]のそれぞれついても、11本のワード線を有しており、これらを纏めて1本のワード線として示している。スピンセル12(N11)では、図7に示すように、11個のメモリセル9(N、IS0、IS1、IU0、IU1、IL0、IL1、IR0、IR1、ID0およびID1)を有している。ワード線WL[11:21]に含まれるワード線WL11〜WL21のそれぞれが、対応するメモリセル9に接続されている。
例えば、ワード線WL11が、図7におけるメモリセル9(N)に接続されている。同様に、ワード線WL12は、メモリセル9(IS0)に、ワード線WL13は、メモリセル9(IS1)に、ワード線WL14は、メモリセル9(IU0)に、ワード線WL15は、メモリセル9(IU1)に、ワード線WL16は、メモリセル9(IL0)に、ワード線WL17は、メモリセル9(IL1)に、ワード線WL18は、メモリセル9(IR0)に、ワード線WL19は、メモリセル9(IR1)に、ワード線WL20は、メモリセル9(ID0)に、ワード線WL21は、メモリセル9(ID1)に、それぞれ接続されている(図7,図14)。
メモリセル9(N)を例にすると、図8に示したように、ワード線WL(WL11)は転送用のN型MOSFETTRTおよびTRBのゲートに接続され、相補データ線BLT,BLBは、転送用のN型MOSFETTRTおよびTRBを介して、クロス接続されたインバータ回路に接続されている。残りのメモリセル9(IS0、IS1、IU0、IU1、IL0、IL1、IR0、IR1、ID0およびID1)のそれぞれにおいても、同様に、ワード線WL12〜WL20は、転送用のN型MOSFETのゲートに接続され、相補データ線BLT、BLBは、転送用のN型MOSFETを介して、クロス接続されたインバータ回路に接続されている。なお、残りのメモリセル9(IS0、IS1、IU0、IU1、IL0、IL1、IR0、IR1、ID0およびID1)のそれぞれには、図8において説明した第2の書き込みパスは設けられていない。
図14において、1401は、変更データを示している。この実施の形態においては、変更データ1401は、マトリクスの列0に配置されたスピンセル12(N03)から同じ列0に配置されたスピンセル12(N00)へ向かって供給され、次に、列1におけるスピンセル12(N10〜N13)に供給され、一筆書きのように、次々と異なる列に配置されたスピンセル12へ供給される。スピンセル12(N11)では、スピンセル12(N10)からの変更データ1401が、図7に示されているメモリ回路4および調整回路8に入力され、調整回路8から出力された変更データ1401が、図14に示したスピンセル12(N12)に供給される。そのため、図7においては、「隣接スピンセルより」と記載されているが、図14に示した例では、「隣接スピンセル」は、スピンセル12(N10)に相当する。また、図7において、「隣接スピンセルへ」として記載されている「隣接スピンセル」は、図14においては、スピンセル12(N12)に相当する。
ここで、図7において説明した周辺に配置されたスピンセルの例を、述べておく。図7を用いて説明したように、メモリセルIU0、IU1、IL0、IL1、IR0、IR1、ID0およびID1のそれぞれには、スピンセル12(N11)の周辺に配置されるスピンセルから、このスピンセル12(N11)に対する影響を演算するための相互作用係数が格納される。図14に示した例では、スピンセル12(N11)の周辺に配置されたスピンセルは、スピンセル12(N10)、12(N01)、12(N21)および12(N12)が該当する。この場合、スピンセル12(N10)が、上側に配置されたスピンセルに該当し、スピンセル12(N01)が、左側に配置されたスピンセルに該当し、スピンセル12(N21)が、右側に配置されたスピンセルに該当し、スピンセル12(N12)が、下側に配置されたスピンセルに該当する。
そのため、メモリセルIU0、IU1には、スピンセル12(N10)との間の相互作用の係数が書き込まれ、メモリセルIL0、IL1には、スピンセル12(N01)との間の相互作用の係数が書き込まれ、メモリセルIR0、IR1には、スピンセル12(N21)との間の相互作用の係数が書き込まれ、メモリセルID0、ID1には、スピンセル12(N12)との間の相互作用の係数が書き込まれる。また、図7において説明したスピンの値NUは、スピンセル12(N10)から供給され、スピンの値NLは、スピンセル12(N01)から供給され、スピンの値NRは、スピンセル12(N21)から供給され、スピンの値NDは、スピンセル12(N12)から供給される。
また、図7に示したメモリセルNに保持されているスピンの値は、値NUとして、スピンセル12(N12)に供給され、値NLとして、スピンセル12(N21)に供給され、値NRとして、スピンセル12(N01)へ供給され、値NDとして、スピンセル12(N10)へ供給される。他のスピンセルにおいても、同様に、周辺に配置されたスピンセルとの間の相互作用係数がメモリセルに書き込まれ、周辺に配置されたスピンセルからのスピンの値が供給される。また、周辺のスピンセルに対して、スピンの値を供給する。
図14に戻って説明を続ける。図14において、1402−1〜1402−4のそれぞれは、選択線である。この実施の形態においては、選択線1402−1〜1402−4のそれぞれは、スピンセル12のマトリクスにおいて、それぞれの行(行0〜行4)に配置され、行に配置されたスピンセル12に接続されている。スピンセル12(N11)の例では、選択線1402−2は、図7に示した調整回路8に接続され、選択信号SELi(SEL2)を調整回路8へ供給する。
図14において、15は、アドレスデコーダを含む制御回路を示しており、制御装置1400から供給されるアドレス信号1403をデコードし、デコードした結果を、ワード線ドライブ回路13−1〜13−4およびカラム回路14へ供給する。また、制御回路15は、スピンセルに対する読み出し/書き込みを制御する書き込みイネーブル信号を含む制御信号1404を受けて、読み出し/書き込みを制御するイネーブル信号をカラム回路14へ供給する。
スピンセル12内に含まれているメモリセル9に対して書き込みあるいは読み出しを行う場合、制御回路15は、アドレス信号1403をデコードし、デコード結果をワード線ドライブ回路13−1〜13−4およびカラム回路14へ供給する。ワード線ドライブ回路13−1〜13−4は、供給されたデコード結果に従って、複数のワード線WL0〜WL43のうちから1本のワード線をハイレベルにし、残りのワード線をロウレベルにする。これにより、スピンセル12のマトリクスから1つの行が選択され、さらに選択された行に配置されている複数のスピンセルのそれぞれから、1個のメモリセルが選択され、選択されたメモリセルにおいてクロス接続されたインバータ回路が、相補データ線対BL1〜BL4に接続される。
カラム回路14は、供給されたデコード結果に従って、相補データ線対BL1〜BL4のうちの1対の相補データ線対を選択する。また、カラム回路14は、供給されているイネーブル信号が読み出しを指示している場合、選択した相補データ線対間の電圧差を増幅して、読み出しデータとして出力する。一方、イネーブル信号が書き込みを指示している場合には、供給された書き込みデータに応じた信号を、選択した1対の相補データ線対に供給する。これにより、アドレス信号により指定されたスピンセル12内のメモリセル9に対して、データの書き込みおよびデータの読み出しが行われる。なお、図14においては、書き込みデータ、読み出したデータは、1405として示されている。
図14において、21は、図5に示した制御回路である。制御回路21は、AND指定情報およびOR指定情報を受け、選択線1402−1〜1402−4に対して選択信号SELiを供給する。図5において説明したように、AND指定情報およびOR指定情報に基づいて、選択信号SELiを形成する。スピンセル12のそれぞれにおける調整回路8は、選択信号SELiに従って、AND回路6の出力、OR回路7の出力あるいはスルーを選択して、隣接するスピンセル12のメモリ回路4へ供給する。
制御装置1400は、使用者の指示に従って、アドレス信号1403、制御信号1404を、各半導体集積回路装置23−1〜23−nへ供給する。また、各半導体集積回路装置23−1〜23−nに対して、書き込みデータの供給および読み出しデータの受信を行う。また、制御回路1400は、AND指定情報およびOR指定情報を形成して、各半導体集積回路装置23−1〜23−nへ供給する。
スピンセル12(N11)内の11個のメモリセル12(N、IS0、IS1、IU0、IU1、IL0、IL1、IR0、IR1、ID0およびID1)に、スピンの値、外部磁場係数および相互作用係数を書き込む場合、あるいは読み出しを行う場合を例にして説明すると、次のようになる。
先ず、書き込みを行う場合では、制御装置1400は、半導体集積回路装置23−1に対して、書き込みを指示するイネーブル信号と、スピンセル12(N11)内のメモリ9を特定するアドレス信号と、書き込むデータを供給する。半導体集積回路装置23−1においては、供給されたアドレス信号に従って、ワード線WL[11:21]内のワード線WL(例えばWL11)はハイレベルにされ、残りのワード線はロウレベルにされる。また、供給されたアドレス信号に従った相補データ線対BL2が選択され、選択された相補データ線対BL2(図8の相補データ線BLT、BLB)に、書き込むデータに対応した信号が供給される。これにより、スピンセル12(N11)内のメモリセル9に対してデータの書き込みが行われる。
次に、読み出しを行う場合では、制御装置1400は、半導体集積回路装置23−1に対して、読み出しを指示するイネーブル信号と、スピンセル12(N11)内のメモリ9を特定するアドレス信号を供給する。半導体集積回路装置23−1においては、供給されたアドレス信号に従って、ワード線WL[11:21]内のワード線WL(例えばWL11)がハイレベルにされ、残りのワード線はロウレベルにされる。また、供給されたアドレス信号に従った相補データ線対BL2が選択され、選択された相補データ線対BL2間の電圧差が増幅され、半導体集積回路措置23−1から制御装置1400へ供給される。このようにして、スピンセル12(N11)内のメモリセル9からデータの読み出しが行われる。
書き込みを行うメモリセルあるいは読み出しを行うメモリセルは、アドレス信号によって、スピンセル内の11個のメモリセル9(N、IS0、IS1、IU0、IU1、IL0、IL1、IR0、IR1、ID0およびID1)から選択される。そのため、メモリセル9(N)を対象のメモリセルとすれば、スピンセル12(N11)のスピンの値を書き込んだり、読み出したりすることができる。また、メモリセル9(IS0、IS1)を対象のメモリセルとすれば、外部磁場係数の書き込みが可能となる。さらに、対象のメモリセルとして、メモリセル9(IU0、IU1、IL0、IL1、IR0、IR1、ID0およびID1)を選べば、相互作用係数を書き込むことができる。
勿論、必要であれば、格納されている外部磁場係数および/または相互作用係数を読み出すことも可能である。なお、外部磁場係数および相互作用係数のそれぞれは、複数個存在するため、時間的には、シリーズに書き込みあるいは読み出しを行うことになる。
<制御フローチャート>
図15および図16は、変更データに含まれる論理値“1”および“0”の出現頻度を変更する場合の制御を示すフローチャート図である。それぞれのスピンセル12(図5および図7では、1)に含まれるメモリ回路4は、調整回路8を介して、隣接するスピンセル12内のメモリ回路4に接続されており、調整回路8の出力が、隣接するスピンセル12内のメモリ回路4に書き込まれる。このように、それぞれのメモリ回路4は、調整回路を介して隣接するスピンセル内のメモリ回路4に直列的に接続され、シフトレジスタを構成している。一方、スピンセル12内のメモリ回路4に格納されているデータ(ビット)の論理値は、スピンセル12のメモリセル9(N)に格納されるスピンの値として、相互作用の演算結果に用いるのか演算結果を変更(反転)して用いるのかを定めるために使われる。複数のメモリ回路4により構成されるシフトレジスタに格納される変更データに含まれる論理値“1”または“0”の出現頻度を変更することにより、スピンセル12に保持されるスピンの値を変更することが可能となり、イジング計算の過程において、演算が局所解の状態で停滞することを回避することが可能となる。
この実施の形態においては、一例として図4および図6に示すように、メモリ回路4により構成されるレジスタに格納されるデータ(変更データ)において、論理値“1”が出現する比率が、時間の経過に伴って変更される。
図15は、図4に示すように、論理値“1”が出現する比率を変化させる際の制御を示すフローチャートを示している。
先ず、ステップS101において、イジング計算機100によりイジング計算を開始する。この開始の際には、制御装置1400(図14)によって、それぞれのスピンセル12における複数のメモリセル9に、スピンの値、外部磁場係数および相互作用係数を格納しておく。また、制御装置1400から、各半導体集積回路装置23−1〜23−nへAND指定情報および/またはOR指定情報を供給しておき、各半導体集積回路装置23−1〜23−nは、供給されたAND指定情報および/またはOR指定情報を、割合レジスタ22Aおよび22Oに格納する。図4に示すように、時間の経過とともに、論理値“1”の比率を減少させるために、制御装置1400は、所定の行数をAND指定情報によって、半導体集積回路装置23−1〜23−nのそれぞれに供給する。半導体集積回路装置23−1〜23−nのそれぞれは、供給された所定の行数を割合レジスタ22Aに格納する。
さらに、半導体集積回路装置23−1〜23−nのそれぞれにおける制御回路21は、複数のメモリ回路4により構成されているシフトレジスタをシフト動作させ、このシフトレジスタに、変更データを供給する。ここで供給する変更データは、初期の変更データであり、論理値“1”と論理値“0”とを含むビット列である。この初期の変更データを、シフトレジスタに供給し、シフトレジスタの各段に格納されるように、順次シフトさせる。これにより、スピンセル12のそれぞれにおけるメモリ回路4には、初期の変更データにおける論理値“1”または“0”のビットが格納される。初期の変更データをシフトレジスタに格納するとき、メモリ回路4により構成されるシフトレジスタとしてシフト動作させることになる。この場合には、それぞれのスピンセル12における調整回路8は、例えばメモリ回路4の出力をスルーさせるように制御される(第2モード)。これにより、初期の変更データにおけるビットが、順次、スピンセル12内のメモリ回路4へ供給される。
次に、ステップS102において、制御回路21は、割合レジスタ22A
に格納されている行数を読み出す。この場合、割合レジスタ22Aから読み出した行数であるため、AND回路6の出力を選択する行数であると判定し、制御回路21は、調整回路8において、AND回路6の出力を選択する選択信号を形成し、選択線1402−1〜1402−4へ供給する。このとき、選択信号を供給する選択線の数が、割合レジスタ22Aから読み出した行数になるようにする(ステップS103)。
ステップS103に続いて、ステップS104において、相互作用動作を、所定の時間実行し、ステップS105において、計算を終了する。
ステップS104において、実行される相互作用動作では、図7において説明した相互作用の演算が行われる。すなわち、隣接するスピンセルからのスピンの値と相互作用係数と外部磁場係数とを用いた論理演算が行われ、演算結果に基づいた論理値が、メモリセル9(N)にスピンの値として格納される。この動作が、所定の時間繰り返し、実行される。繰り返し実行されるこの動作において、論理演算結果の論理値は、メモリ回路4に格納されている変更データの論理値に従って、反転あるいは非反転され、論理演算結果に基づいた論理値として、メモリセル9(N)に格納される。
AND指定情報により指定された所定の行数の行のそれぞれにおいて、調整回路8は、メモリ回路4に格納されている論理値と、隣接した前段のスピンセルに設けられているメモリ回路4に格納されている論理値とのAND演算を行い、隣接した次段のスピンセルに設けられているメモリ回路4に書き込む。これにより、メモリ回路4によって構成されたレジスタに格納されている初期の変更データに含まれていた論理値“1”の数は、時間の経過に伴って減少する。すなわち、図4に示すように、初期の変更データにおいて出現していた論理値“1”の比率が、時間の経過に伴って、0.5から徐々に減少する。
図4では、変更データに含まれている論理値“1”の比率が減少するため、論理演算結果を反転して、スピンの値としてメモリセル9(N)へ格納する数が、時間の経過とともに減少することになる。
図16は、図6に示すように、論理値“1”が出現する比率を変化させる際の制御を示すフローチャートを示している。
先ず、ステップS201において、計算を開始する。計算を開始するのに際しては、図15のステップS101において述べたように、それぞれのスピンセル12に、スピンの値、外部磁場係数および相互作用係数を格納する。また、メモリ回路4により構成されるシフトレジスタをシフト動作させ、初期の変更データをシフトレジスタに格納する。さらに、OR指定情報により指定された行数を、割合レジスタ22Oに格納する。
ステップS202において、制御回路21は、割合レジスタ22Oから行数を読み出す。割合レジスタ22Oから読み出した行数であるため、制御回路21は、スピンセル12内の調整回路8が、OR回路7の出力を選択する選択信号を形成して、読み出した行数に対応する数の選択線に供給する(ステップS203)。
次にステップS203において、相互作用動作を所定の時間実施する。ここでの相互作用動作は、図15において述べた相互作用動作と類似している。すなわち、所定の時間、相互作用の演算動作を繰り返す。繰り返される演算動作において、演算結果に基づいた論理値が、メモリセル9(N)にスピンの値として格納される。格納に際して、演算結果は、メモリ回路4に格納されている変更データの論理値に従って、反転または非反転されて格納される。メモリ回路4に格納される変更データの論理値は、図15ではAND回路6の出力が選択されていたため、ステップS104において、時間の経過に伴って“1”が減少していた。
これに対して、ステップS204では、OR指定情報により指定された所定の行数の行のそれぞれにおいて、調整回路8は、メモリ回路4に格納されている論理値と、隣接した前段のスピンセルに設けられているメモリ回路4に格納されている論理値とのOR演算を行い、隣接した次段のスピンセルに設けられているメモリ回路4に書き込む。これにより、メモリ回路4によって構成されたレジスタに格納されている初期の変更データに対して、論理値“1”の数が、時間の経過に伴って増加する。すなわち、図6に示すように、初期の変更データにおいて出現していた論理値“1”の比率が、時間の経過に伴って、0.5から徐々に増加する(“ORを選択”の期間)。
レジスタに格納されている変更データにおいて、論理値“1”が増加することにより、論理演算結果が反転され、反転された論理値をスピンの値として格納するスピンセルの数が増加する。
所定の時間が経過すると、次にステップS205を実行する。ステップS205においては、メモリ回路4により構成されたレジスタに格納されている変更データにおける論理値“1”の数が十分に増加したか否かの判定を行う。特に制限されないが、この実施の形態においては、制御装置1400が、ステップS205の判定を行う。制御装置1400は、半導体集積回路装置23−1〜23−nのそれぞれに対して、メモリ回路4により構成されたシフトレジスタをシフト動作させるように指示する。シフトレジスタとして動作させることにより、格納していた変更データを制御回路21を介して制御装置1400が受信する。制御装置1400は、受信した変更データに含まれている論理値“1”の数を判定することにより、ステップS205を実行する。この場合、制御回路21は、変更データを制御装置1400へ供給した後、再びシフトレジスタに戻して、ステップS205の処理を開始する前の状態にし、さらにメモリ回路4がシフトレジスタを構成するようにする。
このように、メモリ回路4により構成されるシフトレジスタをシフト動作させなくても、メモリ回路4に格納されている変更データを読み出すことは可能である。例えば、メモリセル9(N)と同様に、メモリ回路4に対してもワード線と相補データ線対を接続するようにし、メモリセル9(N)と同様に、アドレス信号によりメモリ回路4を選択し、相補データ線対を介して、変更データを読み出すようにしてもよい。
ステップS205において、変更データに存在する論理値“1”の数が十分に増加していないと判定した場合には、再びステップS204を実行する。これにより、相互作用の演算動作の過程において、変更データに含まれる論理値“1”の数が増加される。なお、十分に増加しているか否かの判定は、論理値“1”の数が、所定の値よりも多いか少ないかを判定すればよい。
ステップS205において、制御装置1400が、変更データに格納されている論理値“1”の数が十分に増加したと判定した場合、制御装置1400は、所定の行数を指定するAND指定情報を、半導体集積回路装置23−1〜23−nの割合レジスタ22Aへ供給する。半導体集積回路装置のそれぞれにおける制御回路21は、ステップS206において、割合レジスタ22Aに格納されている行数を読み出す。次に、制御回路21は、スピンセル12内の調整回路8において、AND回路6の出力が選択されるようにする制御信号を形成し、読み出した行数に対応する数の行に対応する選択線に供給する(ステップS207)。続いて、ステップS208において、所定の時間、相互作用動作を実行し、ステップS209で計算を終了させる。ステップS206〜S209は、図15に示したステップS102〜S105と同様であるため、詳しい説明は省略する。
なお、図15に示したステップS104が実行されている期間、および図16に示したステップS204およびS208のそれぞれが実行されている期間、制御回路21は選択信号を継続して、選択線へ供給する。
また、制御回路21は、特に制限されないが、図16に示したステップS203およびS204を実行するときは、割合レジスタ22Aから読み出した行数に対応する選択信号を形成し、継続して供給し、ステップS207およびS208を実行するときは、割合レジスタ22Oから読み出した行数に対応する選択信号を形成し、継続して供給する。すなわち、この実施の形態においては、割合レジスタ22Aからの行数による選択線の選択と割合レジスタ22Oからの行数による選択線の選択とは時間的に重ならない。
図16に示した制御を行うことにより、変更データに存在する論理値“1”の数は、図6に示すように、“ORを選択”の期間においては増加する。論理値“1”の数が十分に増加した場合、図15を用いて説明したのと同様に、変更データに存在する論理値“1”の数が減少させられる(“ANDを選択”の期間)。
これにより、相互作用の論理演算結果は、演算の初期では、反転されてメモリセル9(N)へスピンの値として書き込まれる数が増加し、その後、反転されてメモリセル9(N)へスピンの値として書き込まれる数は減少する。
<出現頻度変更例>
図14に示した複数のスピンセル12のそれぞれにおけるメモリ回路4(図7)は、調整回路8(図7)を介して、互いに直列的に接続され、シフトレジスタを構成している。図14に示した制御装置1400によって、形成されるAND指定情報およびOR指定情報により、図5および図7において説明したように、調整回路8は、AND回路6の出力、OR回路7の出力またはスルーを選択し、隣接するスピンセル内のメモリ回路へ書き込む。そのため、制御装置1400において形成するAND指定情報および/またはOR指定情報を変更することにより、レジスタに含まれる所定の論理値(“1”または“0”)の出現頻度を変更することができる。以下、出現頻度を変更させる例を、さらに説明する。
図17(A)および(B)は、所定の論理値として論理値“1”を変更させる例を示す図である。図17(A)および(B)において、横軸は時間を示し、縦軸は論理値“1”の比率を示している。
図17(A)においては、イジング計算の開始時に、論理値“1”の比率が0.8程度となっている。AND指定情報によって、所定の行数分に配置されている複数のスピンセル12内における調整回路8において、AND回路6の出力が選択されるようにする。このようにすることにより、時間が経過し、イジング計算が進行するのに合わせて、レジスタに保持されている変更データが変化する。AND回路6の出力が選択されている調整回路8に供給される変更データのビットの論理値は、AND回路6の出力の論理値に変更され、隣接するスピンセル内のメモリ回路4に書き込まれる。この変更と書き込みの動作が、時間の経過とともに繰り返される。そのため、シフトレジスタに含まれる論理値“1”の数が、時間の経過とともに減少する。その結果、図17(A)に示すように、シフトレジスタに含まれる論理値“1”の比率は、時間の経過とともに減少する。論理値“1”の比率が減少することにより、相互作用の演算によって求めた演算結果は、反転されずに、スピンの値として格納される確率が、時間の経過とともに高くなる。これにより、イジング計算が、局所解で停滞することを回避することが可能となる。
図17(B)には、イジング計算の初期段階では、AND指定情報により、所定の行数分の調整回路8において、AND回路6の出力を選択し、その後、OR指定情報により、所定の行数分の調整回路8において、OR回路7の出力を選択するようにした場合の論理値“1”の比率変化が、示されている。ここでも、イジング計算の開始のときには、シフトレジスタに含まれる論理“1”の比率は0.8程度とする。イジング計算の初期においては、AND指定情報により、所定数の行におけるスピンセル内の調整回路8が、AND回路6の出力を選択するようにされる。これにより、変更データのうち、AND回路6を選択している調整回路8に供給されるビットの論理値は、AND回路6の出力の論理値へ変更され、シフトレジスタの次段のメモリ回路4に格納される。時間の経過に伴って、この動作が繰り返され、シフトレジスタにおける変更データに含まれる論理“1”は、徐々に減少する。
時刻t1になったときに、制御装置1400によって、半導体集積回路装置23−1に含まれているスピンセル12におけるメモリセル9(N)からスピンの値を読み出す。この場合、特に制限されないが、半導体集積回路装置23−1に含まれている全てのスピンセル12におけるメモリセル9(N)からスピンの値を読み出す。読み出したスピンの値を用いて、先に示した式(1)の演算を制御装置1400において行い、エネルギーEを求める。この場合、相互作用係数および外部磁場係数は、制御装置1400が、予め各メモリセルに書き込んだため、書き込んだときの相互作用係数および外部磁場係数を用いて、式(1)の演算を実行することが可能である。そのため、時刻t1において、相互作用係数および外部磁場係数を読み出す必要はなく、高速化を図ることが可能となる。
時刻t1において求めたエネルギーEが所定の値まで低下しているか否かのチェックを行う。所定の値までエネルギーEが低下していなかった場合には、OR指定情報によって、所定の行数分におけるスピンセル内の調整回路8が、OR回路7の出力を選択するようにする。これにより、時間の経過とともに、シフトレジスタに格納されている変更データが変化する。すなわち、OR回路7の出力を選択している調整回路8へ供給されている変更データのビットの論理値は、OR回路7の出力の論理値へ変更され、隣接するスピンセル内のメモリ回路4へ書き込まれる。OR回路7の出力の論理値への変更と、メモリ回路4への書き込みが、時間の経過とともに繰り返される。そのため、変更データに含まれる論理値“1”の数が、時間の経過とともに、増加する。すなわち論理値“1”の比率が上昇する。
シフトレジスタにおける論理値“1”の比率が、所定の値(例えば0.5程度)まで上昇した時点で、再度、AND指定情報によって、所定の行数分のスピンセルにおける調整回路8がAND回路6の出力を選択するようにする。これにより、再び、論理値“1”の比率は、時間の経過とともに、減少する。
一方、時刻t1において、求めたエネルギーが所定の値まで低下していた場合には、例えば、AND指定情報によって、継続してAND回路6の出力が選択されるようにする。この場合には、図17(A)と同様な比率の変化となる。
このように、イジング計算の過程において、エネルギーEをチェックすることにより、エネルギーEが所定の値まで低下しておらす、局所解で停滞している場合、スピンの値を変更する数を増やすことが可能となり、局所解で停滞することから脱することが可能となる。
この実施の形態においては、スピンの値として格納される、相互作用の演算結果の論理値を、変更するか否かを定める論理値が、それぞれメモリ回路4に格納される。これらのメモリ回路4によって、シフトレジスタが構成され、変更するか否かを定める論理値のビット列が変更データとして、シフトレジスタに供給される。そのため、変更データとして、任意のビット列を供給することにより、シフトレジスタを構成するそれぞれのメモリ回路4には、任意の論理値を格納することが可能となる。これにより、相互作用の演算の際に用いられるスピンの値を任意の論理値を変更することが可能となり、局所解の状態に陥るのを低減することが可能となる。また、相互作用の演算結果の論理値を変更する反転論理回路LGと、メモリ回路4とを用いることにより、局所解の状態に陥るのを低減することが可能なため、回路規模の増加を抑制することが可能となる。
また、この実施の形態においては、調整回路8によって、シフトレジスタを構成するメモリ回路4に書き込まれる論理値をAND回路6の出力、OR回路7の出力等へ変更することが可能とされている。これにより、メモリ回路4により構成されるシフトレジスタに所定の論理値が出現する頻度を調整することが可能となされている。調整回路により所定の論理値が出現する頻度を調整することが可能なため、回路規模の増加を抑制しながら、局所解の状態に陥るのを低減することが可能となる。
(実施の形態2)
図18は、実施の形態2に係わる半導体集積回路装置23の構成を示すブロック図である。図18に示した半導体集積回路装置23は、図5に示した半導体集積回路装置の構成と類似している。そのため、ここでは、相違点を主に説明する。
図5に示した半導体集積回路装置に対して、実施の形態2に係わる半導体集積回路装置23においては、スピンセル1のそれぞれにメモリ回路1800(初期値メモリ回路)が追加されている。この実施の形態2においては、それぞれのスピンセル1におけるメモリ回路1800も、破線で示されている様に、互いに直列的に接続され、シフトレジスタを構成している。複数のメモリ回路1800が直列的に接続されて構成されたシフトレジスタには、制御回路21から初期の変更データ1801が、ビット列として供給される。
制御回路21から、メモリ回路1800により構成されたシフトレジスタに初期の変更データを供給し、シフト動作を行う。これにより、メモリ回路1800のそれぞれに、初期値(ビット)が格納される。この実施の形態においては、メモリ回路1800により構成されたシフトレジスタに供給される初期の変更データ1801と、メモリ回路4により構成されたシフトレジスタに供給される初期の変更データ(ビット列)とは、同じにされている。また、同じスピンセル1に設けられた、メモリ回路4に対して、メモリ回路1800に格納されている論理値を供給し、書き込むことが可能とされている。
実施の形態1において説明したように、メモリ回路4には、隣接するスピンセル1における調整回路8(選択スイッチ5、AND回路6およびOR回路7)の出力が供給され、調整回路8の出力が書き込まれる。これにより、メモリ回路4によって構成されたシフトレジスタに格納されている変更データは、初期の変更データから、変更される。すなわち、変更データにおける論理値“1”と論理値“0”のビット列のパターンは、時間の経過とともに変更される。これにより、メモリ回路4により構成されたシフトレジスタに格納されている変更データには、例えば論理値“1”あるいは論理値“0”の数に偏りが生じ、調整回路8に設けられているAND回路6および/またはOR回路7を用いても、偏りを調整することが困難になることが考えられる。例えば、時間が経過して、メモリ回路4により構成されるシフトレジスタに格納されている変更データに、論理値“1”の数が極端に増加した場合には、AND回路6を用いても、論理値“1”の数を減らすことが困難になる。同様に、論理値“0”の数が極端に増加した場合も、OR回路7によって、論理値“0”を減らすことは困難になる。
このようなとき、メモリ回路1800に格納されている初期の変更データを、メモリ回路4へ供給し、メモリ回路4に格納されている変更データを元に戻すことが可能となる。すなわち、メモリ回路1800により構成されたシフトレジスタに保持されている初期の変更データを、メモリ回路4により構成されたシフトレジスタに書き込む。このようにすることにより、再度、初期の変更データを形成し、メモリ回路4により構成されたシフトレジスタに供給し、格納させる動作を無くすことが可能となる。
図18では、メモリ回路4により構成されたシフトレジスタに供給する初期の変更データもビット列として示してあるが、初期変更データ1801と当該ビット列とが同じである場合には、ビット列あるいは初期変更データ1801のいずれかを形成して、それぞれのシフトレジスタに供給するようにしてもよい。
SRAM等のメモリ回路においては、半導体集積回路装置23に電源電圧Vdが給電されたとき、メモリ回路を構成するP型MOSFETおよび/またはN型MOSFETの特性のバラツキによって、ランダムに論理値“1”あるいは“0”を保持する。これを利用して、初期の変更データを形成するようにしてもよい。それぞれのメモリ回路1800として、例えばSRAMを用い、電源電圧Vdが給電されたときに、それぞれのメモリ回路1800に保持されている論理値を、初期の変更データの論理値とする。この場合には、制御回路21において、初期変更データを形成しなくてもよい。すなわち、電源電圧Vdが供給されたときに、メモリ回路1800により構成されたシフトレジスタに格納されているビット列を初期の変更データとし、このシフトレジスタに格納されている初期の変更データを、メモリ回路4により構成されたシフトレジスタに書き込む。これにより、メモリ回路4により構成されたシフトレジスタにも初期の変更データが格納されることになる。
実施の形態1および2においては、複数のメモリ回路4を直列的に接続することにより構成したレジスタをシフトレジスタと称している。周知のシフトレジスタにおいては、シフト動作により、データが順次、例えば前段のメモリ回路から後段のメモリ回路へ移動し、書き込まれる。データが移動することにより、シフトレジスタの初段のメモリ回路には、特定のデータあるいは新たなデータが書き込まれことになる。実施の形態1および2において述べているシフトレジスタにおいては、シフト動作のとき、初段のメモリ回路へのデータの供給は行われず、新たなデータの書き込みが行われず、初期の変更データの論理値が、初段のメモリ回路に維持される。また、実施の形態1および2においては、調整回路8の出力がメモリ回路4に順次書き込まれる構成を示しているが、例えばメモリ回路4が、クロック信号CLKIの電圧変化に応答して、調整回路8からの出力を取り込み、書き込むようにしてもよい。すなわち、クロック信号CLKIに同期して、シフトレジスタがシフト動作を行うようにしてもよい。実施の形態1および2においては、所定の論理値(“1”)の出現頻度を変更するために、変更データを変更するとき、制御回路21において新たな変更データ(変更後の変更データ)を形成して、メモリ回路4により構成されたシフトレジスタへ供給する必要がない。これにより、制御回路21の構成の簡素化を図ることが可能である。また、制御回路21において、新たな変更データを形成する必要がないため、形成に要する時間の短縮化を図ることが可能である。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、上記した実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、例えば、所定の論理値は、2値信号“1”であっても、2値信号“0”であってもよい。さらに、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。