(57)【要約】  特殊目的プロセッサ（ＳＰＰ）は、現場でプログラム可能なゲートアレー（ＦＰＧＡ）又は同様のプログラム可能な装置を使用して、多数の神経素子をモデリングする。ＦＰＧＡは、前シナプス計算、後シナプス計算及び塑性計算を並列に行なう複数のコアを有することができる。各コアは、神経モデルの複数の神経素子を実施することができる。【選択図】      図１Ａ
2009508182.tif 000002
【特許請求の範囲】
【請求項１】
神経モデルを実施するＦＰＧＡを備え、前記神経モデルは複数の神経素子を含み、前記ＦＰＧＡは、前記神経素子を実施するための複数のコアを含み、これらコアは、データを並列に処理し、前記コアにおける処理は、入力値及び重みを使用する前シナプス計算と、この前シナプス計算の結果を使用して後シナプス出力を発生するための後シナプス計算と、前記重みを変更するための塑性計算とを含むものである、特殊目的プロセッサ。
【請求項２】
請求項１に記載の特殊目的プロセッサを備えた脳ベースの装置において、更に、
前記特殊目的プロセッサのための入力を与える少なくとも１つのセンサと、
前記特殊目的プロセッサからの出力を受け取る少なくとも１つのアクチュエータであって、前記出力が前記神経モデルの神経素子による処理の結果であるようなアクチュエータと、
を備えた脳ベースの装置。
【請求項３】
請求項１に記載の特殊目的プロセッサを備えた脳ベースの装置において、更に、
少なくとも１つのセンサ及び少なくとも１つのアクチュエータを含む複数の取外し可能なポッドを備えた、脳ベースの装置。
【請求項４】
神経モデルを実施するチップを備え、前記神経モデルは複数の神経素子を含み、前記チップは、前記神経素子を実施するための複数のコアを含み、これらコアは、データを並列に処理し、前記コアにおける処理は、入力値及び重みを使用する前シナプス計算と、この前シナプス計算の結果を使用して後シナプス出力を発生するための後シナプス計算と、前記重みを変更するための塑性計算とを含むものである、特殊目的プロセッサ。
【請求項５】
前記チップは、ＦＰＧＡである、請求項４に記載の特殊目的プロセッサ。
【請求項６】
請求項４に記載の特殊目的プロセッサを備えた脳ベースの装置において、更に、
前記特殊目的プロセッサのための入力を与える少なくとも１つのセンサと、
前記特殊目的プロセッサからの出力を受け取る少なくとも１つのアクチュエータであって、前記出力が前記神経モデルの神経素子による処理の結果であるようなアクチュエータと、
を備えた脳ベースの装置。
【請求項７】
請求項４に記載の特殊目的プロセッサを備えた脳ベースの装置において、更に、
少なくとも１つのセンサ及び少なくとも１つのアクチュエータを含む複数の取外し可能なポッドを備えた、脳ベースの装置。
【請求項８】
神経モデルを実施するＦＰＧＡを備え、前記神経モデルは複数の神経素子を含み、前記ＦＰＧＡは、前記神経素子を実施するための複数のコアを含み、これらコアは、データを並列に処理し、前記コアにおける処理は、入力値及び重みを使用する前シナプス計算と、この前シナプス計算の結果を使用して後シナプス出力を発生するための後シナプス計算と、前記重みを変更するための塑性計算とを含み、前記コアは前記神経モデルの複数の神経素子を実施するものである、特殊目的プロセッサ。
【請求項９】
請求項８に記載の特殊目的プロセッサを備えた脳ベースの装置において、更に、
前記特殊目的プロセッサのための入力を与える少なくとも１つのセンサと、
前記特殊目的プロセッサからの出力を受け取る少なくとも１つのアクチュエータであって、前記出力が前記神経モデルの神経素子による処理の結果であるようなアクチュエータと、
を備えた脳ベースの装置。
【請求項１０】
請求項８に記載の特殊目的プロセッサを備えた脳ベースの装置において、更に、
少なくとも１つのセンサ及び少なくとも１つのアクチュエータを含む複数の取外し可能なポッドを備えた、脳ベースの装置。
【請求項１１】
神経モデルを実施するＦＰＧＡを含む特殊目的プロセッサを備え、前記神経モデルは、複数の神経素子を含み、前記ＦＰＧＡは、前記神経素子を実施するための複数のコアを含み、これらコアは、データを並列に処理し、前記コアにおける処理は、入力値及び重みを使用する前シナプス計算と、この前シナプス計算の結果を使用して後シナプス出力を発生するための後シナプス計算と、前記重みを変更するための塑性計算とを含むものであり、
更に、前記特殊目的プロセッサのための入力を与える少なくとも１つのセンサと、
前記特殊目的プロセッサからの出力を受け取る少なくとも１つのアクチュエータであって、前記出力が前記神経モデルの神経素子による処理の結果であるようなアクチュエータと、
を備えた脳ベースの装置。
【請求項１２】
請求項１１に記載の特殊目的プロセッサを備えた脳ベースの装置において、更に、
少なくとも１つのセンサ及び少なくとも１つのアクチュエータを含む複数の取外し可能なポッドを備えた、脳ベースの装置。
【請求項１３】
少なくとも１つのセンサ及び少なくとも１つのアクチュエータを含む複数の取外し可能なポッドと、
神経モデルを実施するＦＰＧＡを含む特殊目的プロセッサと、
を備え、前記神経モデルは複数の神経素子を含み、前記ＦＰＧＡは、前記神経素子を実施するための複数のコアを含み、これらコアは、データを並列に処理し、前記コアにおける処理は、入力値及び重みを使用する前シナプス計算と、この前シナプス計算の結果を使用して後シナプス出力を発生するための後シナプス計算と、前記重みを変更するための塑性計算とを含み、前記特殊目的プロセッサは、前記複数の取外し可能なポッドにおけるセンサから入力を受け取り、そして前記複数の取外し可能なポッドにおけるアクチュエータへ出力を送出する、脳ベースの装置。
【請求項１４】
前記特殊目的プロセッサのための入力を与える少なくとも１つのセンサと、
前記特殊目的プロセッサからの出力を受け取る少なくとも１つのアクチュエータであって、前記出力が前記神経モデルの神経素子による処理の結果であるようなアクチュエータと、
を更に備えた請求項１３に記載の脳ベースの装置。
【請求項１５】
少なくとも１つのセンサ及び少なくとも１つのアクチュエータを含む複数のポッドであって、その少なくとも２つが、モータにより制御されるホイールを含むような複数のポッドと、
少なくとも１つのモータ付きトレッドを含む中央部分と、
を備えたロボット装置。
【請求項１６】
コンピュータ実施される神経モデルを更に備え、このコンピュータ実施される神経モデルは複数の神経素子を含み、前記コンピュータ実施される神経モデルは、神経素子を実施するための複数のコアを含み、これらコアは、データを並列に処理し、前記コアにおける処理は、入力値及び重みを使用する前シナプス計算と、この前シナプス計算の結果を使用して後シナプス出力を発生するための後シナプス計算と、前記重みを変更するための塑性計算とを含むものである、請求項１５に記載のロボット装置。
【請求項１７】
前記ポッドは、取外し可能である、請求項１５に記載のロボット装置。
【請求項１８】
前記取外し可能なポッドは、両方向サスペンションを有する、請求項１６に記載のロボット装置。
【請求項１９】
専用の電力管理センサに関連した複数のポッドと、
前記複数のポッドの電力管理センサから入力を受け取りそして脳ベースの装置の少なくとも１つのアクチュエータへ出力を発生する神経モデルと、
を備えた脳ベースの装置。
【請求項２０】
前記神経モデルを実施するコンピューティング素子を更に備え、前記神経モデルは複数の神経素子を含み、前記コンピューティング素子は、神経素子を実施するための複数のコアを含み、これらコアは、データを並列に処理し、前記コアにおける処理は、入力値及び重みを使用する前シナプス計算と、この前シナプス計算の結果を使用して後シナプス出力を発生するための後シナプス計算と、前記重みを変更するための塑性計算とを含むものである、請求項１９に記載の脳ベースの装置。
【請求項２１】
前記ポッドは、取外し可能である、請求項１９に記載の脳ベースの装置。
【請求項２２】
前記取外し可能なポッドは、両方向サスペンションを有する、請求項２１に記載の脳ベースの装置。
【請求項２３】
少なくとも１つのセンサ、モータにより制御されるホイールを含む複数の取外し可能なポッドであって、両方向性サスペンションを含むような複数の取外し可能なポッドと、
前記複数の取外し可能なポッドの前記両方向サスペンションに作動的に接続された中心軸と、
を備えたロボット装置。
【請求項２４】
神経モデルを実施するコンピューティング素子を更に備え、前記神経モデルは、複数の神経素子を含み、前記コンピューティング素子は、神経素子を実施するための複数のコアを含み、これらコアは、データを並列に処理し、前記コアにおける処理は、入力値及び重みを使用する前シナプス計算と、この前シナプス計算の結果を使用して後シナプス出力を発生するための後シナプス計算と、前記重みを変更するための塑性計算とを含むものである、請求項２３に記載のロボット装置。
【請求項２５】
コンピュータ実施される神経モデルを備え、この神経モデルは複数の神経素子を含み、前記コンピュータ実施される神経モデルは、神経素子を実施するための複数のコアを含み、これらのコアは、データを並列に処理し、前記コアにおける処理は、入力値及び重みを使用する前シナプス計算と、この前シナプス計算の結果を使用して後シナプス出力を発生するための後シナプス計算と、前記重みを変更するための塑性計算とを含むものである、脳ベースの装置。
【請求項２６】
前記コンピュータ実施される神経モデルのための入力を与える少なくとも１つのセンサと、
前記コンピュータ実施される神経モデルからの出力を受け取る少なくとも１つのアクチュエータであって、前記出力が前記神経モデルの神経素子による処理の結果であるようなアクチュエータと、
を更に備えた請求項２５に記載の脳ベースの装置。
【請求項２７】
前記コンピュータ実施される神経モデルは、１つ以上のデータ処理装置である、請求項２５に記載の脳ベースの装置。
【請求項２８】
前記センサは、バーチャルセンサである、請求項２６に記載の脳ベースの装置。
【請求項２９】
前記アクチュエータは、バーチャルアクチュエータである、請求項２６に記載の脳ベースの装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、神経モデリング、特に、脳ベースの装置と共に使用できる神経モデリングに係る。
【０００２】
優先権の請求：本出願は、参考としてここに援用する２００５年６月２８日に出願された“Neural Modeling and Brain-Based Devices Using Special Purpose Processor”と題する米国プロビジョナル特許出願第６０／６９４，５３２号に対する優先権を請求する（代理人整理番号第ＮＳＲＦ−０１００６ＵＳ０号）。
又、本出願は、参考としてここに援用する２００６年６月２７日に出願された“Neural Modeling and Brain-Based Devices Using Special Purpose Processor”と題する米国特許出願第１１／４２６，８８１号に対する優先権を請求する（代理人整理番号第ＮＳＲＦ−０１００６ＵＳ２号）。
【背景技術】
【０００３】
自律的に振舞い、インテリジェントな仕方でタスクを自動化しそして人間の知識を広げるように意図されたインテリジェントシステムが開発されている。これらのシステムは、次のように各々知られている３つの個別の技術分野に本質的に基づいて設計されモデリングされる。
（１）人工知能（ＡＩ）
（２）人工神経網（ＡＮＮ）
（３）脳ベースの装置（ＢＢＤ）
【０００４】
ＡＩ及びＡＮＮをベースとするインテリジェントシステムは、ロボットに対しチェスをする範囲までのタスクを遂行するようにプログラムされたデジタルコンピュータを含む。ＡＩアルゴリズムは、ロジックをベースとするもので、詳細なソフトウェアインストラクションで実施される複雑なアルゴリズムを実行するように予めプログラムされる。ＡＮＮは、生物学的ニューロンを著しく簡単化した抽象物で、神経系構造（即ち、神経解剖学）を考慮しておらず、希望の結果を得るために監督又は教示信号をしばしば必要とするものである。他方、ＢＢＤは、異なる原理及び異なる解決策に基づいて、インテリジェントシステムを開発するものである。
【０００５】
ＢＢＤは、基本的な神経生物学的原理に基づくもので、知覚及び学習の脳基礎が生物において見つかった後にモデリングされる。ＢＢＤは、シミュレーションされた脳又は神経系を、振舞い及び形状記憶を制御する詳細な神経解剖学及び神経力学に合体するものである。又、ＢＢＤは、環境における能動的感知及び自律運動を許す形態学又は表現型と称される物理的インスタンスも有する。ＢＢＤは、生物と同様に、環境から受け取る未分類の信号をカテゴリーへと組織化する。著しい環境事象が生じたときには、バリューシステムと称されるシミュレーションされた神経エリアを有するＢＢＤが、装置の振舞いを適応させる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ロジックベースのインテリジェントシステム及びＢＢＤが動作する原理は、著しく異なる。ロジックベースのマシンは、それらがパワフルであるほど、新規な状態に有効に対処せず、又、大きなデータセットを同時に処理しない。新規な状態は、それらの性質により、前もってプログラムすることができない。というのは、これらは、典型的に、予想されない変化する数の要素及び不測の事態で構成されるからである。更に、広いパラメータ及び変化するコンテクストを伴う状態は、プログラミングに実質的な困難を招き得る。又、多くのアルゴリズムは、拡張性に乏しく、これは、入力変数の数が増加するにつれて、それらを実行するに要する時間が指数関数的に増加することを意味する。
【課題を解決するための手段】
【０００７】
本発明の一実施形態は、複数の神経素子を同時にモデリングするためのチップを含むことのできる特殊目的プロセッサ（ＳＰＰ）である。このＳＰＰは、現場でプログラム可能なゲートアレー（ＦＰＧＡ）を使用して、多数の神経素子をモデリングすることができる。ＦＰＧＡの使用は、モデリングされる神経素子の比較的大きな入力及び出力接続状態での並列処理を許す。説明上、ＦＰＧＡは、神経素子を実施することのできる再構成可能なロジック装置のような、任意の構成可能なロジック装置である。本発明に使用されるＦＰＧＡは、例えば、カリフォルニア州サンノセのＸｉｌｉｎｘ社から入手できるＶｉｒｔｅｘTMシリーズＸｉｌｉｎｘTMＦＰＧＡである。
【０００８】
現場でプログラム可能なゲートアレーアーキテクチャーは、多数の他の、より電力効率のよいコンパクトな電子装置において実施するのが適している。これら装置は、特定用途向け集積回路（ＡＳＩＣ）及び他の適用可能な技術を含む。一実施形態において、ＡＳＩＣは、本発明を実施するのに使用される。
【０００９】
本発明の実施形態は、ＳＰＰ、ＦＰＧＡ、及び／又はＡＳＩＣを使用して実施されるものとしてここに説明するが、本発明は、これらの実施形態に限定されないことを理解されたい。関連技術の当業者であれば、本発明は、いかなるデータ処理モジュール、装置又はアーキテクチャーを使用しても実施できることが明らかであろう。これは、例えば、特定用途向け集積回路（ＡＳＩＣ）を含むが、これに限定されない。
【発明を実施するための最良の形態】
【００１０】
神経モデルは、比較的多数の神経素子を含むことができる。各々の神経素子は、それらの入力に基づいて一連のプロセスを実行することができる。一連の各プロセスの周期は、「エポック(epoch)」と称されるサイクルタイムとして働く。神経素子は、エポック内で入力の各セットに対してプロセスのセットを遂行し、それらの出力を生成すると共に、それらが次のエポックに利用できることを学習する。プロセスは、前シナプス計算１０２ａ、後シナプス計算１０２ｂ、及び塑性(plasticity)計算１０２ｃを含むことができる。コアは、予めロードされた係数を使用して、特定形式の神経素子をモデリングすることができる。
【００１１】
図１Ａに示すように、ＳＰＰ１００は、プロセスを実施できる多数の神経処理ユニット１０２（「コア」とも称される）を有することができる。コア１０２により実施されるプロセスは、前シナプス計算１０２ａ、後シナプス計算１０２ｂ、及び塑性計算１０２ｃを含むことができる。
【００１２】
コアは、ＦＰＧＡにおけるリソースの１つ以上のグループを必要に応じて使用することができる。以下に述べるように、コアは、ＦＰＧＡ上に種々の仕方で配列できるローカルメモリ、ルックアップテーブル、比較器及び乗算器のようなリソースを使用することができる。一実施形態では、各コアは、ＦＰＧＡ上に複数の構成可能なロジックブロック（ＣＬＢ）を使用する。
【００１３】
ＳＰＰ１００は、これらプロセスの結果を、次のエポックのためにオンチップ又はオフチップメモリに記憶することができる。一実施形態において、エポック内のタイムスライスは、各神経処理ユニットが複数の神経素子をモデリングするのを許す。モデリングされる神経素子の合計数は、（コアの数）＊（エポックにおけるタイムスライスの数）により与えることができる。使用されるタイムスライスが多いほど、シミュレーションが大きくなり、エポックが長くなり、且つ要求される神経素子アドレスが大きくなる。
【００１４】
神経モデリングにおいて、各神経素子は、多数の入力を有すると考えることができる。入力は、積の和のプロセスで合成することができ、各入力は、独特の重み係数で乗算される。この積の和のプロセスは、前シナプス計算の一例である。この積の和の出力は、単一の値となるが、後シナプス処理と称される一連の計算に通されて、単一の後シナプス処理（ＰＳＰ）出力を発生することができる。更に、アクティビティに依存するシナプスプロセス及び値に依存するシナプスプロセスを含む一連の塑性計算を遂行することができる。これらの塑性計算は、次のエポックに対して新たに学習した値を有するように重み値を変更することができる。
【００１５】
各神経素子のＰＳＰ出力は、次のエポックにおいて、多数の他の神経素子の入力として接続することができる。図１Ｂは、コア１２０の入力１２２及び出力１２４を示す図である。
【００１６】
図２は、ＳＰＰを使用する神経モデルの一例を示す。コア２００は、モデル特有形式の神経ユニットである。例えば、コア０は、視覚ニューロンをモデリングすることができ、コア１は、聴覚ニューロンをモデリングすることができ、コア２は、海馬ニューロンをモデリングすることができ、等々である。コア２００は、コアの神経形式に対して独特の係数を有することができ、コアによりモデリングされるニューロンの形式を定義する上で助けとなる。ＦＰＧＡにおいて、係数に依存するファンクションは、ルックアップテーブル（ＬＵＴ）として実施することができる。又、これらのＬＵＴは、異なる神経形式に対して異なるものである。
【００１７】
一実施形態において、係数は、異なるタイムスライス間で変化しない。従って、２５６個のタイムスライスがある場合には、各コアは、２５６個の同じ形式の神経素子をモデリングすることができる。より多くの同じ形式の神経素子が望まれる場合は、（所与の神経形式のコアの数）＊（エポックにおけるタイムスライスの数）により与えられる特定神経形式の神経素子の合計数と共に複数のコアを使用することができる。
【００１８】
インチップメモリ２０４及びオフチップメモリ２０４、２０６は、現在及び初期重み、例えば出力記憶テーブル（ＯＳＴ）でのＰＳＰ出力、及び接続テーブルを記憶することができる。各神経素子には、手前のエポックの他の神経素子からの出力である特定入力を関連させることができる。一実施形態では、ピンポンバッファのようなメモリを使用して、次のエポックにおける入力として与えられる全ての神経素子の出力を記憶する。一実施形態では、２つのテーブルを使用して出力が記憶され、一方のテーブルは、最後のエポックからの出力を含み、そしてもう一方のテーブルは、現在エポックからの出力で埋められる。新たなエポックがスタートすると、テーブルのファンクションをスイッチすることができる。
【００１９】
異なるタイムスライスにおける神経素子は、次のエポックに対するＰＳＰ出力を、現在タイムスライスにおいてコアへ直ちに送るのではなく、メモリを使用して記憶するように相互接続することができる。一実施形態では、各神経素子に対する入力の数は、脳の高度に接続された神経構造を良好にモデリングするために、１００以上（一実施形態では２５６）の比較的大きな数である。一実施形態では、神経素子の出力は、次のエポックにおいて、１００以上（一実施形態では２５６）の比較的多数の神経素子にも送られる。
【００２０】
又、神経素子には、入力に対して重みをロードすることもできる。一実施形態では、現在重みを、最後のエポックのＰＳＰ出力である入力値と共に、神経素子へロードすることができる。重みは、塑性計算によって変更し、そして次のエポックに使用するように更新することができる。一実施形態では、各重みが単一の神経素子により使用され、従って、単一の重みテーブルしか必要とされず、これは、神経素子により再びアクセスされる前に更新することができる。一実施形態では、現在重みが神経素子ごとに異なり、従って、各コアは、（神経素子当たりの重みの数）＊（タイムスライスの数）により与えられる多数の重みを使用し、これは、たとえ重みが他のコアに使用されなくても、コアの外部、例えば、ＢＲＡＭ（バッファランダムアクセスメモリ）に重みを記憶することが、より可能となるようにする。
【００２１】
一実施形態では、塑性計算に使用される初期の重みが、初期重みテーブルから与えられる。或いは又、初期重みは、ローカルで記憶することもできる。初期重みがローカルで記憶される場合には、ローカルで記憶される初期重みデータの量を最小にする構成を使用して、初期重みを選択することができる。
【００２２】
接続テーブルは、接続の指示を記憶することができる。一実施形態において、接続は、最後のエポックの指定の神経素子からの出力を現在エポックの指定の神経素子へ入力として送信すべきであることを指示する。出力テーブルは、出力テーブルの位置が出力のソースを指示するように配列することができる。接続テーブルの素子は、出力テーブルに対するポインタでよい。一実施形態では、接続テーブルは、神経素子ごとに出力テーブルに対してｍ個のポインタを有し、ここで、ｍは、神経素子当たりの入力の数である。
【００２３】
一実施形態では、コアには、最初に、係数及びＬＵＴがロードされる。次いで、各エポックの各タイムスライスに対して、そのタイムスライスの神経素子の各々に入力及び現在重みがロードされる。エポック内では、例えば、（コア０、タイムスライス０）、（コア１、タイムスライス０）・・・（コア２５５、タイムスライス０）、（コア０、タイムスライス１）・・・（コア２５４、タイムスライス２５５）、（コア２５５、タイムスライス２５５）のような順序でロードを進めることができる。ＰＳＰ出力及び更新された重みは、神経素子が処理を終了した後にメモリへ送出することができる。神経素子からメモリへのＰＳＰ出力及び更新された重みの転送は、ロードと同じ順序で行うことができる。一実施形態では、コアは、１つのタイムスライスについてロードすることができ、一方、他のコアは、手前のタイムスライスについて計算を行なう。例えば、コア１２は、タイムスライス１０についてロードすることができ、一方、コア２４５は、タイムスライス９について依然計算を行なうか又はメモリへの記憶を待機する。一実施形態では、システムは、少なくとも、新たなエポックに対する処理へ移行する前に出力記憶テーブルが完全に埋められるまで待機する。
【００２４】
図１Ｄに示すように、ＳＰＰ１４２を使用して脳ベースの装置（ＢＢＤ）１４０を制御することができる。一実施形態では、神経ユニットに対する幾つかの入力値をセンサ１４４から与えることができる。センサ信号、例えば、ビデオ、オーディオ、ホイール、モータ、触覚、サスペンション、加速度計、ジャイロ及び／又は電力管理センサからの信号を処理するか、又は適当な形式の神経素子へ入力として直接的に供給することができる。例えば、次のエポックに対する出力記憶テーブルのある部分は、センサデータであってもよいし、又はセンサデータから導出されてもよい。更に、ある出力記憶テーブル値は、アクチュエータ１４６を制御するように直接使用してもよいし、又はそのように処理してもよい。このように、ＳＰＰは、ロボット又は他のＢＢＤ装置を制御することができる。
【００２５】
本発明のＢＢＤは、その環境を探査して、それを経験しながら適応性振舞いを開発することのできる物理的にインスタンス生成される移動装置を含むことができる。又、ＢＢＤは、移動装置をその実世界環境において誘導するために移動装置に配置されるか又はリモート配置されるＳＰＰのような神経モデルを含むこともできる。
【００２６】
ＢＢＤは、ＳＰＰにおいて実施される神経モデルのような神経モデルを使用して環境について学習することにより、その振舞いを開発するか又は適応させることができる。移動装置は、その環境において自律的に移動することができる。ＢＢＤは、センサ信号を、ＳＰＰにおいて実施される神経モデルのような神経モデルへの入力として使用し、神経モデルがＢＤＤを制御できるようにする。例えば、移動装置は、視覚的特徴、例えば、同じ色を共有し、且つ個別の視覚的特徴、例えば、形状を有する複数の物体、例えば、赤の方形・対・赤の三角形、に接近してそれを見ることができる。移動装置は、学習経験を通して条件付けされた状態となり、１つのターゲット物体、例えば、赤のダイヤモンドを、複数の気の散る又は非ターゲット物体、例えば、その視界のシーンの赤の方形及び緑のダイヤモンドより好むようになる。移動装置は、可聴トーン又は他の刺激に応答してそれ自身をターゲット物体に向けることにより、その環境において移動しながらこの好みを行動的に学習することができる。
【００２７】
脳ベースの装置は、広範囲の環境条件とのリアルタイム対話について種々様々な多モードの能動的及び／又は受動的センサ入力を利用することができる。センサ入力は、全電磁スペクトルにわたる入力で単眼及び両眼視野の両方を包囲することができる。他のセンサは、触覚、嗅覚、聴覚、音響及び熱を含むが、これらに限定されない。例えば、脳ベースの装置は、視覚及び聴覚感知入力を神経モデルに与えることのできる視覚用のカメラ及びマイクロホンのようなセンサ、並びに移動のためのエフェクタ及びホイールのようなアクチュエータを有することができる。又、表面上を移動するときにその表面の反射率の差を感知することにより障害物を回避し、又、環境内でのＢＢＤの反射的ターンをトリガーするための赤外線（ＩＲ）センサを有することもできる。
【００２８】
種々の前シナプス計算、後シナプス計算及び塑性計算を使用することができる。神経モデルは、以下に述べる例において前シナプス計算、後シナプス計算、及び塑性計算に限定されるものではない。
【００２９】
図３Ａは、コア３００の一例を示す実施形態である。この例において、コア３００は、前シナプス計算３０２、後シナプス計算３０４及び塑性計算３０６を含む。一実施形態において、塑性計算３０６は、アクティビティ依存シナプスアクティビティ３０６ａ、及び値依存シナプスアクティビティ３０６ｂを含むことができる。又、図３Ａは、情報をコア３００へどのように通過できるかも示す。この実施形態では、塑性計算３０６は、後シナプス計算３０４からＰＳＰ出力信号Ｓnewを受け取る。塑性計算３０６は、このＳnew及び値遅延項ｄを使用して、重みテーブルの重みに対して更新を発生し、これは、メモリへ書き戻すことができる。前シナプス計算３０２は、ｍ個の重み及びｍ個の入力値を使用して、前シナプス計算における和を求めることができる。これは、次いで、後シナプス計算３０４へ送られ、この計算は、前シナプス計算３０２の出力と、最後のエポックに対して既に記憶されたＰＳＰ出力（これは、ローカルに記憶できる）とを使用する。コア３００からのＰＳＰ出力は、出力記憶テーブルへ返送することができ、そして変更された重みは、重みテーブルへ書き戻すことができる。
【００３０】
図３Ｂは、コア３２０の実施を示す。ｍ個の入力データ及びｍ個の重みが乗算ユニット３２２を通してループにされ、アキュムレータ３２４において和が求められる。ブロック３２６の後シナプス処理は、一実施形態では、乗算及びシフト或いは２回の乗算と、比較及びルックアップテーブル動作を含むことができる。後シナプス計算３２８は、単一テーブルルックアップと、ｍ回の減算、ｍ回の比較、ｍ回までの加算を含むことができる。重みデータは、次のエポックのためにメモリ３３０へ書き込むことができる。ＰＳＰ出力は、ローカル記憶し、出力記憶テーブルへ転送して、将来、他の神経素子により使用することができる。
【００３１】
図４は、ＳＰＰを使用するＢＢＤの一実施形態のオペレーションのフローチャートである。ステップ４００において、神経刺激を開始する。ステップ４０２において、センサデータが受け取られる。センサデータは、神経素子に直接供給することもできるし又はその入力を与えるように処理することもできる。ステップ４０３において、コマンドが受け容れられる。これらのコマンドは、放棄コマンド、無効化コマンド、等を含み、これは、各エポックの終了後に行うことができる。ステップ４０４において、ＢＰＰがステップ４０５で停止されるかどうかのチェックが行われる。ステップ４０６、４０７及び４０８は、１つのタイムスライスに対する計算を示す。ステップ４０６では、前シナプス計算及び後シナプス計算が各神経処理ユニットで行われる。ステップ４０７では、接続の重みが更新される。ステップ４０８では、出力及び変更された接続重みがメモリへ送られる。上述したように、これらのステップ４０６−４０８は、各コアに対して並列に行うことができる。ステップ４０９において、エポックに残留タイムスライスがある場合には、次のタイムスライス計算が始まる。ステップ４０６−４０８は、エポックのタイムスライスごとに繰り返される。ステップ４１２において、ＰＳＰ出力は、ＢＢＤのアクチュエータに対する信号を直接与えることもできるし、又はそのように処理することもできる。
【００３２】
種々の実施形態において、ＰＳＰ出力は、平均発射(firing)レート“ｓ”である。一実施形態では、ｓは、０（静止）から１（最大発射）までの範囲である。神経素子の状態は、その現在状態及び他の神経素子からの貢献の関数として更新することができる。
【００３３】
各神経素子のｍ個の入力は、ｓ1からｓmとして指示することができる。ｓ値は、データの非サインのバイトである。各神経素子のｍ個の重みは、ｃ1からｃmとして指示することができる。ｃ値は、単一のサインされたバイトである。前シナプス処理は、次の式で表わすことができる。
2009508182.tif 000003
但し、ｔは、現在エポックを表わす。これは、ＶｉｒｔｅｘTM−ＩＩＸｉｌｉｘTMＦＰＧＡにおける１８ｘ１８乗算器のような乗算器を使用することにより実施することができる。
【００３４】
後シナプス処理は、次の式で表わすことができる。
2009508182.tif 000004
但し、Ａ（ｔ）は、上述した現在の前シナプス出力であり、Ｓnewは、神経素子の現在ＰＳＰ出力値であり、Ｓoldは、最後のエポックにおける神経素子のＰＳＰ出力値であり、ｇは、倍率係数であり、そしてｔは、持続係数である。ｔａｎｈ（ｘ）は、−１ないし１の範囲への圧縮を与える。
【００３５】
φ（ｘ）は、次のように表わされるトリガー関数である。
2009508182.tif 000005
但し、ギリシャ文字のデルタは、トリガー係数である。
トリガー関数φ（ｘ）は、ｔａｎｈ（ｘ）関数と共に、Ｓnewが０と１との間であることを保証する。Ｓnew値は、出力記憶テーブルへ送信することができる。又、Ｓnew値は、次のエポックにおいてＳoldとして使用すべくローカル記憶することもできる。
【００３６】
後シナプス処理は、ＦＰＧＡにおいて次のように実施することができる。Ｓold値は、持続パラメータωで乗算することができる。ωが級数１／２、１／４、１／８・・・の値に制限されると仮定すれば、乗算は、シフトで実施することができる。乗算（又はシフト）の結果は、前シナプス処理からのＡ（ｔ）値に加算することができる。加算の結果は、ＶｉｒｔｅｘTM−ＩＩ  ＸｉｌｉｘTMＦＰＧＡの１８ｘ１８乗算器のような乗算器において倍率係数ｇで乗算されて、ｔｅｍｐ値を生成することができる。このｔｅｍｐ値は、ＬＵＴ1として実施される関数φ（ｔａｎｈ（ｔｅｍｐ））への入力として使用されて、Ｓnewを決定することができる。従って、次のようになる。
2009508182.tif 000006
但し、Ｓold＞＞Ｗは、Ｗスペースだけ右シフトであり、これは、ωＳoldと同じであり、ここで、ω＝２-wである。
【００３７】
或いは又、ｔｅｍｐを、定数であるｔａｎｈ-1（δ）と比較し、そしてｔｅｍｐ≧ｔａｎｈ-1（δ）である場合には、ｔｅｍｐ値を、ＬＵＴ1として実施される関数ｔａｎｈ（ｔｅｍｐ）への入力として使用して、Ｓnewを決定することができる。さもなければ、Ｓnew＝０である。この別の実施形態は、異なる神経形式のコア間でのＬＵＴ1の共有を許すことができる。従って、次のようになる。
2009508182.tif 000007
【００３８】
塑性処理は、次のように表わされる。
2009508182.tif 000008
但し、Δｃj＝ε(ｃj(０)−ｃj(ｔ))は、忘却ルールであり、ηＳＦ(Ｓ)は、値独立学習ルールであり、そしてηＳＦ(Ｓ)Ｖ(ｄ)は、値依存学習ルールである。ｃj(０)は、ｊ番目の入力に対する初期重みであり、そしてｃj(ｔ)は、ｊ番目の入力に対する現在重みである。εは、減衰定数であり、ηは、学習率定数であり、Ｓは、後シナプス出力、例えば、Ｓnewである。
【００３９】
Ｆ(Ｓ)は、次のように表わすことができる。
2009508182.tif 000009
但し、θ1及びθ2は、スレッシュホールド定数で、（０＜θ1＜θ2＜１）であり、κ1及びκ2は、傾斜定数であり、そしてρは、飽和パラメータで、全てのコアに対して６である。
【００４０】
Ｖ(ｄ)は、値学習の強さに関係した関数である。この関数又はそれに関連したルックアップテーブルは、必要に応じて調整することができる。
【００４１】
一実施形態において、Ｖ(ｄ)は、次のようにあらわされる。
2009508182.tif 000010
但し、ｄは、値依存事象の開始以来のエポックの数のような遅延である。値学習が行なわれないときには、ｄは、０であるように定義することができ、Ｖ（ｄ＝０）は、１であるように定義される。値学習中のｄ値は、１からｄmaxまでの範囲であり、ここで、ｄmax＊（エポック周期）は、値学習周期である。従って、一例において、エポックは、１０ｍｓであり、そして望ましい値学習周期は、９００ｍｓであり、従って、ｄmaxは、９０である。ｆ(ｄ)は、ほぼ０で開始し、１のピークに到達し、そしてｄmaxにおいてほぼ０に復帰する関数である。ｆ(ｄ)は、値学習のオペレーションの開始を遅延させそしてそれを拡散させるのに使用できる。ｆ(ｄ)について考えられる１つの級数は、ポイントf(dmax/9)= 0.1, f(2dmax/9)= 0.1, f(3dmax/9)= 0.3, f(4dmax/9)= 0.7, f(5dmax/9)= 1.0, f(6dmax/9)= 1.0, f(7dmax/9)= 0.7, f(8dmax/9)= 0.3,  f(dmax)= 0.1を含む曲線によって定義できる。
2009508182.tif 000011
【００４２】
2009508182.tif 000012
【００４３】
一実施形態において、ＬＵＴ3ルックアップ及び乗算は、Ｖａｌｕｅ＿Ｅｎａｂｌｅｄフラグがセットされないときに行なわれ、従って、処理時間、ひいては、潜在的にエポック長さは、もはや値学習周期の間にはない。特定の神経形式が値学習を実施しないようにすることが望まれる場合には、これら神経形式のコアは、ダミー値を含むＬＵＴ3を有することができる。
【００４４】
ｍ個の重みの各々について、忘却ルール部分は、現在の重みから係数Ｅを減算し、この減算値が元の重みより小さいかどうかチェックし、次いで、元の重み又は減算値の大きい方を忘却ルール部分に加算することにより、近似できる。この近似は、ｍ個の重みの各々について、乗算ではなく、減算及び比較しか必要としない。従って、次のようになる。
2009508182.tif 000013
【００４５】
Ｖａｌｕｅ＿Ｅｎａｂｌｅｄフラグがセットされないときには、ｄは、０の値をもつことができ、そしてＬＵＴ3［ｄ＝０］は、１の値をもつことができ、従って、ＬＵＴ2［Ｓ］＊ＬＵＴ3［ｄ＝０］＝ＬＵＴ2［Ｓ］となり、これは、値独立の学習ルールを与える。同様に、ＬＵＴ3［ｘ］は、値学習を行なわないコアにおける全てのｘについて１となる。ＬＵＴ3のサイズは、学習周期のエポックの合計数より少ない値を使用することにより小さく保持することができる。一実施形態において、値学習の開始以来のエポックのグループは、同じｄ値を有することができる。例えば、エポック１−１０は、ｄ＝１に対応することができ、エポック１１−２０は、ｄ＝２に対応することができ、等々である。
【００４６】
各コアに対して独特の係数は、後シナプス倍率係数であるｗ（又はＷ）及びｇ、後シナプス計算のためのφスレッシュホールド及びｔａｎｈルックアップテーブル（ＬＵＴ1）を含むことができる。塑性関数については、コア特有の変数は、Ｆ＊ｎルックアップテーブル（ＬＵＴ2）、減衰定数Ｅ、及び値学習に関連した変数、例えば、ＬＵＴ3である。これらの計算を実施するための例示的コードがアペンディックスＩに示されている。
【００４７】
上述した例は、ＳＰＰの神経モデルに位相情報を使用するものではない。これは、計算を簡単にすると共に、コアをより高速で動作し、且つより少数のＦＰＧＡリソースの使用を許すことができる。一実施形態では、ＳＰＰは、位相情報を考慮し及び／又は電圧独立、電圧依存、及び位相独立のシナプスコネクタの貢献を区別する神経モデルである。
【００４８】
ＰＳＰ出力値の各々に位相を関連付けることができる。例えば、位相（ｐ）は、０から２πの範囲の角度によりニューロンユニットのアクティビティの相対的タイミングを表わす個別の値に分割することができる。５ビットを使用して位相をエンコードする場合には、３２の個別の位相をエンコードすることができる。一実施形態において、各神経素子の出力は、ｓ値をエンコードするためのバイト及びｐ値をエンコードするためのバイトを含むことができる。ｓ及びｐ値は、ＳＰＰにおいて対として転送することができ、出力記憶テーブルの記憶要件、及びＰＳＰ出力に対する送信要件が実際上倍増される。又、ｐ値を使用したときには、コアにおける前シナプス計算、後シナプス計算及び塑性計算も複雑化される。ＳＰＰに使用するように適応させることのできる位相依存の前シナプス計算、後シナプス計算及び塑性計算の例が、参考としてここに援用するＳｅｔｈ氏等の論文“Visual Binding Through Reentrant Connectivity and Dynamics Synchronization in a Brain-based Device”, Cerebral Cortex V14 N11、第１１８５−１１９９ページに見られる。
【００４９】
ＬＵＴを決定するための係数を含む例示的係数を、異なる神経形式についてテーブル１及び２に示す。
テーブル１：ニューロンユニットパラメータ
2009508182.tif 000014
【００５０】
テーブル２：解剖学的突出及び接続形式の特性
2009508182.tif 000015
【００５１】
図１Ｃは、環境においてＢＢＤの振舞いを誘導することのできる神経モデルの領域的及び機能的神経解剖構成を例示する図である。これらの領域は、ＳＰＰのコアとして実施することができる。神経モデルは、哺乳類の神経系の解剖学及び生理学において、遥かに少数のニューロン及びあまり複雑でないアーキテクチャーで、モデリングできることが明らかであろう。神経モデルは、人間の脳の類似皮質及び皮質下領域に基づいて表示された多数の神経エリアを含むことができる。従って、図１Ｃは、Ｖ１、Ｖ２、Ｖ４、ＩＴ、Ｓ、Ａ−左、マイク−左、Ａ−右、マイク−右、及びＣと表示された各神経エリアを示し、そのアクティビティがＢＢＤのトラッキングを制御する。各神経エリアＶ１、Ｖ２、等は、ニューロンのローカルポピュレーションを各々表わす異なる形式のニューロンユニットを含む。図１Ｃに示された各楕円（「トラッキング」を除く）は、多数のニューロンユニットを各々有する異なる神経エリアを示す。
【００５２】
又、図１Ｃの神経解剖構成は、神経モデル全体にわたって種々の突出Ｐも概略的に示している。ある突出は、１つの神経エリアから別の神経エリアへ「フィードフォワード」することができ、例えば、突出Ｐ１は、神経エリアＶ１から神経エリアＶ２へのものである。又、突出Ｐは、神経エリア間の「リエントラント」でもよく、例えば、神経エリアＩＴから神経エリアＶ４へのリエントラント突出Ｐ２、及び神経エリアＶ４から神経エリアＶ２へのリエントラント突出Ｐ４がある。“Ｘ”でマークされたリエントラント突出Ｐは、以下に詳細に述べる「傷害」実験中に神経モデルから除去されたものである。更に、突出Ｐは、図１Ｃの凡例で示された特性を有し、それらは、（１）「興奮電圧独立」、（２）「興奮電圧依存」、（３）「塑性」、（４）「抑制」、及び（５）「値依存」である。
【００５３】
図１Ｃに示す神経モデルは、４つのシステム、即ち視覚システム、トラッキングシステム、聴覚システム、及び値システムで構成することができる。他の入力及び出力をもつ他のシステムも使用できる。
【００５４】
図１Ｃ  Ｂ視覚システム、神経エリアＶ１、Ｖ２、Ｖ４、ＩＴ
視覚システムは、霊長類の後頭側頭又は腹側皮質経路においてモデリングすることができ、そして神経エリアＶ１→Ｖ２→Ｖ４→ＩＴを含み、ここで、次々のエリアにおけるニューロンは、下側側頭皮質において各フィールドがほぼ全視界をカバーするまで漸次より大きな感受性フィールドを有する。カメラからの視覚映像は、色及び縁についてフィルタリングすることができ、そしてフィルタリングされた出力は、エリアＶ１における神経アクティビティに直接作用する。Ｖ１は、サブ領域（図示せず）に分割することができ、その各々は、緑（Ｖ１−緑）、赤（Ｖ１−赤）、水平線セグメント（Ｖ１−水平）、垂直線セグメント（Ｖ１−垂直）、４５度線（Ｖ１−対角−右）、及び１３５度線（Ｖ１−対角−左）に対して優先的に応答するニューロンユニットを有する。この視覚システムは、視覚システム内及び視覚システムと他の皮質エリアとの間の高レベル相互作用を分析するための計算上扱い易い基礎を与える。
【００５５】
神経エリアＶ１のサブ領域は、神経アリアＶ２の対応サブ領域へトポグラフ的に突出することができる。エリアＶ２におけるニューロンユニットの各フィールドは、狭いものであり、カメラの映像からのピクセルに厳密に対応する。神経エリアＶ２は、そのサブ領域内及びその間に興奮及び抑制の両リエントラント接続をもつことができる。各Ｖ２サブ領域は、それに対応するＶ４サブ領域にトポグラフ的に広範囲に突出することができ、従って、神経エリアＶ４＝ｓの各フィールドは、神経エリアＶ２のものより大きい。神経エリアＶ４のサブ領域は、非トポグラフ的リエントラント接続でそれに対応する神経エリアＶ２サブ領域へ突出して戻ることができる。エリアＶ４のサブ領域内及びその間のリエントラント接続は、エリアＶ２の場合と同様である。Ｖ４は、次いで、神経エリアＩＴへ非トポグラフ的に突出し、従って、神経エリアＩＴにおける各ニューロンユニットは、３つの異なるＶ４サブ領域からランダムに選択された３つのＶ４ニューロンユニットから入力を受け取ることができる。従って、ＩＴのニューロンユニットが視覚入力の組み合せに応答する間に、所与のＩＴニューロンユニットへのシナプス入力のレベルが非常に均一であり、これは、個々のＩＴニューロンユニットのアクティビティが全アクティビティパターンを支配するのを防止する。ＩＴニューロンユニットは、その可塑接続を経て他のＩＴニューロンユニットへ突出し、そして非トポグラフ的リエントラント接続を経て神経エリアＶ４へ戻る。
【００５６】
図１Ｃ−トラッキングシステムＢ神経エリアＣ
トラッキングシステムは、ＢＢＤが聴覚及び視覚刺激に向くのを許す。神経エリアＣ（上丘と同様の）のアクティビティは、ＢＢＤがそのカメラ目線をどこに向けるか指令することができる。ＢＢＤにおけるトラッキングは、エリアＣにおけるニューロンユニットのアクティビティのベクトル加算に基づいてホイール又はトラックへの信号により達成することができる。エリアＣの各ニューロンユニットは、その好ましい方向に一致する各フィールドを持つことができ、そしてそのエリアは、アクティビティが主としてエリアＣの左側にある場合に、左に向いたターンを引き起こすＢＢＤホイールへの信号が発生されるようなトポグラフ的構成を有する。聴覚神経エリア（Ａ−左及びＡ−右）は、エリアＣの各同側への強い興奮性突出を有し、ＢＢＤを音源に向けさせる。神経エリアＶ４は、トポグラフ的にエリアＣへ突出し、そのアクティビティは、ＢＢＤがその目線を視覚物体（例えば、赤い三角形）の中心に向けるようにさせる。神経エリアＩＴ及び値システムＳの両方がエリアＣに突出し、経路ＩＴ→Ｃ及びＩＴ→Ｓにおける可塑接続は、突起認知カテゴリーを反映するアクティビティのバイアスを生成することによりターゲットの選択を容易にする（以下の値システムを参照）。以下に述べるように、コンディショニング又はトレーニング段階の前には、バイアスがないので、ＢＢＤは、その目線を主としてその環境内において２つの物体（例えば、赤の三角形と赤の方形）の間に向ける。視覚物体（例えば、赤の三角形）を好むことを学習した後に、可塑接続の強さが変化すると、好ましい物体の位置に対応するエリアＣの部分に大きなアクティビティを生じさせる。
【００５７】
図１Ｃ  Ｂ聴覚システムＢ神経エリア、マイク−左、マイク−右、Ａ−左、Ａ−右
このシステムは、マイクロホンからの入力を、刺激されたニューロンユニットアクティビティへ変換する。一実施形態において、神経エリア「マイク−左」及び「マイク−右」は、それに対応するマイクロホン１６、１８が指定の周波数範囲内の充分な振幅の音を検出したときに各々アクチベートすることができる。「マイク−左」／「マイク−右」は、エリア「Ａ−左」／「Ａ−右」のニューロンユニットへ突出する。片側からの音は、聴覚システムの同側にアクティビティを生じさせ、これは、次いで、エリアＣの同側にアクティビティを生じさせ、ＢＢＤを音源に向けさせる。
【００５８】
図１Ｃ  値システムＢ神経エリアＳ
シミュレーションされた値システムにおけるアクティビティは、突起知覚事象の発生を信号することができ、このアクティビティは、経路ＩＴ→Ｓ及びＩＴ→Ｃにおける接続強度の変調に貢献する。最初に、以下に述べる学習段階において、神経エリアＳは、聴覚システムにより検出された音でアクチベートされる（神経系１２の「Ａ−左」→Ｓ及び「Ａ−右」→Ｓを参照）。エリアＳのアクティビティは、突起事象によりトリガーされ、神経モデルの大きな領域に影響し（以下の「シナプス塑性」の章で述べる）、そして数サイクル間持続するという点で上行性神経変調システムのアクティビティと同様である。更に、トラッキングエリアＣへのその突出のために、エリアＳは、実世界の環境においてＢＢＤの振舞いに直接影響する。
【００５９】
図１Ｃに示す各神経エリアＶ１、Ｖ２等内のニューロンユニットの幾つかのパラメータの値の詳細が前記テーブル１に示されている。神経エリアＶ１、Ｖ２等のニューロンユニットの解剖学的突出及び接続形式の詳細が前記テーブル２に示されている。良く知られたように、ニューロンユニットは、前又は後シナプスと考えることができる（シナプス、並びに前及び後シナプスニューロンの説明については、“Universe of Consciousness”、エデルマン及びトノニ著、ベーシックブック、２０００、図４．３を参照）。
【００６０】
ニューロンユニットＢ一般
一実施形態では、神経モデル１２の神経エリアＶ１、Ｖ２等内のニューロンユニットは、平均発射レートモデルによってシミュレーションされる。各ニューロンユニットの状態は、平均発射レート変数（σ）及び位相変数（Ｐ）により決定される。各ニューロンユニットの平均発射レート変数は、ほぼ１００ミリ秒の時間周期中のほぼ１００個のニューロンのグループの平均アクティビティ又は発射レートに対応する。発射アクティビティの相対的なタイミングを指定する位相変数は、個々のニューロンのスパイクアクティビティのモデリングに関連した計算コストを負うことなく一時的な特殊性をリアルタイムで与える（以下のニューロンユニットアクティビティ及び位相を参照）。
【００６１】
シナプス接続−一般
一実施形態において、例えば、Ｖ１又はＣのような所与の神経エリア内におけるニューロンユニット間、及び神経エリア間のシナプス接続、例えば、Ｖ２→Ｖ４又はＣ→Ｖ４は、電圧独立又は電圧依存、位相独立又は位相依存、そして塑性又は非塑性にセットされる。電圧独立接続は、ニューロンの後シナプス状態に関りなく、後シナプスニューロンにシナプス入力を与える。電圧依存接続は、後シナプスの減極をアクチベートする必要のある受容体形式（例えば、ＮＭＤＡ受容体）の貢献を表わす。換言すれば、前シナプスニューロンは、その軸索に沿ってシナプスを経て後シナプスニューロンへ信号を送信する。後シナプスニューロンは、この信号を受信して、それを、他の前シナプスニューロンから受け取った他の信号と一体化する。
【００６２】
電圧独立接続とは、前シナプスニューロンが高いレートで発射する場合に、シナプスを経てそれに接続された後シナプスニューロンも高いレートで発射するというものである。
【００６３】
電圧依存接続は、それとは異なる。前シナプス入力信号を受け取ったときに後シナプスニューロンが既にあるレートで発射している場合には、電圧依存接続は、後シナプスニューロンを更に発射させる。後シナプスニューロンは、アクティブであり、即ち既に発射しているので、このニューロンは、あるスレッシュホールドレベルにある。それ故、前シナプス接続は、後シナプスニューロンを、より多く発射するように調整する。電圧依存接続は、前シナプスニューロンがいかにアクティブであるかに関らず、後シナプスニューロンスレッシュホールド値以下である場合には、それに全く影響しない。即ち、後シナプスニューロンは、アクティビティの所与のスレッシュホールドを、電圧依存シナプス接続に応答するように、又はそれにより調整するようにしなければならない。
【００６４】
図１Ｃの神経モデルでは、全ての神経エリア内興奮性接続、及び全ての神経エリア間リエントラント興奮性接続は、電圧依存性である（図１Ｃ及びテーブル２を参照）。これらの電圧依存接続は、上述したように、神経力学において調整的役割を演じる。
【００６５】
位相依存のシナプス接続は、後シナプスニューロンユニットのアクティビティ、即ち発射レート、及び位相の両方に作用し、一方、位相独立のシナプス接続は、そのアクティビティのみに作用する。神経モデルにおける全てのシナプス経路は、運動出力に含まれるもの（テーブル２：Ａ−左／Ａ−右→Ｃ、Ｃ→Ｃを参照）又は知覚入力に含まれるもの（テーブル２：マイク−左／マイク−右→Ａ−左／Ａ−右、Ａ−左→Ａ−右、Ｖ１→Ｖ２）を除いて位相依存である。というのは、これらの界面における信号は、大きさのみで定義されるからである。塑性接続は、以下に述べるように、値独立であるか又は値依存である。
【００６６】
ニューロンユニットアクティビティ及び位相Ｂの詳細
テーブル１に示すように、テーブル１に示すように、エリアＶ１は、入力神経エリアであり、そのアクティビティは、カメラの映像に基づいてセットすることができる。神経エリアＶ１、Ｖ２及びＶ４は、色（例えば、赤及び緑）及び線の向き（例えば、０、４５、９０及び１３５度）についてニューロンユニットが各々選択される６個のサブエリアを有することができる。神経エリア「マイク−左」及び「マイク−右」は、入力神経エリアであり、それらのアクティビティは、マイクロホンからの入力に基づいてセットされる。
【００６７】
又、テーブル１は、各神経エリア又はサブエリアにおけるニューロンユニットの数も示すことができる（「サイズ」欄）。神経エリアＶ１、マイク−左及びマイク−右を除き各エリアにおけるニューロンユニットは、特定の発射スレッシュホールド（σ発射）、位相スレッシュホールド（σ位相）、それを越えると電圧依存接続が有効になるスレッシュホールド（σ−ｖｄｅｐ）、持続パラメータ（ω）、及び倍率ファクタ（ｇ）を有する。
【００６８】
テーブル２は、神経モデルの解剖学的突出及び接続形式の特性を示す。前シナプスニューロンユニットは、所与の確率（Ｐ）及び所与の突出形状（樹枝状）で後シナプスニューロンユニットに接続する。この樹枝状分岐の形状は、高さ及び巾（ｈｘｗ）をもつ長方形“［］”であるか、内径及び外径（ｒ１、ｒ２）によって形状が限定されるドーナツ形状“θ”であるか、前シナプスニューロンユニットが後シナプスエリアの左（右）側にのみ突出している左のみ（右のみ）、或いは前シナプス及び後シナプスニューロンユニットのいかなる対も所与の接続確立を有している非トポグラフ“非トポ”である。初期接続強度Ｃi（０）は、最小及び最大値（ｍｉｎ、ｍａｘ）により与えられた範囲内でランダムにセットされる。Ｃi（０）の負の値は、抑制接続を指示する。“イントラ”とマークされた接続は、視覚サブ領域内の接続を示し、そして“インター”とマークされた接続は、視覚サブ領域間の接続を指示する。抑制“インター”突出は、形状のみ又は色のみに応答する視覚サブ領域を接続し（例えば、Ｖ４−赤→Ｖ４−緑、Ｖ４−水平→Ｖ４−垂直）、興奮性「インター」突出は、形状サブ領域を色サブ領域に接続する（例えば、Ｖ４−赤→Ｖ４−垂直）。＃でマークされた突出は、値依存である。接続形式は、位相独立／電圧独立（ＰＩ）、位相依存／電圧独立（ＶＩ）であり、又は位相依存／電圧依存（ＶＤ）である。η、θ1、θ2、κ1及びκ2は、塑性接続を意味する。Ｖ４からＩＴへの接続は、エリアＩＴにおける所与のニューロンユニットが、３つの異なるＶ４サブエリアからランダムに選択された３つのニューロンユニットに接続されるという点で特別である。
【００６９】
ニューロンユニットのこのモデルでは、後シナプスの位相は、最も強くアクティブな前シナプス入力の位相と相関される傾向がある。このニューロンユニットモデルは、簡単なネットワーク及び完全な神経モデル（図１Ｃ）の両方において同期的にアクティブなニューロン回路が出現するのを容易にし、このような出現は、リエントラント接続、塑性及び振舞いにより課せられる付加的な制約を含む。
【００７０】
シナプス塑性
シナプスの強度は、前及び後シナプスニューロンユニットの位相及びアクティビティに依存するシナプスルールに基づいて変更を受ける。塑性シナプス接続は、値独立（図１ＣにおいてＩＴ→ｌＴを参照）であるか、又は値依存（図１ＣにおいてＩＴ→Ｓ、ＩＴ→Ｃを参照）である。これらルールは、両方とも、抑圧及び増強の領域を定義するスレッシュホールドが前シナプスと後シナプスのニューロンユニット間の位相差の関数である変更ＢＣＭ学習ルールをベースとすることができる（図１Ｃの挿入図を参照）。
【００７１】
特殊目的プロセッサを使用する神経モデルを示す図２を参照する。ホストＰＣ２０８は、テーブル及び係数を初期化することができる。次いで、このデータを、ＦＰＧＡの一部分であるパワーＰＣのようなプロセッサ２１０にダウンロードすることができる。ホストＰＣ２０８は、プロセッサに対する双方向接続を維持して、ネットワークを監視すると共に、「学習した」データをアップロードすることができる。別の実施形態では、ＦＰＧＡは、ホストＰＣとは独立して働くことができる。
【００７２】
パワーＰＣのようなプロセッサ２１０は、ネットワークのための管理サービスを提供することができる。プロセッサは、ホストＰＣ２０８との双方向接続を維持することができる。プロセッサ２１０は、初期重み、ＰＳＰデータ及び接続テーブルを、ＤＲＡＭのようなオフチップメモリ２０４及び２０６にダウンロードすることができ、又、方程式のための種々のＬＵＴ、並びに係数及びインデックスを伴うブロックランダムアクセスメモリ（ＢＲＡＭ）のようなオンチップメモリ２０２を初期化することもできる。又、プロセッサ２１０は、ネットワークの健全さ及びアクティビティ、即ちデータバスの使用状態、オフチップ接続のパーセンテージ、平均ＰＳＰ値、等についてリアルタイムメトリックを遂行することもできる。
【００７３】
ＤＲＡＭのようなオフチップメモリ２０４及び２０６は、神経シミュレーションの記憶されたデータを保持することができる。このデータは、前シナプス処理に対する重み、「後シナプスポテンシャル」（ＰＳＰ）データとも称される出力データ、及び神経素子の相互接続を指示する接続テーブルを含むが、これらに限定されない。
【００７４】
ＢＲＡＭのようなオンチップメモリ２０２は、小さな係数及びＬＵＴ、並びにＰＳＰのためのＦＩＦＯ、及び各素子により処理される重みを保持することができる。実行時にロードされる重み、ＰＳＰデータ、及び接続テーブルに加えて、各素子は、独特のオリジナル重み、及び手前のエポックからのそのＰＳＰをローカル記憶することができる。アペンディックスＩＩは、一実施形態のシステムに対するメモリ要件を例示する。
【００７５】
図５Ａ−５Ｄは、本発明の一実施形態における入力、出力及び重みの転送を示す。入力、出力及び重みの転送は、データのための複雑なアドレス機構を必要としない所定の順序で行うことができる。入力、出力及び重みは、例えば、どんなコアがデータのソースであるかメモリに分るように所定の順序で転送することができる。出力記憶テーブル、現在重みテーブル及び接続テーブルのデータは、この所定の順序に基づいてアドレスすることができる。一実施形態では、データが神経素子の番号に基づいてこれらのテーブルに書き込まれる。例えば、データは、（コア０、タイムスライス０）、（コア１、タイムスライス０）・・・（コア２５５、タイムスライス０）、（コア０、タイムスライス１）・・・（コア２５４、タイムスライス２５５）、（コア２５５、タイムスライス２５５）の順序に基づいて転送することができ、次いで、次のエポックに対してこの順序を繰り返すようにループする。
【００７６】
図５Ａを見ると、現在コア、この場合コア５８、に対するソース神経素子を指すポインタである次のｍ個のポインタを得るように接続テーブル５０２に命令することができる。ソース神経素子を指示する接続テーブル５０２からのｍ個のポインタは、コア５８に対するＰＳＰ入力データを得るために出力記憶テーブル５０４へ送信することができる。次のｍ個の重みは、コア５８に与えるために現在重みテーブル５０６から得ることができる。これらのｍ個の重みは、ＰＳＰ入力データに対応するように順序付けすることができる。ｍ個のＰＳＰ値及びｍ個の重みは、次いで、コア５８により処理することができる。図５Ｂは、コア５９に対して繰り返されるこれらのステップを示す。
【００７７】
図５Ｃは、出力記憶テーブル５０８及び現在重みテーブル５０６へのデータの書き戻しを示す。コアは、所定の順序に従ってメモリへデータを書き込むことができる。図５Ｃの例では、コア３５の出力が出力記憶テーブル５０８へ書き込まれる一方、コア３４のｍ個の更新された重みが現在重みテーブル５０６に書き込まれる。図５Ｄは、次のコアに対して繰り返されるこれらのステップを示す。
【００７８】
本発明の一実施形態は、神経素子及びそれらの相互接続をモデリングするためのＦＰＧＡベースの拡張可能なアーキテクチャーである。このアーキテクチャーは、単一のチップ上にできるだけ多数の素子をシミュレーションすることができ、そして非常に多数の同様のチップへの接続を許す相互接続構成を与えることができる。ＦＰＧＡ回路の高い速度は、非常に多数の神経素子をモデリングするためにリソースを共有する能力を与えることができる。共有されるべきリソースは、前シナプス（積の和のような）、後シナプス、及び塑性（アクティビティ依存及び値依存プロセス計算のような）を遂行する計算エンジンを含むことができる。回路の共有及びある程度の並列な複製は、大量の素子のモデリングを許すことができる。これらの全てと共に、素子の初期条件を前ロードし、そしてそれらのシミュレーションの最終状態を読み取るための手段を設けることができる。最終的に、種々の神経プロセスをシミュレーションする有効なツールを形成するために、シミュレーションの始めに相互接続を再構成するための手段を設けることができる。
【００７９】
設計上の１つのチャレンジは、全ての基本的計算ユニットを表わし、ネットワーク内の全ての素子間でデータをルーティングすることである。一実施形態では、各素子は、２５６個程度の入力（及び関連重み）を有することができる。基本的計算ユニットのプールを一緒に結び付ける簡単な接続網は、利用可能なルーティングリソースを若干迅速に使用する。このアプローチは、各々の新たな相互接続モデルに対してＦＰＧＡの顕著な再構成も要求する。
【００８０】
各素子がそれ自身の計算エンジンを有し、その全ての入力及び出力をチップ上に個々にルーティングするのではなく、共有計算エンジン（ＮＰＵ又は「コア」とも称される神経処理ユニット）及び共通のデータ配布バスの構成が提案される。単一エポック周期のコースにわたり、個々の神経素子入力及びそれらの各重みをコアへ配送することができる。コアは、積の和、後シナプス及び学習プロセスを実行し、神経素子に対する単一の出力及び更新された重みを生成する。このデータセットは、次のエポックに使用すべく記憶テーブルへ返送される一方、別の素子のデータがコアへ通される。エポックの長さと、コアが素子のプロセスを計算できる速度とが与えられると、単一のコアが多数の素子にサービスすることができる。素子の数が増加する場合には、大量の素子の計算を実行することができる。一実施形態では、１２８個のコアがチップにある状態で、その各々は、エポックの時間周期内に２５６個までの素子にサービスすることができ、３２７６８個の神経素子のシミュレーションを生じさせる。各コアが多数の素子間に共有される場合には、より少数のコアを使用して、同じ数の神経素子のモデリングを行うことができる。
【００８１】
共通データ配布バスは、各素子に対する入力値を、各入力に対する重みファクタと共に指定のＮＰＵへ配送することができる。重みデータ値は、各素子に厳密に関連付けることができ、従って、ＳＤＲＡＭの大型記憶メモリから順次に配送することができる。各素子のデータが順次に必要とされるときには、ＳＤＲＡＭがアドレスされ、データバスに沿ってコアへ送信されたデータが、その素子に使用される。入力データ値は、手前のエポックからの他の素子の出力を表わす。
【００８２】
一実施形態では、各チップに３２７６８個の素子があり、これは、同じ数の記憶された値が所与の素子への考えられる入力として得られることを意味する。他のチップ上に配置される他の素子からの出力を含むようにシミュレーションの将来の拡張を受け容れるためには、これらオフチップソース値のための付加的な記憶量が必要とされる。現在、その目的で必要とされるデータの量は、３２７６８以下であると仮定される。これは、素子のための入力をプルするために、６５５３６個のデータ値のプールを与える。それらは、出力記憶テーブル（ＯＳＴ）と称されるものに保持することができる。各素子は、これらの値の２５６個までをデータセット全体から選択することを必要とする。というのは、例えば、素子＃１は、素子３４、４５６、１０９３、等から入力を得ることができ、一方、素子＃２は、素子１、６、１２、４５６、等から入力を得ることができるからである。他の神経解剖学のモデルについて決定された他の構成は、これらの接続を再定義することができる。
【００８３】
このため、テーブル内の６５５３６個の値の中から取り上げられた入力ソースのリストを供給する手段が提案される。別の大型記憶ＳＤＲＡＭメモリを使用することができる。ＳＤＲＡＭは、重みテーブルと同様に、順次にアクセスできるが、ＳＤＲＡＭの各アドレスにより提示されるデータは、出力記憶テーブルを指すポインタとなる。ＯＳＴのデータは、エポックの間の各素子の出力であり、そしてスタティックであるＳＤＲＡＭのデータは、そのとき素子に使用されるべき値を保持するＯＳＴの位置を指すポインタである。このＳＤＲＡＭのデータは、入力ポインタと称される。この解決策の付加的な効果は、異なる接続を伴う別のモデルに対して神経シミュレーションを再構成するのに、ＯＳＴにおける異なるアドレスセットをＳＤＲＡＭに再ロードするだけでよいことである。ＦＰＧＡの再構成は、必要とされない。
【００８４】
所与の神経システムをこのシステム上で動作させるために、重みテーブル及び入力ポインタをＳＤＲＡＭにロードすることができる。又、後シナプス及び学習プロセスに使用される係数を再ロードすることもできる。これに対してＦＰＧＡのプロセッサを使用することができる。システムがパワーアップされたときに、プロセッサは、ネットワーク接続を経て受け取ることのできるファイルからデータをロードする（例えば、ＴＣＰ／ＩＰ）。データがロードされた後に、プロセッサは、フラグをセットし、そして神経シミュレーションがそれ自身で動作することができる。出力値が発生されて、次のエポックに使用すべくメモリへ返送されるときに、入力及び重みをメモリからフェッチ及びロードするシーケンスを、各素子について繰り返すことができる。このプロセスは、実験が必要となり、その時点で、プロセッサがプロセスを停止して分析のためにテーブルからデータをダウンロードするように介入できる限り、繰り返される。
【００８５】
この設計の成功性は、プロセスが実行される前にオフラインで素子間に相互接続を予め構成する能力に依存する。オフラインソフトウェアは、希望の接続の入力リストを通して機能し、これらの接続を、ＦＰＧＡベースのシステムの素子／ＮＰＵアーキテクチャーへ変換する。この「配置−ルート(place-and-route)」ツールは、多数の接続を共有する素子を同じチップに一緒に配置し、チップ間データ転送を最小にすることができる。又、このツールは、その配置をデータ値のリストへ変換するためにも必要であり、このリストは、入力ポインタテーブル及びオフチップリンクモジュールへロードされる。
【００８６】
プロセッサインターフェイスモジュール６０２（図６）は、プロセッサ６０４のプログラム環境に応答する。これは、オンチップ周辺バス６０６を経てプロセッサ６０４へ接続することができ、そしてプロセッサ６０４がオペレーションモードをセットして神経処理システムのレジスタ及びメモリから情報をダウンロード及びアップロードするのを許すことのできるアドレスデコードスペースを特徴とする。
【００８７】
ＦＭＳコントローラモジュール６０８は、連続ループにおいて動作し、ＳＤＲＡＭ及び出力記憶テーブル６１０へ及びそこからデータをルーティングするようラッチ及びｍｕｘを作動するためにシステムバスアドレス及び他のフラグをセットする。又、これは、プロセッサインターフェイス６０２へ送られるコマンドによりスタートされ、割り込まれるようにすることができる。
【００８８】
ＳＤＲＡＭコントローラモジュール６１２は、ＳＤＲＡＭとの全ての対話を監督することができる。これは、読み取り及び書き込みの両方のページストリームをＳＤＲＡＭでバッファすることができる。ＳＤＲＡＭコントローラモジュール６１２は、ＳＤＲＡＭのバッファされたデータから又はそのデータへ３２ビットワードを読み取り又は書き込みするために神経処理システム６００の残り部分への簡単な同期ポートを形成することができる。又、ＳＤＲＡＭコントローラモジュール６１２は、ＳＤＲＡＭの自動リフレッシュサイクルを管理することも必要である。
【００８９】
出力記憶テーブル６１０は、神経プロセスからの出力ＰＳＰ値を保持するＢＲＡＭの大きなブロックである。ＢＲＡＭは、デュアルポートであり、各ポートから読み取り及び書き込みすることを許す。各ＢＲＡＭブロックは、６５，５３６バイトである。この数字は、１２８コアｘ２５６素子の出力／各コア（２５６個のタイムスライス）の出力を記憶し且つオフチップ素子出力から同じ数のデータ値を記憶するためのニーズから導出される。これらメモリの２つのバンクがあり、その一方は、現在エポックからデータを記憶するためのものであり、その他方は、現在エポックから出力を書き込むためのものである。各バンクの役割（読み取り又は書き込み）は、エポックごとに交換することができ、いわゆるピンポンバッファを構成する。
【００９０】
神経処理ユニット（ＣＰＵ又はコア）６１４は、神経シミュレーションのための計算エンジンを含むことができる。各コアは、２５６個の神経素子に対して計算を遂行するように働くことができる。ＳＤＲＡＭ及びＰＳＰ記憶テーブルからのデータは、各コアに順次にルーティングすることができ、そしてコアは、この入力データに対してアルゴリズムを遂行することができる。計算の結果は、メモリへ返送され、その後の神経素子のデータを計算するためにコアを解放することができる。１つの現在アーキテクチャーは、これらコアの１２８個がインスタンス生成されることを必要とする。
【００９１】
システムバス環境モジュール６１６は、システムバスアクセスロジックを一緒に集め、コア６１４と出力記憶テーブル６１０及びＳＤＲＡＭとの間にデータ、アドレス及び制御フラグを向けるためのレジスタ及びｍｕｘを構成する。システムバス６１８は、分散されたＮＰＵとＦＳＭコントローラ６０８との間のインスタンス生成されたインターフェイスである。
【００９２】
オフチップリンクモジュール６２０は、他のボード上に位置されるか又は将来の設計において同じボード上に収集されるこのチップの他の複製への相互接続を与えることができる。ＰＳＰ出力記憶テーブルからのデータは、このリンクに送られて、他のチップに供給することができ、そしてこのチップは、ネットワークの他のチップからこのリンクを経てデータを受け取ることができる。適度に高速のシリアルリンクは、割り当てられたエポック時間内に２５６チップネットワーク内の全出力データを送信することができる。
【００９３】
プログラムフラッシュメモリインターフェイスモジュール６２２は、プロセッサソフトウェアのためのプログラム記憶スペースへのインターフェイスを与えることのできる「埋め込み型開発キット（ＥＤＫ）」ライブラリーモジュールである。これは、ＥＤＫ設計環境においてＯＰＢペリフェラルである。
【００９４】
ＴＣＰ／ＩＰリンクモジュール６２４は、別のＥＤＫライブラリーモジュールであり、プロセッサと、システムを保持するＰＣボード上のイーサネット（登録商標）接続ハードウェアとの間の経路を与える。
【００９５】
このプロセッサインターフェイスモジュール７００が図７に示されている。このモジュールは、Ｘｉｌｉｎｘ  ＥＤＫ環境におけるカスタムＩＰであるように設計される。これは、プロセッサの対話を許すためにＰＬＢインターフェイスを有することができる。３２ビットモードレジスタは、プロセッサがコアのモードをセットするのを許すことができる。このモジュールは、システムバスと、ＯＳＴと、基本的入力についてＯＳＴに対するポインタ及び重みを保持するＳＤＲＡＭとを経て、プロセッサとコアとの間でデータをルーティングすることができる。
【００９６】
チップが開発されるＥＤＫ環境は、プロセッサ内部バス構造体へインターフェイスするためのライブラリーファンクションを与える。ＯＰＢは、このインターフェイスに対して使用することができる。カスタムロジックをＯＰＢへリンクするのを容易にするライブラリーモジュールを使用することができる。これは、ＯＰＢ＿ＩＰＩＦとして示されている。その左側には、ＯＰＢインターフェイスが与えられ、その右側には、システムスペースへと変換される必要のある種々の信号がある。このモジュールのファンクションは、ＯＰＢ＿ＩＰＩＦモジュール７０２におけるパラメータ定義を通してプロセッサのアドレススペースへとマップすることができる。ＯＰＢ＿ＩＰＩＦモジュール７０２は、プロセッサがどのアドレスをターゲットとするかに基づいて多数のチップイネーブルフラグの１つを発生することができる。アドレスバンクは、次のように割り当てることができる。
−  モードレジスタアクセス
−  入力ポインタＳＤＲＡＭアクセス
−  重みＳＤＲＡＭアクセス
−  ＯＳＴＡアクセス（オンチップ出力）
−  ＯＳＴＢアクセス（オフチップ出力）
−  ＮＰＵ常時アクセス（ＮＰＳシステムバスを経て）
【００９７】
モードレジスタへの書き込みは、システムにおけるデータの流れを指令するためのフラグをセットすると共に、ＳＤＲＡＭアクセスに対して指示されるＦＩＦＯ同期フラグをセットすることができる。ＳＤＲＡＭとの対話は、ＳＤＲＡＭコントローラモジュールへ組み込まれるＦＩＦＯをレバレッジすることができる。データは、ＯＰＢ＿ＩＰＩＦモジュール７０２からのアドレス要求なしに、ＳＤＲＡＭコントローラへ順次にバースト入力することができる。ソフトウェアは、意図されたアドレスシーケンスに基づいてＳＤＲＡＭへデータをストリーミングさせることができる。ＦＩＦＯアドレスカウンタを増加させるためにＳＤＲＡＭコントローラへｐｐｃＳｄｒａｍｘＡｃｋを送り込むことができる。プロセッサスペースにおける２つの別々のアドレスは、一方を入力ポインタにそして他方を重みに使用することができる。
【００９８】
出力記憶テーブル（ＯＳＴ）との対話は、１６ビットアドレスでの直接アドレッシングを通して行うことができる。ＰＰＣの側でのこれらの書き込み及び読み取りは、バースト又は単一ビートトランザクション（ＴＢＤ）である。ＯＳＴに対するアドレッシング機構は、プロセッサによりバスを通して又はこのモジュールの順次カウンタを経て与えられて使用することができる。このモジュールに対する最後の接続は、コアへのもので、それらの初期状態及び定数をロードする。これは、システムバスを経て各ＮＰＵに位置されたＢＲＡＭブロックへの書き込みを含むことができる。各位置のアドレッシングは、プロセッサにより決定できるが、バーストモードに対して、書き込み及び順次のアドレッシングが逆アドレッシング機構も許す機会がある。この接続を通して読み取るための構成は、コアにおいてエラー検出及びある考えられる非スタティックデータの最終状態ダウンロードを使用することもできる。
【００９９】
ＦＳＭモジュール８００が図８に示されている。ＦＳＭモジュール８００は、神経処理サイクルを制御することができる。ＦＳＭモジュール８００は、素子データ及び重みをロードし及びアンロードするために必要なメモリ読み取り、システムバス書き込み、システムバス読み取り及びメモリ書き込みステップのシーケンスを繰り返すことができる。ＦＳＭモジュール８００は、素子及びコアを通してカウントし、素子ごとに必要に応じて出力記憶テーブル及びシステムバスにおけるアドレスをセットすることができる。ＦＳＭモジュール８００全体のプロセスサイクルタイムは、全ての素子を通してカウントし、１つのエポック時間周期をとる。
【０１００】
ＦＳＭコントローラモジュール８００は、次のタスクを行なうことができる。
−  エポックのステップ、素子及びコアを通してカウントする
−  パイプラインレジスタ、メモリ及びシステムバスアクセスのためのフラグの必要なシーケンスを与える
−  出力記憶テーブル及びシステムバス装置のための必要なアドレスを与える
−  プロセッサストリーミングアクセスのためのシーケンスをおそらく与える
【０１０１】
エポックの開始に、ＦＳＭコントローラモジュール８００は、各ＳＤＲＡＭ制御モジュールのリセットをトリガーして、それらのアドレスジェネレータをメモリの最上部へセットすることができる。ＳＤＲＡＭコントローラは、読み取る準備のできたデータをそれらのＦＩＦＯに有するときにＦＳＭコントローラ８００にフラグを立てることができる。この点において、ＦＳＭコントローラ８００は、フラグのシーケンスを開始して、パイプラインにデータを通し、システムバスにデータを与える種々のｍｕｘを操向することができる。１つのＳＤＲＡＭからの入力ポインタデータは、出力記憶テーブルＢＲＡＭのアドレスラインへルーティングされ、コアプロセスへの入力として使用されるべき正しいデータを選択する。ＦＳＭコントローラ８００は、１つのカウンタの出力をシステムバスアドレスラインへ操向し、どのＮＰＵがデータを受け取るか知らせることができる。システムバスの読み取りは、コアからそれらの出力データを取り出すために行うこともできる。ＦＳＭは、このデータを、そのソースに基づいて、パイプラインを経てＳＤＲＡＭコントローラへ又はＯＳＴへ進ませる。このサイクルは、選択された素子の全２５６個の入力について繰り返すことができる。次いで、素子のロード／アンロードプロセスが、１２８個の各コアの全２５６個の素子について繰り返される。ＦＳＭコントローラモジュール８００の考えられる付加的な役割は、プロセッサの読み取り及び書き込みに対してパイプラインパルス及びｍｕｘ選択ラインのシーケンシングを実行することである。複数のカウンタを伴う簡単な限定状態マシンを使用して、シーケンスを達成することができる。しかしながら、プロセスは、パイプラインレジスタ及びカウンタを制御するために多数のフラグを必要とする。全ての必要なフラグが同期されるように確保するための１つの解決策は、状態マシンをＢＲＡＭに入れることである。ＢＲＡＭは、出力フラグセットをその３２ビット巾のセルに保持することができる。ＦＳＭの制御は、ＦＳＭ  ＢＲＡＭのアドレスを通してクロックして、希望のフラグをＢＲＡＭ出力データのビットとして送出することにより、実現される。５１２ｘ３２のＢＲＡＭは、外部パイプライン制御（ほぼ１６個必要）及び内部状態マシンループ制御の両方に使用されるべき３２個のフラグを与える。
【０１０２】
神経処理ユニット（図１Ａ、神経処理システム（ＮＰＳ）又は「神経コア」でもある）は、その重みデータをＳＤＲＡＭに記憶することができる。又、ＳＤＲＡＭは、出力記憶テーブルデータに対するポインタを保持することもできる。データは、１２５ＭＨｚのシステムバス速度で大きなブロックにおいてメモリへ及びメモリから順次にストリーミングすることができる。ＳＤＲＡＭアクセスは、５１２ワードのページバーストで読み取られ又は書き込まれる場合に、この高い速度のアクセスを受け容れることができる。このようにメモリにアクセスすることで、ＣＡＳ待ち時間及び他の時間切れに費やされる時間を減少することができる。システムのこのデータは、これに適合できる。というのは、それに順次にアクセスすることができ、且つ書き込みのための戻り値も同じシーケンスで与えることができるからである。ＳＲＡＭコントローラは、ＳＤＲＡＭ  Ｉ／Ｏの同期制御のために標準的なシーケンスパルスを与えるのに加えて、メモリへの及びメモリからの途中でデータのストリーミングされるページをバッファする手段を果たすこともできる。このように、システムは、ページストリーミングが与えるものより連続的でない仕方でデータにアクセスすることができる。このメモリコントローラには２つのインスタンスがあり、その各々が、３２Ｍｂブロックに構成された２つのメモリチップを駆動する。使用するメモリは、信号及びそれらのタイミングに適合するインフィニオン社からのＨＹＢ２５Ｌ１２８１６０ＡＣ−８である。読み取り、書き込み及び自動リフレッシュの全コマンドは、このメモリに対するデータ仕様ごとに設計することができる。メモリは、３２Ｍｂブロックとして構成される。コントローラは、既存のデモボード上のＸｉｌｉｎｘ  Ｘ２ＶＰ５０Ｆ１１５２において最初に実施することができる。Ｘｉｌｉｎｘ部分からメモリ部分へのピン接続は、予め指定することができる。
【０１０３】
コアは、ＳＤＲＡＭからのデータの一次ユーザである。コアは、ＳＤＲＡＭからこのＳＲＡＭコントローラ（図１０）を経て送られるデータの連続的なストリーミングを有効に使用することができる。データは、メモリから順次のものである（ランダムアクセスではない）。ＲＤＡＣＫフラグが高であるときには、システムクロックの立上り縁の間に、読み取りバスのデータが有効でなければならない。ＲＤＡＣＫフラグが高である状態でクロックのその後の立上り縁に、メモリからの次のデーらワードが得られねばならない。コントローラは、ＲＤＡＣＫが連続的に高である条件のもとでデータを与え、１２５ＭＨｚのシステムクロックレートでデータを順次に供給することができる。コントローラがその後のページを読み取りバッファに供給するに充分なほどの中断が読み取りにあってもよい。更に、コントローラは、システムクロックの立上り縁の間にＷＲＡＣＫフラグが高であるときに書き込みバス上のデータワードを受け容れることができる。コントローラは、ＷＲＡＣＫが連続的に高であるときには書き込みバスからデータの連続的なストリームを受け取ることができる。コントローラが書き込みバッファからページをＳＤＲＡＭへ空にするに充分なほどの中断が書き込みにあってもよい。コントローラは、必要に応じてデータをバッファすると同時にＳＤＲＡＭからデータをプルし又はそれを必要に応じてＳＤＲＡＭへ書き込みながら、読み取り及び書き込み要求を処理することができる。全体的なシステムタイミングは、ＳＤＲＡＭへのアクセスがページモードであることを意味し、それ故、両方向にバッファを行なえることが予想される。全体的なシステムタイミングは、必要に応じてＳＤＲＡＭへのページ書き込み／ページ読み取りアクセスを交替させ、そしてサイクルの始めと終りにパイプラインローディングを受け容れるために与えることができる。
【０１０４】
図９は、ＳＲＡＭコントローラモジュール９００のピン配列を示す。
次のテーブルは、一実施形態におけるピン及びその説明を列挙したものである。
2009508182.tif 000016
【０１０５】
次のテーブルは、ＶｅｒｉｔｅｘTMＩＩ  Ｘｉｌｉｎｘ  ＦＰＧＡにおけるオフチップピン番号を示す。コントローラには２つのインスタンスがあるので、２セットのピン番号が与えられる。各テーブルにおいて、最上行は、ピンの名前であり（ＳＤＲＡＭ＿ｐｒｅｆｉｘをもたない）、そして第２行は、ＦＰＧＡにおけるピン番号である。
【０１０６】
モジュール１  ピンアウト
2009508182.tif 000017
【０１０７】
モジュール２  ピンアウト
2009508182.tif 000018
【０１０８】
ＳＤＲＡＭコントローラ１００は、５つのモジュールで構成することができる。
−  ＳＤＲＡＭレジスタ出力１０１０
−  書き込みＦＩＦＯ１００２
−  読み取りＦＩＦＯ１００４
−  アドレスジェネレータ１００６
−  コントローラ限定状態マシン１００８
【０１０９】
ＳＤＲＡＭインターフェイスレジスタ１０１０は、ＳＤＲＡＭチップに正しいタイミング（９０〜１８０クロックの位相シフト）を与えるように配置されてクロックされるＸｉｌｉｎｘ  Ｉ／Ｏブロックである。より精巧なクロック制御が必要とされる場合には、「遅延制御モジュール（ＤＣＭ）」と共に任意のクロックフィードバックが使用されてもよい。このブロックにおいてデータのための両方向ポートをデマルチプレクスすることもできる。
【０１１０】
書き込みＦＩＦＩ１００２は、少なくとも５１２ワードの奥行きであり（おそらく１０２４）、そしてページをストリーミングするに充分なデータが記憶されるまでコアからのデータをバッファすることができる。この点において、“Ｅｍｐｔｙ＿Ｍｅ”要求をコントローラへ送信することができる。コントローラは、それが行なう裁定を受け容れた後に、必要なコマンドシーケンスをページ書き込みのためにＳＤＲＡＭへ送信する一方、ＦＩＦＯをストローブしてその出力をＳＤＲＡＭへ書き込むことができる。ＦＩＦＯは、ＸｉｌｉｎｘチップのデュアルポートＢＲＡＭで実現される。
【０１１１】
読み取りＦＩＦＯ１００４は、少なくとも５１２ワードの奥行きであり（おそらく１０２４）、そしてそのデータレベルがＳＤＲＡＭから別のページを受け取るに充分なほど低くなるまでコア読み取り要求当たりデータを供給することができる。そのコンテンツが、ＳＤＲＡＭから別の５１２ワードページバーストを受け入れるに充分なほど低くなったときに、“Ｆｉｌｅ＿Ｍｅ”要求をコントローラへ送信することができる。コントローラは、それが行なう裁定を受け容れた後に、必要なコマンドシーケンスをページ読み取りのためにＳＤＲＡＭへ送信する一方、ＦＩＦＯをストローブしてその入力をＳＤＲＡＭから読み取ることができる。ＦＩＦＯは、ＸｉｌｉｎｘチップのデュアルポートＢＲＡＭで実現することができる。
【０１１２】
アドレスジェネレータ１００６は、書き込まれるべき行及び読み取られるべき行の値をそのレジスタに保持し、ページが書き込まれるか又は読み取られた後に各々増加することができる。同期入力は、同期を確保するために、欠陥の場合又はパワーアップ時に或いは単に周期的にこれらアドレスのリセットを許すことができる。付加的な構成は、コントローラからのコマンドごとに、ＳＤＲＡＭへ書き込みアドレスを送信すべきか読み取りアドレスを送信すべきか選択するためのｍｕｘである。又、アドレスジェネレータは、ＳＤＲＡＭのパワーアップモードレジスタロード中にＳＤＲＡＭへコマンド値を与えることもできる。これは、コントローラからの付加的なコマンドを介して行うことができる。
【０１１３】
最終的に、コントローラ限定状態マシン１００８は、ＦＩＦＯサービスコマンドを裁定し、そしてＳＤＲＡＭのタイミング要求ごとにＳＤＲＡＭへの又はＳＤＲＡＭからのページストリームを開始することができる。又、内部タイマーを経て又はコアからの外部コマンドごとに自動リフレッシュサイクルを開始することもできる。同期を与える必要性に基づき、又、コントローラは、コアからの同期パルスに応答して、それらをアドレスジェネレータへ通すか、又は更なるシステム分析で決定されたより精巧なプロセスを遂行することもできる。
【０１１４】
図１１は、コアの読み取り及び書き込みタイミング図である。ＳＤＲＡＭのインターフェイスタイミングは、使用される装置のデータシートごとのものである。コア側では、図１１のタイミング図は、ＷＲＤＢＵＳ対ＷＲＡＣＫ及びＲＤＤＢＵＳ対ＲＤＡＣＫの考え方を与える。
【０１１５】
神経シミュレーションプロセスの実行中に、神経素子は、手前のエポックにおいて発生された他の神経素子からの出力信号を表わす入力データを要求する。各チップには、３２７６８個の素子がある。これは、１２８個のＮＰＵの各々に２５６個の素子が指定されることを表わす。これら素子の各々は、単一の出力を発生し、これは、その後のエポックにおける他の素子の入力として使用される。出力記憶テーブルは、チップ上の素子によって使用される全てのデータを記憶することができる。これは、チップ上の素子からの出力データを保持するセクションを特徴とし、又、このチップ上の素子の入力として使用される他のチップからの出力データを保持するセクションも有することができる。データは、バイトサイズとされる。チップ上の全ての素子の出力を保持するために、サイズは３２ｋＢである。オフチップ素子からのデータが更に３２ｋＢを与え、従って、全体的サイズは、６４ｋＢとなる。神経シミュレーションシステムは、現在エポックに対する入力を使用して同時に出力を発生するので、ピンポンバッファ構成を使用して、書き込むべきメモリを与えながら、個別のメモリから手前のエポック中に書き込まれたデータを現在エポックが使用するようにすることができる。これは、メモリ要件を１２８ｋＢへ倍増する。このメモリは、２つの６４ｋＢ  ＢＲＡＭテーブルとして編成することができる。各テーブルは、３２個のＢＲＡＭブロックを使用することができる。ピンポン構成では、２つのテーブルは、読み取り段階でも書き込み段階でもよい。素子へ入力を供給するアクセス速度を最大にするために、出力記憶テーブルＢＲＡＭは、デュアルポートとして構成することができる。バイトは、読み取り段階中に各ポートから同時に読み取ることができる。書き込み段階中には、デュアルポートアクセスの片側は、現在エポックの出力を書き込むのに使用でき、一方、他側は、チップ上に使用されるオフチップ素子からの出力データを書き込むのに使用できる。各テーブルは、Ｘｉｌｉｎｘツールのコアジェネレータを使用して発生することができる。ブロック及びそのＩ／Ｏは、図１２に現われている。
【０１１６】
図１３は、システムバス環境モジュール１３００を示す。このモジュール１３００は、メモリとシステムバスとの間にデータを接続するための雑多なルーティングファシリティを保持することができる。又、これは、種々のエンドポイント間に沿ってデータを通すように設計されたパイプラインを定義することもできる。信号の数については、最も複雑であるが、ロジックは、比較的簡単で、ｍｕｘ及びレジスタ並びにフラグの集合を含む。図１３は、入力及び出力を示す。
【０１１７】
このブロックを通る４つのメインデータ経路があり、これについて個々に説明する。これら４つの経路は、次の通りである。
−  システムバスへのＯＳＴ及び重みデータ
−  システムバスからのＯＳＴ及び重みデータ
−  ＰＰＣデータ書き込み
−  ＰＰＣデータ読み取り
【０１１８】
システムバス経路へのＯＳＴ及び重みデータでは、データがメモリから検索されてシステムバスへ送信される。この経路の場合、重み及びＯＳＴデータは、異なる仕方で取り扱われる。重みデータは、そのＳＤＲＡＭから直接読み取られる。ＯＳＴデータについては、入力ポインタＳＤＲＡＭが最初に読み取られる。ＳＤＲＡＭから得られたデータレコードは、２つの１６ビット値を保持する。これら「ポインタ」の各々は、ＯＳＴをアドレスするのに使用され、一方の１６ビットポインタは、ＯＳＴのＡポートをアドレスし、他方のポインタは、Ｂポートをアドレスする。これらのアドレスは、上述した「ピンポン」選択に基づいて適当なメモリに適用される。４つの素子が各システムバス書き込みでサービスされ、そしてＯＳＴにおける各アドレスが１つの値しか保持しないので、システムバス書き込みに必要な４バイトを得るには、２つのＯＳＴアクセスを要することになる。次いで、ＯＳＴデータは、付加的なレジスタを経てシステムバスへ送られる重みデータと共に得ることができる。そのモードがアクティブであるときにＰＰＣデータをシステムバスへ送信するのを許す介入ｍｕｘ及びレジスタがある。どのコアにデータが書き込まれるか選択する、システムバスへの書き込みのためのアドレスは、ＦＳＭアドレス又はプロセッサアドレス間を選択するｍｕｘ、及びレジスタを経て、ＦＳＭコントローラによりバスに適用される。このプロセッサの一例が、図１４に示されている。
【０１１９】
この経路において、データは、システムバスから受け取られて、適切なメモリへルーティングされる。アドレスは、システムバスのアドレスラインへ適用されて、ソースを選択する。適用されるアドレスは、ｍｕｘに通すことができ、これは、プロセッサソースのアドレスがそのモードで適用されるのを許す。アドレスされると、コアは、それらの出力データを３２ビットシステムバス読み取りデータラインに与える。コアは、４つより成るグループでデータラインに接続することができ、４つのうちの１つは、ビット０ないし７に結合され、その次は、ビット８ないし１５に結合され、その次は、ビット１６ないし２４に結合され、そして第４は、ビット２４ないし３１に結合される。３２ビット読み取りデータを最初にレジスタ記憶することができる。コアからのデータは、ＳＤＲＡＭ行きの重みであるか、又は出力記憶テーブルへ送られるＰＳＰ出力である。交互のレジスタが重みデータ又はＯＳＴデータのいずれかを取り上げる。重み値は、このデータ又はプロセッサデータの間を選択するｍｕｘに通され、次いで、ＳＤＲＡＭへ送られ、ここで、ＷＲＡＣＫパルスがＳＤＲＡＭコントローラにキューを出し、その値をＦＩＦＯに記憶するようにさせる。ＰＳＰ出力値は１つしかないので（２５６個の重み出力に比して）、よりゆっくり取り扱うことができる。３２ビットデータレコードに含まれた４バイトの各々は、出力記憶テーブルに個々に書き込むことができる。出力記憶テーブルのアドレスは、ＦＳＭコントローラにより順次に発生され、プロセッサアドレスをそのモードで適用するのを許すｍｕｘに通される。出力記憶テーブルのためのデータは、バイトサイズへデマルチプレクスされ、レジスタ記憶され、そしてプロセッサアクセスのためにｍｕｘを経て出力記憶テーブルへ通される。図１５は、このシステムの一例を示す。
【０１２０】
ＳＰＰは、プログラムされたインストラクションを受け取ることができるが、より一般的には、センサからの入力を受け取り、そしてアクチュエータへ出力を発することができる。図１６Ａ−Ｄは、脳ベースの装置（ＢＢＤ）のためのオフロード可能なロボットベース（ローバー(rover)）を示す。このローバーは、未知の過酷な三次元環境において種々の中間点を経て目標へとナビゲートすることのできるＢＢＤである。このローバーは、多数の埋め込まれたセンサからのリアルタイム入力の健全なセットから制御神経シミュレーションを与えると共に、制御された移動を可能にする調整可能なエフェクタを与えることができる。神経シミュレーションとのこれらの種々の接続は、新規な環境でのＢＢＤのナビゲーションを助けることができる。ローバーは、いかなるサイズでもよい。ローバー１６００は、神経シミュレーションの動作に対して最大の融通性を与える多数の独特の特徴をもつことができる。
【０１２１】
ローバー１６００は、多数のポッドを含むことができる。これらポッドは、モジュラー式で、拡張可能であり、交換可能であり、且つ取り替え容易である。ポッド及び中央ユニットは、中央コネクタ軸を経て接続することができる。一実施形態では、ローバーは、ポッドを中央コネクタ軸に追加したり、そこから除去したりすることができ、そして異なるサイズの中央コネクタ軸を使用することもできる。中央コネクタは、動力、センサ及びアクチュエータ信号を中央ユニットへ及び中央ユニットから伝達するためのコンジットを含むことができる。コンジットは、非常に多数のセンサ及びアクチュエータが中央ユニットと通信するのを許す２線バスのようなバスを含むことができる。ポッドは、神経モデルと対話するセンサ及びアクチュエータを含むことができる。幾つかのポッドは、モータにより制御されるホイールを含む駆動ポッドである。
【０１２２】
ポッドは、両方向サスペンションシステム１６０２を有することができる。この両方向サスペンションは、ローバーがひっくり返ったときでもポッドが機能的サスペンションシステムをもつことができるようにする。両方向サスペンションシステムは、互いに対向して配置されたガス充填衝撃部を含むことができる。又、両方向サスペンションシステムは、各衝撃部における圧縮を監視するためのセンサを含むこともできる。
【０１２３】
幾つかのポッドにおけるホイールに加えて、ローバーは、タンク型トレッドのようなトレッド１６０４を含むことができる。このトレッド１６０４は、中央ユニットの一部分である。一実施形態において、トレッド１６０４は、通常、係合されない。トレッド１６０４は、ローバー１６００が固定状態から徐行するのを許す。ほとんどの状態では、ローバーは、ホイールが最も効率的である地域を駆動する。しかしながら、ホイールが役に立たない場合には、ローバーは、トレッド１６０４を使用して困難な状態から脱出する（例えば、峡谷を上る）ように切り換ることができる。ローバー１６００が突き当たった場合には、トレッド１６０４が地面に係合するようにローバー１６００がポッドを動かすことができる。一実施形態では、ローバー１６００は、トレッドが地上に係合するのを許すようにポッドを完全に延びた位置へ動かすことができる。
【０１２４】
センサポッド１６０６は、カメラ及び他のセンサを収容することができる。センサポッド１６０６は、駆動ポッドに使用されるサブアッセンブリのあるものを使用して構成することができる。一実施形態では、センサポッド１６０６は、トレッド１６０４を含む中央部分１６１０に取り付けることができる。センサポッドは、ローバーが自由落下型の状態を感知したときに駆動ポット間でそれ自身を保護するように動くことができる。
【０１２５】
関節駆動及びカメラポッドは、逆転した向きで駆動する能力をＢＢＤに与えると共に、全カメラシステムの全体的安定性を高めることができる。一実施形態において、ポッドは、ポッドのモータにより運動範囲に対して回転することができる。
【０１２６】
電力管理システム１６０８は、その多数の電源からの電力消費を常時監視することができる。一実施形態では、電力管理システム１６０８は、モータにより消費される電力を測定するための電流センサ、及びバッテリの出力を測定するための電圧センサのようなセンサを備えている。
【０１２７】
図１７は、例示的ローバー１７００の機能図である。ローバー１７００は、駆動ポッド１７０２のような駆動ポッドを含むことができる。駆動ポッド１７０２は、多数のセンサ及びアクチュエータを含むことができる。ホイールセンサ１７０４は、ホイール１７０６の位置を光学的に感知することができる。ブラシレスモータのようなモータ１７０８は、ホイール１７０６を動かし、そして関連モータセンサを含むことができる。ジャイロ及び加速度計１７１０のような多数の位置センサを使用することができる。両方向サスペンションであるサスペンション１７１２は、関連センサをもつことができる。駆動ポット１７０２は、中心軸１７１６の周りで駆動ポッド１７１２を回転するためのモータ１７１４及び関連センサをもつことができる。駆動ポッド１７０２は、駆動ポッド１７０２による電力消費を監視するために、駆動ポッド１７０２又は中央ユニット１７２０に関連電力センサ１７１８を含むことができる。センサポッド１７２２は、ビデオカメラ、ＩＲセンサ、レーザセンサ、等のセンサを含むことができる。中央ユニット１７２０は、トレッド１７２４を含むことができる。センサ１７２６は、トレッド位置及びトレッドモータセンサを含むことができる。又、中央ユニット１７２０は、バッテリのような電源１７２８を含むこともできる。
【０１２８】
ローバー１７００は、ＳＰＰ１７３０により動作される神経モデルで、センサ入力を受け取りそしてアクチュエータ出力を発生するような神経モデルによって制御することができる。神経モデルの神経素子は、環境における状態にどのように反応するかの塑性計算を通じて学習することができる。これらの塑性計算は、入力に応答して神経モデルの接続重み、ひいては、振舞いを変更することができる。
【０１２９】
振舞い反応は、プログラマーにより明確にプログラムされず、むしろ、ＢＢＤによって学習される。ＢＤＤは、神経モデルで環境に反応するので、不測の振舞いに加わることができる。ローバー１７００の神経モデルは、センサから多数の入力を受け取り、そして異なる状態においてどんな入力が最も関連しているかそれ自身で学習することができる。例えば、はまり込んだホイールは、そのはまり込んだホイールを生じさせた振舞いの動作を禁止する値型塑性信号を生じることができる。ビデオカメラで感知される滑らかな地域は、ホイールの良好な動作及び低電力消費に関連され、従って、肯定的学習を生じさせる。ビデオカメラで感知されるでこぼこの地域は、ホイールの悪い動作及び高電力消費に関連され、従って、抑制的学習を生じさせる。
【０１３０】
神経モデルは、センサ及びアクチュエータを論理的グループで含むことができる。例えば、制御入力に対するアクチュエータの応答は、センサにより監視することができる。このように、ＢＢＤは、動物が手足の動きを制御するように学習するのと同様に、フィードバックを伴いその動作を制御するように学習することができる。
【０１３１】
ローバーの設計又は表現型は、神経シミュレーションと密接に結び付けることができる。でこぼこの地域をうまく横断するために、神経モデルを使用して、駆動システムから牽引、回転及び振動センサを監視し、そしてサスペンションのコンプライアンス、ホイールの速度、及び駆動システムのポッド位置を調整して、ローバーが効率的に地域を移動するよう保つことができる。カメラ及び他のセンサ、例えば、赤外線及びレーザレンジファインダーは、神経モデルへ情報を供給し、そしてＢＢＤが地域を確認して近傍の環境に困難さ度合いを関連付けるのを許す。経験を積んだ後に、ＢＢＤは、横断が困難な環境のエリアを回避し、そして効率的に進行することのできるエリアを求めるように学習することができる。小脳適応のモデルに基づくモータ制御ループは、地域の変化により関節式ポッドを適当に動かすことによりカメラ及びセンサハウジングを定常に保つように学習することができる。
【０１３２】
ＢＢＤは、値又は価値システムをトリガーする環境的合図に基づいてそれらの振舞いを適応させることができる。ローバーにおける値システムは、電力管理システムに密接に結合させることができる。電力の効率的使用（又は低い電流引き出し）は、正の値であり、そして高い電流引き出しは、負の値である。典型的に、牽引が不充分であるか又は表面がでこぼこであるエリアは、滑らかな道路より多くの電流を引き出す。それ故、ＢＢＤは、値に依存する学習に基づき、滑らかな高牽引表面が得られるときにはそれを求めることができる。
【０１３３】
ローバーの本体は、コンピュータ、通信電子装置及びバッテリのための部屋をもつことができる。搭載するセンサの数及び帯域巾のために、ＢＢＤの神経シミュレーションは、高性能の計算要件（例えば、３２ノードのＢｅｏｗｕｌｆクラスター）を有してもよい。ローバー１７００は、リモート動作している神経モデルとワイヤレス通信するために通信リンク１７３２を含むことができる。
【０１３４】
一実施形態では、中程度の距離から、ワイヤレス通信の範囲を越える長距離にわたってナビゲートするために、特殊なオンボードコンピュータが必要になる。従来のコンピュータは、著しい電力を必要とし、自律的ローバー装置に適合させるには大き過ぎる。一実施形態では、神経シミュレーションを迅速且つ効率的に計算するように特に設計された上述した特殊目的プロセッサ（ＳＰＰ）１７３０をローバーにより使用することができる。
【０１３５】
能動的にサスペンドされる独特のローバー設計と密接に結び付けられてＳＰＰ上で実行される神経シミュレーション制御は、ＢＢＤが、新規な環境を横断し、その環境における突起物体及び位置を学習し、そしてその経験を利用して、効率的で且つ信頼性のある仕方でナビゲートするという目標を達成できるようにする。又、ローバー１７００は、ローバーが危険状態にあるときにローバーを保護するためのオーバーライドロジックを持つこともできる。
【０１３６】
本発明の実施形態は、特殊目的のプロセッサ及び現場でプログラム可能なゲートアレーを使用して実施されるものとして、ここで、たびたび説明したが、これら実施例は、例示に過ぎないことを理解されたい。本発明は、これらの実施例に限定されるものではない。関連技術の当業者に明らかなように、本発明は、いかなるデータ処理／計算素子、モジュール、装置又はアーキテクチャーを使用して実施することもできる。これは、例えば、特定用途向け集積回路（ＡＳＩＣ）を含むが、これに限定されない。
【０１３７】
一実施形態では、本発明は、１つ以上の良く知られたデータ処理装置又はモジュール、例えば、図１８に示すコンピュータ１８０２を使用して実施される。コンピュータ１８０２は、１つ以上のプロセッサ（中央処理装置又はＣＰＵとも称される）、例えば、プロセッサ１８０６を備えている。プロセッサ１８０６は、通信バス１８０４に接続される。
【０１３８】
又、コンピュータ１８０２は、ランダムアクセスメモリ（ＲＡＭ）のようなメイン又は一次メモリ１８０８も備えている。この一次メモリ１８０８には、制御ロジック１８２８Ａ（コンピュータソフトウェア）及びデータが記憶される。
【０１３９】
コンピュータ１８０２は、１つ以上の二次記憶装置１８１０も備えている。この二次記憶装置１８１０は、例えば、ハードディスクドライブ１８１２及び／又は取り外し可能な記憶装置又はドライブ１８１４を備えている。取り外し可能な記憶ドライブ１８１４は、フロッピー（登録商標）ディスクドライブ、磁気テープドライブ、コンパクトディスクドライブ、光学記憶装置、テープバックアップ、等を表わしている。
【０１４０】
取り外し可能な記憶ドライブ１８１４は、取り外し可能な記憶ユニット１８１６と対話する。取り外し可能な記憶ユニット１８１６は、コンピュータソフトウェア１８２８Ｂ（制御ロジック）及び／又はデータが記憶されたコンピュータ使用可能な又は読み取り可能な記憶メディア１８２４を備えている。取り外し可能な記憶ユニット１８１６は、フロッピー（登録商標）ディスク、磁気テープ、コンパクトディスク、ＤＶＤ、光学的記憶ディスク、又は他のコンピュータデータ記憶装置を表わす。取り外し可能な記憶装置１８１４は、良く知られたように、取り外し可能な記憶ユニット１８１６から読み取り及び／又はそこに書き込む。
【０１４１】
又、コンピュータ１８０２は、入力／出力／表示装置１８２２、例えば、モニタ、キーボード、ポインティング装置、等も備えている。
【０１４２】
コンピュータ１８０２は、更に、通信又はネットワークインターフェイス１８１８も備えている。このネットワークインターフェイス１８１８は、コンピュータ１８０２がリモート装置と通信できるようにする。例えば、ネットワークインターフェイス１８１８は、コンピュータ１８０２が、ＬＡＮ、ＷＡＮ、インターネット、等の通信ネットワーク又はメディア１８２４Ｂ（コンピュータ使用可能な又は読み取り可能なメディアの一形式を表わす）を経て通信するのを許す。ネットワークインターフェイス１８１８は、ワイヤード又はワイヤレス接続を経てリモートサイト又はネットワークとインターフェイスすることができる。
【０１４３】
制御ロジック１８２８Ｃは、通信メディア１８２４Ｂを経て、コンピュータ１８０２へ及びコンピュータ１８０２から送信される。より詳細には、コンピュータ１８０２は、通信メディア１８２４Ｂを経て、制御ロジック１８３０で変調された搬送波（電磁波信号）を受信及び送信する。
【０１４４】
制御ロジック（ソフトウェア）が記憶されたコンピュータ使用可能な又は読み取り可能なメディアを含む装置又は製造品は、ここでは、コンピュータプログラム製品又はプログラム記憶装置と称される。これは、コンピュータ１８０２、メインメモリ１８０８、ハードディスク１８１２、取り外し可能な記憶ユニット１８１６、及び制御ロジック１８３０で変調された搬送波を含むが、これに限定されない。１つ以上のデータ処理装置により実行される制御ロジックが記憶されたこのようなコンピュータプログラム製品は、このようなデータ処理装置が、ここに示す本発明の実施形態に基づいて動作するようにさせる。
【０１４５】
従って、ここに述べる脳ベースの装置の機能は、ＦＰＧＡ、ＡＳＩＣ、特殊目的プロセッサ、汎用プロセッサ、コンピューティング素子、等、及びその組み合せ（これに限定されないが）を含む多数の仕方で達成することができる。本発明の範囲及び精神は、これら全ての実施形態を包含する。
【０１４６】
又、本発明の別の実施形態は、バーチャル入力及び／又はバーチャル出力で動作することができる。例えば、ある実施形態において、ＢＢＤは、コンピュータアプリケーション（例えば、これに限定されないが、コンピュータゲーム）又は他のソースから受け取られたバーチャル入力で動作してもよく、このようなバーチャル入力は、実世界のセンサからの実世界の入力を表わすものではない。例えば、上述した実世界の触覚、嗅覚、聴覚、音、熱、視覚、及び／又は聴覚センサからの入力を受け取るのではなく、ＢＢＤ実施形態は、このような触覚、嗅覚、聴覚、音、熱、視覚、及び／又は聴覚センサをシミュレーションするコンピュータアプリケーション（又は他のソース）から入力を受け取ることができる。又、移動のためのエフェクタやホイールのような実世界のアクチュエータとインターフェイスするのではなく、ＢＢＤ実施形態は、バーチャルローバーの一部分であるバーチャルホイールのようなバーチャルアクチュエータと対話することができる。従って、ローバーの前記説明は、例示の目的でなされたもので、これに限定されない。例えば、別のＢＢＤ実施形態は、ＢＢＤがバーチャルアクチュエータに出力を送信するコンピュータアプリケーションによりシミュレーションされるバーチャルローバーの一部分でよい。
【０１４７】
本発明は、ここに述べたもの以外のソフトウェア、ハードウェア、及び／又はオペレーティングシステム実施形態で機能することができる。ここに述べたファンクションを遂行するのに適したソフトウェア、ハードウェア、及びオペレーティングシステム実施形態を使用することができる。
【０１４８】
本発明の好ましい実施形態の以上の説明は、例示の目的でなされたものである。これは、本発明を余すところなく述べるものでもないし、又はここに開示した正確な形態に限定するものでもない。当業者であれば、多数の変更や修正が明らかであろう。これらの実施形態は、本発明の原理及びその部分的応用を最良に説明するために選択されたものであり、従って、当業者であれば、意図された特定の用途に適するような種々の実施形態及び種々の変更が理解できるであろう。本発明の範囲は、特許請求の範囲及びその等効物により限定されるものとする。
【０１４９】
アペンディックスＩ
2009508182.tif 000019
【０１５０】
2009508182.tif 000020
【０１５１】
アペンディックスII
２５６個のコア及び２５６個のタイムスライスを伴う一実施形態において、重みは、次のような単一のサイン入りバイトを使用できる。
２５６バイト／素子                   => 256バイト
２５６タイムスライス素子／コア       => 256*256 = 65536 バイト
２５６コア／チップ                   => 256^3 = 16,777,216 バイト
合計(16 Meg by 8)
ＰＳＰ出力データは、各々、次のような単一の非サイン入りバイトを有する。
２５６バイト／素子                   => 256バイト
２５６タイムスライス素子／コア       => 256*256 = 65536 バイト
２５６コア／チップ                   => 256^3 = 16,777,216 バイト
合計(16 Meg by 8)
接続テーブルは、各接続に対して１６ビット、行先神経コアＩＤに対して８ビット、及び行先タイムスライスＩＤに対して８ビットを有することができる。従って、
２５６接続／素子                      => 2*256 = 516 バイト
２５６タイムスライス素子／コア        => 2*256^2 接続バイト
２５６コア／チップ                    => 2*256^3 接続バイト
合計(16 Meg by 16)
【図面の簡単な説明】
【０１５２】
【図１Ａ】一実施形態の特殊目的プロセッサを示すブロック図である。
【図１Ｂ】一実施形態の神経モデルの神経素子への入力及び出力を示す図である。
【図１Ｃ】環境において脳ベースの装置の振舞いを誘導することのできる神経モデルの領域的及び機能的神経解剖構成を示す図である。
【図１Ｄ】特殊目的プロセッサを含む脳ベースの装置を示す図である。
【図２】一実施形態の特殊目的プロセッサを使用する神経モデルを示す図である。
【図３Ａ】特殊目的プロセッサの一実施形態のコアを示す図である。
【図３Ｂ】特殊目的プロセッサの一実施形態のコアを示す図である。
【図４】特殊目的プロセッサを使用する脳ベースの装置の一実施形態の動作を示すフローチャートである。
【図５Ａ】本発明の一実施形態の特殊目的プロセッサにおける入力、出力、及び重みの転送を示す図である。
【図５Ｂ】本発明の一実施形態の特殊目的プロセッサにおける入力、出力、及び重みの転送を示す図である。
【図５Ｃ】本発明の一実施形態の特殊目的プロセッサにおける入力、出力、及び重みの転送を示す図である。
【図５Ｄ】本発明の一実施形態の特殊目的プロセッサにおける入力、出力、及び重みの転送を示す図である。
【図６】一実施形態の特殊目的プロセッサを示す図である。
【図７】一実施形態のプロセッサインターフェイスモジュールを示す図である。
【図８】一実施形態の限定状態マシンコントローラを示す図である。
【図９】一実施形態のＳＲＡＭコントローラモジュールに対するピン配列を示す図である。
【図１０】一実施形態のＳＲＡＭコントローラを示す図である。
【図１１】コアに対する読み取り及び書き込みタイミング図である。
【図１２】一実施形態の出力記憶テーブルを示す図である。
【図１３】一実施形態のシステムバス環境モデルを示す図である。
【図１４】一実施形態のデータ路を示す図である。
【図１５】一実施形態のデータ路を示す図である。
【図１６Ａ】脳ベースの装置ＢＢＤのローバーを示す図である。
【図１６Ｂ】脳ベースの装置ＢＢＤのローバーを示す図である。
【図１６Ｃ】脳ベースの装置ＢＢＤのローバーを示す図である。
【図１６Ｄ】脳ベースの装置ＢＢＤのローバーを示す図である。
【図１７】一実施形態のローバーを示す機能図である。
【図１８】本発明の実施形態に基づき、ここに述べる脳ベースの装置の機能を実施するのに有用なデータ処理装置又はモデルを示す図である。
【図１Ａ】
2009508182.tif 000021
【図１Ｂ】
2009508182.tif 000022
【図１Ｃ】
2009508182.tif 000023
【図１Ｄ】
2009508182.tif 000024
【図２】
2009508182.tif 000025
【図３Ａ】
2009508182.tif 000026
【図３Ｂ】
2009508182.tif 000027
【図４】
2009508182.tif 000028
【図５Ａ】
2009508182.tif 000029
【図５Ｂ】
2009508182.tif 000030
【図５Ｃ】
2009508182.tif 000031
【図５Ｄ】
2009508182.tif 000032
【図６】
2009508182.tif 000033
【図７】
2009508182.tif 000034
【図８】
2009508182.tif 000035
【図９】
2009508182.tif 000036
【図１０】
2009508182.tif 000037
【図１１】
2009508182.tif 000038
【図１２】
2009508182.tif 000039
【図１３】
2009508182.tif 000040
【図１４】
2009508182.tif 000041
【図１５】
2009508182.tif 000042
【図１６Ａ】
2009508182.tif 000043
【図１６Ｂ】
2009508182.tif 000044
【図１６Ｃ】
2009508182.tif 000045
【図１６Ｄ】
2009508182.tif 000046
【図１７】
2009508182.tif 000047
【図１８】
2009508182.tif 000048