JP4712328B2 - フォールトトレラントなセル・アレイ - Google Patents

フォールトトレラントなセル・アレイ Download PDF

Info

Publication number
JP4712328B2
JP4712328B2 JP2004220823A JP2004220823A JP4712328B2 JP 4712328 B2 JP4712328 B2 JP 4712328B2 JP 2004220823 A JP2004220823 A JP 2004220823A JP 2004220823 A JP2004220823 A JP 2004220823A JP 4712328 B2 JP4712328 B2 JP 4712328B2
Authority
JP
Japan
Prior art keywords
cell
half memory
adjacent
memory
certain
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004220823A
Other languages
English (en)
Other versions
JP2006040451A (ja
Inventor
フェルディナンド ペパー
佳 李
進 足立
伸之 松井
悌次郎 礒川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National Institute of Information and Communications Technology
Original Assignee
National Institute of Information and Communications Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National Institute of Information and Communications Technology filed Critical National Institute of Information and Communications Technology
Priority to JP2004220823A priority Critical patent/JP4712328B2/ja
Publication of JP2006040451A publication Critical patent/JP2006040451A/ja
Application granted granted Critical
Publication of JP4712328B2 publication Critical patent/JP4712328B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Logic Circuits (AREA)

Description

本発明は、フォールトトレラント(耐故障)なセル・アレイなどに関する。
ナノメートル・スケールの装置の構成と操作の成功により([1, 2, 3, 4, 5, 6, 7]および[8])、その技術が大量生産段階にはまだ遠いにも関わらず、ナノメートル・スケールでコンピュータを作成することに関心が高まった。そのようなナノコンピュータに最適なアーキテクチャに関する議論において、局所的に接続された素子の規則的構造が、化学合成を使用して部品を自己組織化させる効率的な物理的実現および製造法を容易にするという意見が多くなってきている([9, 10, 11, 12, 13, 14])。
この点で有望なのは、セル・アレイである。セル・アレイは、二次元または三次元の配列として構成された多数の単純で同一のセルからなり、演算モデルとして幅広く研究されてきた。セル間の相互作用は、隣り合ったセルとセル自体だけを含む局所レベルに作用する少数の遷移規則によってモデル化される。ほとんどのセル・アレイ・モデルは、すべてのセルが各時間ステップで遷移するグローバル・タイミング・スキームを想定している。非同期セル・アレイ[15, 13, 16, 17]と呼ばれる代替モデルは、各セルの状態遷移が、他のセルと関係ないランダムな時間に行われるタイミング・モデルを想定している。非同期タイミング・モードは、非同期回路に役立つのと同じ形でセル・アレイの物理的実現に役立つ場合があり([18])、中央クロックがないため、すべての素子にクロック信号を配布する必要がなくなり、また回路が高速になるとともに電力消費が少なくなり、これと関連して発熱が少なくなる。これらの利点は、分子エレクトロニクス[19, 20]、RSFQ超伝導技術[21, 22]、量子ドット・セル・オートマトン[23, 24]等のような代替技術で特に重要である。非同期セル・アレイ上の効率的な演算方式[13, 16, 17]は、耐遅延回路、すなわち演算の正確さが信号の遅延の影響を受けにくない種の非同期回路([18])のシミュレーションを利用する。この手法では、任意の耐遅延回路を作成することができる1組のプリミティブな回路素子をセルの配置が実現するような構成に設計される[13, 16, 17]。
誤りに対する堅牢性は、ナノメートル・スケール素子の信頼性に影響するノイズと不安定性の観点から、ナノコンピュータを設計する際に重要なことである。ヒース(Heath)ら[25]は、誤りに対する堅牢性を2つのタイプに区別している。1つは、演算中の一時誤りから回復する能力であるフォールトトレランスであり、これは本明細書の主題である。他方は製造工程で現れた永久的なハードウェア誤りがあっても関係なく動作する能力であるディフェクト・トレランスである。後者については、本明細書にて触れない。不確実な要素によって確実な演算を行う研究は、von Neumann(フォン・ノイマン)により始められた[26]。彼の多重化技術では、回路内のそれぞれの配線が、多数決を行って値を設定する配線のバンドルに置き換えられる。ドブルシン(Dobrushin)とオルチュコフ(Ortyukov)は、この技術を明確な形にし、[27]において、m個の欠陥のない要素によって計算された関数が、O(m log m)個の不確実な要素によって高い確度で確実に計算できることを示している。これはさらに[28, 29]において、O(m)個の不確実な要素に改善されている。もう1つの方法のRフォールド・モジュール・リダンダンシ(R-fold modular redundancy)[30]は、ユニットのR個のコピー(Rは奇数であることが望ましい)を使って誤りに対する許容性を実現し、これは、多数決ゲートによって行われる操作に従って、多数派が、ユニットが持つ最も可能性の高い出力を決定するものである。R=3の場合、この技術は、トリプル・モジュール・リダンダンシ(TMR)と呼ばれる。階層レベルの第2およびそれに続くレベルの多数決ゲートによって、3つのTMRユニットの出力を組み合せることにより、階層が高いほど信頼性が高いモデルであるカスケード・トリプル・モジュール・リダンダンシ(CTMR)[31]が得られる。ナノテクノロジーの分野において、TMR、CTMRおよびフォン・ノイマンの多重化技術の利点に限界があることが分かった[32]。1012個の素子を持つチップを確度90%で作動させるためには、ナノメートル・スケールの実現と大型ハードウェアの冗長性に関して、非現実的な小さい素子障害率が要求される。例えば、多重化技術を使用する場合、1素子当たりの誤り率を10-3にするには、ほぼ105倍の冗長性を必要とする。そのような高い冗長性は、チップを事実上107個の素子しかないものに悪化させるが、これでは現在の技術と比べてほとんど改善されていない。TMR技術の場合はさらに状況が悪くなる。これらの結果は[33]において改善され、それによりフォン・ノイマンの多重化技術が再構成技術と組み合わされて階層的に適用される。特徴は、素子誤り率が最大0.01の場合でも、この設計において10倍の冗長性で十分なことである。
素子の入力または出力において誤りを検出し訂正するという問題には、ノイズが多い通信チャネルによってメッセージを確実に送ることと類似性がある。誤り訂正符号([34]等)は、メッセージを冗長情報を含む符号語として符号化することによって、メッセージ内のビットの破損に対処する効率的な方法を提供する。この情報は、誤りが生じた場合に元の符号語を再構成するために使用される。誤り訂正符号は、TRMのような方法と比べて、より系統的に誤りに対処する方法であり、あまり冗長性を必要としない傾向がある。フォン・ノイマンのフォールトトレラント構成と他の研究者によるその後の研究は、メッセージの各シンボルが何度も反復されて冗長性が作り出される繰り返し符号と呼ばれる方式の誤り訂正符号である(但し、あまり効率が高いものではない)。この場合、演算が符号化空間内で行われると考えることができ、それにより誤りが局所的に訂正され、エンコーディングとデコーディングは、演算のそれぞれ始めと終わりだけに必要とされる。また、この考え方は[35]によるものであるが、信頼性の高いフォールトトレラント演算モデルを実現するためには、繰り返し符号よりもむしろ一般化リード・ソロモン符号([34]等)が使用される。
セル・アレイの分野において、フォールトトレランスの初期の研究が[36]に報告されている。このモデルは、19個のセル全体で1つの誤りしか訂正できないが、このために各セルは、セル・アレイ内の通常の4つのセル(フォン・ノイマン近傍)よりもはるかに多い近傍内の49個のセルの状態の読み出しアクセスを必要とする。セルが複雑であることは、それらが物理的実現においてきわめて誤りが発生しやすく、したがってこの研究の価値が主に理論的なものであることを示唆している。[37]のモデルにも同様の問題がある。同期セル・アレイを使用する[38, 39, 40]と、同期セル・アレイをシミュレートしている非同期セル・アレイを使用する[41, 42]では、より良いフォールトトレランスが得られる。この概念は、第2のセル・アレイのフォールトトレラント・シミュレーションを実行する、ブロックとして組織化されたセルから成るセル・アレイを利用し、その第2のセル・アレイもブロックによる組織化され、さらに第3のセル・アレイをより確実にシミュレートし、以後同じように続けることである。この結果、CTRM技術と同じように、レベルが高いほど信頼性が高い階層構造が得られる。しかしながらこのようなモデルのセルは、ブロック構造、ブロック内アドレス、遷移規則選択プログラム、タイミング情報等の階層構成に関する情報を含むので、複雑すぎて物理的実現には適していない。[43]には、BCH符号([34]等)を利用したフォールトトレラント非同期セル・アレイが提案されているが、1度に1つの信号しか許容されないので、このモデルでの演算は非効率的である。
F. Peper, J. Lee, S. Adachi, and S. Mashiko, "Laying out circuits on asynchronous cellular arrays : a step towards feasible nano-computers," Nanotechnology, vol. 14, pp. 469〜485, 2003.
非同期セル・アレイは、クロックがないために低消費電力設計が容易で、また規則的構造のために分子自己組織化を利用した製造法が可能なため、ナノコンピュータの有望なアーキテクチャとして注目されてきた。集積密度の高まりによって、コンピュータを構成する部品の信頼性が低下しているが、セル・アレイを利用した実現もこの例外ではない。9つの規則を使用するこれまで提案された(フォールトトレラントでない)非同期セル・アレイが提案されている[13](非特許文献1)。
本発明の目的は、従来の非同期セル・アレイより複雑でない非同期セル・アレイを提供することである。また,本発明の別の目的は,より多くの一時的誤りを許容できる非同期セル・アレイを提供することである。本発明の別の目的は,フォールトトレラントなセル・アレイを提供することである。本発明の別の目的は,そのようなセル・アレイを用いた,耐遅延回路,フォールトトレラントなセル・アレイ,NAND回路,コンピュータを提供することである。また,上記のセル・アレイをコンピュータで実現させるためのプログラムや,そのプログラムを記憶した記録媒体を提供することである。
<1> 上記の課題のうち少なくとも一つを解決するため、本発明のセル・アレイは, 2つの状態(これを{[0],又は[1]}とする。)の組(00, 01, 10, 及び 11)であるハーフメモリ対に基づく遷移規則を実現するセル・アレイであって,セル・アレイを構成する各セルは複数のメモリを有し,それぞれのメモリは前記ハーフメモリ対に対応した複数のビット群を有し,前記各ビット群は,前記ハーフメモリ対に基づく遷移規則を実現し,
前記それぞれのメモリの複数のビット群のうちひとつ以上が異なるハーフメモリ対の値を示した場合,それを他のビット群が示すハーフメモリ対の値と同じ値を示すように修正した後,それぞれのメモリ含まれる複数のビット群の遷移が行われるフォールトトレラントなセル・アレイである。
“ハーフメモリ対に基づく遷移規則”とは,たとえば表2に示されるような遷移規則を意味する。また,各セルが有する“メモリ”は,少なくとも2つの状態を変更可能に記憶できるものであり,各セルにたとえば4つ含まれる。具体的には,図1の各セルの各辺上に設けられた四角で表されるものがあげられる。たとえば,表2の各メモリは,二つの部分(ハーフメモリともよぶ)に分かれている。そして,それぞれの部分は,黒又は白で表される2つの状態をとる(これを0と1とであらわす)。したがって,表2の各メモリは00, 01, 10, 及び 11の値をとり,これをビット群とよぶ(特に各メモリのとりうる上体が2つの対からなるものをビット対とよぶ)。表2では,各メモリが1対のビット対をもっている。一方,このメモリはたとえば図12に示されるように複数のビット対(ビット群)を有していてもよい。また,各メモリは図15に示されるように分割された複数のビット対により構成され,それぞれのビット対はたとえば図16に示されるような対応関係をもって各メモリの00, 01, 10, 及び 11の値と対応していてもよい。そして,それらのビット対は,他のメモリの対応するビット対とともに,表2に示されるような遷移規則に基づいて遷移する。
前記セル・アレイは,非同期セル・アレイであることが好ましい。上記のセル・アレイを用いれば,耐遅延回路,フォールトトレラントなセル・アレイ,NAND回路,及びコンピュータなどを提供できる。さらに,上記のセル・アレイをコンピュータで実現させるためのプログラムや,そのプログラムを記憶した記録媒体をも好適に提供できる。
<2> 本発明のセル・アレイのある態様は,前記ビット群は,00, 01, 10, 及び 11の値のいずれかであるビット対であり,前記各メモリは,隣接するセル・アレイに共有されるように設けられる上記<1>に記載のフォールトトレラントなセル・アレイである。ビット対を用いたセル・アレイは,本明細書に表2の遷移規則などで詳しく説明されるとおりである。すなわち,本明細書では,これら4つの状態を用いて遷移規則を表現している。
<3> 本発明のセル・アレイのある態様は,前記セル・アレイは,格子状,三角格子状,六角格子状,又は直方体状のものである上記<1>に記載のセル・アレイである。本明細書では格子状のセル・アレイを表現しているが,同様な考え方を用いれば三角格子状,六角格子状,又は直方体状など様々なセル・アレイを実現できる。
<4> 本発明のセル・アレイのある態様は,格子状に並んだセル・アレイを構成する各セルは,そのセルの上下左右にそれぞれ2つの状態(これを{[0],又は[1]}とする。)をとりうるハーフメモリを具備するセル・アレイであって,以下のフォーク,マージ,及びRカウンタからなる3つプリミティブによる,以下の6つ規則により信号の流れが制御されるセル・アレイである。
以下の規則は,表2を具体的に表現するものであるすることにより,容易に理解できる。すなわち,本発明のセル・アレイは,以下の6つの規則を実現する手段を具備するセル・アレイである。
規則1(信号伝播規則):あるセルに関連した4のハーフメモリが全て[0]である場合,そのセルに隣接するそのセルの上,下,右,又は左のいずれかのセルにおけるそれぞれ下,上,左,又は右に位置するハーフメモリが[1]である場合は,そのハーフメモリ[1]の状態が[0]となり,当該あるセルのそれぞれ下,上,左,又は右に位置するハーフメモリが[1]となる。
規則2(フォーク用の規則):あるセルに関連した4つのハーフメモリのうちひとつが[1]であり,残りが[0]である場合であって,
この状態[1]のハーフメモリ位置が当該あるセルの右の場合であって,当該あるセルの右に隣接するセルの左のハーフメモリが[1]であって、当該あるセルの上に隣接するセルの下のハーフメモリが[0]であって、当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合は,当該あるセルの左に隣接するセルの右のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの上と下のハーフメモリがそれぞれ[1]となり,この状態[1]のハーフメモリ位置が当該あるセルの左の場合は,当該あるセルの左に隣接するセルの右のハーフメモリが[1]であって、当該あるセルの上に隣接するセルの下のハーフメモリが[0]であって、当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合は,当該あるセルの右に隣接するセルの左のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの上と下のハーフメモリがそれぞれ[1]となり,
この状態[1]のハーフメモリ位置が当該あるセルの上の場合は,当該あるセルの上に隣接するセルの下のハーフメモリが[1]であって、当該あるセルの右に隣接するセルの左のハーフメモリが[0]であって、当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合は,当該あるセルの下に隣接するセルの上のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの右と左のハーフメモリがそれぞれ[1]となり,この状態[1]のハーフメモリ位置が当該あるセルの下の場合は,当該あるセルの下に隣接するセルの上のハーフメモリが[1]であって、当該あるセルの右に隣接するセルの左のハーフメモリが[0]であって、当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合は,当該あるセルの上に隣接するセルの下のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの右と左のハーフメモリがそれぞれ[1]となる。
規則3(マージ用の規則−1−):
あるセルに関連した4つのハーフメモリのうちひとつが[1]であり,残りが[0]である場合であって,
(i)この状態[1]のハーフメモリ位置が当該あるセルの右の場合であって,当該あるセルの右に隣接するセルの左のハーフメモリが[1]であって、当該あるセルの左に隣接するセルの右のハーフメモリが[0]であって、当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合は,当該あるセルの上に隣接するセルの下のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの左のハーフメモリが[1]となり,当該あるセルの下に隣接するセルの上のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの左のハーフメモリが[1]となり;
(ii)この状態[1]のハーフメモリ位置が当該あるセルの左の場合であって,当該あるセルの左に隣接するセルの右のハーフメモリが[1]であって、当該あるセルの右に隣接するセルの左のハーフメモリが[0]であって、当該あるセルの上に隣接するセルの下のハーフメモリが[0]である場合は,当該あるセルの上に隣接するセルの下のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの右のハーフメモリが[1]となり,当該あるセルの下に隣接するセルの上のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの右のハーフメモリが[1]となり;
(iii)この状態[1]のハーフメモリ位置が当該あるセルの上の場合であって,当該あるセルの上に隣接するセルの下のハーフメモリが[1]であって、当該あるセルの下に隣接するセルの上のハーフメモリが[0]であって、当該あるセルの右に隣接するセルの左のハーフメモリが[0]である場合は,当該あるセルの右に隣接するセルの左のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの下のハーフメモリが[1]となり,当該あるセルの左に隣接するセルの右のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの下のハーフメモリが[1]となり;そして,
(iv)この状態[1]のハーフメモリ位置が当該あるセルの下の場合であって,当該あるセルの下に隣接するセルの上のハーフメモリが[1]であって、当該あるセルの上に隣接するセルの下のハーフメモリが[0]であって、当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合は,当該あるセルの右に隣接するセルの左のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの上のハーフメモリが[1]となり,当該あるセルの左に隣接するセルの右のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの上のハーフメモリが[1]となる。
規則4(マージ用の規則−2−):
あるセルに関連した4つのハーフメモリのうちひとつが[1]であり,残りが[0]である場合であって,
(i)この状態[1]のハーフメモリ位置が当該あるセルの右の場合であり,当該あるセルの右に隣接するセルの左のハーフメモリが[1]である場合であって,当該あるセルの左に隣接するセルの右のハーフメモリが[0]であり,かつ当該あるセルの上に隣接するセルの下のハーフメモリが[1]であり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[1]のとき,それら2のハーフメモリのうちいずれかが[0]となり,当該あるセルの左のハーフメモリが[1]となり,
(ii)この状態[1]のハーフメモリ位置が当該あるセルの左の場合であり,当該あるセルの左に隣接するセルの右のハーフメモリが[1]である場合であって,当該あるセルの右に隣接するセルの左のハーフメモリが[0]であり,かつ当該あるセルの上に隣接するセルの下のハーフメモリが[1]であり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[1]のとき,それら2のハーフメモリのうちいずれかが[0]となり,当該あるセルの右のハーフメモリが[1]となり,ハーフメモリハーフメモリハーフメモリハーフメモリ
(iii)この状態[1]のハーフメモリ位置が当該あるセルの上の場合であり,当該あるセルの上に隣接するセルの下のハーフメモリが[1]である場合であって,当該あるセルの下に隣接するセルの上のハーフメモリが[0]であり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[1]であり,かつ当該あるセルの左に隣接するセルの右のハーフメモリが[1]のとき,それら2のハーフメモリのうちいずれかが[0]となり,当該あるセルの下のハーフメモリが[1]となりハーフメモリハーフメモリハーフメモリハーフメモリ;そして,
(iv)この状態[1]のハーフメモリ位置が当該あるセルの下の場合であり,当該あるセルの下に隣接するセルの上のハーフメモリが[1]である場合であって,当該あるセルの上に隣接するセルの下のハーフメモリが[0]であり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[1]であり,かつ当該あるセルの左に隣接するセルの右のハーフメモリが[1]のとき,それら2のハーフメモリのうちいずれかが[0]となり,当該あるセルの上のハーフメモリが[1]とハーフメモリハーフメモリハーフメモリハーフメモリなる。
規則5(Rカウンタの規則−1−)
あるセルに関連した4つのハーフメモリのうちひとつが[1]であり,残りが[0]である場合であって,
(i)この状態[1]のハーフメモリ位置が当該あるセルの上の場合であり,当該あるセルの上に隣接するセルの下のハーフメモリが[0]である場合であって,当該あるセルの右に隣接するセルの左のハーフメモリが[1]であり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[1]であり,かつ当該あるセルの左に隣接するセルの右のハーフメモリが[0]のとき,当該あるセルの右に隣接するセルの左のハーフメモリが[0]となり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[0]となり;
(ii)この状態[1]のハーフメモリ位置が当該あるセルの下の場合であり,当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合であって,当該あるセルの上に隣接するセルの下のハーフメモリが[1]であり,かつ当該あるセルの左に隣接するセルの右のハーフメモリが[1]であり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[0]のとき,当該あるセルの上に隣接するセルの下のハーフメモリが[0]となり,かつ当該あるセルの左に隣接するセルの右のハーフメモリが[0]となり;
(iii)この状態[1]のハーフメモリ位置が当該あるセルの右の場合であり,当該あるセルの右に隣接するセルの左のハーフメモリが[0]である場合であって,当該あるセルの左に隣接するセルの右のハーフメモリが[1]であり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[1]であり,かつ当該あるセルの上に隣接するセルの下のハーフメモリが[0]のとき,当該あるセルの左に隣接するセルの右のハーフメモリが[0]となり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[0]となり;
(iv)この状態[1]のハーフメモリ位置が当該あるセルの左の場合であり,当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合であって,当該あるセルの上に隣接するセルの下のハーフメモリが[1]であり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[1]であり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[0]のとき,当該あるセルの上に隣接するセルの下のハーフメモリが[0]となり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[0]となり;
(v)この状態[1]のハーフメモリ位置が当該あるセルの上の場合であり,当該あるセルの上に隣接するセルの下のハーフメモリが[0]である場合であって,当該あるセルの左に隣接するセルの右のハーフメモリが[1]であり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[1]であり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[0]のとき,当該あるセルの左に隣接するセルの右のハーフメモリが[0]となり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[0]となり;
(vi)この状態[1]のハーフメモリ位置が当該あるセルの下の場合であり,当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合であって,当該あるセルの上に隣接するセルの下のハーフメモリが[1]であり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[1]であり,かつ当該あるセルの左に隣接するセルの右のハーフメモリが[0]のとき,当該あるセルの上に隣接するセルの下のハーフメモリが[0]となり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[0]となり;
(vii)この状態[1]のハーフメモリ位置が当該あるセルの右の場合であり,当該あるセルの右に隣接するセルの左のハーフメモリが[0]である場合であって,当該あるセルの左に隣接するセルの右のハーフメモリが[1]であり,かつ当該あるセルの上に隣接するセルの下のハーフメモリが[1]であり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[0]のとき,当該あるセルの左に隣接するセルの右のハーフメモリが[0]となり,かつ当該あるセルの上に隣接するセルの下のハーフメモリが[0]となり;そして,
(viii)この状態[1]のハーフメモリ位置が当該あるセルの左の場合であり,当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合であって,当該あるセルの下に隣接するセルの上のハーフメモリが[1]であり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[1]であり,かつ当該あるセルの上に隣接するセルの下のハーフメモリが[0]のとき,当該あるセルの下に隣接するセルの上のハーフメモリが[0]となり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[0]となる。
規則6(Rカウンタの規則−2−)
あるセルに関連した4つのハーフメモリのうちひとつが[1]であり,残りが[0]である場合であって,
(i)この状態[1]のハーフメモリ位置が当該あるセルの上の場合であり,当該あるセルの上に隣接するセルの下のハーフメモリが[0]である場合であり,当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合であって,当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合であって,当該あるセルの右に隣接するセルの左のハーフメモリが[1]のとき,当該あるセルの右に隣接するセルの左のハーフメモリが[0]となり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[1]となり,当該あるセルの左のハーフメモリが[1]となり;
(ii)この状態[1]のハーフメモリ位置が当該あるセルの下の場合であり,当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合であり,当該あるセルの上に隣接するセルの下のハーフメモリが[0]である場合であって,当該あるセルの右に隣接するセルの左のハーフメモリが[0]である場合であって,当該あるセルの左に隣接するセルの右のハーフメモリが[1]のとき,当該あるセルの左に隣接するセルの右のハーフメモリが[0]となり,かつ当該あるセルの上に隣接するセルの下のハーフメモリが[1]となり,当該あるセルの右のハーフメモリが[1]となり;
(iii)この状態[1]のハーフメモリ位置が当該あるセルの右の場合であり,当該あるセルの右に隣接するセルの左のハーフメモリが[0]である場合であり,当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合であって,当該あるセルの上に隣接するセルの下のハーフメモリが[0]である場合であって,当該あるセルの下に隣接するセルの上のハーフメモリが[1]のとき,当該あるセルの下に隣接するセルの上のハーフメモリが[0]となり,かつ当該あるセルの左に隣接するセルの右のハーフメモリが[1]となり,当該あるセルの上のハーフメモリが[1]となり;
(iv)この状態[1]のハーフメモリ位置が当該あるセルの左の場合であり,当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合であり,当該あるセルの右に隣接するセルの左のハーフメモリが[0]である場合であって,当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合であって,当該あるセルの上に隣接するセルの下のハーフメモリが[1]のとき,当該あるセルの上に隣接するセルの下のハーフメモリが[0]となり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[1]となり,当該あるセルの下のハーフメモリが[1]となり;
(v)この状態[1]のハーフメモリ位置が当該あるセルの上の場合であり,当該あるセルの上に隣接するセルの下のハーフメモリが[0]である場合であり,当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合であって,当該あるセルの右に隣接するセルの左のハーフメモリが[0]である場合であって,当該あるセルの左に隣接するセルの右のハーフメモリが[1]のとき,当該あるセルの左に隣接するセルの右のハーフメモリが[0]となり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[1]となり,当該あるセルの右のハーフメモリが[1]となり;
(vi)この状態[1]のハーフメモリ位置が当該あるセルの下の場合であり,当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合であり,当該あるセルの上に隣接するセルの下のハーフメモリが[0]である場合であって,当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合であって,当該あるセルの右に隣接するセルの左のハーフメモリが[1]のとき,当該あるセルの右に隣接するセルの左のハーフメモリが[0]となり,かつ当該あるセルの上に隣接するセルの下のハーフメモリが[1]となり,当該あるセルの左のハーフメモリが[1]となり;
(vii)この状態[1]のハーフメモリ位置が当該あるセルの右の場合であり,当該あるセルの右に隣接するセルの左のハーフメモリが[0]である場合であり,当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合であって,当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合であって,当該あるセルの上に隣接するセルの下のハーフメモリが[1]のとき,当該あるセルの上に隣接するセルの下のハーフメモリが[0]となり,かつ当該あるセルの左に隣接するセルの右のハーフメモリが[1]となり,当該あるセルの下のハーフメモリが[1]となり;そして,
(viii)この状態[1]のハーフメモリ位置が当該あるセルの左の場合であり,当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合であり,当該あるセルの右に隣接するセルの左のハーフメモリが[0]である場合であって,当該あるセルの上に隣接するセルの下のハーフメモリが[0]である場合であって,当該あるセルの下に隣接するセルの上のハーフメモリが[1]のとき,当該あるセルの下に隣接するセルの上のハーフメモリが[0]となり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[1]となり,当該あるセルの上のハーフメモリが[1]となる。
なお,上記の規則においては,特に断らない限り当該あるセルの上下左右のハーフメモリ,及び当該あるセルの上下左右に位置する隣接するセルのそれぞれ下上右左のハーフメモリは[0]であるとする。
<5> 前記セル・アレイのある態様は前記セル・アレイの各ハーフメモリが1ビットハーフメモリである上記<4>に記載のセル・アレイである。このようなセル・アレイはたとえば表2,図3から図6などで現されるセル・アレイである。
<6> 前記セル・アレイのある態様は,前記セル・アレイの各ハーフメモリが2ビット以上のハーフメモリである上記<4>に記載のセル・アレイである。このようなセル・アレイはたとえば図12から図17などで現されるセル・アレイである。
<7> 前記セル・アレイのある態様は,非同期セル・アレイである上記<1>又は上記<4>に記載のセル・アレイである。
<8> 前記セル・アレイのある態様は,上記のセル・アレイを用いた耐遅延回路(Delay-Insensitive Circuits)である。
<9> 上記<4>に記載のセル・アレイのある態様は,上記のセル・アレイを用いたフォールトトレラントなセル・アレイである。
<10> 前記セル・アレイのある利用態様は,上記のセル・アレイを用いたNAND回路である。NAND回路を用いれば,コンピュータに用いられる回路を用意に設計できる。
<11> 前記セル・アレイのある利用態様は,上記のセル・アレイを用いたコンピュータである。すなわち,上記のセル・アレイを用いることで,上記の各規則を達成する手段を具備するコンピュータを提供できる。
<12> 前記セル・アレイのある利用態様は,上記のセル・アレイをコンピュータで実現させるために,コンピュータを上記の各規則を実現する複数の手段として機能させるためのプログラムである。
<13> 前記セル・アレイのある利用態様は,上記のセル・アレイをコンピュータで実現させるためのプログラムを記憶した記録媒体である。記録媒体として,上記のプログラムを記憶したフレキシブルディスク,CD-ROM,DVD,MO,スマートメディア,又はハードディスクなどがあげられる。
<14> 前記セル・アレイのある利用態様は,上記<1>又は上記<4>に記載の2つの状態(これを{[0],又は[1]}とする。)の組(00, 01, 10, 及び 11)であるハーフメモリ対に基づく遷移規則を実現する複数のメモリを有するセル・アレイを前記セルに関連するメモリが誤り訂正機能を持つように遷移させるための方法であって,それぞれのメモリは複数のビット対を有し,前記各ビット対は前記ハーフメモリ対に対応し,[00,01,10,11], [00,01,11,10], [00,10,01,11], [00,11,01,10], [00,10,11,01], [00,11,10,01], [01,00,10,11], [01,00,11,10], [10,00,01,11], [10,00,11,01], [11,00,01,10], [11,00,10,01], [01,10,00,11],[10,01,00,11], [01,11,00,10], [10,11,00,01], [11,01,00,10], [11,10,00,01], [01,10,11,00], [01,11,10,00], [10,01,11,00], [11,01,10,00], [11,10,01,00], 及び [10,11,01,00]の24通りのうちのいずれかと一対一に対応づけるようにされ;ビット対は,前記遷移規則に従って状態遷移起こし,前記それぞれのメモリの複数のビット対のうちひとつ以上が異なるハーフメモリ対の値を示した場合(間違っている場合),それを他のビット対が示すハーフメモリ対の値と同じ値を示すように修正した後,それぞれのメモリ含まれる複数のビット対の遷移が行われる方法である。
本発明によれば、従来の非同期セル・アレイより複雑でない非同期セル・アレイを提供することができる。具体的には,耐遅延回路をシミュレートすることによって演算を効率よく行い、それによりセルの機能を表現するために6つの遷移規則しか必要とされない非同期セル・アレイを提供できる。これは、[13]の非同期セル・アレイによって必要とされる9つの遷移規則に匹敵する。遷移規則の数が大きく減少したのは、新しいタイプの耐遅延回路を使用するためである[44]。本明細書において、このセル・アレイを、セル・アレイ内の情報を表すビットの3分の1までのビット誤りを許容可能にする。これは、[43]のように各セルの状態情報を誤り訂正符号の符号語としてエンコードすることによって行い、またこの方式が繰り返し符号を使用する方式よりも優れていることを示す。さらに本発明によれば、ほぼ半分までのビットが破損した多くの誤りパターンに対するフォールトトレランスを達成する。最後に、各セル内で遷移を行う機構を小さなユニットに分割することができ、それぞれのユニットが、セルの状態情報を表すビット部分と関係なく動作することを示す。ユニットの一部の障害によって生じた誤りは、提案した方式で訂正することができる。
1.セル・アレイ
本発明のセル・アレイは,格子状に並んだセル・アレイを構成する各セルは,そのセルの上下左右にそれぞれ2つの状態(これを{[0],[1]}とする。)を持つセル・アレイであって,以下のフォーク,マージ,及びRカウンタからなる3つプリミティブによる,以下の6つ規則により信号の流れが制御されるセル・アレイである。
以下では,「2.非同期セル・アレイ」の欄において,非同期セル・アレイ・モデルについて述べる。「3.耐遅延回路」の欄において、耐遅延回路を簡単に説明する。「4.非同期セル・アレイ」の欄において,6つの遷移規則を利用する非同期セル・アレイの構造について説明し、この構造がセル・アレイ上に耐遅延NANDゲートおよび1ビット・メモリを実現できることを示す。「5.フォールトトレラントなセル・アレイ」の欄では、セル・アレイのフォールトトレラント・バージョンを示す。「6・実装」の欄では,セル内状態遷移のための機構を、独立したユニットにどのように分割できるかを示す。
2.非同期セル・アレイ
図1は,それぞれ4つのメモリ(小さい四角)にアクセス可能なセル(太い線で結ばれた大きい四角)からなるセル・アレイを示す図である。メモリは、2つのセルによって共用され、数ビットの情報を記憶する。このメモリはセルごとに分散したものをハーフメモリとする。セルは、少数の遷移規則(本明細書では6つ)によってメモリ上で作動する。
セル・アレイは、それぞれ上下左右(東西南北)に隣り合う4つのセルを有する同一セルの二次元配列である。なお,三次元のものも可能であるがこの場合に各セルは6つの隣接のセルがある。図1に示したように、セルのそれぞれの側には、数ビットのメモリが接続されている 。セルの辺にある4つのメモリは、セルと「関連付けられている」と言われる。メモリの「状態」は、メモリに記憶された値である。セル・オートマトンにおいてある組のセルと関連付けられたメモリの状態の特定の組み合せの割り当ては、「配置」と呼ばれる。セルが、「遷移」と呼ばれる操作に従って、関連付けられた4つのメモリの状態を更新されることがある。セルに生じる可能性がある遷移は、「遷移規則表」によって表される。遷移規則の左側がセルと関連付けられたメモリの状態の組み合せと一致する場合に、遷移規則がセルに適用される。
図2は,セルと関連付けられたメモリに生じる可能性がある遷移を示す遷移規則を示す図である。図2において,セルのメモリ状態が、規則の左側の状態n、e、s、wと対応する場合、セルに規則を適用することができ、その結果、右側の状態がそれぞれn'、e'、s'、w'に更新される。
図2において,規則の右側は、規則が適用された場合にメモリがどの状態に更新されるかを示す。メモリが2つのセルで共用されているので、どちらかのセルに作用する遷移によってそのメモリが更新されることがある。セル・アレイの特定の望ましい挙動は、そのメモリを固有の状態に設定し、その挙動に対応する状態に更新される遷移規則を定義することによって得ることができる。例えば、従来のコンピュータに可能なものと同じクラスの演算を行うことができるセル・アレイを設計することができる。この計算能力は計算万能性か計算汎用性ということである。
すべてのセルに同時に遷移が生じるセル・アレイは、「同期」と呼ばれる。このタイプは最も幅広く研究されている。セルの遷移が、互いに関係なく(独立的)ランダムな時間に生じるときは非同期セル・アレイが得られ、本明細書ではこのタイプを使用した。非同期セル・アレイにおいて各セルは、メモリ状態が遷移規則の左側と一致するかどうかをランダムな時間に確認し、一致する場合にはその遷移を実行する。遷移規則の左側にセルのメモリ状態の組み合せと一致するものがない場合、セルは更新されない。セルの遷移の時間が、ランダムかつ独立であるが、隣り合った2つのセルの遷移が同時に行われないという条件に従う。これにより、隣り合った2つのセルが、それらのセルの間で共用されているメモリを同時に異なる状態に更新しようとし、書き込みの衝突によりメモリが未定義状態になることがないように保証される。
非同期セル・アレイは、それぞれ2ビットのメモリを有し、このモデルはSTCA(Self-Timed Cellular Automaton)[13, 48]という名前でも知られる。このモデルの相互接続線は、「パス」と呼ばれるセルの直線的な連続領域の形をとる。パス上に信号がないとき、そのセルはすべてのメモリが状態0であり、すなわち、各メモリ内のビットはすべて0である。パス上の信号は、メモリ状態の組み合せを持つセルとして表され、セルのメモリのうち3つが状態0であり、残りのメモリが1つの1ビットと1つの0ビットを含む。
図3(a)に信号伝播の遷移規則を示す。また図3(b)にその遷移規則をセルの配置に2回適用し、そのたびに信号がセルを北の方に逐次的に移動する例を示す。この場合、メモリは2つのビットを含み、各ビットは、値1の黒いブロックと値0の白いブロックで示される。遷移規則は、1つのセルと関連付けられた4つのメモリ内の全ビットに作用する。
図3(a)に示されるように、信号の動作中に、信号の1ビットを、1つ北方向にあるセルのメモリに移動させる。遷移規則が2度適用されると、図3(b)の配置のシーケンスになり、1ビットが、セルのパスに沿って北方向に伝播する。また、これに相当する回転対称と反射対称の遷移規則が、遷移規則としてはたらくこともある。これにより、前述の遷移規則を使って、同様に南、東、西の方向にも信号を送信ができる。遷移が起こるアルゴリズムの詳しい説明は、[13]を参照されたい。
本明細書では、各セルが関連付けられたメモリに記憶された情報を遷移させるモデルを上記のとおり定義した。なお,冗長情報を記憶するビットをメモリに追加することによって、メモリに誤り訂正機能をもたせることができる。
(3.耐遅延回路)
「耐遅延回路」とは、動作の正確さが回路素子と相互接続線における信号の遅延の影響を受けない回路のことである。耐遅延回路の動作は、信号によって駆動される。各回路素子は、適切な1組の入力信号を受け取るまで非活動状態であり、その後信号を処理、出力し、再び非活動状態になる。耐遅延回路は、クロックを必要とせず、大きいクラスの非同期回路に属し、同期回路よりも優れたいくつかの長所を持。ナノテクノロジー実装の分野においては、次のような利点が重要である。
1.クロック信号の分配が不要である。これは、回路面積の節約になるだけでなく、システムの均質性を高めることにもなり、分子自己組織化を利用して製造するためには重要な課題である。さらに、信号が1クロック・サイクル内でその宛先に到達できない等の、多くのタイミング問題が解消される。
2.信号が存在する回路部分だけが活動状態であればよいため、エネルギー消費と発熱が減少する。
3.特に耐遅延回路の場合には、物理的条件または実装のばらつきによって生じる信号のタイミングの変化は、非同期回路の正確な動作に影響を及ぼさない。
4.特にタイミングと関連して、非同期回路を、他のモジュールを考慮することなく設計されたモジュールに分割することができる。モジュール性は回路の構成可能性を高める。
以上の利点は、集積密度が高いほど強く感じられるが、CMOS等のいくつかの技術ではこの利点を活用することが難しく、電源消費、配線要件および速度の点で実際には性能が悪化する。分子エレクトロニクスやRSFQ超伝導技術等の代替技術には、そのような問題はさらに少ない可能性がある。ナノテクノロジーの分野における非同期回路の広範囲の考察については、[Ferdinand Peper, Jia Lee, Susumu Adachi, and Shinro Mashiko, “Laying out circuits on asynchronous cellular arrays : a step towards feasible nanocomputers?,” Nanotechnology, vol. 14, pp. 469・485, 2003.]を参照されたい。
耐遅延回路は、有限数の入力線と出力線、および有限数の状態を有する素子であるモジュールで構成される。モジュールは、入力線からある信号を受け取ると動作を開始し、その結果、状態を更新され、出力線にある信号を出力することができる。モジュールは、より単純なモジュールの回路網から構成することができ、耐遅延コンピュータと同じくらい複雑な場合がある。モジュールは、ある状態のセルの配置によってセル・アレイで実現され、セルのパスによって互いに接続される。
信号は、図3に示した方法にしたがって、パスの一端(ソース)から他端(宛先)まで伝播する。信号は、いったんソースから送り出されると撤回することはできず、その宛先に向かう。それぞれのパス上に複数の信号があってもよいが、信号は、有限の時間長だけ互いを遅らせる場合以外は、パス上で互いに干渉しない。
信号は、その宛先モジュールに達すると取り込まれて、モジュールが動作し始める。その結果、通常は1つまたは複数のパスに信号が出力される。但し、モジュールは動作上必要な場合、他の入力信号が他のパスから到着するのを待たなければならないことがある。この場合、入力信号は「保留状態」(Pending)と呼ばれる。モジュールが異なる入力パスから2つの入力信号を提供され、一度に1つしか処理できない場合は、どの信号を最初に処理すべきかを任意に決めることができる。この場合、これは入力信号間を「アービトレーションする」と言われる。パスによる信号の送信およびモジュールによるその信号の処理には、有限の時間遅延が生じることがあり、これがあっても回路は正確に動作する。耐遅延回路が動作する条件の系統的な説明は、[R.M. Keller, “Towards a theory of universal speed-independent modules,” IEEE Trans. Comput., vol. C-23, pp. 21・33, 1974.]に見ることができる。
ANDゲートとNOTゲートだけを使って構成することができる同期システム内のブール回路と同じように、限られた1組のプリミティブ・モジュールまたはプリミティブから耐遅延回路を構成することができる。そのような組は「汎用(universal)」と呼ばれ、従来のコンピュータで可能な演算と同じクラスの演算を行う回路の設計に使用することができる。耐遅延回路のための1組の汎用プリミティブは、[R.M. Keller, “Towards a theory of universal speed-independent modules,” IEEE Trans. Comput., vol. C-23, pp. 21・33, 1974, J.C. Ebergen, “A formal approach to designing delay-insensitive circuits,” Distrib. Comput., vol. 5, pp. 107・119, 1991, 又はP. Patra, Approaches to the design of circuits for low-power computation, Ph.D. thesis, University of Texas at Austin, 1995]に記載の方法と同じように、汎用的な論理機能とタイミング機能の両方を実現し、後者はクロックの欠如を補わなければならない。セル・アレイ上に実現するには、プリミティブの入力パスまたは出力パスが少ないことが有利であるが、それぞれのセルは入力と出力が行われる可能性がある隣のセルの数が制限されているので、セル・アレイが二次元の場合には制限が強くなると考えられる。[J. Lee, F. Peper, S. Adachi, and S. Mashiko, “Universal delay-insensitive circuits with bi-directional and buffering lines,” IEEE Transactions on Computers, Vol. 53, No. 8, pp. 1034-1046, 2004] の汎用プリミティブの組は、信号の入力または出力用にそれぞれのプリミティブ・モジュールによる3つのパスだけを必要とする。この組の重要な点は、すべての信号が同じ方向に移動する場合に、双方向かつ同時に複数の信号を通すことができるパスを使用することである。しかしながら、構成するプリミティブの数が多い(5つ)ので、非同期セル・アレイ上のこの組の実現は、遷移規則を9つも必要とする[13]。本明細書では、好ましくは[44]において提案された耐遅延プリミティブの代替の組を使用する。この組は、パスの双方向性を必要とせずに移動させることができるが、複数の信号を同時に通すことができるパスを保持する。プリミティブによって必要とされる信号の入力または出力のためのパスの最大値は3から4に増えるが、組は3つのプリミティブだけを含む。この結果、本発明の非同期セル・オートマトンを実現するために必要な遷移規則は、後述のとおり6つだけである。
(4.非同期セル・アレイ)
表1のプリミティブ・モジュールの組を使って、例えば,[J. Lee, F. Peper, S. Adachi, and S. Mashiko, Universal delay-insensitive circuits with buffering lines,” IEEE Transactions on Computers, Vol. 53, No. 8, pp. 1034-1046, 2004] に示したような任意の耐遅延回路を構成することができる。
Figure 0004712328
信号は,パスを伝播している信号である。同一パス上の他の信号は、信号を遅らせることがあるが、変化させることはない。
フォーク・プリミティブ(Fork primitive)は、一般に耐遅延回路に使用されるファン・アウト要素である[51, 54]。これは、各出力パスに、入力パスから受け取った各信号に対し1つずつの信号を生成する。フォークは,1つの入力パスと2つの出力パスのあるモジュールである。入力パスから信号を取り込むと、2つの出力パスのそれぞれに信号を1つずつ生成する。
マージ・プリミティブは、入力信号の2つのストリームを出力信号の1つのストリームに組み合せる。これは、従来のマージ・プリミティブが相互の排他的入力を必要とするのに対し、入力パスへの同時の信号を可能にしたという点が、これまで提案されているものと異なる。本発明のマージは、処理の準備ができるまで他の入力パスの入力信号を保留したまま最初に1つの信号を出力パスに送り、その後で他の入力を出力パスに送ることによって、パスの同時入力を処理する。マージは,2つの入力パスと1つの出力パスのあるモジュールである。入力パスから到着した信号が、出力パスに送られる。同時の入力信号が許容され、2つの連続した出力信号を生じさせる。このマージ・モジュールの詳細と背景については、[Ferdinand Peper, Jia Lee, Susumu Adachi, and Shinro Mashiko, “Laying out circuits on asynchronous cellular arrays : a step towards feasible nanocomputers?,” Nanotechnology, vol. 14, pp. 469・485, 2003.]で既に触れているので、そちらを参照されたい。
リセッタブル・モジューロ2カウンタ(R-カウンタ)プリミティブは、2つの通常の入力パスが単一の入力パスaに融合されたリセッタブル・ジョイン・モジュール(Resettable Join Module)である[55]。リセッタブル・モジューロ2カウンタ(Rカウンタ)は,2つの入力パスaおよびrならびに2つの出力パスbおよびkのあるモジュールである。パスaの2つの連続した入力信号によって、パスbに1つの出力信号が生じる。パスaの1つの入力信号とパスrの1つの入力信号によって、パスkに1つの出力信号が生じる。パスaへの2つの入力とパスrへの1つの入力がある場合は、前述の2つの可能性のうちの1つが、任意に選択される。パスaまたはrに1つの入力だけがある場合は、別の信号がパスaに入力されるまで出力は現れない。この入力パスからの2つの連続した入力信号によって、出力パスbに1つの出力信号が生じる。リセット入力パスr上の入力信号により、入力パスaからの1つの信号が、リセット出力パスkに送られる。Rカウンタは、従来のリセッタブル・ジョイン・モジュールと違って、相反する入力信号が発生した場合のアービトレーションを可能にする。アービトレーションは、共用リソースへの排他的アクセスを、いくつかの競合する並列プロセスの1つに割り当てる機能である。この機能は、シーケンサ、すなわち2つの入力信号をアービトレーションすることができる装置を作成するのに役立つ。Rカウンタは、別々のプリミティブを使用しなければならない多くの機能を組み合せる。
耐遅延回路は、表1の右列のセル構成を使って左列の対応するプリミティブを表し、プリミティブの入力と出力が適切に並ぶようにセルのパスで互いを接続することによって、非同期セル・アレイ上に実現することができる。セル配置は、表2に定義した6つの遷移規則の組を使ってプリミティブと同じように挙動するように作成される。表1の右列の配置が入力信号によって提供されたときだけ遷移が生じる。これは、そうでない場合には遷移規則の左列が対応しないためである。したがって、配置は入力信号がない状態で安定する。
Figure 0004712328
フォーク・プリミティブは、セルと関連付けられた1つのメモリが2つのビット値1を含み、残りの3つのメモリが0の配置で表され、図4のように入力パス上の信号を表2の規則2に従って処理して、2つの出力パスのそれぞれに出力信号を1つずつ生成する。
図4は,フォークがその入力パスに1つの信号を受け取り、後で2つの出力パスのそれぞれに信号を1つずつ生成する配置のシーケンスを示す図である。入力信号のない初期配置は(Initial)、そのようにラベルで示される。遷移規則が使用されるたびに、対応する矢印の上に表2の数字が現れている。
図5(A)は,マージが、1つの入力パスの1つの信号を受け取る配置のシーケンスを示す図である。図5(B)は,入力パスに同時にある2つの信号受け取る配置のシーケンスを示す図である。信号はすべて出力パスに転送される。マージ・プリミティブは、フォークと同じ配置で表されるが、隣から入力信号が到着した場合に、1つの信号なら図5(a)のように表2の規則3に従って処理し、2つの同時の信号なら図5(b)のように規則4に従って処理する。また、このプリミティブは、信号の右折と左折にも使用することができる。
図6は,様々なシーケンスの入力信号を受け取るRカウンタの配置を示す図である。図6(a)は,入力パスaから2つの連続した信号を受け取るRカウンタの配置を示す図である。最初の信号を受け取ると、モジュールは、固有の状態(配置III)になるが、信号を出力しない。次の信号を受け取ると、モジュールは、元の状態に戻るプロセスにおいて、その出力パスbに1つの信号を生成する。図6(b)は,モジュールが、入力パスrおよびaのそれぞれから1つずつの信号を受け取った場合のRカウンタの配置を示す図である。この場合、出力パスkに1つの信号を生成する。パスrからの信号が配置に最初に到着した場合でも、パスaからの信号が到着するまで保留される。Rカウンタ・プリミティブは、3つのセルのうち2つのセルだけに遷移が生じることがあり、残りの1つのセルは配置を一致させるためだけに使用される配置によって表される。入力信号がパスaから到着した場合、配置は、図6(a)の第3の配置と同じように、規則5に従った固有の状態になる。さらにもう1つの入力信号がパスaから到着した場合、図6(a)の後半のように、配置が元の状態に戻り、規則6によりパスbに出力信号が生成される。入力信号がパスrから到着した場合は、図6(b)のように、信号がパスaから到着するまで保留されたままになる。パスaの信号は、配置を再び規則5による固有の状態にし、その後でパスrからの信号が配置に入り、パスkに出力信号が生成され、配置は規則2によりその初期状態に戻る。パスaおよびrの信号が到着する順序が違う場合も、基本的に同じことが起こる。
図7(a)は,衝突のない交差信号の耐遅延回路図である。一方、図7(b)は,非同期セル・アレイ上の実現を示す図である。図において,セル・アレイ内の矢印は、信号がプリミティブ間で移動するパスまたは信号が出入りするパスを示す。回路は、2つの入力パスからの信号の到着を示す2つのRカウンタを含む。ループ内を動き回る信号(回路図に黒い点で表した)は、Rカウンタを交互にスキャンし、Rカウンタが入力信号の到着を示す状態の場合に、対応するパスに出力信号を生成する。
二次元のセル・アレイ上にレイアウトされたほとんどの回路には、互いに交差するパスがあるため、信号を交差させる配置が必要である。2つのパスの交点にあるセルは共用リソースであり、したがってこのリソースをパス上の信号に特定の順序で割り当てるためにアービトレーションが必要である。このタスクのために、[Ferdinand Peper, Jia Lee, Susumu Adachi, and Shinro Mashiko, “Laying out circuits on asynchronous cellular arrays : a step towards feasible nanocomputers?,” Nanotechnology, vol. 14, pp. 469・485, 2003.]などと同じ手法に従って、交差シーケンサ(crossing sequencer)と呼ばれる回路を構成する(図7(a)を参照)。この設計では、信号が絶えず動き回って(使用中待機;Busy Waiting)互いに交差したい信号があるかどうかを確認する。この回路には、ほぼ同時に両方の入力パスに到着した信号が同じ確率で通過できることを保証できないという点で、公平なアービトレーションはない。もっと正確に言えば、両方の入力パスに待っている入力信号がいくつもある場合は、一方の入力パスからの信号を最初に処理し、その後で他方の入力パスからの信号を処理する傾向があるが、実際にはそのように混雑した交点はあまりないため、この欠点は問題ではない。この回路よりさらに効率が高く複雑なタイプで、入力信号がない状態で信号を動き回らせる必要がなく、公平なアービトレーションが可能なものを、イわゆるシーケンサの設計により得ることができる。図7(b)に、非同期セル・アレイ上の回路の実現を示す。交差シーケンサの設計を使って、非同期セル・アレイ上に任意の耐遅延回路をレイアウトすることができる。実際には、回路実装のほとんどの交差は、信号が交差する順序に関して入手可能な情報により、交差シーケンサを使用せずに行うことができる。しかしながらそのような情報を回路設計から推定できない場合は、信号を交差させる唯一の手段は交差シーケンサである。
図8は、TRIA[53]と呼ばれる耐遅延モジュールの非同期セル・アレイ上の回路設計とその実現を示す図である。図8(a)は,TRIAモジュールの耐遅延回路図とを示す図である。図8(b)は非同期セル・アレイ上のその実装を示す図である。TRIAが、2つのパス と のそれぞれから入力信号を受け取ると、線O6-i-jに信号を出力する。回路はパスの交差が衝突しないように非同期セル・アレイ上にレイアウトされ、したがって図7の交差シーケンサは不要である。TRIAモジュールは,3つの入力線と3つの出力線があり、それぞれの出力線が、一意の入力線の対に対応する。TRIAが1つの入力線に1つの入力信号を受け取った場合、別の入力線に第2の入力信号が到着するまでその信号は保留される。第2の入力信号が到着すると、これに応じて対応する出力線に信号を出力する。TRIAモジュールは、耐遅延回路の設計にきわめて有効であり、例として図9に耐遅延NANDゲートと耐遅延1ビット・メモリの設計を示す。
図9(a)は、デュアル・レール・エンコードされた耐遅延NANDゲートの回路図である。線a0およびa1は、従来のNANDゲートの一方の入力線に対応し、線b0およびb1は他方の入力線に対応し、線c0およびc1は、出力線に対応する。組[a0, b0]、[a0, b1]または[a1, b0]の中の1組の2つの各線に信号が入力された場合、信号はc1に出力される。信号が線a1およびb1のそれぞれに入力された場合、信号はc0に出力される。入力信号が1つしかない場合は保留され、ゲートは第2の入力信号が到着するのを待ってから出力信号を生成する。入力信号の他の組み合せは認められない。図9(b)は,デュアル・レール・エンコード1ビット・メモリの耐遅延回路図である。メモリの状態は、2つのTRIAモジュールへの左入力線または右入力線上の2つの保留信号(回路図に黒い点で示した)によって記憶される。左入力線に保留されている信号は、状態0を示し(初期状態)、右入力線上の信号は、状態1を示す。メモリへの0ビットまたは1ビットの書き込みは、それぞれ入力線W0とW1の一方に信号を送ることによって行われる。これにより、メモリ状態を記憶する2つの保留信号が削除され、その後で新しい内容がメモリに書き込まれ、それぞれA0またはA1上に書き込み通知の出力信号が生成される。線Rに信号を送ることによってメモリが読み出され、メモリの状態によって線R0あるいはR1のいずれかに信号が生成される。
一般に同期回路に使用されるNANDゲートには、入力信号が遅れた場合でも論理NAND演算を行う耐遅延回路がある。耐遅延回路で2進信号を表す場合は、通常、0と示された線と1と示された線の2つの線が使用される。デュアル・レール・エンコーディングと呼ばれるこの方法は、0を番号0の線上の信号で、1を番号1の線上の信号でエンコードする。信号が同時に両方の線上にあることはできず、どちらかの線上にも信号がないことは、情報が送られていないことを示す。入力と出力にデュアル・レール・エンコーディングを使用することによって、NANDゲートは、4つの入力線(1つの入力信号をエンコードするa0とa1および他の入力信号をエンコードするb0とb1)と、c0とc1によってエンコードされる2つの出力線とを必要とする。耐遅延NANDゲートの設計を図9(a)に示す。スペースの都合でセル・アレイ上のこの回路のレイアウトは示さないが、配置は、マージ、フォークおよびTRIAの配置から容易に設計することができる。すべての線交差が衝突しないように設計されるため、回路を非同期セル・アレイ上にレイアウトすることができ、したがって図7の交差シーケンサが不要になる。
図9(b)に、マージ、フォークおよびTRIAに関して表した耐遅延1ビット・メモリを示す。この場合も、デュアル・レール・エンコーディングを使用している。メモリに値0または1を書き込む場合は、信号がそれぞれ線W0またはW1に入力され、その後線A0からA1に書き込み通知信号が出る。メモリの内容を読み出すとき、信号は線Rに入力され、その後メモリの内容によって線R0あるいはR1から信号が出る。セル・アレイ上にこの設計を実現するために交差シーケンサは不要である。
耐遅延1ビット・メモリから、カウンタやforループ等の高次構造を構成することができる([13]を参照)。耐遅延NANDゲートは、ブール演算式を評価するために使用することができる。しかしながら効率的な理由で、従来のNANDゲートと同じように耐遅延NANDゲートを利用して論理回路を作成することは推奨しない。例えば耐遅延1ビット・メモリを、耐遅延NANDゲート、フォークおよびマージ・モジュールから構成することができるが、設計は図9(b)の設計よりもかなり複雑になる。
(5.フォールトトレラントなセル・アレイ)
これまで説明したセル・アレイは、フォールトトレラントではなく、したがって、例えばノイズによる遷移の誤りやメモリ・ビットの反転によってセルが誤動作した場合は回復が不可能であり、セル・アレイは、設計通りに動作しなくなる。本発明では,誤り訂正エンコード理論による手法を利用してセル・アレイにフォールトトレランス機能をもたせる。
誤り訂正符号の構成は、情報が伝送の際にノイズによって生じる誤りの影響等を受けにくくなるように、情報の冗長性を高めることを利用する。これを行う標準的な方法は、ブロックのメッセージ・シンボルをそれぞれエンコードする1組の符号語を定義することによるものであり、その結果、符号語のある数までのビットが破損した場合に、そのビットを復元することができる。1組の符号語は、「コード」と呼ばれる。コードが誤りを許容できる程度は、コードの特性によって決まる。コードの3つの重要な特性は、ビットで表される語長n、符号語の数m、および2つの符号語間の最小距離dすなわち2つの符号語が異なるビットの最小数である。コードは通常、3つの要素(n, m, d)として表される。コードの最小距離がdの場合は、最大[(d-1)/2]個の誤りを訂正することができる。dが偶数の場合は、さらにd/2個の誤りを検出することができる。nの値が一定の場合に効率のよい誤り訂正符号を設計するためには、dとmの値ができるだけ大きくなければならないが、距離が大きいほど符号語が少なくなる傾向(またその反対の傾向)があるという相反する要件がある。コードのもう1つの重要な特性は、符号語の重みの分布である。符号語の重みは、含まれる0ではないビットの数である。
本明細書で主に検討する線形符号は、任意の2つの符号語のビット単位の加算、すなわち2進コードの場合は2を法としたビットの加算により、符号語が再び生成される特性を持つ特定のクラスのコードである。全ゼロ符号語は、線形符号自体から符号語を引くことによって得ることができるため、線形符号に必ず含まれる。線形符号の最小距離は、線形符号の加法的な特性のため、非ゼロ符号語の最小重みと等しい。
論文[T. Isokawa, F. Abo, F. Peper, S. Adachi, J. Lee, N. Matsui, and S. Mashiko, “Fault-tolerant nanocomputers based on asynchronous cellular automata,” International Journal of Modern Physics C, in print, 2004.]においては、セルと関連付けられたすべてのメモリの全ビットを使って、それを3進法に基づく誤り訂正符号の符号語としてエンコードすることによって、非同期セル・アレイをフォールトトレラントにしている。この構成を利用して、各メモリにおいて最大1つの誤りを訂正し(かつ2つの誤りを検出し)、(原理的には)各セルにおいて、関連付けられたメモリの状態の正しくない組み合せを検出することができる。この手法の欠点は、符号語がプリミティブと信号を表すセル配置をエンコードするためのコードを見つけにくいことである。[T. Isokawa, F. Abo, F. Peper, S. Adachi, J. Lee, N. Matsui, and S. Mashiko, “Fault-tolerant nanocomputers based on asynchronous cellular automata,” International Journal of Modern Physics C, in print, 2004.]では、この問題は、配置を適切なコードと一致するように調整することによって解決される。しかしながら、[T. Isokawa, F. Abo, F. Peper, S. Adachi, J. Lee, N. Matsui, and S. Mashiko, “Fault-tolerant nanocomputers based on asynchronous cellular automata,” International Journal of Modern Physics C, in print, 2004.]のセル・アレイは、本明細書のものより単純であり、そのためセル・アレイ上に配置され回路内を1度に1つの信号しか動き回ることができない。本明細書のようにセル・アレイの配置の組数が多くなると、この手法は効力がなくなる。[T. Isokawa, F. Abo, F. Peper, S. Adachi, J. Lee, N. Matsui, and S. Mashiko, “Fault-tolerant nanocomputers based on asynchronous cellular automata,” International Journal of Modern Physics C, in print, 2004.]の手法のもう1つの欠点は、誤りの訂正が複雑で、セル内に複雑な回路が必要になることである。この問題は[T. Isokawa, F. Abo, F. Peper, S. Adachi, J. Lee, N. Matsui, and S. Mashiko, “Fault-tolerant nanocomputers based on asynchronous cellular automata,” International Journal of Modern Physics C, in print, 2004.]において、誤り訂正の際にセルと関連付けられたメモリをすべて一緒に扱うのではなく、各メモリの誤りを個々に訂正することによって解決されている。このため、個々のメモリと関連したサブコードを検討するだけでよく、これは実質的な単純化であるが、その代りセルと関連したメモリの状態の正しくない組み合せを訂正、検出することができない。本明細書では、この手法を拡張して、メモリ内の1つの誤りだけでなく複数の誤りを訂正できるようにする。以下では,まず、最大1つのビット誤りを訂正できるメモリから始め、次に複数の誤りの一般的な事例をとりあげる。また、繰り返し符号を利用する変形例について考察し、その例を提案されたコードと比較する。
誤り訂正符号によってエンコードされるメッセージは、セルの1つのメモリの起こり得るすべての状態である。それぞれのメモリが2つのビットを含むため、00、01、10、11の4つの可能なメモリ状態がある。これは、4つの符号語になり、したがってm=4である。これらのメッセージをエンコードするためには、それぞれのメモリの誤り訂正能力、すなわちメモリ内の回復させることができる破損ビットの最大数を決定する必要がある。1つの誤りを訂正することができるコードは、最小距離がd=3でなければならない。語の数がm=4の場合、2進コードの語長nの下限をプロツキン(Plotkin)の上界から推測することができ([F. J. MacWilliams and N. J. Sloane, The Theory of Error-Correcting Codes, NorthHolland, 1978.]等を参照)、したがって、n<2dの場合、2進コードに関して次の式が成り立つはずである。
Figure 0004712328
この上限は、パラメータ値がm=4、d=3、n=4の場合には守られないが、n=5に増加すると守られ、したがって、1つのビット誤りを訂正することができる語長として、少なくとも5つのビットが必要になる。実際には、コードをこれらのパラメータで構成することができ、すなわち、コードは、符号語00000、11100、00111および11011からなる。メモリに関して、これらの符号語は、図10のように表される。図10は,(5, 4, 3)コードの図形表記を表す図である。上の行は符号語を含み、下の行は元のメッセージを含む。黒いブロックは値1のビットをエンコードし、白いブロックは値0のビットをエンコードする。このコードにより、任意の1つのビット誤りの訂正が可能である。これらのいずれかの符号語の任意の1ビットを反転させると、元の符号語まで距離が1で、他のそれぞれの符号語までの距離が少なくとも2が得られることが分かる。すなわち、1つのビットが破損した場合でも、元の符号語が何であるかを一義的に決定することができる。
上記のコードは、複数の誤りを訂正する,異なる長さを有するコードに一般化することができる。このため,以下では、大きい最小距離を有するコードが、各ビットの符号語に値0と1が均一に分散されたビットを有する傾向があることに注目する。これにより、各ビットは、2つの符号語では0に、他の2つの符号語では1になる。符号語のうちの1つが全ゼロ符号語であると仮定すると、4つの語を有するコードに関して、図11の方式が得られる。図11は,4つの符号語を有するコードの体系を示す図である。このうちの1つの符号語がすべて0のビットを含む。各ビット位置(列)は、2つの0ビットと2つの1ビットを含む。ビットは、3つの異なるグループa、b、cで分割され、それにより、4つの語に見られるようなグループ内のビット・パターンは同じである。
図11のグループa、b、cのビット数をそれぞれna、nb、ncとすると、n=na+nb+ncである。この方式から、例えば第1と第2の符号語の間の距離がna+nbであると推定される。コードの最小距離dは、対になったすべての符号語の距離の最小値であり、したがって、d=min(na+nb, nb+nc, na+nb)=min(n−na, n−nb, n−nc)である。したがって、dを最大にするためには、naとnbとncの差ができるだけ小さくなければならない。次に、nが3で割り切れるケース、3で割ったときに1余るケース、3で割ったときに2余るケースの3つのケースを検討する。
ケース1:pがある数の場合にn=3pのケース。na=nb=nc=pの場合に距離が最大になる。このケースではd=2pであり、これは、1つの語で最大p−1個の誤りを訂正しp個の誤りを検出できることを意味する。
ケース2:pがある数の場合にn=3p+1のケース。距離は、2つのグループが長さpで1つのグループが長さp+1の場合に最大、したがってna=nc=pとnb=p+1を仮定する。このケースでは、d = n ― ( p + 1 ) = 2 pであり、これは、1つの語で最大p−1個の誤りを訂正しp個の誤りを検出できることを意味する。
ケース3:pがある数の場合にn=3p+2のケース。距離は、2つのグループが長さp+1で1つのグループが長さpの場合に最大、したがってna=nc=p+1とnb=pを仮定する。このケースでは、d = n − ( p+1 ) = 2p+1であり、これは、1つの語で最大p個の誤りを訂正できることを意味する。
pに関するnとdの値を式(1)または(2)[0078]を参照]に代入することによって、m≦4であり、さらにdが有効なそれぞれの所定のnに関して最も大きい値であることが容易に推定され、これは、前述のコードが、プロトキンの上界に関して最適であることを意味する。このコードを使って、メモリのビットの最大約3分の1までを訂正することができる。
例として、n=14、d=9およびm=4を有するコードが、符号語00000000000000、11111111100000、00000111111111および11111000011111を有すると推定する。符号語のビットを並べ換えると、図12の方式となる。図12は,(14, 4, 9)コードの図形表記を示す図である。上の行は符号語を含み、下の行は元のメッセージを含む。黒いブロックは値1のビットをエンコードし、白いブロックは値0のビットをエンコードする。符号語のビットは、図形表現を分かりやすくするために入れ替えられている。このコードにより、最大4つの任意のビット誤りの訂正が可能である。このコードは、14ビットのメモリ内の最大4つの任意の誤りを訂正することができる。これよりも多くの誤りを訂正できる結果は後述する(5.1.距離比較法の欄を参照)。
このコードを、図13のようないわゆる繰り返し符号、すなわちそれぞれのメッセージが繰り返されるコードと比較する。図13は,(14, 4, 7)繰り返し符号の図形表記を示す図である。上の行は符号語を示し、下の行は元のメッセージを示す。黒いブロックは値1のビットをエンコードし、白いブロックは値0のビットをエンコードする。このコードにより、最大3つの任意のビット誤りの訂正が可能である。このコードが最小距離d=7であり、最大3つの任意の誤りを訂正できることが容易に分かる。訂正は、メッセージに対応するすべてのビット対をビット対の大多数が持つ値に設定する多数決によって行うことができる。これで最悪の場合に、最大3つの誤りを訂正することができる。より一般的に、ある奇数rの場合にn=2rのメモリでは、(r−1)/2個の任意の誤りを訂正することができる。さらによい結果を得ることも可能であるが、これについては,後に説明する(5.2.多数決の欄を参照)。
これらの方式によって誤りはどのように訂正されるかを以下に説明する。重要な要件は、セルとメモリを単純に維持するために、補正アルゴリズムが直接的でなければならないことである。図11の方式と、図10の(5, 4, 3)コードで始まる繰り返し符号化方式の場合に、誤りを訂正するいくつかの方法を提供する。線形のコードの誤りを訂正する最も一般的な方法は、すべてのコードがそうであるように、そのシンドロームS([F. J. MacWilliams and N. J. Sloane, The Theory of Error-Correcting Codes, NorthHolland, 1978.]等を参照)を計算し、その答えから誤りのビット位置を推定することによるものである。これには、コードのパリティ・チェック行列Hが必要である。(5, 4, 3)コードの場合、これは、次の通りである。
Figure 0004712328
x=(x1x2x3x4x5)を、訂正を必要とする可能性がある5ビット語にする。この場合、シンドロームは、次のように計算される。
Figure 0004712328
Sが全ゼロ・ベクトルの場合は、誤りは検出されない。1つのビット誤りしかない場合、誤りの位置はSの値で示され、シンドロームをパリティ・チェック行列の行と比較することによってその誤りを訂正することができる。表3は、起こり得る誤り、それに対応するシンドローム、およびその誤りを訂正する手順を示すリストである。
Figure 0004712328
前述の方式は比較的簡単であるが、シンドロームによる誤りの訂正は、距離が大きいコードほど複雑になり、その結果、セルとメモリが複雑になりすぎる場合がある。(14, 4, 9)コードの場合、4つの符号語が記憶されたテーブルを使用する別の誤り訂正方法を示す。訂正しなければならない可能性のある語がメモリ内にある場合、この方法は、表のエントリまでの距離を計算し、最も適当なものとして、最も距離の小さい符号語を選択する。この方法は、本明細書では「距離比較」(Distance Comparison)と呼ばれ、符号語数が少ないために複雑さが制限され、多くの場合は5つ、場合によっては6つの誤りを訂正することもできるという特別な利点が得られる。例えば、すべてゼロの語00000000000000の最初の3つのビット、6番目のビット、10番目のビットに誤りがあると、11100100010000になり、この語は、全ゼロ符号語まで距離は5であるが、符号語11111111100000、00000111111111、11111000011111までの距離はそれぞれ6、10、7である。コードの線形性により、他の符号語において誤りの類似の例を構成することができる。
また、いくつかの6ビット誤りが復元可能である。例えば、全ゼロ語のビット1、2、6、7、10、11に誤りがある場合は、11000110011000となる。この語は、全ゼロ符号語までの距離が6、およびそれぞれ符号語11111111100000、00000111111111、11111000011111までの距離が7、7、8である。
距離比較法によって解決することができる5つおよび6つの誤りがあるケースの詳しい分析を、後述する(5.1.距離比較法の欄)。距離比較を使用すると、5つのビットで誤りがあるケースの約75%と、6つのビットで誤りがあるケースの約20%を解決できることが分かる。
次に、(14, 4, 7)繰り返し符号の多数決による誤りの訂正を検討する。コード内の語は、7対のビットで表され、それぞれの対は元のメッセージの複製である(図13を参照)。ビットの誤りの訂正は、ビット対の間の4つのメッセージ00、01、10、11のそれぞれの出現をカウントし、最も大きいカウントのビット対によってすべてのビットを設定することによって行われる。3つの誤りは、生じても必ず訂正することができる。これは残りの4つのビット対(多数派)が破損していないためである。しかしながら、誤りによっては、さらに優れた動作が可能なことがある。例えば、3つのビット対のビットがすべて破損した場合は、ビット誤りが全部で6つになり、元のメッセージを伝えるビット対が多数派になり、すべての誤りの訂正が可能になる。
多数決で解決することができる4つ、5つ、6つの誤りがあるケースの詳しい分析を、後述する(5.2.「多数決」参照)。これによれば、4つのビット誤りのあるケースの約65%、5つのビット誤りがあるケースの約52%、6つのビット誤りのあるケースの約29%を解決することができる。
(14, 4, 9)コードと(14, 4, 7)コードの方式は両方とも、7つ以上の誤りを訂正することはできないが、これらの方式を使ってその誤りを検出することはできる。これらの方式でいくつの誤りを検出できるかの分析は、上述と同じように行われる。本発明の状況では誤り検出の有用性がほとんどないので詳しくは説明しないが、この場合だけはメモリの誤りが復元不可能になり、再依頼、すなわち通信で行われる方法で誤りを復元することは困難である。最終的に、nの異なる値を有するコードを同じように処理することができる。
5.1.距離比較法
(14, 4, 9)コードによる5つまたは6つの誤りの訂正
(14, 4, 9)コードは、距離d=9だけを考えた場合に最大4つまでの誤りしか訂正できない場合でも、ケースによって5つまたは6つの誤りを訂正できることがある。重要なことは、距離比較訂正方法を適用することである。解決可能なケースの割合は、以下で得られる。
語に5つのビット誤りがある場合は、以下のケースの距離比較によってその誤りを訂正することができる。図11の方式では、一方のグループに3つの誤りがあり、他の2グループのそれぞれに1つずつの誤りがある。1つのグループから3つのビットを、他の各グループから1つずつのビットを選択する場合の数は、
C(5, 3)C(4, 1)C(5, 1)+C(5, 1)C(4, 3)C(5, 1)+
C(5, 1)C(4, 1)C(5, 3) = 500
ここで、C(n,k)=n!/{(n-k)!・k!} は、1組n個の異なるオブジェクトからk個の無秩序のオブジェクトを選択する数である。
2グループのそれぞれに2つずつの誤りと、残りのグループに1つの誤りがある。2グループから2つずつのビット、1つのグループから1つのビットを選択する場合の数は、次の通りである。
C(5, 2)C(4, 2)C(5, 1)+C(5, 2)C(4, 1)C(5, 2)+C(5, 1)C(4, 2)C(5, 2)= 1000.
距離比較を使用する場合に14のビットに分散した5つの誤りを復元できる他の方法はない。14のビットから5つのビットを選択する場合の総数がC(14, 5)=2002であるので、5つの誤りのあるビットを含む2002の場合のうち500+1000=1500が、この方式で復元できることがあり、この割合は約74.9%である。
1つの語に6つのビット誤りがある場合は、次のケースにおいて距離比較によってその誤りを訂正することができる。図11の3つの各グループに2つずつの誤りがある。各グループから2つのビットを選択する場合の数は、次の通りである。C(5, 2)C(4, 2)C(5, 2)= 600.
14のビットから6つのビットを選択する場合の総数がC(14, 6)= 3003であるので、本発明では、6つの誤りのあるビットを含む3003のうち600の場合が、この方式で復元できると判断する。この割合は約19.9%である。
5.2.多数決
(14, 4, 7)コードによる4つ、5つまたは6つの誤りの訂正
(14, 4, 7)コードは、距離d=7だけを考えた場合に最大3つまでの誤りしか訂正できない場合でも、ケースによって4つ、5つまたは6つの誤りを訂正できることがある。ビット対の中では、どのパターンが多数派であるかを決めるに重要なことは、多数決訂正方法を適用することである。解決可能なケースの割合は、以下で得られる。語に4つのビット誤りがある場合は、以下のケースの誤りを訂正することができる。
2つのビット対の全てのビットの誤りがある。2つのビット対から全てのビットを選択する場合の数は、C(7, 2)= 21
1つのビット対の全てのビットの誤りと、2つのビット対のそれぞれに1つずつの誤るビットがある。このようのビットを選択する場合の数は、次の通りである。
C(7, 1)C(6, 2)22 = 420.
これにより、因子22は2つのビット対からそれぞれの1つのビットを選択する数である。
4つのビット対における各ビット対は1つのビットに誤り、元のメッセージは多数派は失わない、すなわち、2つのビット対は1つの位置にビットの誤り、2つのビット対は他の位置にビットの誤りがある。このようのビットを選択する場合の数は、次の通りである。
C(7, 4)C(4, 2)C(2, 2)= 210.
これによって、C(14, 4)= 1001の場合の中から4つの誤りが起こる場合の総数は、21+420+210 = 651である。すなわち、多数決方法によって、4ビット誤りの割合約65.0%を訂正することができる。
語に5つのビット誤りがある場合は、以下のケースの誤りを訂正することができる。2つのビット対の全てのビットの誤りがあり、1つのビット対に1つの誤りがある。このようのビットを選択する場合の数は、
C(7, 2)C(5, 1)2 = 210.
これにより、因子2は1つのビット対から1つのビットを選択する数である。
1つのビット対のどちらものビットの誤りと、3つのビット対のそれぞれに1つビットの誤りがあり、元のメッセージは多数派は失わない、すなわち、3つのビット対のなかでは1つのビット対は1つの位置にビットの誤り、残りの2つのビット対は他の位置にビットの誤りがある。このようのビットを選択する場合の数は、次の通りである。
C(7, 1)C(6, 1)2 C(5, 2)= 840.
これにより、因子2は、3つのビットの中では1つのビット対から1つのビットを選択する数である。これによって、C(14, 5)= 2002の場合の中から5つの誤りが起こる場合の総数は、210+840 = 1050である。すなわち、多数決方法によって、5ビット誤りの割合約52.4%を訂正することができる。
語に6つのビット誤りがある場合は、以下のケースの誤りを訂正することができる。
3つのビット対の全てのビットの誤りがある。このようのビットを選択する場合の数は、
C(7, 3)= 35
2つのビット対の全てのビットの誤りと、2つのビット対のそれぞれに1つずつの誤るビットがある。このようのビットを選択する場合の数は、次の通りである。
C(7, 2)C(5, 2)22 = 840
これにより、因子22は1つの誤りがある2つのビット対からそれぞれの1つのビットを選択する数である。これによって、C(14, 6)= 3003の場合の中から6つの誤りが起こる場合の総数は、840+35 = 875である。すなわち、多数決方法によって、6ビット誤りの割合約29.1%を訂正することができる。
(6.実装)
フォールトトレラントな設計のセル・アレイのメモリの容量が大きくなるほどセルは複雑になる。フォールトトレラントなセル・アレイを適切に実現するためには、第一に、セル・アレイを使用するために示された仮定に忠実であることが重要である。すなわち、セルはできるだけ単純であることが好ましく、基礎構造は滑らかな層の上にできるだけ規則的であることが好ましい。さらに、セル・アレイ内の誤りの発生は、長期間にわたる場合でも、誤りが小さい部分にしか影響を及ぼさないという意味で局在化することが好ましい。そのような要件で、セルは、互いに類似しかつ互いに独立した個別のユニットにさらに細かく分割される。以下では,そのような構成がどのようにすれば得られるかを説明し、特に、遷移を実行するセルの機構を、互いに独立した単純かつ同一のユニットとしてどのように実現できるかを説明する。
セル・アレイで行われる操作は、次のような段階からなる。
1.セルと関連付けられたメモリの状態を、遷移規則の左側と一致させることができるかどうか確認する。この操作はランダムな時間に行われる。
2.一致させることができる場合は、対応するメモリをロックして、遷移を実行するためにセルが排他的に使用できるようにする。遷移規則が個別のユニットに分割されるケースでは、各ユニットは他のユニットとは独立して遷移を実行する。ユニットは遷移を異なる時間に実行することができるが、すべての遷移の一致ができた後で始まらなければならない。さらに、セルのすべてのユニットが終わった後だけ、遷移が終了したと見なされ、メモリがロック解除される。
3.遷移を実行するセルによってメモリがロックされていない場合に、各メモリの誤りが、ランダムな時間に訂正される。
この方式では、誤りがある状態でメモリ状態と遷移規則の左側と一致しないので、セルと関連付けられたメモリのビット誤りがあると、セルのすべての遷移ができなくなる。しかしながら、メモリのすべてのビットが訂正され次第、セルは自動的にその遷移を継続する。
遷移を実行するメカニズムを個別のユニットにどのように分散することができるだろうか。先に説明したように、まず(14, 4, 7)繰り返し符号から、メモリを7つのビット対に分割する。次に図14のように、セルの遷移を実行するメカニズムを、ビット対にそれぞれ作用するユニットに分割することができる。図14は、フォールトトレラントなセル・アレイ内の遷移メカニズムを示す図である。図の上方部分にはセルと関連付けられたメモリで行われる遷移(Transition)を示し、下方部分には各ビット対ごとの実現を別々に示す(グループ的遷移=Group-wise Transition)。1つのビット対に作用する遷移は、グループ的遷移(group-wise transition)と呼ばれる。各ビット対の状態は、非フォールトトレラントなセル・アレイ内のメモリの状態と同じなので、グループ的遷移を支配する規則は表2のものと同じである。この方法は、遷移を実行するために7つのユニットを必要とするが、ユニットはすべて同一であるため規則性が高まる。またユニットが独立していることが、さらに重要なことである。例えば、遷移ユニットのうちの1つに誤りがある場合に、セルと関連付けられた各メモリ内のビット・グループのうちの1つだけしか影響を受けず、これは各メモリ内の誤り訂正機構によって回復することができる。
(5, 4, 3)コードや(14, 4, 9)コードなどの他の誤り訂正符号を使用する場合にも類似の方法が適用されるが、個別のユニットを探して遷移を実行することはさらに困難である。メモリを独立したビット・グループに分ける場合には、グループ状態の各組み合せごとに適用される遷移を一意に決定できるように、一方の各グループの状態と、他方のフォールトトレラントでないセル・アレイのメモリ状態の間に一対一の対応があることが重要である。したがって、(14, 4, 7)繰り返し符号の前述の例において、4つのメモリそれぞれの1ビットだけに作用する遷移規則を設計することは不可能である。これは、いくつかの規則の左側が同一になるためであり、この状況は、本発明のモデルでは許容されない。図15(a)は,3つのビットと2つのビットをそれぞれ含む2つの独立したグループに分割された(5, 4, 3)コードのメモリ・ビットを示す図である。図15(b)は,すべてが2つのビットを含む7つの独立したグループに分割された(14, 4, 9)コードのメモリ・ビットを示す図である。元の非フォールトトレラントなセル・アレイ内のメモリ状態との一対一対応を保証するために、グループ化は水平なものと垂直なものがある(図16を参照)。
図16は,(original)非フォールトトレラントなセル・アレイ内のセルの上側のメモリの状態を示す図である。図16(a)は,(14, 4, 9)コードに基づくフォールトトレラント・セル・アレイ内の垂直ビット対の対応状態を示す図である。図16(b)は,セルの外側の水平ビット対の対応状態を示す図である。図16(c)は,内側の水平ビット対の対応状態を示す図である。(5, 4, 3)コードと(14, 4, 9)コードの一対一の対応は、それぞれ、図15(a)および(b)と同じようなメモリ・ビットのグループ化によって得ることができる。これを(14, 4, 9)コードに関してより詳しく検討する。(5, 4, 3)コードのケースは、似ているがあまり実際的ではない。このケースでは各メモリ内の2つのビット・グループしか区別できず、それらのグループが異なる数のビットを有するためである。(14, 4, 9)コードに関して、図16(オリジナル)のセルの上側にあるメモリの4つの状態を検討する。これらのメモリ状態は、図12のように(14, 4, 9)コードの符号語によってエンコードされる。次に、図15(b)による符号語の14ビットのグループ分けにより、3つの異なるパターン、すなわち図16(a)、(b)、(c)のグループができる。一方の(a)、(b)、(c)のそれぞれのパターンと、他方の図16(オリジナル)の元のメモリ状態との間には一対一の対応があり、これは、対応するグループの遷移規則を公式化できることを意味する。
図17は、信号伝播の遷移規則に対応するグループ的遷移規則を示す(表2の規則1は、左に90度回転されている)。図17(a)、図17(b)、図17(c)は,それぞれ図16(a)、(b)、(c)のビットのグループの遷移を実行するものを表す図である。(14, 4, 9)コードに基づいてフォールトトレラントなセル・スペースに信号を伝播させるために、図16の2ビットのグループに作用する3つの規則がすべて一緒に適用される。(a)の規則は、オリジナルの遷移規則と似ているが、(b)と(c)の規則は似ていない。しかしながら、これらの規則を実現するメカニズムはきわめて類似している。以上の考察は、遷移のメカニズムを分散した形で実現することができ、その結果個別のユニットがきわめて類似し、誤りの発生に関して互いに無関係であることを示す。
以下,本発明に関連する参考文献をあげる。本発明は,以下の文献を引用して用いるものとする。
参考文献
[1] A. Bachtold, P. Hadley, T. Nakanishi, and C. Dekker, "Logic circuits with carbon nanotube transistors," Science, vol. 294, pp. 1317〜1320, 2001.
[2] C.P. Collier, E.W. Wong, M.Belohradsky, F.M. Raymo, J.F. Stoddard, P.J. Kuekes, R.S. Williams, and J.R. Heath, "Electronically configurable molecular-based logic gates," Science, vol. 285, pp. 391〜394, 1999.
[3] Y. Cui and C. Lieber, "Functional nanoscale electronic devices assembled using silicon nanowire building blocks," Science, vol. 291, pp. 851〜853, 2001.
[4] Y. Huang, X. Duan, Y. Cui, L.J. Lauhon, K. Kim, and C. M. Lieber, "Logic gates and computation from assembled nanowire building blocks," Science, vol. 294, pp. 1313〜1317, 2001.
[5] H.W.Ch. Postma, T. Teepen, Z. Yao, M. Grifoni, and C. Dekker, "Carbon nanotube single-electron transistors at room temperature," Science, vol. 293, pp. 76〜79, 2001.
[6] M.A. Reed, J. Chen, A.M. Rawlett, D.W. Price, and J.M. Tour, "Molecular random access memory cell," Appl. Phys. Lett., vol. 78, pp. 3735〜3737, 2001.
[7] T. Rueckes, K. Kim, E. Joselevich, G.Y. Tseng, C. Cheung, and C.M. Lieber, "Carbon nanotube-based nonvolatile random access memory for molecular computing," Science, vol. 289, pp. 94〜97, 2000.
[8] W. Porod, "Nanoelectronic circuit architectures", Handbook of Nanoscience, Engineering, and Technology, Eds. W.A. Goddard III, D.W. Brenner, S.E. Lyshevski, and G.J. Lafrate, Chemical Rubber Company Press, Boca Raton, FL, chapter 5, 2002.
[9] P. Beckett and A. Jennings, "Towards nanocomputer architecture," In: Proc. 7th Asia-Pacific Computer Systems Architecture Conf., ACSAC'2002 (Conf. on Research and Practice in Information Technology), F.~Lai and J.~Morris, Eds., vol. 6, 2002.
[10] M. Biafore, "Cellular automata for nanometre-scale computation," Physica D, vol. 70, pp. 415〜433, 1995.
[11] J. Lyke, G. Donohoe, and S. Karna, "Reconfigurable cellular array architectures for molecular electronics," Tech. Rep. AFRL-VS-TR-2001-1039, Air Force Research Laboratory, 2001.
[12] L.J.K. Durbeck and N.J. Macias, "The cell matrix: an architecture for nanocomputing," Nanotechnology, vol. 12, pp. 217〜230, 2001.
[13] F. Peper, J. Lee, S. Adachi, and S. Mashiko, "Laying out circuits on asynchronous cellular arrays : a step towards feasible nano-computers," Nanotechnology, vol. 14, pp. 469〜485, 2003.
[14] K.L. Wang, "Issues of nanoelectronics: a possible roadmap," Journal of nanoscience and nanotechnology, vol. 2, no. 3/4, pp. 235〜266, 2002.
[15] K. Nakamura, "Asynchronous cellular automata and their computational ability," Systems, Computers, Controls, vol. 5, no. 5, pp. 58〜66, 1974.
[16] J. Lee, S. Adachi, F. Peper, and K. Morita, "Embedding universal delay-insensitive circuits in asynchronous cellular spaces," Fundamenta Informaticae, Vol. 58, No. 3/4, pp. 295〜320, Dec. 2003,.
[17] S. Adachi, F. Peper, and J. Lee, "Computation by asynchronously updating cellular automata," Journal of Statistical Physics, vol. 114, No. 1/2, pp. 261〜289, 2004.
[18] S. Hauck, "Asynchronous design methodologies: an overview," Proc. IEEE, vol. 83, pp. 69〜93, 1995.
[19] C. Joachim, J.K. Gimzewski, and A. Aviram, "Electronics using hybrid-molecular and mono-molecular devices," Nature, vol. 408, pp. 541〜548, 2000.
[20] A.J. Heinrich, C.P. Lutz, J.A. Gupta, and D.M. Eigler, "Molecule cascades," Science, vol. 298, pp. 1381〜1387, 2002.
[21] Y. Kameda, S.V. Polonsky, M. Maezawa, and T. Nanya, "Self-timed parallel adders based on DI RSFQ primitives," IEEE Trans. on Applied Superconductivity, vol. 9, no. 2, pp. 4040〜4045, 1999.
[22] P. Patra, S. Polonsky, and D.S. Fussell, "Delay-insensitive logic for RSFQ superconductor technology," In: Proc. 3rd Int. Symp. on Adv. Res. in Asynchronous Circuits and Systems, IEEE CS Press, pp. 42〜53, 1997.
[23] C.S. Lent and P.D. Tougaw, "A device architecture for computing with quantum dots," Proc. IEEE, vol. 85, pp. 541〜557, 1997.
[24] R.P Cowburn and M.E. Welland, "Room temperature magnetic quantum cellular automata," Science, vol. 287, pp. 1466〜1468, 2000.
[25] J.R. Heath, P.J. Kuekes, G.S. Snider, and R.S. Williams, "A defect-tolerant computer architecture: Opportunities for nanotechnology," Science, vol. 280, pp. 1716〜1721, 1996.
[26] J. von Neumann, "Probabilistic Logics and the Synthesis of Reliable Organisms from Unreliable Components", In: Automata Studies, Eds. C.E. Sharmon and J. McCarthy, Princeton Univ. Press, pp. 43〜98, 1956.
[27] R.L. Dobrushin and S.I. Ortyukov, "Upper bound on the redundancy of self-correcting arrangements of unreliable functional elements," Problems of Information Transmission, vol. 13, pp. 203〜218, 1977.
[28] N. Pippenger, "On networks of noisy gates," In: 26th IEEE Symp. on Foundations of Computer Science, pp. 30〜38, 1985.
[29] N. Pippenger, "Invariance of complexity measures for networks with unreliable gates," Journal of the Association for Computing Machinery, vol. 36, no. 3, pp. 531〜539, July 1989.
[30] P.G. Depledge, "Fault-tolerant computer system," IEE Proc., vol. 128, pp. 257〜272, 1981.
[31] S. Spagocci and T. Fountain, "Fault rates in nanochip devices," Electrochem. Soc. Proc., vol. 99, pp. 354〜368, 1999.
[32] K. Nikolic, A. Sadek, and M. Forshaw, "Fault-tolerant techniques for nanocomputers," Nanotechnology, vol. 13, pp. 357〜362, 2002.
[33] J. Han and P. Jonker, "A defect- and fault-tolerant architecture for nanocomputers," Nanotechnology, vol. 14, pp. 224〜230, 2003.
[34] F.J. MacWilliams and N.J. Sloane, The Theory of Error-Correcting Codes, NorthHolland, 1978.
[35] D.A. Spielman, "Highly fault-tolerant parallel computation," In: Proceedings of the 37th Annual IEEE Conference on Foundations of Computer Science, pp. 154〜163, 1996.
[36] H. Nishio and Y. Kobuchi, "Fault tolerant cellular spaces," Journal of Computer and System Sciences, vol. 11, pp. 150〜170, 1975.
[37] M. Harao and S. Noguchi, "Fault tolerant cellular automata," Journal of Computer and System Sciences, vol. 11, pp. 171〜185, 1975.
[38] P. Gacs, "Reliable computation with cellular automata," Journal of Computer System Science, vol. 32, no. 1, pp. 15〜78, 1986.
[39] P. Gacs, "Self-correcting two-dimensional arrays," In: Advances in Computing Research (a scientific annual), Ed. Silvio Micali, vol. 5: Randomness in Computation, JAI Press, Greenwich, Conn., pp. 223〜326, 1989.
[40] P. Gacs and J. Reif, "A simple three-dimensional real-time reliable cellular array," Journal of Computer and System Sciences, vol. 36, no. 2, pp. 125〜147, 1988.
[41] W. Wang, An Asynchronous Two-Dimensional Self-Correcting Cellular Automaton, Ph.D. thesis, Boston University, Boston, MA 02215, 1990, Short version: In Proc. 32nd IEEE Symposium on the Foundations of Computer, IEEE Press, pp.188〜192, 1991.
[42] P. Gacs, "Reliable cellular automata with self-organization," Journal of Statistical Physics, Vol. 103, No. 1/2, pp. 45〜267, 2001, short version in: IEEE Symposium on Foundations of Computer Science, pp. 90〜99, 1997.
[43] T. Isokawa, F. Abo, F. Peper, S. Adachi, J. Lee, N. Matsui, and S. Mashiko, "Fault-tolerant nanocomputers based on asynchronous cellular automata," International Journal of Modern Physics, in print, 2004.
[44] J. Lee, F. Peper, S. Adachi, and S. Mashiko, "Universal delay-insensitive systems with buffering lines," IEEE Transactions on Circuits and Systems I, accepted , 2004.
[45] Ed: A.W. Burks J. von Neumann, The theory of Self-Reproducing Automata, University of Illinois Press, Champaign, IL, 1966.
[46] E.F. Codd, Cellular Automata, Academic, New York, 1968.
[47] K. Morita and S. Ueno, "Computation-universal models of two-dimensional 16-state reversible cellular automata," IEICE Trans. Inf. & Syst., vol. E-75-D, no. 1, pp. 141〜147, 1992.
[48] J. Lee, F. Peper, S. Adachi, K. Morita, and S. Mashiko, "Reversible computation in asynchronous cellular automata," In: Third International Conference on Unconventional Models of Computation 2002, Eds. C.S. Calude, M.J. Dinneen, and F. Peper, Springer, pp. 220〜229, 2002.
[49] A. Davis and S.M. Nowick, "An introduction to asynchronous circuit design," Tech. Rep. UUCS-97-013, Computer Science Department, University of Utah, 1997, available at http://www.cs.columbia.edu/async/publications.html.
[50] J. Lee, F. Peper, S. Adachi, and S. Mashiko, "Universal delay-insensitive circuits with bidirectional and buffering lines," IEEE Transactions on Computers, Vol. 53, No. 8, pp. 1034〜1046,, 2004.
[51] R.M. Keller, "Towards a theory of universal speed-independent modules," IEEE Trans. Comput., vol. C-23, pp. 21〜33, 1974.
[52] J.C. Ebergen, "A formal approach to designing delay-insensitive circuits," Distrib. Comput., vol. 5, pp. 107〜119, 1991.
[53] P. Patra, Approaches to the design of circuits for low-power computation, Ph.D. thesis, University of Texas at Austin, 1995.
[54] S.M. Ornstein, M.J Stucki, and W.A. Clark, "A functional description of macromodules," In: Proc. Spring Joint Computer Conf. (AFIPS), pp. 337〜355, 1967.
[55] "Encyclopedia of delay-insensitive systems (edis)," Available at http://edis.win.tue.nl/edis.html.
[56] J.A. Reggia, S.L. Armentrout, H.-H. Chou, and Y. Peng, "Simple systems that exhibit self-directed replication," Science, vol. 259, pp. 1282〜1287, 1993.
[57] M. Kutrib and R. Vollmar, "Minimal time synchronization in restricted defective cellular automata," J. Inform. Process. Cybern., vol. 3, pp. 179〜196, 1991.
[58] M. Kutrib and R. Vollmar, "The firing squad synchronization problem in defective cellular automata," IEICE TRANS. INF. & SYST., vol. E78-D, no. 7, pp. 895〜900, 1995.
[59] H. Umeo, "A fault-tolerant scheme for optimum-time firing squad synchronization," Parallel Computing: Trends and Applications, pp. 223〜230, 1994.
本発明によれば,非同期セル・アレイ,耐遅延回路(Delay-Insensitive Circuits),フォールトトレラントなセル・アレイ,NAND回路,コンピュータを提供できるので,本発明は,コンピュータ産業などで利用され得る。
図1は,それぞれ4つのメモリ(小さい四角)にアクセス可能なセル(太い線で結ばれた大きい四角)からなるセル・アレイを示す図である。 図2は,セルと関連付けられたメモリに生じる可能性がある遷移を示す遷移規則を示す図である。 図3(a)は,信号伝播の遷移規則を示す図である。また図3(b)は,その遷移規則をセルの配置に2回適用し、そのたびに信号がセルを北の方に逐次的に移動する例を示す図である。 図4は,フォークがその入力パスに1つの信号を受け取り、後で2つの出力パスのそれぞれに信号を1つずつ生成する配置のシーケンスを示す図である。 図5(A)は,マージが、1つの入力パスの1つの信号を受け取る配置のシーケンスを示す図である。図5(B)は,入力パスに同時にある2つの信号受け取る配置のシーケンスを示す図である。 図6は,様々なシーケンスの入力信号を受け取るRカウンタの配置を示す図である。図6(a)は,入力パスaから2つの連続した信号を受け取るRカウンタの配置を示す図である。図6(b)は,モジュールが、入力パスrおよびaのそれぞれから1つずつの信号を受け取った場合のRカウンタの配置を示す図である。 図7(a)は,衝突のない交差信号の耐遅延回路図である。一方、図7(b)は,非同期セル・アレイ上の実現を示す図である。 図8は、TRIA[53]と呼ばれる耐遅延モジュールの非同期セル・アレイ上の回路設計とその実現を示す図である。図8(a)は,TRIAモジュールの耐遅延回路図とを示す図である。図8(b)は非同期セル・アレイ上のその実装を示す図である。 図9(a)は、デュアル・レール・エンコードされた耐遅延NANDゲートの回路図である。図9(b)は,デュアル・レール・エンコード1ビット・メモリの耐遅延回路図である。 図10は,(5, 4, 3)コードの図形表記を表す図である。 図11は,4つの符号語を有するコードの体系を示す図である。 図12は,(14, 4, 9)コードの図形表記を示す図である。 図13は,(14, 4, 7)繰り返し符号の図形表記を示す図である。 図14は、フォールトトレラントなセル・アレイ内の遷移メカニズムを示す図である。 図15(a)は,3つのビットと2つのビットをそれぞれ含む2つの独立したグループに分割された(5, 4, 3)コードのメモリ・ビットを示す図である。図15(b)は,すべてが2つのビットを含む7つの独立したグループに分割された(14, 4, 9)コードのメモリ・ビットを示す図である。 図16は,(original)非フォールトトレラントなセル・アレイ内のセルの上側のメモリの状態を示す図である。図16(a)は,(14, 4, 9)コードに基づくフォールトトレラント・セル・アレイ内の垂直ビット対の対応状態を示す図である。図16(b)は,セルの外側の水平ビット対の対応状態を示す図である。図16(c)は,内側の水平ビット対の対応状態を示す図である。 図17は、信号伝播の遷移規則に対応するグループ的遷移規則を示す(表2の規則1は、左に90度回転されている)。図17(a)、図17(b)、図17(c)は,それぞれ図16(a)、(b)、(c)のビットのグループの遷移を実行するものを表す図である。

Claims (13)

  1. 2つの状態(これを{[0],又は[1]}とする。)の組(00,01,10及び11)であるビット情報を有するハーフメモリ対に基づく遷移規則を実現するセル・アレイであって,
    前記セル・アレイを構成する各セルは複数のメモリを有し,
    前記あるセルに含まれる複数のメモリのそれぞれは,当該あるセルに隣接するセルに含まれるメモリと前記ハーフメモリ対を構成し,
    前記セル・アレイを構成するメモリは,前記ハーフメモリ対に対応した複数のビット群を有し,
    前記各ビット群は,
    前記ハーフメモリ対に基づく遷移規則を実現し,
    前記ハーフメモリ対に基づく遷移規則は,前記あるセルに含まれる複数のメモリのそれぞれ及び当該それぞれのメモリとハーフメモリ対を構成するメモリによるビット群が所定の状態となった場合に,当該ビット群を別の所定の状態へ変化させるものであり,
    前記それぞれのメモリの複数のビット群のうちひとつ以上が異なるハーフメモリ対の値を示した場合,それを他のビット群が示すハーフメモリ対の値と同じ値を示すように修正した後,
    それぞれのメモリに含まれる複数のビット群の遷移が行われるフォールトトレラントなセル・アレイ。
  2. 前記セル・アレイは,格子状,三角格子状,六角格子状,又は直方体状のものである請求項1に記載のセル・アレイ。
  3. 格子状に並んだセル・アレイを構成する各セルは,そのセルの上下左右にそれぞれ2つの状態(これを{[0],又は[1]}とする。)をとりうるハーフメモリを具備するセル・アレイであって,以下のフォーク,マージ,及びRカウンタからなる3つプリミティブによる,以下の6つ規則により信号の流れが制御されるセル・アレイ。

    規則1(信号伝播規則):あるセルに関連した4のハーフメモリが全て[0]である場合,そのセルに隣接するそのセルの上,下,右,又は左のいずれかのセルにおけるそれぞれ下,上,左,又は右に位置するハーフメモリが[1]である場合は,そのハーフメモリ[1]の状態が[0]となり,当該あるセルのそれぞれ下,上,左,又は右に位置するハーフメモリが[1]となる。

    規則2(フォーク用の規則):あるセルに関連した4つのハーフメモリのうちひとつが[1]であり,残りが[0]である場合であって,
    この状態[1]のハーフメモリ位置が当該あるセルの右の場合であって,当該あるセルの右に隣接するセルの左のハーフメモリが[1]であって、当該あるセルの上に隣接するセルの下のハーフメモリが[0]であって、当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合は,当該あるセルの左に隣接するセルの右のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの上と下のハーフメモリがそれぞれ[1]となり,
    この状態[1]のハーフメモリ位置が当該あるセルの左の場合は,当該あるセルの左に隣接するセルの右のハーフメモリが[1]であって、当該あるセルの上に隣接するセルの下のハーフメモリが[0]であって、当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合は,当該あるセルの右に隣接するセルの左のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの上と下のハーフメモリがそれぞれ[1]となり,
    この状態[1]のハーフメモリ位置が当該あるセルの上の場合は,当該あるセルの上に隣接するセルの下のハーフメモリが[1]であって、当該あるセルの右に隣接するセルの左のハーフメモリが[0]であって、当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合は,当該あるセルの下に隣接するセルの上のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの右と左のハーフメモリがそれぞれ[1]となり,
    この状態[1]のハーフメモリ位置が当該あるセルの下の場合は,当該あるセルの下に隣接するセルの上のハーフメモリが[1]であって、当該あるセルの右に隣接するセルの左のハーフメモリが[0]であって、当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合は,当該あるセルの上に隣接するセルの下のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの右と左のハーフメモリがそれぞれ[1]となる。

    規則3(マージ用の規則−1−):
    あるセルに関連した4つのハーフメモリのうちひとつが[1]であり,残りが[0]である場合であって,
    (i)この状態[1]のハーフメモリ位置が当該あるセルの右の場合であって,当該あるセルの右に隣接するセルの左のハーフメモリが[1]であって、当該あるセルの左に隣接するセルの右のハーフメモリが[0]であって、当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合は,
    当該あるセルの上に隣接するセルの下のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの左のハーフメモリが[1]となり,
    当該あるセルの下に隣接するセルの上のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの左のハーフメモリが[1]となり;

    (ii)この状態[1]のハーフメモリ位置が当該あるセルの左の場合であって,当該あるセルの左に隣接するセルの右のハーフメモリが[1]であって、当該あるセルの右に隣接するセルの左のハーフメモリが[0]であって、当該あるセルの上に隣接するセルの下のハーフメモリが[0]である場合は,
    当該あるセルの上に隣接するセルの下のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの右のハーフメモリが[1]となり,
    当該あるセルの下に隣接するセルの上のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの右のハーフメモリが[1]となり;

    (iii)この状態[1]のハーフメモリ位置が当該あるセルの上の場合であって,当該あるセルの上に隣接するセルの下のハーフメモリが[1]であって、当該あるセルの下に隣接するセルの上のハーフメモリが[0]であって、当該あるセルの右に隣接するセルの左のハーフメモリが[0]である場合は,
    当該あるセルの右に隣接するセルの左のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの下のハーフメモリが[1]となり,
    当該あるセルの左に隣接するセルの右のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの下のハーフメモリが[1]となり;そして,

    (iv)この状態[1]のハーフメモリ位置が当該あるセルの下の場合であって,当該あるセルの下に隣接するセルの上のハーフメモリが[1]であって、当該あるセルの上に隣接するセルの下のハーフメモリが[0]であって、当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合は,
    当該あるセルの右に隣接するセルの左のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの上のハーフメモリが[1]となり,
    当該あるセルの左に隣接するセルの右のハーフメモリが[1]のとき,そのハーフメモリが[0]となり,当該あるセルの上のハーフメモリが[1]となる。

    規則4(マージ用の規則−2−):
    あるセルに関連した4つのハーフメモリのうちひとつが[1]であり,残りが[0]である場合であって,
    (i)この状態[1]のハーフメモリ位置が当該あるセルの右の場合であり,当該あるセルの右に隣接するセルの左のハーフメモリが[1]である場合であって,当該あるセルの左に隣接するセルの右のハーフメモリが[0]であり,かつ当該あるセルの上に隣接するセルの下のハーフメモリが[1]であり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[1]のとき,
    それら2のハーフメモリのうちいずれかが[0]となり,当該あるセルの左のハーフメモリが[1] となり,

    (ii)この状態[1]のハーフメモリ位置が当該あるセルの左の場合であり,当該あるセルの左に隣接するセルの右のハーフメモリが[1]である場合であって,当該あるセルの右に隣接するセルの左のハーフメモリが[0]であり,かつ当該あるセルの上に隣接するセルの下のハーフメモリが[1]であり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[1]のとき,
    それら2のハーフメモリのうちいずれかが[0]となり,当該あるセルの右のハーフメモリが[1]となり,

    (iii)この状態[1]のハーフメモリ位置が当該あるセルの上の場合であり,当該あるセルの上に隣接するセルの下のハーフメモリが[1]である場合であって,当該あるセルの下に隣接するセルの上のハーフメモリが[0]であり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[1]であり,かつ当該あるセルの左に隣接するセルの右のハーフメモリが[1]のとき,
    それら2のハーフメモリのうちいずれかが[0]となり,当該あるセルの下のハーフメモリが[1]となり;そして,

    (iv)この状態[1]のハーフメモリ位置が当該あるセルの下の場合であり,当該あるセルの下に隣接するセルの上のハーフメモリが[1]である場合であって,当該あるセルの上に隣接するセルの下のハーフメモリが[0]であり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[1]であり,かつ当該あるセルの左に隣接するセルの右のハーフメモリが[1]のとき,
    それら2のハーフメモリのうちいずれかが[0]となり,当該あるセルの上のハーフメモリが[1] となる。

    規則5(Rカウンタの規則−1−)
    あるセルに関連した4つのハーフメモリのうちひとつが[1]であり,残りが[0]である場合であって,
    (i)この状態[1]のハーフメモリ位置が当該あるセルの上の場合であり,当該あるセルの上に隣接するセルの下のハーフメモリが[0]である場合であって,当該あるセルの右に隣接するセルの左のハーフメモリが[1]であり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[1]であり,かつ当該あるセルの左に隣接するセルの右のハーフメモリが[0]のとき,
    当該あるセルの右に隣接するセルの左のハーフメモリが[0]となり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[0]となり;
    (ii)この状態[1]のハーフメモリ位置が当該あるセルの下の場合であり,当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合であって,当該あるセルの上に隣接するセルの下のハーフメモリが[1]であり,かつ当該あるセルの左に隣接するセルの右のハーフメモリが[1]であり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[0]のとき,
    当該あるセルの上に隣接するセルの下のハーフメモリが[0]となり,かつ当該あるセルの左に隣接するセルの右のハーフメモリが[0]となり;
    (iii)この状態[1]のハーフメモリ位置が当該あるセルの右の場合であり,当該あるセルの右に隣接するセルの左のハーフメモリが[0]である場合であって,当該あるセルの左に隣接するセルの右のハーフメモリが[1]であり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[1]であり,かつ当該あるセルの上に隣接するセルの下のハーフメモリが[0]のとき,
    当該あるセルの左に隣接するセルの右のハーフメモリが[0]となり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[0]となり;
    (iv)この状態[1]のハーフメモリ位置が当該あるセルの左の場合であり,当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合であって,当該あるセルの上に隣接するセルの下のハーフメモリが[1]であり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[1]であり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[0]のとき,
    当該あるセルの上に隣接するセルの下のハーフメモリが[0]となり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[0]となり;
    (v)この状態[1]のハーフメモリ位置が当該あるセルの上の場合であり,当該あるセルの上に隣接するセルの下のハーフメモリが[0]である場合であって,当該あるセルの左に隣接するセルの右のハーフメモリが[1]であり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[1]であり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[0]のとき,
    当該あるセルの左に隣接するセルの右のハーフメモリが[0]となり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[0]となり;
    (vi)この状態[1]のハーフメモリ位置が当該あるセルの下の場合であり,当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合であって,当該あるセルの上に隣接するセルの下のハーフメモリが[1]であり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[1]であり,かつ当該あるセルの左に隣接するセルの右のハーフメモリが[0]のとき,
    当該あるセルの上に隣接するセルの下のハーフメモリが[0]となり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[0]となり;
    (vii)この状態[1]のハーフメモリ位置が当該あるセルの右の場合であり,当該あるセルの右に隣接するセルの左のハーフメモリが[0]である場合であって,当該あるセルの左に隣接するセルの右のハーフメモリが[1]であり,かつ当該あるセルの上に隣接するセルの下のハーフメモリが[1]であり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[0]のとき,
    当該あるセルの左に隣接するセルの右のハーフメモリが[0]となり,かつ当該あるセルの上に隣接するセルの下のハーフメモリが[0]となり;そして,
    (viii)この状態[1]のハーフメモリ位置が当該あるセルの左の場合であり,当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合であって,当該あるセルの下に隣接するセルの上のハーフメモリが[1]であり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[1]であり,かつ当該あるセルの上に隣接するセルの下のハーフメモリが[0]のとき,
    当該あるセルの下に隣接するセルの上のハーフメモリが[0]となり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[0]となる。

    規則6(Rカウンタの規則−2−)
    あるセルに関連した4つのハーフメモリのうちひとつが[1]であり,残りが[0]である場合であって,
    (i)この状態[1]のハーフメモリ位置が当該あるセルの上の場合であり,当該あるセルの上に隣接するセルの下のハーフメモリが[0]である場合であり,当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合であって,当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合であって,当該あるセルの右に隣接するセルの左のハーフメモリが[1]のとき,
    当該あるセルの右に隣接するセルの左のハーフメモリが[0]となり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[1]となり,当該あるセルの左のハーフメモリが[1]となり;
    (ii)この状態[1]のハーフメモリ位置が当該あるセルの下の場合であり,当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合であり,当該あるセルの上に隣接するセルの下のハーフメモリが[0]である場合であって,当該あるセルの右に隣接するセルの左のハーフメモリが[0]である場合であって,当該あるセルの左に隣接するセルの右のハーフメモリが[1]のとき,
    当該あるセルの左に隣接するセルの右のハーフメモリが[0]となり,かつ当該あるセルの上に隣接するセルの下のハーフメモリが[1]となり,当該あるセルの右のハーフメモリが[1]となり;
    (iii)この状態[1]のハーフメモリ位置が当該あるセルの右の場合であり,当該あるセルの右に隣接するセルの左のハーフメモリが[0]である場合であり,当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合であって,当該あるセルの上に隣接するセルの下のハーフメモリが[0]である場合であって,当該あるセルの下に隣接するセルの上のハーフメモリが[1]のとき,
    当該あるセルの下に隣接するセルの上のハーフメモリが[0]となり,かつ当該あるセルの左に隣接するセルの右のハーフメモリが[1]となり,当該あるセルの上のハーフメモリが[1]となり;
    (iv)この状態[1]のハーフメモリ位置が当該あるセルの左の場合であり,当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合であり,当該あるセルの右に隣接するセルの左のハーフメモリが[0]である場合であって,当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合であって,当該あるセルの上に隣接するセルの下のハーフメモリが[1]のとき,
    当該あるセルの上に隣接するセルの下のハーフメモリが[0]となり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[1]となり,当該あるセルの下のハーフメモリが[1]となり;
    (v)この状態[1]のハーフメモリ位置が当該あるセルの上の場合であり,当該あるセルの上に隣接するセルの下のハーフメモリが[0]である場合であり,当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合であって,当該あるセルの右に隣接するセルの左のハーフメモリが[0]である場合であって,当該あるセルの左に隣接するセルの右のハーフメモリが[1]のとき,
    当該あるセルの左に隣接するセルの右のハーフメモリが[0]となり,かつ当該あるセルの下に隣接するセルの上のハーフメモリが[1]となり,当該あるセルの右のハーフメモリが[1]となり;
    (vi)この状態[1]のハーフメモリ位置が当該あるセルの下の場合であり,当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合であり,当該あるセルの上に隣接するセルの下のハーフメモリが[0]である場合であって,当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合であって,当該あるセルの右に隣接するセルの左のハーフメモリが[1]のとき,
    当該あるセルの右に隣接するセルの左のハーフメモリが[0]となり,かつ当該あるセルの上に隣接するセルの下のハーフメモリが[1]となり,当該あるセルの左のハーフメモリが[1]となり;
    (vii)この状態[1]のハーフメモリ位置が当該あるセルの右の場合であり,当該あるセルの右に隣接するセルの左のハーフメモリが[0]である場合であり,当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合であって,当該あるセルの下に隣接するセルの上のハーフメモリが[0]である場合であって,当該あるセルの上に隣接するセルの下のハーフメモリが[1]のとき,
    当該あるセルの上に隣接するセルの下のハーフメモリが[0]となり,かつ当該あるセルの左に隣接するセルの右のハーフメモリが[1]となり,当該あるセルの下のハーフメモリが[1]となり;そして,
    (viii)この状態[1]のハーフメモリ位置が当該あるセルの左の場合であり,当該あるセルの左に隣接するセルの右のハーフメモリが[0]である場合であり,当該あるセルの右に隣接するセルの左のハーフメモリが[0]である場合であって,当該あるセルの上に隣接するセルの下のハーフメモリが[0]である場合であって,当該あるセルの下に隣接するセルの上のハーフメモリが[1]のとき,
    当該あるセルの下に隣接するセルの上のハーフメモリが[0]となり,かつ当該あるセルの右に隣接するセルの左のハーフメモリが[1]となり,当該あるセルの上のハーフメモリが[1]となる。
    なお,上記の規則においては,特に断らない限り当該あるセルの上下左右のハーフメモリ,及び当該あるセルの上下左右に位置する隣接するセルのそれぞれ下上右左のハーフメモリは[0]であるとする。
  4. 前記セル・アレイの各ハーフメモリが1ビットハーフメモリである請求項3に記載のセル・アレイ。
  5. 前記セル・アレイの各ハーフメモリが2ビット以上のハーフメモリである請求項3に記載のセル・アレイ。
  6. 前記セル・アレイが非同期セル・アレイである請求項1又は請求項3に記載のセル・アレイ。
  7. 請求項1又は請求項3に記載のセル・アレイを用いた耐遅延回路(Delay-Insensitive Circuits)。
  8. 請求項3に記載のセル・アレイを用いたフォールトトレラントなセル・アレイ。
  9. 請求項1又は請求項3に記載のセル・アレイを用いたNAND回路。
  10. 請求項1又は請求項3に記載のセル・アレイを用いたコンピュータ。
  11. 請求項1又は請求項3に記載のセル・アレイをコンピュータで実現させるために,コンピュータを上記の各規則を実現する複数の手段として機能させるためのプログラム。
  12. 請求項1又は請求項3に記載のセル・アレイをコンピュータで実現させるためのプログラムを記憶した記録媒体。
  13. 請求項1,又は請求項3に記載の2つの状態(これを{[0],又は[1]}とする。)の組(00, 01, 10, 及び 11)であるハーフメモリ対に基づく遷移規則を実現する複数のメモリを有するセル・アレイを前記セルに関連するメモリが誤り訂正機能を持つように遷移させるための方法であって,
    それぞれのメモリは複数のビット対を有し,
    前記各ビット対は前記ハーフメモリ対に対応し,[00,01,10,11],[00,01,11,10],[00,10,01,11],[00,11,01,10],[00,10,11,01],[00,11,10,01],[01,00,10,11],[01,00,11,10],[10,00,01,11],[10,00,11,01],[11,00,01,10],[11,00,10,01],[01,10,00,11],[10,01,00,11],[01,11,00,10],[10,11,00,01],[11,01,00,10],[11,10,00,01],[01,10,11,00],[01,11,10,00],[10,01,11,00],[11,01,10,00],[11,10,01,00],及び[10,11,01,00]の24通りのうちのいずれかと一対一に対応づけるようにされ;
    ビット対は,前記遷移規則に従って状態遷移起こし,
    前記それぞれのメモリの複数のビット対のうちひとつ以上が異なるハーフメモリ対の値を示した場合(間違っている場合),それを他のビット対が示すハーフメモリ対の値と同じ値を示すように修正した後,
    それぞれのメモリ含まれる複数のビット対の遷移が行われる方法。
JP2004220823A 2004-07-28 2004-07-28 フォールトトレラントなセル・アレイ Expired - Fee Related JP4712328B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004220823A JP4712328B2 (ja) 2004-07-28 2004-07-28 フォールトトレラントなセル・アレイ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004220823A JP4712328B2 (ja) 2004-07-28 2004-07-28 フォールトトレラントなセル・アレイ

Publications (2)

Publication Number Publication Date
JP2006040451A JP2006040451A (ja) 2006-02-09
JP4712328B2 true JP4712328B2 (ja) 2011-06-29

Family

ID=35905266

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004220823A Expired - Fee Related JP4712328B2 (ja) 2004-07-28 2004-07-28 フォールトトレラントなセル・アレイ

Country Status (1)

Country Link
JP (1) JP4712328B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008008629A2 (en) * 2006-06-28 2008-01-17 Achronix Semiconductor Corporation Reconfigurable logic fabrics for integrated circuits and systems and methods for configuring reconfigurable logic fabrics

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3139738B2 (ja) * 1996-09-06 2001-03-05 日本電気株式会社 論理回路
JP2002374165A (ja) * 2001-06-13 2002-12-26 Hitachi Ltd 半導体集積回路装置および製造方法

Also Published As

Publication number Publication date
JP2006040451A (ja) 2006-02-09

Similar Documents

Publication Publication Date Title
Peper et al. Fault-tolerance in nanocomputers: a cellular array approach
Copsey et al. Toward a scalable, silicon-based quantum computing architecture
Vasic et al. An information theoretical framework for analysis and design of nanoscale fault-tolerant memories based on low-density parity-check codes
Peper et al. Laying out circuits on asynchronous cellular arrays: a step towards feasible nanocomputers?
Fujiwara et al. Entanglement-assisted quantum low-density parity-check codes
TW201119247A (en) Decoder and decoding method for low-density parity check codes constructed based on reed-solomon codes
Ghosh et al. Dynamic low-density parity check codes for fault-tolerant nano-scale memory
TW200935754A (en) Data decoding apparatus, data decoding method, data tramsmitting/receiving system, data receiving apparatus, data receiving method and program
Zhang et al. Design and simulation of turbo encoder in quantum-dot cellular automata
Camara et al. Constructions and performance of classes of quantum LDPC codes
Mappouras et al. GreenFlag: Protecting 3D-racetrack memory from shift errors
Suma et al. Simulation and synthesis of efficient majority logic fault detector using EG-LDPC codes to reduce access time for memory applications
JP4712328B2 (ja) フォールトトレラントなセル・アレイ
Sun et al. Defect and transient fault-tolerant system design for hybrid CMOS/nanodevice digital memories
Zhang et al. A programmable hamming encoder/decoder system design with quantum-dot cellular automata
Misra et al. Approach to design a high performance fault-tolerant reversible ALU
Nagarajan et al. High-throughput VLSI implementations of iterative decoders and related code construction problems
Boykin et al. Reversible fault-tolerant logic
DeHon Law of large numbers system design
Graham et al. Nanocomputing in the presence of defects and faults: A survey
Goto Many-hypercube codes: High-rate quantum error-correcting codes for high-performance fault-tolerant quantum computation
Isokawa et al. Fault-tolerant nanocomputers based on asynchronous cellular automata
Chakrabarty et al. Reliability analysis of a noiseless code converter using quantum dot cellular automata
Vasić et al. Low complexity memory architectures based on LDPC codes: Benefits and disadvantages
Nagarajan et al. High-throughput VLSI implementations of iterative decoders and related code construction problems

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070215

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070613

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100329

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100526

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110317

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110323

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees