(57)【要約】データ処理システムは、データを選択的に格納するためのデータデバイス（１０４）と、メモリデバイスにアクセスし、多数のマシン内にある実行可能プログラムをサポートするエンジン（処理要素１０２）とを備える。エンジンによって割り込まれたプログラムの実行を操作するためにエンジン(エレメント１０２)に選択的に多数の命令のうちの１つを出力するコントローラ(エレメント１００)が利用され、毎秒所定数のクロックサイクルからなる、同期クロック信号の出力のために、クロックデバイス(エレメント106)が利用される。クロックデバイスは、データデバイス(１０４)、エンジン(エレメント１０２)及びコントローラ(エレメント１００)に同期するクロック信号を出力する。さらにそれ自体で全て単一クロックサイクル内で演算を実行している間、コントローラは、プログラムのうちの１つの実行用のエンジンに命令のうちの１つを出力する。
2006515446.tif 000002
【特許請求の範囲】
【請求項１】
選択的にデータ操作するためのデータ処理システムであって、
上記データを格納するメモリデバイスと、
上記メモリデバイスにアクセスし、多数のマシン内にある実行可能プログラムをサポートするエンジンと、
上記エンジンによって可能にされた上記プログラムの実行を操作するために、上記エンジンに多数の命令のうちの１つを選択的に出力するコントローラと、
毎秒所定数のクロックサイクルからなる同期信号を出力するものであって、上記同期信号を上記メモリデバイス、上記エンジン、及び上記コントローラに出力するクロックデバイスとを備え、
全て単一クロックサイクル内で、コントローラ自体の演算を実行している間、上記プログラムのうちの１つを実行するために、上記コントローラは上記命令のうちの１つを上記エンジンに出力することを特徴とするデータ処理システム。
【請求項２】
データを選択的に格納するためのデータデバイスと、
上記メモリデバイスにアクセスし、多数のマシン内にある実行可能プログラムをサポートするエンジンと、
上記多数のマシンの実行可能プログラムの実行を操作するために、上記エンジンに多数の命令のうちの１つを選択的に出力するコントローラと、
毎秒所定数のクロックサイクルからなる同期信号を出力するものであって、上記同期信号を上記データデバイス、上記エンジン、及び上記コントローラに出力するクロックデバイスとを備え、
全て単一クロックサイクル内で、コントローラ自体の演算を実行している間、上記多数のマシンの実行可能プログラムの１つを実行するために、上記コントローラは上記命令のうちの１つを上記エンジンに出力することを特徴とするデータ処理システム。
【請求項３】
上記データデバイスは、ｎ個のセルを有する連想メモリである請求項２記載のデータ処理システム。
【請求項４】
上記連想メモリ内の上記ｎ個のセルの各々が処理回路を有する請求項３記載のデータ処理システム。
【請求項５】
上記コントローラは、実行ユニットと、データスタックポインタを有する統合データスタックとを備える請求項１記載のデータ処理システム。
【請求項６】
上記コントローラによって出される多数の命令のうちの１つが、コマンド「remove」であり、それにより上記コマンド「remove」で伝達された値は、上記スタックポインタから減算され、そのため上記値と等しい数を上記データスタックのトップからポップする請求項５記載のデータ処理システム。
【請求項７】
上記コントローラによって出される多数の命令のうちの１つが、コマンド「restore」であり、それにより最も最近の上記コマンド「remove」の実行中に伝達された値は、上記データスタックポインタに加算され、そのため上記コマンド「remove」の上記実行に先立った最初の状態に上記データスタックポインタを戻す請求項６記載のデータ処理システム。
【請求項８】
上記コントローラが制御スタックと、制御スタックポインタとをさらに備える請求項５記載のデータ処理システム。
【請求項９】
上記コントローラによって出される多数の命令のうちの１つが、コマンド「pushframe」であり、それにより上記コマンド「pushframe」で伝達された値は、上記制御スタックポインタに加算され、そのため上記コマンド「pushframe」で伝達された数と等しいワードの数を上記制御スタックのトップにプッシュする請求項８記載のデータ処理システム。
【請求項１０】
上記コントローラによって出される多数の命令のうちの１つが、コマンド「popframe」であり、それにより上記コマンド「popframe」で伝達された値は、上記制御スタックポインタから減算され、そのため上記値と等しい値の数を上記制御スタックのトップからポップする請求項８記載のデータ処理システム。
【請求項１１】
上記コントローラによって出される多数の命令のうちの１つが、コマンド「xchg」であり、それによりデータスタックのトップの値が、上記制御スタックのトップの値と交換される請求項８記載のデータ処理システム。
【請求項１２】
上記コントローラによって出される多数の命令のうちの１つが、コマンド「cs2ds」であり、それにより上記制御スタックのトップの値が、上記データスタックにプッシュされる請求項８記載のデータ処理システム。
【請求項１３】
上記コントローラによって出される多数の命令のうちの１つが、コマンド「ds2cs」であり、それにより上記データスタックのトップの値が、上記制御スタックにプッシュされる請求項８記載のデータ処理システム。
【請求項１４】
上記コントローラによって出される多数の命令のうちの１つが、コマンド「pushcs」であり、それにより上記制御スタックの値が上記データスタックにプッシュされ、上記値が、上記制御スタックポインタに関係するオフセットの位置に反映され、上記オフセットの位置が上記コマンド「pushcs」で伝達される量と等しい請求項８記載のデータ処理システム。
【請求項１５】
上記コントローラによって出される多数の命令のうちの１つが、マルチサイクルのコマンド「wait zero」であり、それにより１つの上記クロックサイクル中に、上記データスタックのトップの値が０と比較され、
上記データスタックの上記トップの値が０に等しい場合、上記データスタックの上記トップの値が削除され、プログラムカウンタがインクリメントされて、後の命令が実行され、
上記データスタックの上記トップの値が０に等しくない場合、上記プログラムカウンタは変わらず、上記コマンド「wait zero」が後の１クロックサイクルで繰り返される請求項８記載のデータ処理システム。
【請求項１６】
上記コントローラによって出される多数の命令のうちの１つが、コマンド「wait noMaker」であり、それにより１つの上記クロックサイクル中に、上記「wait noMaker」命令によって指示された内部２進フラグが０と比較され、
上記内部２進フラグが０に等しい場合、プログラムカウンタがインクリメントされて、後の命令が実行され、
上記内部２進フラグが０に等しくない場合、上記プログラムカウンタが変わらず、上記コマンド「wait noMaker」が後の１クロックサイクルで繰り返される請求項８記載のデータ処理システム。
【請求項１７】
上記コントローラによって出される多数の命令のうちの１つが、コマンド「wait noFullOut」であり、それにより１つの上記クロックサイクル中に、出力キューが満杯であるか決定され、
上記出力キューが満杯でない場合、プログラムカウンタがインクリメントされて、後の命令が実行され、
上記出力キューが満杯である場合、上記プログラムカウンタは変わらず、上記コマンド「wait noFullOut」が後の１クロックサイクルで繰り返される請求項８記載のデータ処理システム。
【請求項１８】
上記コントローラによって出される多数の命令のうちの１つが、コマンド「wait noEmptyIn」であり、それにより１つの上記クロックサイクル中に、入力キューが空であるか決定され、
上記入力キューが空でない場合、プログラムカウンタがインクリメントされて、後の命令が実行され、
上記入力キューが空である場合、上記プログラムカウンタは変わらず、上記コマンド「wait noEmptyIn」が後の１クロックサイクルで繰り返される請求項８記載のデータ処理システム。
【請求項１９】
選択的にデータ操作するためのデータ処理システムであって、
上記データを格納するための連想メモリデバイスと、
上記メモリデバイスにアクセスし、多数のマシン内にある実行可能プログラムをサポートするエンジンと、
上記エンジンによって可能にされた上記プログラムの実行を操作するために、上記エンジンに多数の命令のうちの１つを選択的に出力するコントローラと、
毎秒所定数のクロックサイクルからなる同期信号を出力するものであって、上記同期信号を上記連想メモリデバイス、上記エンジン、及び上記コントローラに出力するクロックデバイスとを備え、
全て単一クロックサイクル内で、コントローラ自体の演算を実行している間、上記プログラムのうちの１つを実行するために、上記コントローラは上記命令のうちの１つを上記エンジンに出力することを特徴とするデータ処理システム。
【請求項２０】
データデバイスにデータを格納するステップと、
上記メモリデバイスと通信され、多数のマシンの実行可能プログラムをサポートするエンジンを提供するステップと、
上記多数のマシンの実行可能プログラムの実行を操作するために、上記エンジンに多数の命令のうちの１つを選択的に出力するコントローラを提供するステップと、
毎秒所定数のクロックサイクルを有する同期信号を上記データデバイス、上記エンジン及び上記コントローラに出力するステップと、
上記多数の命令のうちの１つを上記エンジンに出力し、上記多数のマシンの実行可能プログラムの１つを、全て１つの上記クロックサイクルで実行するステップとを備えることを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コントローラを有するデータ処理システムに関するものであり、より特に、一例では、コネックスエンジン（CE）の実行、ひいてはCEに含まれるコネックスメモリ（CM）の演算を駆動可能にするスタック指向のプロセッサとして振る舞うコントローラを有するデータ処理システムに関するものである。
【背景技術】
【０００２】
コントローラは、全てでないが多くの複雑にコンピュータ化したシステムに利用されている。典型的には、コントローラは、コントローラと通信状態にあるコンポーネントやデバイスの逐次演算（順次操作）を制御するために、既知のプロセッサ、またはそれと同種のものという形をとる。
【０００３】
そのようなシステムでは、短い時間枠内で大量のデータが処理されるか、探索されるか、そうでなければ操作されることが幾度も必要となる。典型的には、これらの演算が実行される速度を、互いに並行に各々演算するコンポーネントを制御するような総合的なシステムの構成（設定）によって上昇させることができる。すなわち、そのようなシステム内のコントローラからの命令は、各サイクルで並行して、システムの様々なコンポーネントによって実行され、従って、時間を節約し、システム効率を増加させる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、既知のプロセッサ制御されたシステムでは、ある固有の処理効率の悪さが存在する。多分、著しいことに（most significant）、並列に接続された複数のコンポーネントに命令を出すためだけでなく、コントローラ自体で基礎的なルーチンを実行することにも要求された時、既知のプロセッサ制御されたシステムは、十分な「ダウンタイム」を示す。すなわち、既知のプロセッサ制御システムは、統合されたコンポーネントでは、全ての共通時間フレーム（common time-frame）内で、命令の並列実行を取り計らう間に、システム自体で演算を実行することができない。
【０００５】
上述の問題点を懸念して、本発明は、全て単一クロックサイクル中にコントローラ自体内で演算を行うだけでなく、制御されたデバイス内で並列に命令を実行するための命令を出すことができるカルテシアンコントローラ（CC）と称する新型のコントローラを有するデータ処理システムを利用することに努める。
【課題を解決するための手段】
【０００６】
本発明の目的は、効率的なデータ処理システムを提供することにある。
【０００７】
本発明の別の目的は、多数の制御されたデバイスに命令を出すことができる効率的なデータ処理システムを提供することにある。
【０００８】
本発明の別の目的は、互いに並列にある多数の制御されたデバイス内での命令の実行を確実にすることができる効率的なデータ処理システムを提供することにある。
【０００９】
本発明の別の目的は、多数の制御されたデバイスに命令を出すだけでなく、内部演算（internal operatins）を行うことができる効率的なデータ処理システムを提供することにある。
【００１０】
本発明の別の目的は、多数の制御されたデバイスに命令を出すだけでなく、内部演算を行うことができ、コントローラの内部演算及び制御されたデバイスでの並列処理が共に各クロックサイクル毎に遂行される、効率的なデータ処理システムを提供することにある。
【００１１】
本発明の一実施形態によれば、データの選択的な操作用データ処理システムは、セルのデータ処理エンジンを有する。エンジンによってプログラムの実行を操作するために、多数の命令の一つを選択的にセルエンジンに出力するコントローラが利用され、一方、所定数のクロックサイクル毎秒からなる同期クロック信号の出力のためにクロックデバイスが利用される。クロックデバイスは、セルエンジン及びコントローラに同期クロック信号を出力する。全て単一クロックサイクル内で、コントローラ自体で演算の実行している間、コントローラは、一つのプログラムの実行のためにセルエンジンに命令の一つを出力する。
【００１２】
本発明の目的、他の目的及び好ましい実施の形態は、以下に提供する本発明の詳細な説明、特許請求の範囲、及び図面から明らかとなるだろう。
【発明の効果】
【００１３】
本発明によれば、効率的なデータ処理システムを提供するという優れた効果を発揮する。
【発明を実施するための最良の形態】
【００１４】
本出願は、2002年12月5日出願の米国特許仮出願第60/431,154号「ENHANCED VERSION OF CONNEX MEMORY」の優先権を請求するものである。この出願の内容は、2001年8月10日出願の米国特許仮出願第09/928,151号「A MEMORY ENGINE FOR THE INSPECTION AND MANIPULATION OF DATA」、及び2003年12月4日出願の米国特許「CELLULAR ENGINE FOR A DATA PROCESSING SYSTEM 」に関連する。
【００１５】
図１は、カルテシアンコントローラ（CC）100と、それに関連するデータ処理エンジン102とのアーキテクチャの関係を示しており、データ処理エンジン102はコネックスエンジン（CE）と称され、104は、アクティブセルまたはプロセスエレメント（処理用素子）の配列であり、この関係でサポートされ、コネックスメモリ（CM）と称される。同期するクロック回路106は、並列に実行及び処理するべく、多数の命令の一つがCC100によって出され、CE102に伝送されるといった、CC100とCE102の作動を調整するために利用される。
【００１６】
クロック回路106は、毎秒所定数のクロックサイクルを出力することができ、CC100は、CC100が単一クロックサイクル内で並列に多数の命令のうちの一つをCE102に発する間、多数の内部演算（動作）のうちの一つを実行するといった内部演算を実行することができる。バッファメモリ108及びRAMコントローラ110もまた図示されている。
【００１７】
バッファメモリ108は、好ましくは各々がCM104のサイズと等しいサイズを有し、CE102の制御下にある複数のバッファのプールとしてとして組織される。これらのバッファの目的は、ラインと称され、CM104内で適応される（accomodated）よりも長い文字列で実行される検索、挿入及び削除といった演算を可能にし、より低コストでの実装及び定格消費電力を縮小化を提供（offering）することである。
【００１８】
CC100がCE102にコマンドを送り、CE102からデータを受けることができることを提供する本発明の広い様相から外れることなく、CC100がかなり多くの回路特有の構成を有することを本発明では考慮されることが認識されるであろう。
【００１９】
本発明の好適な実施形態によれば、CC100は、CE102内に割り込まれた（enabled）プログラムの実行を操作することができるスタック指向（stack-oriented）の３２ビットのプロセッサである。CE102は、それ自体で、SIMD（単一命令多重データ方式）マシン（計算機）としても知られるデータ並列マシンである。CE102が実行するコードは逐次的なものであるが、CC100からCE102が得た各命令によって指示された演算は、CM104内で１クロックサイクル内で全てのセルによって並列に実行される。すなわち、「find」のような演算のコードは、並列に、互いに独立して、全て正確に仕事をする多数の利用可能なセル内に供給される。
【００２０】
本発明は、CE 102内の並列実行を可能にすると記載されているが、本発明のより広い様相から外れずに、他のマシン及びデバイスがCC100と通信されるように代替的に取り付けられる点に関して制限しない。つまり、本発明は、CE102とは別の、或いは、CE102の代わる他のデバイスが、全て単一クロックサイクル内で、CC100によって出された命令から生じて、並列に制御されることを構想している。
【００２１】
図１を参照すると、CE102は、セルが特殊レジスタ内の演算コードを得ることを求めるサイクル毎の命令をフェッチする（取ってくる）ために、それ自体でプログラムメモリにアクセスすることをしないが、本発明の場合(CC 100)では、それらのためにプログラムメモリにアクセスすることは、異なるエンティティ（entity:実体）をとる。つまり、コードが逐次的であり、命令をフェッチするためにアクセスするポイントが単一である必要がある。それゆえ、CC100の主なジョブは、CE102の実行を操作することである。つまり、個々のセルによって実行される命令をフェッチし、内部レジスタに命令を配置することである。同時に、CC100は、CE102へのゲートウェイとして役立ち、そのため、全ての入出力命令を処理する。CC100は、また、そのような計算機用の意味のあるコードを書くことができない単純な逐次演算を実行する。そのような演算の一つのクラスは所謂「コントロールプリミティブ」である。つまり、（例えば、if、while、repeatなどの）意志決定シーケンスをコード化するために使用される命令である。
【００２２】
逐次的なコントローラが、データ並列マシン用のコードの実行を操作するために典型的に利用されているが、既知のアーキテクチャは、それぞれのコントローラの実施（インプリメンテーション）において、以下の２つの解決法（solutions:ソリューション）のうち１つを利用する。
【００２３】
ARMコントローラ（登録商標）またはインテル（登録商標）プロセッサのような既製のチップのような従来のプロセッサである。これらのコントローラがコントローラの命令を実行する際に、それらに接続されている並列マシンが使用されていない（アイドル状態である）ため、この解決法の効率は、最適ではない。すなわち、既知の従来のプロセッサは、プロセッサの有する命令を実行している間、それらの接続している並列マシンのために命令をフェッチすることができない。
【００２４】
多数のマイクロ命令フィールドを使用するマイクロプログラムされたマシンは、１セットのデバイスに命令を出す。この解決法の効率は、両方ともマイクロコード中で実施される異なる命令セットに属する２つの独立した命令の並列の実行を統合するのが困難であるために最適ではない。
【００２５】
それゆえ、CE102及びCM104で設計、最適化され、他のマシンを制御する役目をすることもできるCC100が、クロックサイクル毎に２つのタイプ（一方はCE102用で、他方はCC100自体用）の命令を並列に実行可能とする命令パイプラインを実施することが本発明の重要な様相である。
【００２６】
評価されるように、各クロックサイクル内の２つのタイプの命令の実行を可能にすることによって、CC100は、より効率的に及び時間に敏感な方法でデータ操作を行うことができる。特に、CC100は、単一クロックサイクルで２つの異なる命令セットに属するコードの実行を制御することができる。既知の逐次コントローラ及びこれらの並列マシンは、同じタスクを実行するために２つ或いはそれ以上のクロックサイクルを要する。
【００２７】
上述したように、CC100は、RISCアーキテクチャを有し、全て単一命令クロックサイクルで、CE102内の対応する（correponding）演算を生成している間、内部演算を行うことができる。このように、CC100及びCE102内の両方の演算のための命令は、CC100の各命令でエンコードされる。
【００２８】
本発明の好適な実施形態では、以下のリソースがCC100の構造の一部であり、CC100はスタックに基づいたマシンである。
【００２９】
１．コントロールユニット。そのメインコンポーネントは、プログラムメモリ及び制御スタックである。
【００３０】
２．実行ユニット。そのメインコンポーネントは、データスタック、論理ユニット及び算術ユニットといったデータメモリである。
【００３１】
３．入出力（I/O）ユニット。そのメインコンポーネントは２つのFIFOである。
【００３２】
４．相互マシン（co-machine）インターフェイスであり、主に、ドライバ及びレシーバを含む。
【００３３】
CC100用の命令セット
図２は、ccOpフィールドでエンコードされるようなCC100内の命令だけでなく、ceOpフィールドで園コートされるようなCE102内の命令を、並列に実行するシステム内でのCC100の命令の形式を示している。
【００３４】
命令は以下のフィールドを含み、それらフィールドは、instr［31:25］（25番目〜３１番目のビット）に位置し、CC100用の演算コードであるccOpと、instr［24:17］（17番目〜24番目のビット）に位置し、CE102用の（CE102に送られ、ccOpフィールドでエンコードされる命令と並列に実行される）演算コードであるceOpと、instr［16:0］（0番目〜16番目のビット）に位置し、もし要求されれば、両方の命令に利用されるかもしれない、一方の命令用の即値（immediate）オペランドであるvalueとである。
【００３５】
CC100の好適な実施形態によって実施される命令は、以下のカテゴリに分類される。
【００３６】
１．算術及び論理命令
【００３７】
２．データ転送命令
【００３８】
３．以下（ａ〜ｄ）を含むスタック命令
【００３９】
ａ．remove<num>：リムーブは、データスタックポインタからnumの値を引くことにより、データスタックのトップからnumオペランドと等しい値の数をポップする（スタックから取る）。
【００４０】
ｂ．resotre<num>：リストアは、リムーブ命令の最後の実行の前の状態にスタックポインタの値を復元する。
【００４１】
ｃ．pushframe<num>：プッシュフレームは、制御スタックポインタにnumの値を加えることにより、numオペランドと等しいワードの数を制御スタックにプッシュする（入れる）。尚、新しくプッシュされた制御スタックフレームの内容は、定義されていないことに注意する。
【００４２】
ｄ．popframe<num>：ポップフレームは、制御スタックポインタからnumの値を引くことにより、制御スタックのトップからnumオペランドと等しいワードの数をポップする。
【００４３】
４．次のａ〜ｄを含むスタック交換命令
【００４４】
ａ．xchgは、データスタック及び制御スタックのトップの値をそれぞれ交換する。
【００４５】
ｂ．cs2dsは、制御スタックのトップから値をポップし、その値をデータスタックにプッシュする
ｃ．ds2csは、データスタックのトップから値をポップし、その値を制御スタックにプッシュする
ｄ．pushcs<num>は、制御スタックポインタに関係するオフセットがnumオペランドから付与される制御スタックの値をデータスタックにプッシュする。
【００４６】
５．制御命令
【００４７】
６．完結するために１つ以上のサイクルを要する「wイベント」の形式である待機命令。待機型の命令の各サイクル内では、イベントと称されるある（certain）ブール条件が求められる。イベントの真理値が真である場合、CCプログラムカウンタがインクリメント（増加）される。そうでなければ、プログラムカウンタは変わらず、その結果、同じ条件も次のクロックサイクル内でテストされる。CC100の好適な実施形態では、待機型の命令に関連したイベントのいくつかは、以下のａ〜ｄのとおりである。
【００４８】
ａ．zero：データスタックのトップが0と比較され、0と等しくなければディクリメントされ、そうでなければ（0と等しければ）データスタックのトップの値が削除される。
【００４９】
ｂ．noMarker：CC100の好適な実施形態ではCE102である制御システムによってセットされるフラグ。
【００５０】
ｃ．noFullOut真理値が真の場合、出力FIFOが新しいデータを受信する準備ができていることを示すフラグ。
【００５１】
ｄ．noEmptyIn：真理値が真の場合、入力FIFOがデータの少なくとも１つのワードを含むことを示すフラグ。
【００５２】
７．テスト命令
【００５３】
８．条件付き飛越し命令
【００５４】
９．入出力命令
【００５５】
上述のリストは、明示されたカテゴリのCC100の好適な実施形態によって実施された命令を提供するが、本発明のより広い様相から外れることなく、CC100が、他に明示されていないカテゴリに追加される命令を実施できることが容易に認識されるであろう。実際は、上述のリストは、説明及び例示するように提供されたものであって、上記のリストに記載されたカテゴリ内でさえ網羅したものとして解釈されるべきではない。
【００５６】
本発明は好適な実施形態に関して説明したが、形態及び詳細における様々な変更がなされうることが、当業者に理解されるであろう。また、本発明の本質的な適用範囲から逸脱することなく、構成要素と同等のものが用いられてもよい。したがって、本発明は、開示した発明の実施の形態に制限されるものではなく、添付の特許請求の範囲内にある実施の形態を全て含むことが意図される。
【図面の簡単な説明】
【００５７】
【図１】図１は、本発明の一実施形態を示すメモリエンジン及び同期クロック素子を有するカルテシアンコントローラの通常のアーキテクチャを示すブロック図である。
【図２】図２は、カルテシアンコントローラの命令形式を表している。
【符号の説明】
【００５８】
１００  コントローラ（ＣＣ）
１０２  コネックスエンジン（ＣＥ）
１０４  コネックスメモリ（ＣＭ）
１０６  クロックデバイス
１０８  バッファメモリ
１１０  ＲＡＭコントローラ
【図１】
2006515446.tif 000003
【図２】
2006515446.tif 000004
【国際調査報告】
2006515446.tif 000005