【発明の詳細な説明】
非数値コプロセッサ
技術分野
本発明は、電子計算機を用いたファジー情報検索及びパターン認識用の非数値
コプロセッサに関する。
背景技術
従来のコンピュータシステムは、複雑なプログラミング及びデータ構成技術を
用いて、情報の記述、蓄積、認識及び検索に利用可能である。しかしながら、か
かる公知の方法を利用することにより、特に複雑な情報項目の検索や複雑なパタ
ーン認識等のタスクの際に、システム性能が著しく低下することも多い。情報検
索、テキスト及びデータベース探索、及びパターン照合を通じて、殆どのコンピ
ュータユーザは、非数値計算への従来のアプローチの非効率から生じる周知の問
題に直面してきた。例えば、「燐濃度が15μg/l以上測定された現場で、1
980年−85年の間にカドミウムが測定された日付と位置を全て見つけなさい
」というタイプの照会に応答するために膨大な量の測定値を読むことや、これよ
りずっと簡単な照会でも、従来のシステムでは性能上過酷な問題となることがあ
る。
多量の情報を検索しそこから複雑な項目を認識する人間の行動に鼓舞されて、
本発明は、従来の方法に基づいたシステムと今日の性能上の要求との間の乖離を
解消しようとする。従って、本発明の目的は、単純な非数値計算プログラミング
を提供すると同時に、従来の非数値計算システムより実質的に高速で膨大なデー
タボリュームを走査検索し且つより低速で特定の完全な文章を探索したり或いは
多くの語の断片から成る複雑な組合せを探索し得る機能を提供することである。
更に、本発明は、従来の技術を採用するときにしばしば必要とされてきた、拡張
セグメンテーション、ベクトル化、及び複雑な情報項目を探索するためのデータ
の複写格納に対する必要性を除去することを企図する。
本発明の開示において、「バイト」は、1単位として処理される一連の隣接し
たビットとして解釈されるべきであり、ビット数は必ずしも8ではない。
発明の開示
本発明によれば、従来技術が直面した問題は、情報処理手段を有してホストコ
ン
ピュータとデータ源とに接続可能なファジー情報検索とパターン認識用の非数値
コプロセッサであって、情報処理手段が、前記データ源からのデータストリーム
を検査するために配設した所定数の同時動作可能なウインドウモジュール内に編
成された複数の内部処理素子を備え、各処理素子が、データストリーム内の1バ
イト例えば8ビットバイトを、前記処理素子に割り当てられた所定の個別にプロ
グラム可能な上限値及び下限値と比較して、当該処理素子内に存するバイトの値
が前記境界値内にあるかどうかを決定し、境界値内にあるならば各ウインドウモ
ジュール内に設けたウインドウ突合せ論理回路に送出されるヒット信号を生成し
て、当該ウインドウモジュール内の異なる処理素子から受信したヒット信号と相
関させ、更に、前記ウインドウモジュール内の所定の突合せの発生により、ウイ
ンドウ突合せ信号を生成するコプロセッサにより解決される。
このようにコプロセッサを構成することにより、情報検索とパターン認識用の
従来のシステムの性能を遙かに凌ぐ性能をコプロセッサシステムに付与するため
に利用可能な、強力な並列処理能力が得られる。
本発明に係るコプロセッサは、好ましくは、更に、アプリケーションの必要性
に対応する構成データに応じて、前記データ源からの別個のデータストリームを
、前記同時動作可能なウインドウモジュールに、個別的に、或いは前記ウインド
ウモジュールが個々のスーパウインドウ又はスーパウインドウグループ又は全て
のウインドウモジュールを含む単一のスーパウインドウ等の異なる選定可能なウ
インドウ構成に連鎖される態様で、転送するデータルーティング手段を備えてい
る。
ウインドウをより長いウインドウに連鎖することで、より複雑な検索条件にも
対応でき、また、異なるウインドウへの入力データのルーティングは、現在実行
しているアプリケーションの、ウィンドウ長さ及びデータストリームに対する必
要に応じて、幾通りかの方法で行うことができる。実際に、利用可能なウインド
ウの数の制限内で、それぞれ1バイトから成る任意の数のストリームを処理する
ことができる。例えば、それぞれ好ましくは8ビット長の多数の個々のデータ入
力は、異なるウインドウに転送されて並列処理を行うことができ、同一のデータ
ストリームを異なるウインドウにより処理すべきときにデータを複写蓄積する必
要が無くなる。かくして、本発明にかかるコプロセッサは、フレキシブルで構成
可能なデータルーテ
ィング機能を有すると共に、64ビット長以下のアプリケーションでのプロセッ
サの使用もサポートする。
好ましくは、データルーティング手段は、異なるレベルで編成されたマルチプ
レクサのネットワークから成り、各マルチプレクサは、それぞれ好ましくは8ビ
ット長の二つのデータ入力のうち、一方を選択してその出力に転送可能である。
特に、コプロセッサの好ましい実施例において、マルチプレクサのレベルは、そ
れぞれ、フォールディング、パラレル、及びシリアルのマルチプレクサレベルか
ら成る。
本コプロセッサは、更に、コプロセッサにロード可能な前記ウインドウ構成の
内部記憶用のスタティックランダムアクセスメモリ(RAM)を備えている。こ
れにより、探索動作毎に構成データをコプロセッサに転送する必要はなくなり(
構成を変更した場合のみ転送要)、ダウンロード可能な構成データの個別化セッ
トを含むソフトウェアの開発には有利になる。
コプロセッサの一実施例において、各処理素子は、検査すべきバイトの一時記
憶用のラッチセルと、当該処理素子用の前記上限値及び下限値を備えた二つの比
較器セルとを備え、比較器セルは、ヒット信号を生成するように構成されている
。
更に、コプロセッサ内に、ウインドウ突合せ信号を受信してプログラム可能な
中央ヒットマスクと比較するように構成された結果制御論理回路を設け、中央ヒ
ットマスクが、ウインドウヒットの論理組合せを定義させると共に、検出された
全ての発生のアドレスを報告させる(ヒットアドレスモード)か、或いは検査さ
れたデータボリューム内の突合せの総数を報告させる(ヒットカウントモード)
、ことは好ましい。
当業者にとって、本コプロセッサをプログラムし制御する際の簡便性、及び本
コプロセッサの更なる利点と特徴は、以下の説明から明らかになろう。
図面の簡単な説明
以下、添付図面を参照しつつ、本発明に係るコプロセッサの好ましい実施例の
一例に基づき、本発明を詳細に説明する。
図1は、本発明に係るコプロセッサの典型的なアプリケーションを示す。
図2は、ホストコンピュータ及びデータ源と接続された、本発明に係るコプロ
セッサのブロック図である。
図3は、本発明に係るコプロセッサ内の単一のウインドウを示す図である。
図4は、本発明に係るコプロセッサ内のウインドウの単一の処理素子を示す図
である。
図5は、本発明に係るコプロセッサ内のデータルーティングネットワークを示
す。
図6乃至図15は、本発明に係るコプロセッサ内のデータルーティングネット
ワークの種々の好ましい構成を示す。
図16乃至図17は、図7乃至図16のそれぞれで示した二つの異なる構成に
係るコプロセッサ内のルーティングネットワークを通るデータの流れを詳細に示
す。
図18は、典型的なホスト/コプロセッサ構成を示す。
図19は、コプロセッサ内のアドレスマップ編成を示す。
図20は、所与のアプリケーション例のためのウインドウの一部を示す。
好適な実施例の説明
図1に示したように、本発明に係るコプロセッサチップ1は、一般には、双方
向データ転送リンクを介してホストコンピュータ2に、また、一方向データ転送
リンクを介してデータ源3に接続されている。
コプロセッサチップ1の好ましい実施例は、図2に示したように、一連の8個
のウインドウモジュールW0−W8を備えている。これらのデータモジュールW
0−W8は、ホストインタフェースモジュール14に接続された8ビットデータ
バスを介して相互に連結されるデータルータモジュール12と結果制御論理回路
13との間に、論理的に位置している。データ源インタフェースモジュール15
は、データ源3からデータルータモジュール12への一方向64ビットデータ転
送を行う。
次に図3を参照すると、8個のデータウインドウモジュールW0−W8は、そ
れぞれ、ウインドウ突合せ論理回路16と、32個の処理素子PE0−PE31
に対応する32バイトのシフトレジスタと、を有する。図4に示したように、各
処理素子PEは、ラッチセル17と、個別にプログラム可能な上下限を突合せチ
ェックするために連係した二つの比較器セル18、19と、に分割される。
図5に詳細に示したように、データルータモジュール12内のデータルーティ
ングネットワークを介して、各ウインドウを、より長いウインドウに連鎖させる
ことができ、より複雑なデータ検索を可能としている。データルータは、3レベ
ルのマ
ルチプレクサから成り、それぞれ二つの長さ8ビットの入力のうち一つを選択し
て出力する。
データ源から長さ8ビットのデータストリームが供給される第一のレベルのマ
ルチプレクサは、フォールディングマルチプレクサ(図5の上側の多重化行)即
ちデータストリームを円形にフォールドするマルチプレクサから構成され、これ
により、各ウインドウを、実際のデータストリームがコプロセッサチップに入力
される位置から、独立にすることができる。フォールディングマルチプレクサは
、データストリームを複写して異なるウインドウに同一のデータストリームを同
時に読ませるパラレルマルチプレクサ(図5の中央の多重化行)に、接続されて
いる。最後に、シリアルマルチプレクサ(図5の下側の多重化行)が、各ウイン
ドウをスーパウインドウに連鎖させるべきか否かを選択する。
これら3個のマルチプレクサレベルにより、入力の組合せ及びウインドウの連
鎖が可能となる。
以下、図6乃至図17を参照して、可能な構成の一部を説明する。入力データ
ストリームに0乃至7の符号を付し、例えば、ストリーム0をD(7、0)、ス
トリーム1をD(15、8)に対応させる。
a) 8本のデータストリームをそれぞれ、並列に配置した各ウインドウに供
給する。これは、最も単純なルーティング戦略である。各ストリームは、対応す
るウインドウに送られる。この構成は図6に示されており、図16には実際の構
成がボールド体で詳細に示されている。
b) 四つのデータストリームをそれぞれ、並列に配置した2個のウインドウ
に供給する。各データストリームは対にして、並列に配した2個のウインドウに
送られる。ストリームは、一つおきのデータセット0、2、4、6又はデータセ
ット1、3、5、7とすることができ、例えば、ストリーム0の次にストリーム
1を配する。この構成は図7に示されている。
c) 四つのデータストリームをそれぞれ、直列に配置した2個のウインドウ
に供給する。この構成は、ウインドウの各対が二倍の長さの一つのスーパウイン
ドウを形成するように連鎖されている点を除き、b)と同様である。この構成は
図8に示されている。
d) 二つのデータストリームをそれぞれ、並列に配置した4個のウインドウ
に供給する。ストリームは、4本ずつ結合されて、それぞれ並列に配した4個の
ウインドウから成る2つの組にそれぞれ送られる。ストリームは、交互に(0、
4)、(1、5)、(2、6)又は(3、7)とすることができ、例えば、スト
リーム0の次にストリーム1、2、3を、ストリーム4の次にストリーム5、6
、7を配する。この構成は図9に示されている。
e) 二つのデータストリームをそれぞれ、直列に配した2個のウインドウか
ら成る2群の並列なウインドウに供給する。d)の場合のように、ウインドウは
連鎖されているが、並列処理は減少している。この構成は図10に示されおり、
図17には入力ストリーム2及び6と実際の構成がボールド体で詳細に示されて
いる。
f) 二つのデータストリームをそれぞれ、直列に配した4個のウインドウに
供給する。この構成は、個々のウインドウの長さの4倍の一つのスーパウインド
ウを形成するように各群のウインドウを連鎖させた他は、d)の構成と同様であ
る。この構成は図11に示されている。
g) 一つのデータストリームを、並列に配置した8個のウインドウに供給す
る。各データストリームは、一つのストリームを形成するように結合され、並列
に配した8個のウインドウに送られる。8本のストリームのいずれも入力として
使用可能であり、全データ記憶領域を一つの長い8ビットデータファイルとして
扱う。この構成は図12に示されている。
h) 一つのデータストリームを、直列に配した2個のウインドウから成る4
群の並列なウインドウに供給する。g)に類似しているが、各ウインドウは、よ
り複雑な探索用に連鎖されている。この構成は図13に示されている。
i) 一つのデータストリームを、直列に配した4個のウインドウから成る2
群の並列なウインドウに供給する。g)及びh)に類似しているが、より多くの
ウインドウを連鎖させて複雑さを増している。この構成は図14に示されている
。
j) 一つのデータストリームを、直列に配した8個のウインドウに供給して
いる。g)に類似しているが、全てのウインドウを接続して単一のスーパウイン
ドウを形成し、最も複雑な探索を可能にしている。この構成は図15に示されて
いる。
別のフィルタ及びデータ経路構成は、チップにロードされた構成データにより
決
定される。全ての構成は、データのルーティングにより、秒あたり10ギガシン
グルバイトの比較を行うことができる。しかしながら、同時データ経路の数をト
レードオフすることにより、複雑な問合わせがなされ、この結果、チップ上に多
数のアプリケーションをマップすることが容易となる。
コプロセッサ11は、一般には、図18に示したように、ホストインタフェー
ス14を介してコンピュータにリンクされている。図示したホストコンピュータ
は、ディスクユニット21及びそれに係るディスク制御装置22、中央処理装置
即ちCPU23、システムメモリ24及びシステムバス25から成る。ホストイ
ンタフェース14は、8ビット双方向ポート(HDバス)に基づいており、読書
きサイクルは、同期及び非同期で実行される。ホストインタフェース自体は、C
S信号と組み合わせたIOR信号及びIOW信号のアサーション、及びSETA
DRライン上の特定の極性により、制御される(図2参照)。
構成データは、構成RAM内に蓄積されて合計828バイトから成り、約10
0マイクロ秒内での完全な再構成を可能としている。殆どのシステムでは、構成
時間はホストコンピュータからの転送速度により決定される。パーソナルコンピ
ュータの入出力チャネルを使用した場合、転送速度をIMB/秒と仮定すると、
一般には1000マイクロ秒かかる。
構成データのマイナチェンジは、コプロセッサの内部アドレスレジスタを介し
てアドレス指定することにより行われ、これにより構成時間を一層短くすること
ができる。かくして、再構成と探索が極めて迅速に行われるので、異なる基準で
等量のデータを探索することが可能となる。
カウントモードでは、コプロセッサは、検出された突合せデータ項目数をチッ
プ上に累積する。報告モードでは、コプロセッサは、ヒットを検出した時に割り
込み信号を発する。この信号は、ホストコンピュータがACK信号又はIOW信
号を発するまで、送出され続ける。内部結果位置カウンタは、シャドーレジスタ
(図示せず)内に収納される。構成データは、ヒットが生じた場合にチップがデ
ータの受信を停止すべきか否かを決定する。データストリームを停止するように
チップが構成されている場合、DWTD信号(図2参照)は、ACK信号が送信
されるまで非活性状態となる。突合せにも拘らずデータストリームが停止されず
にそのまま流れ
るようにプログラムされている場合、シャドウレジスタ内に収納されたカウンタ
は、ACK信号が送信されるまでオーバライトされることはない。これは、所望
のデータを含むテキスト部分にヒットが頻繁に生じる場合、テキスト探索に有利
である。また、問題がテキストの正規の部分(章、項)のみに発生した場合、テ
キストの当該部分内でその発生の正確な検出を期することは適切でない。
64ビットの同期データインタフェース15(図2参照)は、単純なハンドシ
ェーク手順で制御される。コプロセッサがデータを受信し得る状態にあるとき、
DWTD信号は、実際のデータが読まれる1クロックサイクル前に、送出される
。これにより、インタフェースを設計する際に、一層適切なタイミングが確保で
きる。
データ源は、データを準備完了すると、DVALID信号を発する。最後の立
ち上がりクロック時にDWTD信号が非活性であった場合、DVALID信号の
送出により、データがコプロセッサに読まれることはない。従って、DWTD信
号の送出と共に立ち上がりクロックエッジの検出後、最初の立ち上がりクロック
の間にデータとDVALID信号を検出するまで、データ源は、データ転送を完
了したと見做すべきではない。対応するタイミング方式は、係る同期及び非同期
の読書き機能に対して、実現することができる。
1バイト以上に亘る数値として解すべきデータを入力ストリームが含む場合、
最上位のバイトは、ウインドウ内に最初に達する必要がある。
チップのプログラミングは、ホストインタフェース内の異なるアドレスに構成
データを書き込むことにより、行われる。構成の異なる部分は、間接的にアドレ
ス指定可能である。これにより、必要に応じて極めて短時間の間に、構成の一部
のみを変更することができる。
再構成の間データストリームを停止する必要はないが、構成が部分的に書き込
まれる場合に生じる一時的な状態の故に、誤った突合せが行われることがある。
また、レコードカウンタは対応するウインドウへの書き込みによりリセットされ
るので、調整不良のレコードの場合、問題が生じることがある。従って、データ
ストリームを停止してから構成を変えることが望ましい。
コプロセッサ内の内部構成アドレスは、11ビットのアドレスADR(10、
0)から成り、これは、内部アドレスレジスタ内で生成される。このレジスタの
8個の
上位ビットは、ホストインタフェースを介してロード可能である。3個の下位ビ
ットは、上位ビットがロードされるとクリアされる。ロードは、HDバス上のア
ドレスビットを設定し、CS信号、IOW信号、及びSETADR信号を同時に
送信することにより、行われる。11ビットアドレスの編成は、図19に示され
ている。
コプロセッサは、それぞれ自身のアドレスを有する12個の内部モジュールを
備えている。モジュールアドレスは、アドレス内の4個の上位ビットから成り、
HDバスから新しい値を書き込むことによってのみ変化する。モジュール基底ア
ドレスは、表1に示されている。7個の下位ビットは、カウンタ内に保持され、
ホストインタフェースからのアクセス毎にインクリメントされる。
かくして、1モジュール内の同順バイトは、容易にアクセスすることができる
。
モジュールアドレスの自動インクリメントは、モジュール間のアドレスマップに
孔があるので、サポートされていない。
殆どのモジュールにおいて、オフセットアドレスは、より詳細なアドレス指定
に用いることができる。単一のバイトをアクセスするために、絶対アドレスは以
下のように計算される。
アドレス=(モジュールアドレス*128(10))
+ オフセットアドレス
次に、HDインタフェースを介してアドレスレジスタに値をロードし、その後
アドレスレジスタを自動インクリメントすべくアクセスする。従前の構成につい
ての知識を要しないので、読取りアクセスが最も簡単である。各ウインドウモジ
ュールは、以下のものから成る。
・ 下限32バイト
・ 上限32バイト
・ フィールド区切り(セパレータ)マスク32バイト(全バイトで、最下位
ビットのみが重要である)
・ 突合せ待ち時間値2バイト
・ レコード長値1バイト
これらのレジスタ用のオフセットアドレスは、以下の表2に示されている。
実際の探索では、限界レジスタに適当な値をロードする。フィールド区切りマ
スクは、各フィールドの最下位バイトの位置で、1をとる。尚、フィールド区切
りマスクでは、各バイトの最下位ビットのみが使用される。即ち、処理素子PE
を突合せする区切りマスクバイトには1が書き込まれ、他の場合はフィールドの
最後のバイトを0に保持する。
突合せ待ち時間は、ウインドウがヒットを実行するまでに必要なクロックサイ
クルの数である。突合せ待ち時間ゼロは、ヒットを生じたクロックサイクル中に
、ウ
インドウから中央突合せ論理回路に、ヒットが報告されることを意味する。突合
せ待ち時間が例えば4であるときは、更に4サイクル経過した後、即ち合計5サ
イクル内に突合せが報告されることを意味する。突合せ待ち時間レジスタに書き
込む値は、65535(10)−前記待ち時間とする。即ち、例えば突合せ待ち
時間4は、レジスタに値65531(10)を書き込むことにより指定される。
データストリームのルーティングは、全て同量の時間を要するので、データス
トリームをチップに同時に入力した場合、データストリームは、各ウインドウ(
又は連鎖の第一のウインドウ)の入力部に同時に発生する。ストリームを連鎖ウ
インドウに送ると、32サイクルの累積遅延が導入されるが、このことは、突合
せ待ち時間を計算する際に考慮すべきである。
データ転送の無いクロックサイクル即ち非活性のDVALID信号が、待ち時
間サイクル数に関わることはない。従って、突合せ待ち時間は、物理的なクロッ
クサイクルではなく、データ転送に対して測定される。
レコード長は、レコード境界と合わないパターンを時折突合せすることにより
、ヒットを抑制するために使用される。レコード長を1に設定することにより、
全てのヒットが中央突合せ論理回路に報告される。レコード長が例えば6である
とき、6番目毎のデータ転送で行われる突合せのみを、ウインドウから報告させ
る。ウインドウをカウンタするバイトは、当該ウインドウに対応するモジュール
アドレスを用いた全ての書き込み操作によりリセットされる。即ち、最初の実行
可能な突合せは、ウインドウ構成を書き込み後6回目のデータ転送に対して行わ
れる。レコード長値は、256(10)−レコード長として、コプロセッサ内の
対応するレジスタにプログラムされる。従って、10(10)のレコード長は、
246(10)として書き込まれる。
256ビットのヒットマスクRAMは、ホストインタフェースから分かるよう
に、32×8ビットとして編成される。この32バイトは、内部アドレスレジス
タ内の5個の下位ビットにより選定され、ビット5及び6を「ドントケア」とし
て、ビット7乃至10をモジュールアドレス1000(2)として残す。バイト
アドレス0への書き込みは、256ビットアドレス指定方式におけるビット0乃
至7に影響を及ぼし、バイト内の最下位ビットはビット位置0に対応する。同様
に、バイトアド
レス4への書き込みは、256ビットアドレス指定方式のビット32乃至39に
影響する。
各ウインドウは、RAMを256×1ビットとしてアドレス指定する。8個の
ウインドウからの突合せ信号は、アドレスとして使用され、ウインドウ0からの
突合せ信号は、最下位アドレスビットを表す。実ロケーションに1が蓄積される
と、ヒットが検出される。
モードレジスタと、結果カウンタと、ヒットパターンと、ヴァージョンレジス
タとから成るモジュールは、内部オフセットアドレスを有しないが、逐次読取り
方式のシフトレジスタチェーンとして編成されている。このモジュールへの書込
みは全て、チェーン内で唯一の書込み可能レジスタであるモードレジスタ内で行
われる。これは、コプロセッサがヒットにどのように作用するか、に影響する。
この場合、3個の下位ビットのみを機能させて、他には常に0を書き込む。表3
は、モードビットを説明する。これらのビットから、表4で全て説明する、8通
りの動作の組合せが生じる。
このモジュールから読み取る場合、以下の順序で値を呈示する。
1.結果カウンタ、バイト3(最上位バイト)
2.結果カウンタ、バイト2
3.結果カウンタ、バイト1
4.結果カウンタ、バイト0(最下位バイト)
5.ヒットパターン
6.モード
7.ヴァージョン番号
モードレジスタを除く全てのレジスタは、読取り専用型である。最初の読取り
開始後に、全ての値を読み取る必要はない。ACK信号又はIOW信号をコプロ
セッサに送出することで、結果カウンタ及びヒットパターンの値を新しいヒット
によりオーバライトすると共に、結果カウンタの最上位バイトにアクセスして新
しい読取りを開始する(IOW信号はCS信号でクオリファイされなければなら
ない)。これは、また、INT信号が送信されないときに有効である。
結果カウンタは、モードレジスタへの最後の書込み後に生じたヒット数又はデ
ータ転送数をカウントする。従って、このモジュールに任意の値を書込みことで
、結果カウンタはクリアされる。カウンタは、長さ32ビットであり、カウンタ
オーバフロー標識は呈しない。
ヒットパターンは、最後のヒット時に8個のウインドウのそれぞれから報告さ
れた突合せパターンである。これは、ヒットマスクRAMのプログラミングで幾
つかの突合せパターンにヒットを生成させる場合に、使用可能である。実際にヒ
ットを引き起こしたパターンは、後処理を容易にする、より多くの情報を提供す
るために読み出される。
ヴァージョンレジスタは、現在のコプロセッサのヴァージョンを示す番号を含
む。これは、後の改定で使用され、ソフトウェアを現在のハードウェアに適合可
能にする。
データルータ設定モジュールは、レベル深さ3で長さ1バイトのシフトレジス
タとして編成される。これらは図5乃至図17に基づいて先に説明したマルチプ
レクサを制御するバイトである。各バイトは、以下の順序で読み書きされる。
1) シリアルマルチプレクサ
2) パラレルマルチプレクサ
3) フォールディングマルチプレクサ
読取り動作は、破壊的である。即ち、全てのマルチプレクサの構成データは、
読出し後に再書込みしなければならない。しかしながら、マルチプレクサ構成は
システム試験中に読み取られるだけであるので、これはあまり重要ではない。
各バイトの最上位ビットは、図5の一番左のマルチプレクサに対応する。シリ
アルマルチプレクサでは、値をどのように組合せても、リーガルである。他の二
つのマルチプレクサでは、マルチプレクサ制御バイトの一つに4個以上連続した
ビットを有する構成は、(伝播遅延のために)イリーガルである。これは、また
、循環フィードバックにも当てはまる。即ち、C3(16)のマルチプレクサ構
成もイリーガルである。図6乃至図17に基づいて先に説明した構成a)乃至j
)のそれぞれに対する構成バイトは、作動すべく保証されており、以下の表5に
示されている。
本発明に係るコプロセッサチップは、製造試験専用のデータ経路モジュールを
含み、ウインドウ7からデータを出力させる読取り動作を行う。
本発明に係る非数値コプロセッサを含むチップの好ましい実施例は、パーソナ
ルコンピュータ又はワークステーション用の拡張カード上に搭載される高度並列
超LSIチップである。好ましくは、チップは、CMOS(相補形MOS)工程
により製造されてTTL(トランジスタトランジスタ論理回路)及びCMOSコ
ンパチブル入力を有し、+5V電源上で動作する100ピンPQFPパッケージ
である。20MHzの動作周波数で、かかるコプロセッサチップは、160MB
/秒の持続可能なデータ処理能力を有し、秒あたり10ギガシングルバイトの比
較を行う。
プログラミング例
以下の例は電話帳で人を探索するための設定を示す。図20は、本例のための
ウインドウの一部構成を示す。このウインドウは、アルファベットのA乃至Gで
始まる姓を有する人及び142000乃至160000の範囲の電話番号の突合
せを報告する。フィールド区切りマスク内に適当なビットを設定することにより
、電話番号は6バイトに亘る数値フィールドとして処理される。図示ウインドウ
では、他の
二つのフィールドも示されているが、フィールドNo.1及びNo.2に対して
全ビットが1である場合、それらは1バイト以上から成る比較には含まれないの
で、差異が生じない。
探索基準に含まれないバイトは、FF(16)乃至00(16)の最大範囲内
の全データパターンを突合せする「ドントケア」状態に設定される。プログラム
された16バイトのレコード長のために、構成内のレコード境界と合わないデー
タに対しては、突合せは行われない。また、1つのウインドウのみを使用する場
合、突合せ待ち時間は不要である。
上述したことが唯一の探索基準である場合、これを全ウインドウにコピーして
もよく、位置0を除く全位置が1になるようにヒットマスクRAMを設定する。
これにより、ウインドウの少なくとも一つがヒットを生じると突合せ信号が発せ
られる。また、モード値も適切に設定する必要があり、例えば、Report=1、St
op=1、Flank=0とする。次に、コプロセッサは、各突合せ毎に割り込み信号
を生成し、更にそれぞれに対して探索開始に係る突合せ位置を読み取る。
機能説明
図3に示すように、コプロセッサの好ましい実施例は、それぞれ32バイトの
シフトレジスタを含む8個のデータウインドウから成る。図4に示すように、各
レジスタ素子は、上限と下限との突合せをチェックする二つの比較器と連係して
いる。各境界は個別にプログラム可能であり、バイト範囲にある任意の連続イン
タバル内でデータを突合せることができる。二つの比較器は、各ウインドウに接
続された突合せ論理回路に、突合せを報告する。1バイトより大きい項目の場合
、異なるバイトの突合せを組み合わせる。これにより、256バイトまでのデー
タレコードを処理することができる。データフィールドは任意のインタバル試験
に対して8バイトまで構成することができ、等価試験のときは256バイトまで
可能である。
各ウインドウは、個々のヒットをチップ上の中央ヒットマスクに報告する。2
56ビットのユーザプログラム可能RAMのアドレスとしては、8個のウインド
ウそれぞれの突合せが使用される。このRAMは、ヒットとして検出されるべき
ウインドウヒットの任意の組合せに対して1を蓄積する。プログラム可能である
ため、ユーザは、例えば1個のウインドウだけがヒットしたときでも報告される
べきか、8
個のウインドウのうち4個のヒット時に報告されるべきか、或いは全てのウイン
ドウがヒットしたときに報告されるべきか、を選定することができる。一般に、
8個のウインドウヒットの任意の論理組合せは、ユーザ定義のヒットである。チ
ップは、検出された全てのヒットの発生アドレス、或いはデータボリューム内の
突合せの総数を報告する。
報告モードに設定した場合、コプロセッサは、ヒット時に、被検出データの位
置を含む内部カウンタを、シャドーレジスタ内に蓄積する。この蓄積された表示
は、後にホストコンピュータにより読み取ってもよい。シャドーレジスタは、A
CK信号の送信によりホストコンピュータが突合せを確認するまで、オーバライ
トされない。
各ウインドウは、プログラム可能な時間の間ヒットを記憶するように、設定可
能である。これにより、正確な整合を検出できない場合に、文脈依存探索を行う
ことができる。これは、コプロセッサの原理に従う。即ち、一つの(厳格な)探
索キーの代わりに、必要データに係る多くの弱い条件が使用される。この特徴は
、複雑且つ/又は多量のデータ内の探索に特に重要である。
アプリケーション例
非構造化テキスト内の探索
コプロセッサにより実現される検索速度の故に、従来の索引を作成し維持する
ことは、時代遅れとなろう。被制御相対距離を以てワイルドカードを有するテキ
スト断片を組合せることにより、重要な情報を独自に識別することができる。探
索では、同義語を同時に使用してもよい。以下は、異なる二つのタイプの簡単な
問合わせである。
Q1:「シェイクスピアの作品において、'take it in what sence thou wilt
'という文章は、何度、そして何処に現れるか?」
Q2:「'Gorbat'ではなく、'Jelts','Mitter','Kohl''Major','Bush'という
5つの(部分)名のうち少なくとも3つが現れる新聞記事を見つけなさい。」
Q1タイプの文体研究は、従来のテキスト探索システムでは十分に行うことが
できない。また、索引がテキストよりも多くのスペースを要することも良く知ら
れている。
所与の例に係るコプロセッサは、Q1タイプの照会に対して160MB/秒の
持続可能なデータ速度を実現する。また、Q2タイプの複雑な照会は、20MB
/秒の持続可能なデータ速度で処理される。
パターン照合
例えば指紋等の画像から、様々なタイプの特徴が抽出され、多くのかかる特徴
の組合せにより対象を識別し得る。多数の応募者間の探索は、本コプロセッサの
頑強でファジーな機構から大いに得るところがある。一般に、コプロセッサの能
力は、DNA研究等でなされるような部分照合を含む問題に良く適合する。
画像アーカイブ
種々のタイプの画像を蓄積し処理する必要は、多くの分野で技術的発展を促進
している。効率的な画像検索システムは、例えば病院で、新聞社で、或いは不動
産業者に、急速に不可欠なものになっている。画像は、相当量の誘導及び付加特
性を備えた、多次元対象を表す。
データベース探索
殆どのデータベースシステムは、階層構造及び厳密に定義された識別子に依存
している。選択性の低い属性を有するファジーな照会は、既存のシステムに厳し
い性能上の問題を課すが、かかる照会は、作動中に全ての弱い制約を組み合わせ
る本コプロセッサには理想的である。例えば、環境測定及び化学薬品のデータベ
ースに関する具体的な研究は、単純化及び性能の向上に対する潜在的需要が本来
的に存する、ことを示している。
信号処理
潜在的アプリケーションとしては、非線形フィルタリング、レーダターゲット
相関、及び異常信号検出等がある。
データネットワーク
潜在的アプリケーションとしては、例えばイリーガルなアドレス範囲を報告す
るための、或いは情報をスナップするための、寄生監視関数がある。本コプロセ
ッサを備えたパーソナルコンピュータ及びワークステーションの幾つかは、デー
タ源として、データの全量を周期的に広める中央データポンプから生じたネット
ワークを使用することにより、分散処理システムに固有の全ての問題を除去する
ことができ
る。
ディスク制御装置
本発明に係るコプロセッサは、理想的なディスク制御装置構成要素である。こ
れは、単にデータを要求項目のみに制限することにより、バスを介してホストコ
ンピュータにデータを転送する必要性を大幅に減少させる。コプロセッサの機能
は、従来の内容アドレス指定を超えてより進んだ「データ特性」アドレス指定を
行っている。Description: TECHNICAL FIELD The present invention relates to a non-numerical coprocessor for fuzzy information retrieval and pattern recognition using an electronic computer. BACKGROUND ART Conventional computer systems can be used to describe, store, recognize and retrieve information using complex programming and data organization techniques. However, by using such a known method, the system performance often deteriorates remarkably, especially in tasks such as complicated information item search and complex pattern recognition. Through information retrieval, text and database searching, and pattern matching, most computer users have faced well-known problems resulting from the inefficiencies of conventional approaches to non-numerical computation. For example, a huge amount to respond to a query of the type "find all dates and locations where cadmium was measured between 1980 and 1985, where phosphorus concentrations were measured above 15 μg / l". Reading a measurement of or even a much simpler query can cause severe performance problems in conventional systems. Inspired by human behavior that retrieves large amounts of information and recognizes complex items therefrom, the present invention seeks to eliminate the gap between traditional method-based systems and today's performance requirements. . Accordingly, it is an object of the present invention to provide simple non-numerical programming while at the same time scanning large volumes of data substantially faster than conventional non-numerical computing systems and slower to find certain complete sentences. Or to provide the ability to search for complex combinations of many word fragments. Further, the present invention seeks to eliminate the need for extended segmentation, vectorization, and duplicate storage of data to search for complex information items, which is often required when employing conventional techniques. To do. In the present disclosure, a "byte" should be construed as a series of contiguous bits treated as a unit, and the number of bits is not necessarily eight. DISCLOSURE OF THE INVENTION According to the present invention, the problem faced by the prior art is a non-numeric coprocessor for fuzzy information retrieval and pattern recognition, which has information processing means and is connectable to a host computer and a data source, The information processing means comprises a plurality of internal processing elements organized within a predetermined number of simultaneously operable window modules arranged to examine a data stream from said data source, each processing element being within the data stream. 1 byte, for example an 8-bit byte, of the byte is present within the boundary value by comparing the predetermined individually programmable upper and lower limit values assigned to the processing element with each other. If it is within the boundary value, generate a hit signal to be sent to the window matching logic circuit provided in each window module, It is solved by a coprocessor which correlates with hit signals received from different processing elements in the window module and further generates a window match signal by the occurrence of a predetermined match in the window module. This coprocessor configuration provides powerful parallel processing capabilities that can be used to provide coprocessor systems with performance far exceeding that of conventional systems for information retrieval and pattern recognition. . The coprocessor according to the invention preferably further comprises a separate data stream from said data source to said simultaneously operable window module individually in response to configuration data corresponding to the needs of the application. Alternatively, the window module comprises data routing means for transferring in a manner that is chained to different selectable window configurations such as individual super windows or groups of super windows or a single super window containing all window modules. By chaining windows into longer windows, more complex search conditions can be accommodated, and the routing of input data to different windows is required for the window length and data stream of the currently executing application. Depending on the method, it can be done in several ways. In fact, within the limit of the number of available windows, any number of streams of 1 byte each can be processed. For example, a number of individual data inputs, each preferably eight bits long, can be transferred to different windows for parallel processing, and the same data stream needs to be duplicated when processed by different windows. Disappears. Thus, the coprocessor according to the present invention has a flexible and configurable data routing function and also supports the use of the processor in applications of 64 bits or less in length. Preferably, the data routing means comprises a network of multiplexers organized at different levels, each multiplexer being able to select one of two data inputs, each preferably eight bits long, and transfer it to its output. . In particular, in the preferred embodiment of the coprocessor, the multiplexer levels comprise folding, parallel, and serial multiplexer levels, respectively. The coprocessor further comprises a static random access memory (RAM) for internal storage of the window structure which can be loaded into the coprocessor. This eliminates the need to transfer configuration data to the coprocessor for each search operation (necessary to transfer only if the configuration is changed), which is advantageous for developing software that includes a personalized set of downloadable configuration data. In one embodiment of the coprocessor, each processing element comprises a latch cell for temporary storage of a byte to be tested and two comparator cells with the upper and lower limits for the processing element. The cell is configured to generate a hit signal. Further provided in the coprocessor is result control logic configured to receive the window match signal and compare it to a programmable central hit mask, the central hit mask defining a logical combination of window hits, and It is preferable to have the addresses of all detected occurrences reported (hit address mode) or the total number of matches in the examined data volume (hit count mode). The convenience of programming and controlling the coprocessor, and further advantages and features of the coprocessor, will be apparent to those skilled in the art from the following description. BRIEF DESCRIPTION OF THE DRAWINGS The present invention will now be described in detail with reference to the accompanying drawings, on the basis of an example of a preferred embodiment of a coprocessor according to the present invention. FIG. 1 shows a typical application of a coprocessor according to the invention. FIG. 2 is a block diagram of a coprocessor according to the present invention connected to a host computer and a data source. FIG. 3 is a diagram showing a single window within a coprocessor according to the present invention. FIG. 4 is a diagram showing a single processing element of a window in a coprocessor according to the present invention. FIG. 5 shows a data routing network within a coprocessor according to the present invention. 6 to 15 show various preferred configurations of the data routing network within the coprocessor according to the present invention. 16 to 17 detail the flow of data through the routing network in the coprocessor according to the two different configurations shown in each of FIGS. 7 to 16. FIG. 18 shows a typical host / coprocessor configuration. FIG. 19 shows the address map organization within the coprocessor. FIG. 20 shows a portion of the window for a given example application. Description of the Preferred Embodiments As shown in FIG. 1, a coprocessor chip 1 according to the present invention generally comprises a bidirectional data transfer link to a host computer 2 and a unidirectional data transfer link. It is connected to the data source 3. The preferred embodiment of coprocessor chip 1 comprises a series of eight window modules W0-W8, as shown in FIG. These data modules W0-W8 are logically located between the data router module 12 and the result control logic circuit 13 which are interconnected via an 8-bit data bus connected to the host interface module 14. ing. The data source interface module 15 performs one-way 64-bit data transfer from the data source 3 to the data router module 12. Referring now to FIG. 3, each of the eight data window modules W0-W8 has a window matching logic circuit 16 and a 32-byte shift register corresponding to 32 processing elements PE0-PE31. As shown in FIG. 4, each processing element PE is divided into a latch cell 17 and two comparator cells 18, 19 associated with each other to check individually programmable upper and lower limits. As shown in detail in FIG. 5, each window can be chained to a longer window via the data routing network in the data router module 12, allowing more complex data retrieval. The data router is composed of a 3-level multiplexer, and selects and outputs one of two 8-bit length inputs. The first level multiplexer, which is supplied with an 8-bit long data stream from the data source, consists of a folding multiplexer (upper multiplexing row in FIG. 5), i.e. a multiplexer that folds the data stream in a circle. Each window can be independent of the location where the actual data stream enters the coprocessor chip. The folding multiplexer is connected to a parallel multiplexer (the central multiplexing row in FIG. 5) that duplicates the data stream and simultaneously reads the same data stream in different windows. Finally, the serial multiplexer (the lower multiplexing row in FIG. 5) chooses whether or not each window should be chained to the superwindow. These three multiplexer levels allow input combinations and window chains. Hereinafter, a part of the possible configurations will be described with reference to FIGS. 6 to 17. The input data streams are assigned codes 0 to 7, for example, the stream 0 corresponds to D (7,0) and the stream 1 corresponds to D (15,8). a) Each of the eight data streams is supplied to each window arranged in parallel. This is the simplest routing strategy. Each stream is sent to the corresponding window. This configuration is shown in FIG. 6 and the actual configuration is shown in detail in bold in FIG. b) Supply each of the four data streams to two windows arranged in parallel. Each data stream is paired and sent to two windows arranged in parallel. The streams can be every other dataset 0, 2, 4, 6 or datasets 1, 3, 5, 7, eg stream 0 is followed by stream 1. This configuration is shown in FIG. c) Feed each of the four data streams to two windows arranged in series. This configuration is similar to b), except that each pair of windows is concatenated to form one superwindow of double length. This configuration is shown in FIG. d) Each of the two data streams is supplied to four windows arranged in parallel. The streams are combined in groups of four and sent to two sets of four windows arranged in parallel. The streams can alternately be (0, 4), (1, 5), (2, 6) or (3, 7), eg stream 0 followed by streams 1, 2, 3 Next to 4, streams 5, 6, and 7 are arranged. This configuration is shown in FIG. e) Feeding the two data streams respectively into two groups of parallel windows consisting of two windows arranged in series. As in d), the windows are chained, but the parallelism is reduced. This configuration is shown in FIG. 10, and in FIG. 17 the input streams 2 and 6 and the actual configuration are shown in detail in bold type. f) Each of the two data streams is supplied to four windows arranged in series. This configuration is similar to the configuration of d) except that the windows of each group are linked so as to form one super window that is four times the length of each window. This configuration is shown in FIG. g) Supply one data stream to eight windows arranged in parallel. Each data stream is combined to form one stream and sent to eight windows arranged in parallel. Any of the eight streams can be used as input, treating the entire data storage area as one long 8-bit data file. This configuration is shown in FIG. h) Feeding one data stream to four groups of parallel windows consisting of two windows arranged in series. Similar to g), but each window is chained for a more complex search. This configuration is shown in FIG. i) Supply one data stream to two groups of parallel windows consisting of four windows arranged in series. Similar to g) and h), but chaining more windows to increase complexity. This configuration is shown in FIG. j) One data stream is supplied to eight windows arranged in series. Similar to g), but connects all windows to form a single super window, allowing the most complex searches. This configuration is shown in FIG. Alternative filter and data path configurations are determined by the configuration data loaded into the chip. All configurations are capable of 10 gigabytes of single byte comparisons per second with data routing. However, by trading off the number of simultaneous data paths, complex queries are made, which facilitates mapping a large number of applications on a chip. The coprocessor 11 is typically linked to a computer via a host interface 14, as shown in FIG. The illustrated host computer comprises a disk unit 21, a disk controller 22 associated therewith, a central processing unit or CPU 23, a system memory 24 and a system bus 25. The host interface 14 is based on an 8-bit bidirectional port (HD bus) and read / write cycles are executed synchronously and asynchronously. The host interface itself is controlled by the assertion of the IOR and IOW signals in combination with the CS signal and the specific polarity on the SETA DR line (see Figure 2). The configuration data is stored in the configuration RAM and consists of a total of 828 bytes, enabling a complete reconfiguration within about 100 microseconds. In most systems, the configuration time is determined by the transfer rate from the host computer. When the input / output channel of a personal computer is used, assuming that the transfer rate is IMB / sec, it generally takes 1000 microseconds. Minor changes to the configuration data are made by addressing through an internal address register of the coprocessor, which can further reduce the configuration time. Thus, the reconstruction and the search are performed very quickly, making it possible to search for equal amounts of data on different criteria. In counting mode, the coprocessor accumulates the number of matching data items found on the chip. In reporting mode, the coprocessor issues an interrupt signal when it detects a hit. This signal continues to be sent until the host computer issues an ACK signal or an IOW signal. The internal result position counter is housed in a shadow register (not shown). The configuration data determines whether the chip should stop receiving data if a hit occurs. If the chip is configured to stop the data stream, the DWTD signal (see Figure 2) will be inactive until the ACK signal is sent. If the data stream is programmed to flow uninterrupted despite a match, the counter contained in the shadow register will not be overwritten until the ACK signal is sent. This is advantageous for text searching when hits frequently occur on the text portion containing the desired data. Also, if the problem occurs only in the legitimate part of the text (chapter, section), it is not appropriate to seek an exact detection of its occurrence within that part of the text. The 64-bit synchronous data interface 15 (see FIG. 2) is controlled by a simple handshake procedure. When the coprocessor is ready to receive data, the DWTD signal is sent one clock cycle before the actual data is read. This makes it possible to ensure more appropriate timing when designing the interface. When the data source is ready with data, it issues a DVALID signal. If the DWTD signal was inactive at the last rising clock, the sending of the DVALID signal prevents the data from being read by the coprocessor. Therefore, after sending the DWTD signal and detecting the rising clock edge, the data source should not consider the data transfer completed until it detects the data and the DVALID signal during the first rising clock. Corresponding timing schemes can be implemented for such synchronous and asynchronous read / write functions. If the input stream contains data that is to be interpreted as a numeric value that spans more than one byte, the most significant byte must reach the first in the window. Programming of the chip is done by writing configuration data to different addresses in the host interface. The different parts of the configuration are indirectly addressable. As a result, only a part of the configuration can be changed in a very short time if necessary. It is not necessary to stop the data stream during the reconfiguration, but false matches may occur due to the transient condition that occurs when the configuration is partially written. Also, since the record counter is reset by writing to the corresponding window, problems may arise in the case of misaligned records. Therefore, it is desirable to stop the data stream before changing the configuration. The internal configuration address in the coprocessor consists of the 11-bit address ADR (10,0), which is generated in the internal address register. The eight high-order bits of this register can be loaded via the host interface. The three lower bits are cleared when the upper bits are loaded. Loading is done by setting address bits on the HD bus and sending CS, IOW and SETADR signals simultaneously. The organization of the 11-bit address is shown in FIG. The coprocessor comprises twelve internal modules, each with its own address. The module address consists of the four upper bits in the address and is changed only by writing a new value from the HD bus. The module base address is shown in Table 1. The 7 low-order bits are held in the counter and incremented for each access from the host interface. Thus, in-order bytes within a module can be easily accessed. Module address auto-incrementing is not supported due to holes in the address map between modules. In most modules, offset addresses can be used for more detailed addressing. To access a single byte, the absolute address is calculated as: Address = (module address * 128 (10)) + Offset Address Next, the address register is loaded with a value via the HD interface and then accessed to autoincrement the address register. Read access is easiest because it requires no knowledge of the previous configuration. Each window module consists of:・ Lower limit 32 bytes ・ Upper limit 32 bytes ・ Field delimiter (separator) mask 32 bytes (all bytes, only the least significant bit is important) ・ Match waiting time value 2 bytes ・ Record length value 1 byte Offset for these registers The addresses are shown in Table 2 below. In the actual search, the limit register is loaded with the appropriate value. The field delimiter mask takes 1 at the least significant byte position of each field. Note that the field delimiter mask uses only the least significant bit of each byte. That is, a 1 is written to the delimiter mask byte that matches the processing element PE, and otherwise the last byte of the field is held at 0. The match latency is the number of clock cycles required for the window to perform a hit. Zero match latency means that the hit is reported from the window to the central match logic during the clock cycle that caused the hit. When the matching waiting time is 4, for example, it means that the matching is reported after 4 more cycles, that is, within a total of 5 cycles. The value written in the matching waiting time register is 65535 (10) -the waiting time. That is, for example, the matching waiting time 4 is specified by writing the value 65531 (10) in the register. The routing of the data streams all take the same amount of time, so if the data streams are input to the chip at the same time, the data streams will occur simultaneously at the input of each window (or the first window of the chain). Sending the stream through the chain window introduces a cumulative delay of 32 cycles, which should be taken into account when calculating the match latency. A clock cycle with no data transfer, that is, an inactive DVALID signal does not affect the number of waiting cycles. Therefore, the match latency is measured for data transfers, not physical clock cycles. The record length is used to suppress hits by occasionally matching patterns that do not match record boundaries. By setting the record length to 1, all hits are reported to the central match logic. When the record length is 6, for example, only the matching performed in the sixth data transfer is reported from the window. The byte counting window is reset by every write operation using the module address corresponding to that window. That is, the first executable match is performed for the sixth data transfer after writing the window configuration. The record length value is programmed into the corresponding register in the coprocessor as 256 (10) -record length. Therefore, a record length of 10 (10) is written as 246 (10). The 256-bit hit mask RAM is organized as 32x8 bits as can be seen from the host interface. This 32 bytes is selected by the 5 low order bits in the internal address register, leaving bits 5 and 6 as "don't care" and bits 7 through 10 as the module address 1000 (2). Writing to byte address 0 affects bits 0 through 7 in the 256-bit addressing scheme, the least significant bit in the byte corresponds to bit position 0. Similarly, writing to byte address 4 affects bits 32-39 of the 256-bit addressing scheme. Each window addresses the RAM as 256 x 1 bit. The match signal from the eight windows is used as the address, and the match signal from window 0 represents the least significant address bits. A hit is detected when a 1 is stored in the real location. The module consisting of mode register, result counter, hit pattern, and version register does not have an internal offset address, but is organized as a serial read shift register chain. All writes to this module occur in the mode register, the only writable register in the chain. This affects how the coprocessor acts on hits. In this case, only the 3 lower bits are made to function, and 0 is always written to the other bits. Table 3 describes the mode bits. These bits result in eight combinations of operations, all described in Table 4. When reading from this module, the values are presented in the following order: 1. Result counter, byte 3 (most significant byte) 2. Result counter, byte 2 3. Result counter, byte 1 4. Result counter, byte 0 (least significant byte) 5. Hit pattern 6. Mode 7. All registers, except the version number mode register, are read-only. Not all values need to be read after the first read has started. Sending an ACK or IOW signal to the coprocessor overwrites the value of the result counter and hit pattern with a new hit and accesses the most significant byte of the result counter to initiate a new read (IOW signal is CS Must be qualified with the signal). This is also valid when the INT signal is not transmitted. The result counter counts the number of hits or data transfers that have occurred since the last write to the mode register. Therefore, writing any value to this module will clear the result counter. The counter is 32 bits long and does not exhibit a counter overflow indicator. The hit pattern is the matching pattern reported from each of the eight windows at the last hit. This can be used when programming the hit mask RAM to generate hits for some matching patterns. The pattern that actually caused the hit is read to provide more information that facilitates post-processing. The version register contains a number indicating the version of the current coprocessor. It will be used in later revisions to allow the software to fit into current hardware. The data router configuration module is organized as a shift register with level depth 3 and length 1 byte. These are the bytes that control the multiplexer previously described with reference to FIGS. Each byte is read and written in the following order. 1) Serial multiplexer 2) Parallel multiplexer 3) Folding multiplexer The read operation is destructive. That is, all multiplexer configuration data must be rewritten after being read. However, this is not very important since the multiplexer configuration is only read during system test. The most significant bit of each byte corresponds to the leftmost multiplexer in FIG. In a serial multiplexer, any combination of values is legal. In the other two multiplexers, configurations with 4 or more consecutive bits in one of the multiplexer control bytes are illegal (due to propagation delay). This also applies to cyclic feedback. That is, the multiplexer configuration of C3 (16) is also illegal. The configuration bytes for each of the configurations a) to j) described above with reference to FIGS. 6 to 17 are guaranteed to work and are shown in Table 5 below. The coprocessor chip according to the present invention includes a data path module dedicated to a manufacturing test and performs a read operation for outputting data from the window 7. A preferred embodiment of a chip containing a non-numeric coprocessor according to the present invention is a highly parallel VLSI chip mounted on an expansion card for a personal computer or workstation. Preferably, the chip is a 100-pin PQFP package manufactured by a CMOS (Complementary MOS) process, having TTL (Transistor Transistor Logic) and CMOS compatible inputs and operating on a + 5V power supply. At an operating frequency of 20 MHz, such a coprocessor chip has a sustainable data processing capacity of 160 MB / s and makes a comparison of 10 Giga single bytes per second. Programming Example The following example shows the settings for searching a person in the phone book. FIG. 20 shows a partial configuration of the window for this example. This window reports a person with a surname starting with the letters A to G and a match for a phone number in the range 142000 to 160000. The telephone number is treated as a 6-byte numeric field by setting the appropriate bits in the field delimiter mask. Although the other two fields are also shown in the illustrated window, the field number. 1 and No. If all bits are 1's for 2, they do not make a difference because they are not included in the comparison of more than 1 byte. Bytes not included in the search criteria are set to a "don't care" state that matches all data patterns within the maximum range of FF (16) through 00 (16). Due to the programmed 16-byte record length, no matching is done for data that does not meet record boundaries in the configuration. Further, when only one window is used, the matching waiting time is unnecessary. If the above is the only search criterion, it may be copied to all windows and the hit mask RAM is set so that all positions except position 0 are 1. This causes a match signal to be issued when at least one of the windows has a hit. In addition, the mode value also needs to be set appropriately, for example, Report = 1, Stop = 1, and Blank = 0. Next, the coprocessor generates an interrupt signal for each match, and further reads the match position relating to the search start for each match. Functional Description As shown in FIG. 3, the preferred embodiment of the coprocessor consists of eight data windows, each containing a 32-byte shift register. As shown in FIG. 4, each register element is associated with two comparators that check the upper and lower bounds. Each boundary is individually programmable, allowing data to match within any contiguous interval in the byte range. The two comparators report the match to the matching logic circuit connected to each window. For items larger than 1 byte, combine matches of different bytes. This allows data records of up to 256 bytes to be processed. The data field can be configured up to 8 bytes for any interval test and up to 256 bytes for the equivalence test. Each window reports an individual hit to the central hit mask on the chip. A match of each of the eight windows is used as the address of the 256-bit user programmable RAM. This RAM stores a 1 for any combination of window hits that should be detected as a hit. Being programmable, the user should, for example, be reported even when only one window is hit, be reported when four of eight windows are hit, or all windows are hit You can choose when it should be reported. In general, any logical combination of 8 window hits is a user-defined hit. The chip reports the address of occurrence of all hits detected, or the total number of matches in the data volume. When set to report mode, the coprocessor stores an internal counter containing the position of the detected data in the shadow register on hit. This accumulated display may be read later by the host computer. The shadow register is not overwritten until the host computer confirms the match by sending an ACK signal. Each window is configurable to store hits for a programmable amount of time. This allows a context sensitive search to be performed if an exact match cannot be detected. It follows the coprocessor principle. That is, instead of one (strict) search key, many weak conditions on the required data are used. This feature is especially important for searches in complex and / or large amounts of data. Application Example Creating and maintaining traditional indexes would be obsolete because of the search speed achieved by the search coprocessor in unstructured text. By combining text fragments with wildcards with controlled relative distances, important information can be uniquely identified. Synonyms may be used simultaneously in the search. Below are two different types of simple queries. Q1: "In Shakespeare's work, how often and where does the sentence'take it in what sence thou wilt 'appear?" Q2: "'Jelts','Mitter','Kohl,not'Gorbat'." Find a newspaper article in which at least three of the five (partial) names'Major 'and'Bush' appear. "Q1 type stylistic research cannot be done well with conventional text search systems. It is also well known that indexes require more space than text. The coprocessor according to the given example achieves a sustainable data rate of 160 MB / sec for Q1 type queries. Also, Q2-type complex queries are processed at a sustainable data rate of 20 MB / sec. Pattern matching Various types of features can be extracted from images such as fingerprints, and many combinations of such features can identify an object. Searching among multiple applicants has much to gain from the robust and fuzzy mechanism of this coprocessor. In general, the coprocessor's capabilities are well suited to problems involving partial matching, such as those done in DNA research. Image Archiving The need to store and process different types of images has facilitated technological development in many areas. Efficient image retrieval systems are rapidly becoming indispensable, for example in hospitals, newspaper companies or real estate agents. The image represents a multi-dimensional object with a considerable amount of guidance and additional properties. Database Search Most database systems rely on hierarchical structures and well-defined identifiers. Fuzzy queries with less selective attributes impose severe performance problems on existing systems, but such queries are ideal for this coprocessor which combines all weak constraints during operation. For example, specific research on environmental measurement and chemical databases has shown that there is an inherent potential need for simplification and improved performance. Signal Processing Potential applications include nonlinear filtering, radar target correlation, and abnormal signal detection. Data Networks Potential applications include parasitic monitoring functions, for example to report illegal address ranges or to snap information. Some of the personal computers and workstations with this coprocessor use all the problems inherent in distributed processing systems by using as a data source a network originating from a central data pump that periodically spreads the full amount of data. Can be removed. Disk Controller The coprocessor according to the present invention is an ideal disk controller component. This greatly reduces the need to transfer data to the host computer via the bus by simply limiting the data to the required items. The function of the coprocessor is to provide more advanced "data characteristic" addressing beyond conventional content addressing.