(57)【要約】データ処理システム（102）は、各セルが一つの処理回路を有するｎ個のセルを有する連想メモリ素子（104）を有する。コントローラ（100）は、連想メモリ素子（104）に多数の命令を出すために用いられ、一方、クロック素子（106）は、秒あたり所定数のクロックサイクルを備える同期クロック信号を出力するために用いられる。クロック素子（106）は、連想メモリ素子（104）及び、１クロックサイクル内で、同時にすべてのｎ個のセルに多数の命令の一つを全体的に伝送するコントローラに同期クロック信号を出力する。
2006509306.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システム用セルエンジンであって、上記エンジンは、ｎ個のセルを有し、上記ｎ個のセルの各々がｍビット格納可能なデータ装置と、
ｐ個のベクトルを有し、上記ｐ個のベクトルの各々がｎ×ｍの記憶容量を有するベクトルメモリと、
上記ｎ個のセルの各々のローカル状態に依存して上記ｎ個のセルの各々を区分する制御相互接続ネットワークと、
コントローラから出された命令を受信する命令レジスタと、
秒当たり所定数のクロックサイクルを備える同期クロック信号を出力し、上記同期クロック信号を上記データ装置及び上記ベクトルメモリに出力するクロック装置とを備え、
上記エンジンは上記ｎ個のセルの全てに上記命令を上記１クロックサイクルで同時に全体に伝送し、上記命令が上記制御相互接続ネットワークによる上記ｎ個のセルの各々の上記区分に従って、全て１つの上記クロックサイクル内で、上記データ装置内の選択されたセルによって並列に実行されることを特徴とするデータ処理システム用セルエンジン。
【請求項２】
上記命令が、上記データ装置内の上記ｎ個のセルすべてによって並列に実行される請求項１記載のデータ処理システム用セルエンジン。
【請求項３】
個々のセルとそのセルの右隣及び左隣のセルとをそれぞれ接続するデータ相互接続ネットワークをさらに備える請求項１記載のデータ処理システム用セルエンジン。
【請求項４】
上記制御相互接続ネットワークが上記ｎ個のセルの各々のローカル状態及び上記ｎ個のセル全てのグローバル状態に依存して上記ｎ個のセルをそれぞれ区分する請求項１記載のデータ処理システム用セルエンジン。
【請求項５】
上記ｎ個のセルの各々が、ステートフィールドとデータフィールドとを有し、上記ステートフィールドが上記ｎ個のセルの各々のローカル状態をエンコードするためのマーカビットを備え、
上記マーカビットはマークされた状態とマークされない状態のどちらか一方である請求項４記載のデータ処理システム用セルエンジン。
【請求項６】
上記ステートフィールドが特別の命令サブセットに属する上記命令の上記実行によって実装されるように連想メカニズムを用いて修正される請求項５記載のデータ処理システム用セルエンジン。
【請求項７】
上記制御相互接続ネットワークによる上記ｎ個のセルの各々の上記区分にしたがって、上記ｎ個のセル内で論理算術命令を実行することによって、上記データフィールドが修正される請求項６記載のデータ処理システム用セルエンジン。
【請求項８】
上記データ相互接続ネットワーク及び上記制御相互接続ネットワークの両方が拡張可能である請求項３記載のデータ処理システム用セルエンジン。
【請求項９】
上記データ装置が、連想メモリ素子である請求項１記載のデータ処理システム用セルエンジン。
【請求項１０】
上記連想メモリ素子内の上記ｎ個のセルの各々が処理回路を有する請求項９記載のデータ処理システム用セルエンジン。
【請求項１１】
データ処理システム用エンジンであって、
ｎ個のセルを有するメモリ素子と、
上記メモリ素子に選択的に命令を出すためのコントローラと、
上記ｎ個のセルの各々のローカル状態と連動して作動するセル区分装置と、
秒当たりの所定数のクロックサイクルを備える同期クロック信号を出力し、上記同期クロック信号を上記メモリ素子及び上記コントローラに出力するクロック装置とを備え、
上記エンジンが全てのｎ個のセルに上記命令を１つの上記クロックサイクルで同時に全体に伝送し、
上記命令が、上記セル区分装置によって指示された上記ｎ個のセルの上記ローカル状態に従って、上記メモリ素子内の選択されたセルによって実行され、上記命令の上記実行が、１つの上記クロックサイクル内で上記選択されたセルの各々で同時に起きることを特徴とするデータ処理システム用エンジン。
【請求項１２】
上記命令が上記メモリ素子内で全ての上記ｎ個のセルによって実行される請求項１１記載のデータ処理システム用エンジン。
【請求項１３】
上記メモリ素子が従来のアドレス指定をしない請求項１１記載のデータ処理システム用エンジン。
【請求項１４】
上記メモリ素子が連想メモリ素子である請求項１１記載のデータ処理システム用エンジン。
【請求項１５】
上記ｎ個のセルの各々が処理回路を有する請求項１１記載のデータ処理システム用エンジン。
【請求項１６】
上記処理回路がアキュムレータを有する請求項１５記載のデータ処理システム用エンジン。
【請求項１７】
上記ｎ個のセルの各々がマーカビットを持つフィールドを有し、
上記ローカル状態が上記マーカビットのマークされた状態またはマークされない状態の一方を示す請求項１１記載のデータ処理システム用エンジン。
【請求項１８】
上記セル区分装置が上記ｎ個のセルの上記グローバル状態に関連して作動し、上記命令が、上記セル区分装置によって指示された上記ｎ個のセルの上記ローカル状態及び上記グローバル状態に従って、上記メモリ素子内の選択されたセルによって実行され、上記命令の上記実行が、１つの上記クロックサイクル内で上記選択されたセルの各々で同時に起きる請求項１１記載のデータ処理システム用エンジン。
【請求項１９】
上記セル区分装置により利用される上記グローバル状態が、全ての上記ｎ個のセルの上記ローカル状態によって決定される請求項１８記載のデータ処理システム用エンジン。
【請求項２０】
上記命令が、ｎ個のセルのうち上記マークされた状態にセットされた上記マーカビットを有するセル内だけで実行される請求項１７記載のデータ処理システム用エンジン。
【請求項２１】
上記ｎ個のセルの各々が複数のマーカビットをもつフィールドを有する請求項１１記載のデータ処理システム用エンジン。
【請求項２２】
ｎ個のセルを有し、上記ｎ個のセルの各々が処理回路及びｍビットの記憶容量を有する連想メモリ素子と、
上記連想メモリ素子に多数の命令を出すためのコントローラと、
秒あたり所定数のクロックサイクル備えた同期クロック信号を出力し、上記同期クロック信号を上記連想メモリ素子及び上記コントローラに出力するクロック装置とを備え、
上記コントローラが全てのｎ個のセルに上記多数の命令のうちの一つを、一つの上記クロックサイクルで同時に全体に伝送することを特徴とするデータ処理システム。
【請求項２３】
上記ｎ個のセルの各々のローカル状態に関連して選択的に作動する区分装置を備え、
上記命令が、上記セル区分装置によって指示された上記ｎ個のセルの上記ローカル状態に従って、上記メモリ素子内の選択されたセルによって実行され、上記命令の上記実行が、１つの上記クロックサイクル内で上記選択されたセルの各々で同時に起きる請求項２２記載のデータ処理システム。
【請求項２４】
ｎ個のセルの各々がステートフィールド及びデータフィールドを有し、上記ステートフィールドが上記ｎ個のセルの各々のローカル状態をエンコードするためのマーカビットを有し、それにより上記ｎ個のセルの各々のマークされた状態及びマークされない状態のどちらか一方を示す請求項２３記載のデータ処理システム。
【請求項２５】
上記コントローラによって出される上記多数の命令の一つが、コマンド「load line immediate」であり、それにより上記マークされた状態の上記ｎ個のセルの全ての内容が、上記コマンド「load line immediate」によって指示されたデータに置き換えられる請求項２４記載のデータ処理システム。
【請求項２６】
ｐ個のベクトルを有し、上記ｐ個のベクトルの各々がそれぞれｍビットｎ個の要素を有するベクトルメモリをさらに備え、
上記コマンド「load line immediate」によって指示されたデータが上記ｐ個のベクトルの一つに対応する請求項２５記載のデータ処理システム。
【請求項２７】
上記コントローラによって出される上記多数の命令の一つが、コマンド「store line immediate」であり、それにより上記マークされた状態である全てのｎ個のセルの内容が、上記コマンド「store line immediate」で指示されるメモリベクトルに保存される請求項２４記載のデータ処理システム。
【請求項２８】
上記コントローラによって出される上記多数の命令の一つが、コマンド「left limit」であり、それにより検索スペースの左側の境界が上記マークされた状態である上記ｎ個のセルの最左端のセルにセットされる請求項２４記載のデータ処理システム。
【請求項２９】
上記コントローラによって出される上記多数の命令の一つが、コマンド「right limit」であり、それにより検索スペースの右側の境界が上記マークされた状態である上記ｎ個のセルの最右端のセルにセットされる請求項２４記載のデータ処理システム。
【請求項３０】
上記コントローラが上記ｎ個のセル内での検索スペースを動的に制限する請求項２４記載のデータ処理システム。
【請求項３１】
上記コントローラによって出される上記多数の命令の一つが、コマンド「find」であり、それにより上記コマンド「find」によって指示された引数と等しい値を保持するｎ個のセルが識別され、
上記コマンド「find」は、上記識別されたｎ個のセルの右に位置する上記ｎ個のセルの各々では、上記マーカビットを上記マークされた状態にセットし、他のすべてのｎ個のセルでは、マーカビットを上記ｎ個のセルを上記マークされない状態にセットする請求項２４記載のデータ処理システム。
【請求項３２】
上記コントローラによって出される上記多数の命令の一つがコマンド「match」であり、それにより上記コマンド「match」によって指示された引数に整合する上記データフィールドを有する上記マークさた状態のマーカビットを持つ上記ｎ個のセルの各々が識別され、
上記コマンド「match」は、上記識別された上記ｎ個のセル以下の上記ｎのセルの各々では、上記マーカビットをマークされた状態にセットし、他のすべての上記ｎ個のセルでは、マーカビットを上記ｎ個のセルを上記マークされない状態にセットする請求項２４記載のデータ処理システム。
【請求項３３】
上記コントローラによって出される上記多数の命令の一つがコマンド「find and mark left」であり、それにより上記コマンド「find and mark left」によって指示された引数と等しい値を保持する上記ｎ個のセルの各々が識別され、
上記コマンド「find and mark left」は、上記ｎ個のセルの左に位置する上記ｎ個のセルの各々では、上記マーカビットを上記マークされた状態にセットし、他のすべてのｎ個のセルでは、上記マーカビットを上記マークされない状態にセットする請求項２４記載のデータ処理システム。
【請求項３４】
上記コントローラによって出される上記多数の命令の一つがコマンド「match and mark left」であり、それにより上記マークされた状態のマーカビットを有し、かつ上記コマンド「match and mark left」によって指示された引数と整合する上記データフィールドを有する上記ｎ個のセルの各々が識別され、
上記コマンド「match and mark left」は、上記識別されたｎ個のセルの左に位置する上記ｎ個のセルのそれぞれにおいて、上記マーカビットを上記マークされた状態にセットする請求項２４記載のデータ処理システム。
【請求項３５】
上記コントローラによって出される上記多数の命令の一つがコマンド「markall」であり、それにより上記検索スペース内の上記ｎ個のセルのそれぞれのマーカビットが上記マークされた状態にセットされる請求項２８記載のデータ処理システム。
【請求項３６】
上記コントローラによって出される上記多数の命令の一つがコマンド「addmark」であり、それにより上記コマンド「addmark」によって指示された引数と等しい値を含む上記ｎ個のセルのそれぞれの上記マーカビットが上記マークされた状態にセットされ、
かつ、上記コマンド「addmark」は上記ｎ個のセルの他のいずれのマーカビットには作用しない請求項２４記載のデータ処理システム。
【請求項３７】
上記コントローラによって出される上記多数の命令の一つがコマンド「mark」であり、それにより上記コマンド「mark」によって指示された引数と等しい値を含む上記ｎ個セルのそれぞれの上記マーカビットが上記マークされた状態にセットされ、
かつ、上記コマンド「mark」が、上記コマンド「mark」によって指示された引数と等しい値を含まない上記ｎ個のセルの各々では、上記マーカビットを上記マークされない状態にセットする請求項２４記載のデータ処理システム。
【請求項３８】
上記コントローラによって出される上記多数の命令の一つがコマンド「clr」であり、それにより上記コマンド「clr」によって指示された引数と等しい値を含む上記ｎ個のセルのそれぞれのマーカビットが上記マークされない状態にセットされる請求項２４記載のデータ処理システム。
【請求項３９】
上記コントローラによって出される上記多数の命令の一つがコマンド「clear first」であり、それにより上記マーカビットを有する上記ｎ個のセルの上記最左端のセルが上記マークされない状態にセットされる請求項２４記載のデータ処理システム。
【請求項４０】
上記コントローラによって出される上記多数の命令の一つがコマンド「trace」であり、上記連想メモリ素子で上記ｎ個のセルのすべて上記マーカビットが左側へ複写される請求項２４記載のデータ処理システム。
【請求項４１】
上記コントローラによって出される上記多数の命令の一つがコマンド「keepl」であり、上記ｎ個のセルの上記マークされた状態の最右端を除く上記ｎ個のセルのすべての上記マーカビットが上記マークされない状態にセットされる請求項２４記載のデータ処理システム。
【請求項４２】
上記コントローラによって出される上記多数の命令の一つがコマンド「clrl」であり、上記ｎ個のセルの最右端のマークされた状態のマーカビットが上記マークされない状態にセットされる請求項２４記載のデータ処理システム。
【請求項４３】
上記コントローラによって出される上記多数の命令の一つがコマンド「left」であり、上記ｎ個のセルのすべての上記マーカビットが一つ左側に移動される請求項２４記載のデータ処理システム。
【請求項４４】
上記コントローラによって出される上記多数の命令の一つがコマンド「right」であり、上記ｎ個のセルのすべての上記マーカビットが一つ右側に移動される請求項２４記載のデータ処理システム。
【請求項４５】
上記コントローラによって出される上記多数の命令の一つがコマンド「cright」であり、右隣のセルが上記コマンド「cright」によって指示された引数と等しい値を含まなければ、上記マークされた状態にある上記ｎ個のセルのすべての上記マーカビットが上記右隣のセルに一つ右側移動され、
かつ、上記コマンド「cright」は、上記右隣のセルが上記コマンド「cright」によって指示された引数と等しい値を含むとき、上記右隣の上記データフィールドを所定の値に置き換える請求項２４記載のデータ処理システム。
【請求項４６】
上記コントローラによって出される上記多数の命令の一つがコマンド「cleft」であり、左隣のセルが上記コマンド「cleft」によって指示された引数と等しい値を含まなければ、上記マークされた状態にある上記ｎ個のセルのすべての上記マーカビットが上記左隣のセルに一つ左側移動され、
かつ、上記コマンド「cleft」は、上記左隣のセルが上記コマンド「cleft」によって指示された引数と等しい値を含むとき、上記左隣の上記データフィールドを所定の値に置き換える請求項２４記載のデータ処理システム。
【請求項４７】
上記コントローラによって出される上記多数の命令の一つがコマンド「nop」であり、動作なしが実行される請求項２４記載のデータ処理システム。
【請求項４８】
上記コントローラによって出される上記多数の命令の一つがコマンド「reset」であり、上記ｎ個のセルのデータフィールドに上記コマンド「reset」によって指示された値が割り当てられる請求項２４記載のデータ処理システム。
【請求項４９】
上記コントローラによって出される上記多数の命令の一つがコマンド「get」であり、上記マークされた状態の上記ｎ個のセルの最左端のセルに格納された値が上記連想メモリ素子に出力され、
かつ、上記マークされた状態の上記最左端のセルの上記マーカビットが一つ右のセルに移動される請求項２４記載のデータ処理システム。
【請求項５０】
上記コントローラによって出される上記多数の命令の一つがコマンド「back」であり、最左端のマークされたセルに格納された値が上記連想メモリ素子から出力され、
上記最左端のマークされたセルのマーカビットが一つ左のセルに移動される請求項２４記載のデータ処理システム。
【請求項５１】
上記コントローラによって出される上記多数の命令の一つがコマンド「set」であり、上記コマンド「set」によって指示された値を上記マークされた状態にあるｎ個のセルの最左端のセルに格納される請求項２４記載のデータ処理システム。
【請求項５２】
上記コントローラによって出される上記多数の命令の一つがコマンド「setall」であり、上記コマンド「setall」によって指示された値が上記マークされた状態の上記ｎ個のセルのすべてに格納される請求項２４記載のデータ処理システム。
【請求項５３】
上記コントローラによって出される上記多数の命令の一つがコマンド「ins」であり、上記コマンド「ins」によって指示された値が上記マークされた状態の上記ｎ個のセルの最左端の前に位置する挿入点で上記ｎ個のセルの一つに格納され、
かつ、上記コマンド「ins」は上記挿入点の右に位置する上記ｎ個のセルのそれぞれの内容を右側に移動させる請求項２４記載のデータ処理システム。
【請求項５４】
上記コントローラによって出される上記多数の命令の一つがコマンド「del」であり、上記マークされた状態の上記ｎ個のセルの最左端のセルのデータフィールドを消去し、
かつ、上記コマンド「del」が上記最左端のマークされたセルの右に位置する上記ｎ個のセルの内容を一つ右側に移動させる請求項２４記載のデータ処理システム。
【請求項５５】
上記コントローラによって出される上記多数の命令の一つがコマンド「cpr」であり、上記マークされた状態のすべての上記ｎ個のセルの内容が一つ右側にコピーされる請求項２４記載のデータ処理システム。
【請求項５６】
上記コントローラによって出される上記多数の命令の一つがコマンド「cpl」であり、上記マークされた状態のすべての上記ｎ個のセルの内容が一つ左側にコピーされる請求項２４記載のデータ処理システム。
【請求項５７】
上記コントローラによって出される上記多数の命令の一つがコマンド「ccpr」であり、上記マークされた状態のすべての上記ｎ個のセルの内容が、上記マークされた状態のコピーと共に、一つ右側にコピーされ、
かつ、上記コマンドは「ccpr」は、上記内容が上記コマンド「ccpr」によって指示された値と等しい上記ｎ個のセルの上記マークされた状態をコピーしない請求項２４記載のデータ処理システム。
【請求項５８】
上記コントローラによって出される上記多数の命令の一つがコマンド「ccpl」であり、上記マークされた状態のすべての上記ｎ個のセルの内容が、上記マークされた状態のコピーを含めて、一つ左側にコピーされ、
かつ、上記コマンドは「ccpl」は、上記内容が上記コマンド「ccpl」によって指示された値と等しい上記ｎ個のセルの上記マークされた状態をコピーしない請求項２４記載のデータ処理システム。
【請求項５９】
上記コントローラによって出される上記多数の命令の一つがコマンド「ld」であり、上記コマンド「ld」によって指示された値が上記マークされた状態のすべての上記ｎ個のセルの上記データフィールド内にロードされる請求項２４記載のデータ処理システム。
【請求項６０】
ｐ個のベクトルを有するベクトルメモリ備え、
上記コントローラによって出される上記多数の命令の一つがコマンド「st」であり、上記マークされた状態のすべての上記ｎ個のセルの上記データフィールドの内容が、上記コマンド「st」によって指示された上記ｐ個のベクトルの一つに対応する場所にコピーされる請求項２４記載のデータ処理システム。
【請求項６１】
上記コントローラによって出される上記多数の命令の一つがコマンド「add」であり、上記コマンド「add」によって指示された値が上記マークされた状態のすべての上記ｎ個のセルのデータフィールドに加えられる請求項２４記載のデータ処理システム。
【請求項６２】
上記コントローラによって出される上記多数の命令の一つがコマンド「fadd」であり、上記コマンド「fadd」によって指示された値が上記マークされた状態のすべての上記ｎ個のセルのデータフィールドに加えられ、
かつ、上記マークされた状態の上記ｎ個のセルの各々の右に位置する上記連想メモリ素子内のセルの上記データフィールドの最左端のビットがキャリービットとして作用する請求項２４記載のデータ処理システム。
【請求項６３】
上記コントローラによって出される上記多数の命令の一つがコマンド「sub」であり、上記コマンド「sub」によって指示された値が上記マークされたすべての上記ｎ個のセルのデータフィールドから減算される請求項２４記載のデータ処理システム。
【請求項６４】
上記コントローラによって出される上記多数の命令の一つがコマンド「fsub」であり、上記コマンド「fsub」によって指示された値が上記マークされたすべての上記ｎ個のセルのデータフィールドから減算され、
かつ、上記マークされた状態の上記ｎ個のセルの各々の右に位置する上記連想メモリ素子内のセルの上記データフィールドの最左端のビットがキャリービットとして作用する請求項２４記載のデータ処理システム。
【請求項６５】
上記コントローラによって出される上記多数の命令の一つがコマンド「half」であり、上記マークされた状態のすべての上記ｎ個のセルのデータフィールドが２つに分割される請求項２４記載のデータ処理システム。
【請求項６６】
上記コントローラによって出される上記多数の命令の一つがコマンド「fhalf」であり、上記マークされた状態のすべての上記ｎ個のセルのデータフィールドが２つに分割され、
かつ、上記ｎ個のセルの各々の左に位置する上記連想メモリ素子内のセルの最下位データビットが上記マークされた状態である場合、上記データフィールドの最左端のビットに１が加えられる請求項２４記載のデータ処理システム。
【請求項６７】
上記コントローラによって出される上記多数の命令の一つがコマンド「lt」であり、上記コマンド「lt」によって指示された値が上記マークされた状態のすべての上記ｎ個のセルの上記データフィールドと比較され、
上記コマンド「lt」によって指示された値が上記データフィールドより大きい場合、上記コマンド「lt」は上記マークされた状態の上記ｎ個のセルのマーカビットを上記マークされない状態にセットし、
上記コマンド「lt」によって指示された値が上記データフィールド以下の場合、上記マークされた状態の上記ｎ個のセルの上記データフィールドの最左端のビットを１にセットする請求項２４記載のデータ処理システム。
【請求項６８】
上記コントローラによって出される上記多数の命令の一つがコマンド「flt」であり、上記コマンド「flt」によって指示された値が上記マークされた状態のすべての上記ｎ個のセルの上記データフィールドと比較され、
上記コマンド「flt」によって指示された値が上記データフィールドより大きく、かつ上記マークされた状態の上記ｎ個のセルの各々の左に位置する上記連想メモリ素子内のセルの上記データフィールドの最左端のビットが０である場合、上記コマンド「flt」は上記マークされた状態の上記ｎ個のセルのマーカビットを上記マークされない状態にセットし、
上記コマンド「flt」によって指示された値が上記データフィールド以下の場合、上記コマンド「flt」は上記マークされた状態の上記ｎ個のセルの上記データフィールドの最左端のビットを１にセットし、
上記マークされた上記ｎ個のセルの各々の左に位置する上記連想メモリ素子内のセルの上記データフィールドの最左端のビットが１である場合、上記コマンド「flt」は上記マークされた状態の上記ｎ個のセルの上記データフィールドの最左端のビットを１にセットし、
かつ、上記コマンド「flt」は上記マークされた上記ｎ個のセルの各々の左に位置する上記連想メモリ素子内のセルの上記データフィールドの最左端のビットを０にセットする請求項２４記載のデータ処理システム。
【請求項６９】
上記コントローラによって出される上記多数の命令の一つがコマンド「gt」であり、上記コマンド「gt」によって指示された値が上記マークされた状態のすべての上記ｎ個のセルの上記データフィールドと比較され、
上記コマンド「gt」によって指示された値が上記データフィールド以下の場合、上記コマンド「gt」は上記マークされた状態の上記ｎ個のセルのマーカビットを上記マークされない状態にセットし、 
上記コマンド「gt」によって指示された値が上記データフィールドより大きい場合、上記マークされた状態の上記ｎ個のセルの上記データフィールドの最左端のビットを１にセットする請求項２４記載のデータ処理システム。
【請求項７０】
上記コントローラによって出される上記多数の命令の一つがコマンド「fgt」であり、上記コマンド「fgt」によって指示された値が上記マークされた状態のすべての上記ｎ個のセルの上記データフィールドと比較され、
上記コマンド「fgt」によって指示された値が上記データフィールド以下であり、かつ上記マークされた状態の上記ｎ個のセルの各々の左に位置する上記連想メモリ素子内のセルの上記データフィールドの最左端のビットが０である場合、上記コマンド「fgt」は上記マークされた状態の上記ｎ個のセルのマーカビットを上記マークされない状態にセットし、
上記コマンド「fgt」によって指示された値が上記データフィールドより大きい場合、上記コマンド「fgt」は上記マークされた状態の上記ｎ個のセルの上記データフィールドの最左端のビットを１にセットし、
上記マークされた上記ｎ個のセルの各々の左に位置する上記連想メモリ素子内のセルの上記データフィールドの最左端のビットが１である場合、上記コマンド「fgt」は上記マークされた状態の上記ｎ個のセルの上記データフィールドの最左端のビットを１にセットし、
かつ、上記コマンド「fgt」は上記マークされた上記ｎ個のセルの各々の左に位置する上記連想メモリ素子内のセルの上記データフィールドの最左端のビットを０にセットする請求項２４記載のデータ処理システム。
【請求項７１】
上記コントローラによって出される上記多数の命令の一つがコマンド「test」であり、上記コマンド「test」によって指示された値を有する上記マークされた状態のすべての上記ｎ個のセルにおいて、上記コマンド「test」が上記マーカビットを上記マークされない状態にセットし
かつ、上記指示された値を有するすべての上記ｎ個のセルの左のセルの最左端ビットが１である場合、上記コマンド「test」は上記指示された値を有するすべての上記ｎ個のセルの上記データフィールドに所定の値を割り当て、
上記最左端のビットが１である場合、上記コマンド「test」は上記指示された値を有するすべての上記ｎ個のセルの左のセルの最左端ビットを消去する請求項２４記載のデータ処理システム。
【請求項７２】
上記コントローラによって出される上記多数の命令の一つがコマンド「and」であり、上記マークされた状態のすべての上記ｎ個のセルにおいて、上記コマンド「and」は、上記コマンド「and」によって指示された値と、上記マークされた状態のすべての上記ｎ個のセルの上記データフィールドとをビット単位のＡＮＤ（論理積演算）を実行する請求項２４記載のデータ処理システム。
【請求項７３】
上記コントローラによって出される上記多数の命令の一つがコマンド「or」であり、上記マークされた状態のすべての上記ｎ個のセルにおいて、上記コマンド「or」は、上記コマンド「or」によって指示された値と、上記マークされた状態のすべての上記ｎ個のセルの上記データフィールドとをビット単位のＯＲ（論理和演算）を実行する請求項２４記載のデータ処理システム。
【請求項７４】
上記コントローラによって出される上記多数の命令の一つがコマンド「xor」であり、上記マークされた状態のすべての上記ｎ個のセルにおいて、上記コマンド「xor」は、上記コマンド「xor」によって指示された値と、上記マークされた状態のすべての上記ｎ個のセルの上記データフィールドとをビット単位のＸＯＲ（排他的論理和演算）を実行する請求項２４記載のデータ処理システム。
【請求項７５】
上記コントローラによって出される上記多数の命令の一つがコマンド「cond」であり、上記マークされた状態のすべての上記ｎ個のセルにおいて、上記コマンド「cond」は、上記コマンド「cond」によって指示された値と上記マークされた状態のすべての上記ｎ個のセルのデータフィールドとのビット単位でのAND演算の結果が０である場合、マークされた状態をマークされない状態に交換する請求項２４記載のデータ処理システム。
【請求項７６】
上記コントローラによって出される上記多数の命令の一つがコマンド「ncond」であり、上記マークされたすべての上記ｎ個のセルにおいて、上記コマンド「ncond」は、上記コマンド「ncond」によって指示された値と上記マークされた状態のすべての上記ｎ個のセルのデータフィールドとのビット単位でのAND演算の結果が０でない場合、マークされた状態をマークされない状態に交換する請求項２４記載のデータ処理システム。
【請求項７７】
上記コントローラによって出される上記多数の命令の一つがコマンド「index」であり、上記マークされたすべての上記ｎ個のセルにおいて、上記コマンド「index」は、上記ｎ個のセルの最左端に対する相対する位置に上記マークされた状態のｎ個のセルの各々を示す上記マークされた状態のｎ個のセルの各々に値を割り当てる請求項７１記載のデータ処理システム。
【請求項７８】
上記区分装置が上記ｎ個のセルのグローバル状態を決定し、
上記多数の命令の一つが上記ローカル状態及び上記グローバル状態の両方に依存することなく上記連想メモリ素子内の選択されたセルによって実行され、上記命令の実行が上記１クロックサイクル内で上記選択されたセルの各々において同時に起こる請求項２２記載のデータ処理システム。
【請求項７９】
上記連想メモリ素子が可変長キーフィールドの使用を割り当てる請求項２２記載のデータ処理システム。
【請求項８０】
上記可変長キーフィールドが、データフィールド及びキーフィールドを有し、上記ｎ個のセルの各々がデータフィールド及びキーフィールドを有し、
上記ｎ個のセルのそれぞれに格納されたデータは、上記多数の命令の一つの実行中に、異なる時で上記データフィールド及び上記キーフィールドの一部として、代わりにみなされる請求項７８記載のデータ処理システム。
【請求項８１】
ｎ個のセルを含む連想メモリ素子を形成し、
一つの処理回路を有する上記ｎ個のメモリセルをそれぞれ形成し、
上記連想メモリ素子に多数の命令の一つがコントローラから出され、
秒あたり所定数のクロックサイクルを備える同期クロック信号を出力するクロック素子を用い、上記クロック素子が上記連想メモリ素子及び上記コントローラに上記同期クロック信号を出力し、
一つの上記クロックサイクル内で、上記ｎ個のセルのすべてに同時に上記コントローラから上記多数の命令の一つが全体的に伝達されるステップを備えることを特徴とするデータ処理方法。
【請求項８２】
データ処理システム用セルエンジンであって、上記エンジンは、
各セルが一つの処理回路を有するｎ個のセルを有するメモリ素子と、
上記連想メモリセルに多数の命令の一つを出すコントローラと、
秒あたり所定数のクロックサイクルを備える同期クロック信号を出力し、上記同期クロック信号を上記連想メモリ素子及び上記コントローラに出力するクロック素子とを備え、  上記コントローラが、１つの上記クロックサイクル内で、多数の命令の一つを同時に上記ｎ個のセルに全体的に伝送することを特徴とするデータ処理システム用セルエンジン。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、データ処理システムのエンジンに関するものであり、より特に、データ処理速度及び処理効率を上げるために、アクティブな連想メモリ素子、または連想エンジンをインプリメント（implements）したデータ処理システム用セルエンジンに関するものである。
【背景技術】
【０００２】
全自動または半自動のデータ処理システムは、様々なアプリケーションに不可欠な構成要素（コンポーネント）である。典型的には、データ管理システムは、より大きなコンピュータ化された装置またはシステム内に組み込まれ、必要な算術オペランド、データ変換或いはその他同種のものを実行することによって、その大きなコンピュータ化された装置で実行するデータ管理システムのアプリケーションを支援或いは容易にする役目をする。
【０００３】
知られているように、基礎的なデータ処理システムは、単一命令単一データストリーム方式（SISD）のデバイスとして分類されると共に、最も単純な形式では、プロセッサ、インターフェイス及びメモリ素子（記憶装置）を利用するであろう。プロセッサは、ユーザまたは総合システム内の別のコンポーネントが入力した命令に応じて指示されたタスクを実行する。指示されたタスクを実行する際に、プロセッサは、メモリ素子内に格納された指定されたデータを受け取ると共に、メモリ素子にデータを要求するコマンドを伝達するインターフェイスに依存する。
【０００４】
既知のデータ処理システムは、ほとんど通常のアドレス指定されたメモリ素子を利用している。すなわち、既知のデータシステムは、各ローカル（locale）が各自特定のアドレスを持つ、定義された複数のローカルを有するメモリ素子を利用している。この形式では、プロセッサが、アドレスＢに格納された値にアドレスＡに格納された値を加算することを要求すると、メモリ素子が、メモリ素子内でアドレス指定された特定の場所或いはセルを参照して（proceed）、これらの値をインターフェイスを介して、適正な合計を算出可能なプロセッサに伝送する。そのようなシステムでは、不可欠なコンポーネントの性質及び能力、つまり、プロセッサ及びメモリ素子の性質及び能力は、十分に定義され、互いに区別される。
【０００５】
図１には、入力ライン４を介して入力されたタスクに応じてプロセッサ２が作動する既知のデータ処理システムが描かれている。インターフェイス６は、メモリ素子８内に格納された特定のデータを受け取ることだけでなく、メモリ素子８へデータ要求のような命令を伝送するために利用される。
【０００６】
一つ以上のプロセッサ及びメモリ素子を備えたデータ処理システム、さらに、多重命令ストリームを実行するシステムの一部であるこれらの複合コンポーネントもまた知られている。全体で他の統合プロセッサと協調して作動することは、より大きなタスクの特定の部分に対応可能（応答可能）となるが、これら多重命令多重データストリーム（MIMD）デバイスは、システム内の各プロセッサが密結合されたSISDデバイスの大きな集合として見ることができる。つまり、MIMDデバイスの有用性は、解決されるべき問題が同類でかつ比較的独立した多数の下位問題（sub-problems）に分解可能にすることに向いているといった特定の点に限定される。MIMDデバイスに不可欠なコンポーネントの性質及び能力もまた十分に定義され、互いに区別される。
【０００７】
別の既知データ処理システムは、単一命令多重データストリーム（SIMD）を含む。これらのSIMDデバイスは、互いに同期して同じプログラムを実行するが、各プロセッサが現在の命令によって指定されたオペレータを異なるオペランドに適用し、そのためプロセッサ自身で結果を出す任意の数のプロセッサを利用している。SIMDデバイス内のプロセッサは、オペランドを得てその結果を格納するために集積メモリ素子にアクセスする。ジョブをするためのメモリ素子へアクセスのタイプを有するプロセッサで演算が実行されるので、SIMD素子に不可欠なコンポーネントの性質及び能力は、十分に定義され、互いに区別される。
【０００８】
それゆえ、既知のデータ処理システムが多用のデータを演算できる間、プロセッサ及びメモリ素子の定義されたかつ不変の性質は、様々な演算が完了する際に、処理速度及び効率を制限してしまう。
【０００９】
通常アドレス指定されないメモリ素子の別のクラス（class）を利用する様々なアーキテクチャもまた構築されてきた。これらのメモリ素子は、示されるように、メモリ素子内の記憶場所によって、それぞれデータのビットを分類（区分：catalog）しない「連想（結合，associative）」メモリとして一般に評されている。より正確には、メモリ素子は、その性質或いはメモリ素子に格納された情報の特有の性質によってデータビットを「アドレス指定する」。すなわち、連想メモリ素子内のデータは、格納された場所の名前によって識別されるのではなく、メモリ素子の個々の特別のセルに格納されたデータの特性から識別される。
【００１０】
固定サイズのキーフィールドは、殆どの連想メモリ素子で格納される全てのデータに付けられる。そのとき、探索キーは、指示された命令に従って処理した後、指定された場所に関係なく、連想メモリ素子内から特定のデータフィールドまたは探索キーに適合するキーフィールドに付随する多数のデータフィールドを選択するために用いられる。
【００１１】
連想メモリ素子の実装（implementation，インプリメンテイション）は知られているが、これらのデバイスは、既知のデータ処理システムが使用する標準のプロセッサ、インターフェイス及び通常のアドレス指定するメモリ素子内にある特化したブロックまたはコンポーネントとして常に利用されている。つまり、既知の連想メモリ素子は通常のアレッシング（アドレス指定）プロトコルを使用しないが、それらの連想メモリ素子は、それ自体で情報を処理できず、代わりに既知のプロセッサ及び既知のSISD、SIMD及びMIMDアーキテクチャに一致する方式の外部記憶装置に依存して処理する。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
したがって、本発明は、ジョブを行うために分割されたメモリブロックにアクセスすることなく、プロセッサ及びメモリ素子ブロックの両方として選択的に動作するセルを有する可変サイズのキーを用いたアクティブな連想メモリ素子利用することにより、上述の欠点を克服して、事実上処理時間、演算時間及び伝送時間を短縮するデータ処理用エンジンの提供に努めている。
【課題を解決するための手段】
【００１３】
本発明の目的は、効率的なデータ処理システムを提供する。
【００１４】
本発明の別の重要な点は、幾分かデータの処理速度及び処理効率を増加させるアクティブな連想メモリ、または連想エンジンデバイスを実装したデータ処理システムのためのセルエンジンを提供することにある。
【００１５】
本発明の別の重要な点は、プロセッサ及びメモリ素子の両方として選択的に実行することによって、ジョブを実行する際に別々のメモリブロックにアクセスする必要がないセルを有する連想メモリまたは連想エンジン装置を実装したデータ処理システム用のセルエンジンを提供することにある。
【００１６】
本発明の別の重要な点は、全体への命令またはクエリー（問い合わせ）によってセットされるようなそれぞれの状態（state）に基づいた所定の命令を選択的に処理する個々のセルを有する実行中の（active）連想メモリ素子または連想エンジンを実装したデータ処理システム用のセルエンジンを提供することにある。
【００１７】
本発明の別の重要な点は、単一クロックサイクルで、それぞれの状態に基づいた所定の命令を並列に選択的に処理する個々のセルを有するアクティブな連想メモリ素子または連想エンジンを実装したデータ処理システム用のセルエンジンを提供することにある。
【００１８】
本発明の別の重要な点は、可変長キーフィールドが使用可能なアクティブなメモリ素子またはセルエンジンを実装したデータ処理システム用のセルエンジンを提供することにある。
【００１９】
本発明の別の重要な点は、アクティブなメモリ素子または、構造が均一なセルエンジンを実装したデータ処理システム用のセルエンジンを提供することにあり、それゆえ、メモリに格納された情報と殆ど同じもの（the very same piece）を、プログラムの実行中の異なる時において、キーフィールドまたはデータフィールド（の一部）とすることができる。
【００２０】
本発明の別の目的は、アクティブな連想メモリ素子内で探索スペースの動的な制限を可能にする効率的なデータ処理システム用のセルエンジンを提供することにある。
【００２１】
本発明の別の目的は、セルアレイの一方の端の選択的なアクセス可能性を規定した効率的なデータ処理システム用のセルエンジンを提供することにある。
【００２２】
本発明の別の目的は、連想メモリ素子内で２つまたはそれ以上のセル間におけるデータ伝送を規制することのできる効率的なデータ処理システムのためのセルエンジンを提供することにある。
【００２３】
本発明の一実施形態によれば、データ処理システムは、各セルが処理回路を備えたｎ個のセルを有する連想メモリ素子を備える。コントローラは、多数の命令の一つを連想メモリ素子に出すために用いられ、一方、クロック装置（素子）は、秒あたり所定数のクロックサイクルからなる同期クロック信号を出力するために用いられる。そのクロック装置は、連想メモリ素子に同期クロック信号を出力し、コントローラは、クロックサイクル１個で、ｎ個のセルの全てに同時に多数の命令の一つを全体的に伝送する。
【００２４】
本発明の目的、他の目的及び好ましい実施の形態は、以下に提供する本発明の詳細な説明、特許請求の範囲及び図面から明らかとなるであろう。
【発明の効果】
【００２５】
本発明によれば、効率的なデータ処理システムを提供することができる。
【発明を実施するための最良の形態】
【００２６】
本出願は、2002年12月5日出願の米国特許仮出願第60/431,154号「エンハンスド  バージョン  オブ  コネックス  メモリ（ENHANCED VERSION OF CONNEX MEMORY）」の優先権を請求するものである。この出願の内容は、2001年8月10日出願の米国特許仮出願第09/928,151号「メモリ  エンジン  フォー  ジ  インスペクション  アンド  マニピュレイション  オブ  データ（MEMORY ENGINE FOR THE INSPECTION AND MANIPULATION OF DATA）」、及び2003年12月4日出願の米国特許「データ  プロセッシング  システム  フォー  ア  カルテシアン  コントローラ（DATA PROCESSING SYSTEM FOR CARTESIAN CONTROLLER）」に関連する。
【００２７】
図２は、コントローラ１００（以下、カルテシアン（Cartesian）コントローラ（CC）と称する）とセルエンジン１０２（以下、コネックスエンジン（CE）と称する）とのアーキテクチャの関係を示している。同期するクロック回路１０６は、並列に実行及び処理するべく、多数の命令の一つがCC１００によって出され、CE１０２に伝送されるといった、CC１００とCE１０２の作動を調整するために利用される。
【００２８】
クロック回路１０６は、毎秒所定数のクロックサイクルを出力することができ、CC１００は、CC１００が単一クロックサイクル内で並列に多数の命令のうちの一つをCE１０２に発する間、多数の内部演算（動作）のうちの一つを実行するといった内部演算を実行することができる。
【００２９】
図３に示すように、CE１０２は、複数のアクティブセル、または処理素子（processing elements）の配列で構成され、実施例ではコネックスメモリ（CM）１０４と多数のベクトル１０８を有するRAM（ランダムアクセスメモリ）を有し、各ベクトルがCM１０４と同じ記憶容量を有している。それゆえ、CM１０４の内容を選択的に格納することができる。すなわち、CE１０２は、ｎ個のセルを有するCM１０４と、連想された（結合された）ベクトルメモリ１０８とを備え、逐次CC１００の制御下にある。本発明の一実施例では、メモリベクトル１０８の目的は、より詳しい説明は後述するが、CM１０４内で適応される（accomodated）よりも長い文字列で実行される検索、挿入及び削除といった演算を可能にし、より低コストでの実装及び定格消費電力を縮小化を提供（offer）することである。
【００３０】
CC１００がCE１０２にコマンドを送り、CE１０２からデータを受けることができることを提供する本発明の広い様相から外れることなく、CE１０２がかなり多くの回路特有の構成を有することが考慮することが容易に想到されるであろう。
【００３１】
図３を参照すると、CM１０４内のｎビットセルの各々は、以下のレジスタを備える。
【００３２】
「mark」は１個の１ビットマーカレジスタである。
【００３３】
「w」は主レジスタであり、従来の設計におけるアキュムレータの主（メイン）レジスタと同様の役割を果たし、一方、メモリベクトルの数と等しい多くの汎用レジスタにも関係している。
【００３４】
表記法：xを長さmのビットフィールドとし、yを長さnのビットフィールドとすると、{x,y}は、xにyを加えてなる長さm+nのビットフィールドを表す。この表記法は、任意の数のビットフィールドに一般化することができる。例えば、３変数（引数）のとき、{a, b, c} = {a, {b, c}} = {{a, b}, c}となる。
【００３５】
rを（n+1）ビットのレジスタとし、n≧k≧0とすると、r[k]は、r内の右端（k=0）から左端（k=n）へ数えて、（k+1）番目のビットを表す。
【００３６】
rを（n+1）ビットのレジスタとし、n≧m＞k≧0とすると、r[m:k]は、長さm-k+1のビットフィールド {r [m], r [m-1],..., r [k]}を表す。
【００３７】
したがって、CM104内でのmビットセルの内容は、CM１０４のmarkレジスタの内容に加えられたCM１０４のwレジスタの内容である。
【００３８】
cell [m-1 : 0] = {mark, value}
value [m-2: 0] = {ext, symbol}
symbol [m-3: 0]
ここで、extは、特殊値のアルファベットを作成するために使用される拡張ビットをあらわす（そのとき、ext=1）。
【００３９】
本発明の重要な様相は、データの格納に加えて、積極的に（actively）データ処理するためのCM１０４内の各mビットのセルの能力にある。データ処理は、各mビットセル内、または、所定のセルのすぐ左側または右側のセルに作用してのどちらかで起こる。このように、CM１０４内で各mビットセルの機能性を向上させることにより、より複雑で、他のデータ処理システムの性能を超過するようなシステムレベルの性質を呈することが本発明の注目されるべき点である。
【００４０】
CM１０４内においてセルレベルで積極的にデータ処理する性能は、「マークされた」各セルの性能によって部分的に遂行されることが、本発明の別の重要な様相である。「マークされた」というのは、条件或いは属性の一部であり、タスクを実行するセル、それ自体でオペランドを実行するセル、或いはCM１０４内の隣接したセルとして指し示されることである。
【００４１】
図３を参照すると、本発明の目的のためには、１ビットの内部セルレジスタがmark=1のとき、セルは「マークされた」とみなされ、mark=0のとき、セルは「マークされない」とみなされる。さらに、CM１０４は、特化された命令の発生によって動的に調節することができる「left limit（左側リミット）」及び「right limit（右側リミット）」を有する。加えて、CM１０４の「search space（探索スペース）」は、上記の左側の限界及び右側の限界によって範囲を定められるCM１０４のセグメントである。内部セルレジスタマークが、本発明のより広い様相から外れずに、長さが１ビット以上であってもよいことは容易に認識される。
【００４２】
上述のように、CE１０２に供給されたコードの実行は、CC１００によって引き起こされる。図３に示すように、CE１０２とCC１００間のインターフェイスは、４つの特殊なレジスタを使用している。
【００４３】
・「INR」１１２（データ入力レジスタ）：全てのCE１０２命令は、（もしあれば）INR（CC１００によって供給される）から（即値）データ変数を得る。
【００４４】
・「OUTR」１１４（データ出力）は「マークされない」ビットと一つの値を有する。そのセルの少なくとも一つがマークされれば、OUTRは、第１のマークされたセルに含まれる値に従った０を有する。そうでなければ、OUTRは、11...1のように、処理系依存の特殊値に従った１を有する。
【００４５】
・「OPR」１１６（命令レジスタ）は、現在のCE１０２命令（ソースはCC１００命令で専用のフィールド）用の命令コード（演算コード）を有する。
【００４６】
・「VAR」１１８は、ベクトルメモリ用のアドレスレジスタである。VAR１１８レジスタは、特別なCC１００の命令によって更新され、明確にベクトルを操作する命令への引数として使用される。VARレジスタも、セルに関係した汎用レジスタに関する全ての演算（動作）の実行中に使用される。
【００４７】
さらに、図３に表されているように、入力／出力ライン120は、CM１０４の両端にアクセスするために選択的に利用される。ここで利用される入力／出力ライン１２０は、以下の意味を有している。
【００４８】
・「left_in」１２２ = {w, mark, eq, first}は、全てデフォルトで0である（eq=1というのは、セル内の２つのオペランドが等しいことを意味し、first=1というのは、セルが第１のマークされたセルであることを意味する）。
【００４９】
・「left_out」１２４ = {w, mark, eq, first}は、第１のセルから出る。
【００５０】
・「right_in」１２６ = {w, mark, eq, first}は、全てデフォルトで0である。
【００５１】
・「right_out」１２８= {w, mark, eq, first}は、最後のセルから出る。
【００５２】
図４は、CM１０４内のｍビットセルの内部構造の一実施例を示す図である。図４に示すように、各セルの内部構造は、以下の回路を有する。
【００５３】
・ALUは、加法、減法、比較及びビット単位での論理命令（bitwise logic function）を行う算術論理演算装置１３０である。
【００５４】
・leftMuxは、以下の値からALUに左オペランドを選択するマルチプレクサ１３１である。
【００５５】
w：アキュムレータレジスタ１３４に格納された値
in：入力レジスタ１１２から受信した値
memOut：ベクトルアドレス方式レジスタVAR１１８によってアドレス指定され、ベクトルメモリから読み込まれた値
・aluMuxは、以下のものからアキュムレータレジスタ（w１３４）内にロードされた値を選択するマルチプレクサ１３３である。
【００５６】
w：アキュムレータレジスタ１３４に格納された値
fromLeft：左側のセルのアキュムレータレジスタに格納された値
fromRight：右側のセルのアキュムレータに格納された値
ALU１３０の出力値
・w：アキュムレータレジスタ１３４
・マーカレジスタ
・トライステート出力バッファ
・デコード
デコードは、以下の命令によって生成されたローカルコンテキストに従って命令を解読する（デコードする）組合せ回路１３７である。
【００５７】
・localFlags：ALUから出される
・leftFlags：左のセルから受けとったフラグ
・rightFlags：右のセルから受けとったフラグ
・class_i:トランスコーダから受け取った区分コードであり、トランスコーダは、
・leftMux、rightMux、ALU、aluMux、mark、トライステートバッファへのコマンドコード
・隣接するセルからのフラグ
・states_i  トランスコーダへのセルのビット
を生成するものである。
【００５８】
トランスコーダ
図５は、CE１０２と統合し、相互接続ネットワーク制御の一部の役割をする回路であるトランスコーダの組織図を示している。つまり、トランスコーダは、以下のものによって各セルを区分するために一部利用される。それらは、
・その状態のビット（state_i）（例えば、ローカル状態）と、
・すべてのセルの状態ビット（例えば、、グローバル状態）と、
・以下のカテゴリ内で実行される現用の命令とである。
【００５９】
・マークされたセル
・第１のマークされたセル
・最後のマークされたセル
・リミット内にあるセル(リミットはトランスコーダのメモリ領域内に格納される)
・アクティブセル
本発明のより広い態様から外れることなく、上述のものに他のセルのカテゴリを加えることができることが容易に想到されるであろう。
【００６０】
トランスコーダは、各セルから状態ビット (state_0, state_1,.... state_ (n-1))を受け取り、セルが属するクラス(class_0, class_1,..., class_ (n-1))を特定する3ビットのコードを各セルに送り返す。
【００６１】
トランスコーダは、ORプレフィクスと、リミットメモリと、MUXsとで構成され、ORプレフィクスは、実行された区分（分類，classification）によってセルの相対位置を主に計算する回路１４０であり、リミットメモリは、リミットに関する情報を格納するために使用される2つのラッチ１４１であり、MUXsは、現在の命令に基づき、各セルのクラスを選択するマルチプレクサ１４２である。
【００６２】
トランスコーダは、サイズと速度を最適化するために、２つの異なる方法でインプリメント（implement）することができる。その２つの方法は、nが小さな値のときの線形バージョンと、２次元バージョン（nが大きな値のとき）とであり、２次元バージョンはライントランスコーダ及びカラムトランスコーダを有し、それぞれＯ（n1/2）オーダのサイズを有する。
【００６３】
それゆえ、本発明の別の重要な様相は、CE１０２に命令を出し、そのような命令によりCM１０４内の全てのセルに単一クロックサイクルで並列に送信するCC１００の能力である。CC１００からの命令で設定された基準を満たすセルは、例えば、独立的かつ選択的にセル自体を同じクロックサイクルで同時にマークし、それにより次のクロックサイクルでは、次の命令または演算が、分類の結果によって再び並列に単一クロックサイクルで達成される。
【００６４】
したがって、本発明の重要な他の様相は、セルのローカル状態に従って、トランスコーダが各セルを分類するだけでなく、例えば、マークされた状態かマークされていない状態等、グローバル状態及び現在の命令に従って各セルを分類することである。すなわち、トランスコーダによる一個のセルの分類の一つの様相は、特定のセルのローカル状態が「マークされ」、「マークされた」セルが「第１のマークされた」セルであるか、「最後にマークされた」セルである等のように、特定のセルが、全ての他のセルに関して「グローバル状態」にあることを「知る」こともまた重要である。
【００６５】
例として、CM１０４内のある複数のセルが、前のクロックサイクルでCC１００からの命令によって指示されるように、これらのセルのある程度のプロパティによって、以下のようにマークされたとする（マークされたセルは、列中、ボールド体の数で表示されている）。
【００６６】
CM：２  ５  ２  ７  ６  ４  １０…
（左から１番目の「２」，２番目の「５」及び６番目の「４」がボールド体で記されている）。
【００６７】
次に、再度並列に単一クロックサイクルで、CM１０４内で全てのセルに命令「addr5」が送信されたとする。ベクトルメモリ１０８内のベクトル５は次の通りである。
【００６８】
line５：３  ４  ７  ８  ２  ５  １２…
そのとき、CM１０４内の全てのマークされたセルは、セルのデータフィールドの内容をベクトル５内の対応する要素に加え、以下のように、この演算の結果がCM１０４内のそれぞれのセルに格納されている。
【００６９】
CM：５  ９  ２  ７  ６  ９  １０…
（左から１番目の「５」，２番目の「９」及び６番目の「９」がボールド体で記されている）。
【００７０】
上述の例で示されるように、CM１０４内の各セルのマークされた／マークされない状態は、CC１００によって出される特定の命令には影響されない。（この例では、説明した通りではあるが、ある命令がCM１０４内の各セルのマーク状態に影響を及ぼしている。）さらに、すべての加算演算は、同時に（すなわち、互いに並列に）、単一クロックサイクル内でそれぞれマークされたセルの内部で実行される。
【００７１】
上述の例によってさらに示されたように、本発明のデータ処理システムは、システムレベル、ベクトル値で定義された演算でインプリメントすることができる。尚、上述の例では、ベクトル値はCM１０４データ及びベクトルメモリ１０８のベクトル5である。この点において、本発明のデータ処理システムは、アクティブセル（すなわち、処理要素）が直線状に配列したCM１０４を有するCEを備える。ここで、CM１０４内の各セルは一つ以上のマーカビット及び一つのアキュムレータ（１３４）を有する。同時に、各セルのレベルでは、全ベクトルの対応する要素が関連するレジスタのセットとして見ることができる（従って、関連するレジスタの数は、ベクトル１０８の数に等しい）。
【００７２】
さらに、アキュムレータとCM104内の各セルのそれぞれ関連するレジスタをそれぞれ連結することによって、本発明のデータ処理システムが値のベクトル上での演算を提供し、それによりマトリックス演算及びその他同種のものを可能にすることが、本発明の別の重要な様相である。
【００７３】
本発明の背景で述べたSIMDシステムとMIMDシステムに対照させられるように、本発明のデータ処理システムは、プロセッサとリンクしたメモリ素子との間で、常に一定で厳密な描写に依存しない。
【００７４】
本発明のデータ処理システムでは、情報がCM１０４に検索のために格納されるが、従来の「メモリアドレス」がコンセプトではない。CM１０４内の各セルに全体的に出されるコマンドに応じて情報をセル自体で選択的に処理するが、前で述べたように、CM１０４内の各セルが処理回路を有するが、プロセッサ自体ではない。また、本発明のデータ処理システムのパフォーマンスは、データのサイズに正確に線形関数的に表されるものであり、他の既知のプログラム可能な機械によって示される方法で広範囲なプログラム／アプリケーションにわたって適用可能である。
【００７５】
本発明のデータ処理システムが、CM１０４内のn個のセルのそれぞれに含まれる処理回路の性質及び構成に限定されないことが容易に想到される。
【００７６】
本発明にしたがって、CE１０２は、以下のクラスにグループ化された豊富な命令セットを有する。それらクラスは、
・CM１０４のリミットのセット及びリセット及びCM１０４とRAMベクトル１０８間のデータ交換をするグローバルマネジメント、
・CM１０４の一つ以上のセルにアクセスするサーチ／アクセス、
・マーカー操作、
・データの格納及び転送、
・算術論理、
・条件付き、及び
・インデックスである。
【００７７】
CE１０２への全ての命令が、単一マシンサイクルで実行されていることが注目すべきことである。
【００７８】
CE１０２は、特殊レジスタでの演算コードを得ることを除いて、それ自体でサイクル毎に命令をフェッチするプログラムメモリへのアクセス権をもたない。しかし、本発明では、CC１００がそれを実行するという異なった形態をとる。そのコードは連続し、コードをフェッチするために単一のアクセスポイントである必要がある。したがって、CC１００の主なジョブは、CE１０２のプログラムの実行を操作する（drive）ことである。つまり、個々のセルによって実行される命令をフェッチし、命令を内部レジスタに配置することである。同時に、CE１０２へのゲートウェイとして役立ち、それによって、全ての入力／出力命令を処理する。CC１００は、また、そのマシン用の意味のあるコードを書くことができない単純な逐次的演算を実行する。そのような動作の一つのクラスは、「コントロールプリミティブ」と称されるものである。つまり、それらは意志決定シーケンス（例えば、if，while，repeat等）をコード化するために使用される命令である。
【００７９】
擬似コード
以下では、Cプログラミング言語から引き起こされた表記法を用いた擬似コードを、CE１０２の大部分の命令の意味を略式に指定するために利用する。この種の記述が指示の実際のインプリメンテーションの表現を制限するようには意図されず、他の表現も本発明によって考えつくことは容易に想到される。
【００８０】
特別な疑似ステートメントforallは、並列であるセルのセットによって実行される作用について記述しており、その構文は次のように表現される。
【００８１】
・<forall statement>::=forall[(<forall condition>)]<statement>;
・<forall condition>::=marked | in serchSpace;
forallの３つの変形を考慮すると次のようになる。
1, forall
<action>;
2, forall(in searchSpace)
<action>;
3, forall(marked)
<action>;
変形１は、CM１０４内の全てのセルによって実行される動作を規定するために利用される。変形２は、検索スペース（上記参照）内の全てのセルに関する動作のために利用され、一方、変形３は、全てのマークされたセルが指定された動作を実行する場合に適用される。
【００８２】
各セルのレベルでは、擬似コード中使用されるで命令名と共に、全ての命令を実行するのに必要な完全なデータセットに以下のものがある。
【００８３】
・セルレジスタ（連想レジスタを含む）、すなわち、w,mark,r0,r1,...,rNと、
・セルの左右隣りの内容、すなわち、それぞれright_w,right_mark,及びleft_w,left_markである。
【００８４】
同時に、first_mark及びlast_markがセルレベルで評価することができ、前者はCM中の左端のマークされたセルに真であり、一方、後者は右端のマークされたセルの場合に真である。
【００８５】
グローバル管理命令
ldl<value>：ロードラインイミディエイト（load line immediate）は、全てのCMセル（マーカ及びｗレジスタ）の内容が、VARの入力で生成された値によって選択されたメモリベクトルからリストア（再格納）される命令である。
【００８６】
CM = RAM [VAR];
stl<value>：ストアラインイミディエイト（store line immediate）は、全てのCMセル（マーカ及びｗレジスタ）の内容が、VARの入力で生成された値によって選択されたメモリベクトルに保存される命令である。
【００８７】
RAM [VAR] = CM;
llim：レフトリミット（left limit）は、第１のマークされたセルを検索スペースの左の境界（limit）にセットする命令である。マーカは影響されない。左の境界とは、検索／アクセス命令によって影響される最左端のセルであることに注意する。
【００８８】
rlim：ライトリミット（right limit）は、第１のマークされたセルを検索スペースの右の境界にセットする命令である。マーカは影響されない。右の境界とは、基本検索／アクセス命令によって影響される右端のセルであることに注意する。
【００８９】
droplim：リムーブリミット（remove limits）は、左の境界が左端のCMセルにセットされ、一方右の境界が右端のCMセルにセットされる命令である。マーカは影響されない。
【００９０】
サーチ／アクセス命令
注：このセクションで説明される全ての命令は、検索スペースの範囲内でだけ作用する。引き数は入力レジスタ(INR)において利用可能なm-1ビット値である。
【００９１】
find<value>は、引き数と等しい値を保持するセルをすべて識別する命令である。
マッチが見つかるすべてのセルについては、その右隣のマーカー・ビットは1にセットされる。その他のマーカビットはすべて０にセットされる。
【００９２】
forall (in searchSpace) 
mark = (left_W == INR)?1:0;
match<value>は、全てのマークされたセルに格納されている値を引数と比較する命令である。任意のセルでマッチ（整合）が見つかる場合、次のセルのマーカビットは１にセットされる。その他のマーカビットは全て０にセットされる。
【００９３】
forall (in searchSpace)
mark = (left_mark && leftw == INR)?1:0;
lfind<value>：find and mark leftは、引数と同じ値を保持している全てのセルを識別する命令である。マッチが見つかる全てのセルについては、その左隣のマーカービットは１にセットされる。その他のマーカビットは全て０にセットされる。
【００９４】
forall (in searchSpace)
mark = (right_w == INR)?1:0;
lmatch<value>：match and mark leftは、全てのマークされたセルに格納されている値を引数と比較する命令である。任意のセルでマッチが見つかる場合、前のセルのマーカビットは１にセットされる。その他のマーカビットは全て０にセットされる。
【００９５】
forall (in searchSpace) 
mark = (right_mark && right_w == INR)?1:0;
markallは、検索スペース内の全てのセルをマークする。
【００９６】
forall(in searchSpace)
mark = 1;
addmark<value>は、引数と等しい値を有するセルを全てマークする命令である。他のマーカは影響されない。
【００９７】
forall (in searchSpace) {
if (w == INR) 
mark = 1 ; 
}
mark<value>は、引数と等しい値を有する全てのセルをマークする命令である。他のマーカビットが全て０にセットされる。
【００９８】
forall (in searchSpace) 
mark = (w == INR)?1:0;
clr<value> は、引数と等しい値を有する全てのセルのマーカビットを消去する命令である。
【００９９】
forall (in searchSpace) { 
if (w == INR) 
mark = 0; 
}
マーカ操作命令
clrf（clear first）は、第１の（例えば、最左端の）マーカをクリア（消去）する。
【０１００】
forall {
if (first_mark) 
mark = 0; 
} 
traceは、左側のマーカをコピーする命令である。
【０１０１】
forall {
if (right_mark) 
mark = 1; 
if (mark) 
mark = 1; 
}
keepl（keep last）は、最後の（例えば、最右端の）マーカ以外のマーカを全てクリア（消去）する命令である。
【０１０２】
forall { 
if (!last_mark) 
mark = 0; 
} 
clrlは、最後の（例えば、最右端の）マーカーを消去する命令である。
【０１０３】
forall { 
if (last_mark) 
mark = 0; 
} 
leftは、全てのマーカを一つ左のセルへシフト（移動）させる命令である。
【０１０４】
forall 
mark = right_mark ;
rightは、全てのマーカを一つ右のセルへシフト（移動）させる。
【０１０５】
forall 
mark = leftt-mark ;
cright：条件付き右シフト（conditional shift right）は、右隣りのセルが引数と等しい値を有していなければ、全てのマーカを一つ右にシフトさせる命令であり、その場合、11...1がその値の代わりに用いられる。
【０１０６】
forall { 
if (left_mark && w == INR) { 
mark = 0; 
w = 11... 1; 
} 
if (left_mark && w! = INR) 
mark = 1; 
if (mark) 
mark = 0; 
}
cleft：条件付き左シフト（conditional shift left）は、左隣りのセルが任意の値を有していなければ、全てのマーカを一つ左にシフトさせる命令であり、その場合、11...1がその値の代わりに用いられる。
【０１０７】
forall { 
if (right_mark && w == INR) { 
mark = 0; 
w = 11... 1; 
} 
if (right_mark && w! = INR) 
mark = 1; 
if (mark) 
mark = 0; 
}
データ格納と転送命令
nopは、作動（演算）なしの命令である。
【０１０８】
reset<value>は、全てのセル内の値を格納する命令である。影響されるマーカは全くない。
【０１０９】
forall 
w = INR ;
getは、第１のマークされたセルに格納された値がCM出力に送られ、そのセルのマーカが一つ右の位置に移動する命令である。他のマーカは影響されない。
【０１１０】
forall { 
if (first_mark) 
OUTR = w; 
mark = 0; 
} 
if (left_mark is first-mark) 
mark = 1; 
}
backは、第１のマークされたセルに格納された値がCMの出力に送られ、そのセルのマーカが一つ左の位置に移動する。他のマーカは影響されない。
【０１１１】
forall { 
if (first_mark) { 
OUTR = w; 
mark = 0; 
} 
if (right_mark is first_mark) 
mark = 1; 
}
set <value>は、第１のマークされたセルに値を格納する命令である。マーカは影響されない。
【０１１２】
forall (marked) { 
if (first_mark) 
w = INR; 
}
setall <value>は、全てのマークされたセルに値を格納する命令である。マーカは影響されない。
【０１１３】
forall (marked)
w = INR ;
ins <value>は、第１のマークされたセルの前に値を挿入する命令である。挿入点の右の全てのセルの内容は、一つ右の位置へシフトされる。このプロセスでは、初めに最右端のセルに保持されている値を失うことに注意する。
【０１１４】
forall { 
if (right of first_mark) 
w = left_w; 
if (first_mark) 
w = INR; 
mark = left_mark; 
} 
delは、第１のマークされたセルに格納されている値を削除する命令である。セルはマークされたままであり、削除されたセルに右側の全てのセルの内容は一つ左にシフトされる。
【０１１５】
forall { 
if (first_mark) 
w = right w; 
if (right of first_mark) {
w = right w; 
mark = right_mark; 
}
}
cpr：右コピーは、マークされた全てのセルについて、セル全体の内容（wレジスタ及びマーカ）を右隣りにコピー（複写）する命令である。
【０１１６】
forall { 
if (left_mark) 
w = left_w; 
mark = left_mark; 
} 
cpl：左コピーは、マークされた全てのセルについて、セル全体の内容（ｗレジスタ及びマーカ）を左隣りにコピーする命令である。
【０１１７】
forall { 
if (right_mark) 
w = right_w; 
mark = right_mark; 
} 
ccpr <value> ：条件付き右コピー（conditional copy right）は、マークされた全てのセルについて、レジスタWに保持されている値を右隣りにコピーし、また、引数と等しい値がｗに格納されていなければ、マーカもコピーされる命令である。
【０１１８】
forall { 
if (left_mark && left_w ! = INR) { 
w = left_w; 
mark = 1; 
} 
else 
mark = 0; 
} 
ccpl <value> :条件付き左コピー（conditional copy right）は、マークされた全てのセルについて、レジスタWに保持されている値を左隣りにコピーし、また、引数と等しい値がwに格納されていなければ、マーカもコピーされる命令である。
【０１１９】
forall { 
if (right_mark && right-w INR) 
w = right_w ; 
mark = 1; 
} 
else 
mark = 0; 
} 
ld<addess>：ロード即値（load immediate）は、マークされた全てのセルについて、VAR入力に生成された値によって選択されるRAMベクトルの一部であるレジスタ<r>に保持されている値をｗにロードする命令である。
【０１２０】
forall (marked) 
w = <r>;
st <address>：ストア即値（store immediate）は、マークされた全てのセルについて、VAR入力に生成された値によって選択されるRAMベクトルの一部であるレジスタ<r>に、W内に保持されている値を移動させる命令である。
【０１２１】
forall (marked) 
w = <r> ;
算術及び論理命令
算術命令は全て、２の補数表現されたm-2ビット数以上で実行される。オペランド<op>は、関連するセルレジスタ（VARの入力に生成された値によって選択されるRAMベクトルの一部）またはコントローラより供給されるm-2ビット数である。
【０１２２】
<op>::= INR [m-3:0] (immediate value) | r (RAM vector element) 
add <op>は、オペランド値をマークされた全てのセルのｗレジスタに加える命令である。マーカは影響されない。
【０１２３】
forall (marked) w += <op>;
fadd <op>：全加算（full add）は、キャリー（桁上げ）（add参照）として扱われる右拡張を伴って完全に加算する命令である。
【０１２４】
forall {
if (mark) 
w += (<op> + right_w[m-2] ); 
if (left_mark) 
w[m-2] = 0; 
}
sub<op>は、全てのマークされたセルのｗレジスタに格納された値からオペランド値を減算する命令である。マーカは影響されない。
【０１２５】
forall (marked) 
w-= <op>;
fsub<op>：全減算（full add）は、キャリー（sub参照）として扱われる右拡張を伴って完全に減算する命令である。
【０１２６】
forall { 
if (mark) 
w-= (<op> + right_w[m-2])); 
if (left_mark) 
w[m-2] = 0; 
}
half [<op>]は、全てのマークされたセルについて、レジスタオペランドを２で割り、その結果をｗに格納する命令である。マーカは影響されない。
【０１２７】
forall (marked) 
w = {<op>[m-2:m-3], <op>[m-3:1];
fhalf[<op>]:全半算（full half）は、全てのマークされたセルについて、オペランドを２で割り、その結果をｗに格納する命令である。ただし、左のセルの最下位ビット（LSB）が１である場合100...0がその結果に加えられる。マーカは影響されない。
【０１２８】
forall (marked) 
w = {<op>[m-2], left_w[0], <op>[m-3:1];
lt <op>: less (or equal)は、全てのマークされたセルについて、レジスタwが、<op>に保持されている値より小さいまたは等しい値に保持されているかチェックする命令である。w>opの場合、ｗの拡張ビットは1にセットされる。op>wの場合、マーカビットは0にセットされる。
【０１２９】
forall (marked) { 
if (w < <op>) 
w[m-2] = 1; 
if (w > <op>) 
mark = 0; 
} 
flt <op> : full lt命令は、全てのマークされたセルについて、w<opまたは左隣のセルが１にセットされたｗ拡張ビットを持つ場合、拡張ビットは１にセットされると共に、その左隣の拡張ビットはクリアされ、もしw>opの場合、マーカもクリアされる命令である。この命令は多数の連続したセル上で比較テストと共に使用される。
【０１３０】
forall { 
if (mark && (w < <op> || left_w[m-2] )) 
w[m-2] = 1; 
if (right_mark) 
w[m-2] = 0; 
if (mark && w > op && !left_w[m-2] ) 
mark = 0; 
} 
gt <op> : greater (or equal)命令は、全てのマークされたセルについて、レジスタwが、<op>に保持されている値より大きいまたは等しい値に保持されているかチェックする命令である。w>opの場合、ｗの拡張ビットは1にセットされる。op>wの場合、マーカビットは0にセットされる。
【０１３１】
forall (marked) { 
if (w > <op>) 
w[m-2] = 1;
if (w < <op>) 
mark = 0;
}
fgt <op> 命令は、全てのマークされたセルについて、w>opまたは左隣のセルが１にセットされたｗ拡張ビットを持つ場合、拡張ビットは１にセットされると共に、その左隣の拡張ビットはクリアされ、もしw<opの場合、マーカもクリア（消去）される命令である。この命令は多数の連続したセル上で比較テストと共に使用される。
【０１３２】
forall { 
if (mark && (w > <op> || left_w[m-2] )) 
w[m-2] = 1; 
if (right_mark) 
w[m-2] = 0; 
if (mark && w < op && !left_w[m-2]) 
mark = 0;
}
test命令は、INRと等しい値を有する全てのマークされたセルについて、マーカビットが0にセットされ、そのセルの左への拡張ビットが１である場合、レジスタｗには11...1が割り当てられ、セルの左側の拡張ビットがクリアされる命令である。
【０１３３】
forall { 
if (right_mark && right_w == INR) 
w[m-2] = 0; 
if (mark && w == INR && left_w[m-2] ) 
w =11... 1 ; 
else if (mark && w == INR) 
mark = 0; 
} 
and <op>: ビット単位論理積命令は、全てのマークされたセルについて、レジスタｗと<op>間で、ビット単位で論理積を求める命令である。マーカは影響されない。
【０１３４】
forall (marked) 
w &= <op>;
or <op>: ビット単位論理和命令は、全てのマークされたセルについて、レジスタｗと<op>間で、ビット単位で論理和を求める命令である。マーカは影響されない。
【０１３５】
forall (marked) 
w | = <op>;
xor <op>：ビット単位排他的論理和命令は、全てのマークされたセルについて、レジスタｗと<op>間で、ビット単位で排他的論理和を求める命令である。マーカは影響されない。
【０１３６】
forall (marked) 
W ^= <op>;
条件命令
以下の２つの命令はオペランドレジスタ<r>（VARの入力に生成された値によって選択されるRAMベクトルの一部）及びINRからのm-1ビット値を使用する。
【０１３７】
<r>::= w(for register w) | r(RAM vector element) 
cond <value> [<r>] 命令は、全てのマークされたセルについて、２つのオペランド間でビット単位の「and」演算を実行した後、1にセットされたビットが少なくとも一つあるかチェックする命令である。
【０１３８】
forall (marked) 
mark = ( (<r> & INR)! = 0)?1:0;
ncond <value>[<r>]命令は、全てのマークされたセルについて、２つのオペランド間でのビット単位の「and」演算の結果が0であるかチェックする命令である。
【０１３９】
forall (marked) 
mark = ( (<r> & INR) == 0)?1:0;
インデックス命令
index命令は、全てのマークされたセルについて、レジスタｗは、CMの左端のセルに関して相対位置の値を割り当てられる。
【０１４０】
上述の説明及び図面からわかるように、本発明は、処理時間、シリコン領域及び電力消費を実質的に減少させ、処理能力を増加させることで、データを処理する画期的な方法を提供する。
【０１４１】
説明したように、本発明のデータ処理システムは、同じクロックサイクル内で命令を実行するCMセル全てに並列に伝送するための所定の命令及びその命令オペランドを規定する。
【０１４２】
また、本発明のデータ処理システムの別の特徴ある利点は、セルエンジン内で各セルが単一クロックサイクルで命令を同時に実行するだけでなく、ローカルステート及びグローバルステート情報の両方の利用により、全体的に命令を伝送するセルを動的に制限するの能力を有することである。特に、個々のセルレベルでマーカビットを利用することによって、これまでに知られていない方法で、連想メモリ素子内の現在の（actual）セルが、マークされたセルの左又は右のセルに作用させることができる。したがって、システムレベルでは、本発明は、連想マシンによって、つまり、記憶場所の（ロケーション）アドレスに指定される特徴としてよりも、CM１０４内の個々のセルの内容の性質または特性により、マークステートの選択的な実行または変更を提供する。
【０１４３】
したがって、本発明は、CM１０４の個々のセルは、ジョブを行うために別々のメモリブロックにアクセスする必要がないことを意図して、非常に密接したレベルでプロセッシングとメモリを組み合わせている。さらに、セルレベルでオペランドがローカルスペースに存在し、それゆえ、結果が決まった場所に保持され、伝送時間、処理時間、シリコン領域及びパワーを節約することができる。
【０１４４】
実際には、命令が全体に伝送されると共に、命令オペランドがCC１００によって同時に伝送されることが特徴である。
【０１４５】
本発明は好適な実施例に関して説明したが、形態及び詳細における様々な変更がなされうることが、当業者に理解されるであろう。また、本発明の本質的な適用範囲から逸脱することなく、構成要素と同等のものが用いられてもよい。したがって、本発明は、開示した発明の実施の形態に制限されるものではなく、添付の特許請求の範囲内にある実施の形態を全て含むことが意図されるものである。
【図面の簡単な説明】
【０１４６】
【図１】既知のSISDデータ処理アーキテクチャを示すブロック図である。
【図２】本発明の一実施形態において、メモリエンジンと同期するクロック素子とを有するデータ処理システムの一般的な構成を示すブロック図である。
【図３】図２に示したメモリエンジンのより詳細な図を示すブロック図である。
【図４】本発明の一実施形態において、セル或いは処理素子の構造を示すブロック図である。
【図５】トランスコーダの構造を示すブロック図である。
【符号の説明】
【０１４７】
１００  コントローラ（CC）
１０４  コネックスメモリ（CM）
１０２  セルエンジン（CE）
１０６  クロック回路
１０８  メモリベクトル
【図１】
2006509306.tif 000003
【図２】
2006509306.tif 000004
【図３】
2006509306.tif 000005
【図４】
2006509306.tif 000006
【図５】
2006509306.tif 000007
【国際調査報告】
2006509306.tif 000008