(57)【特許請求の範囲】
【請求項１】
複数の格納データを記憶しておき、検索データが入力され、入力された検索データに対応する格納データを検索する連想メモリにおいて、
検索データの全部、もしくは検索データの、該検索データを１ビットも含まないことが許容された所定の一部のビットパターンを含む第１のデータを構成する各ビットデータと、該検索データの前記第１のデータに含まれない残余の部分のビットパターンを含む第２のデータを構成する各ビットデータとをパラレルに入力し、これら第１および第２のデータの中から前記検索データを抽出して該検索データを構成する各ビットデータをパラレルに出力するセレクタを備えたことを特徴とする連想メモリ。
【請求項２】
前記第１および第２のデータをそれぞれ格納する第１および第２のレジスタを備え、
前記セレクタが、前記第１および第２のレジスタに格納された前記第１および第２のデータの中から前記検索データを抽出するものであることを特徴とする請求項１記載の連想メモリ。
【請求項３】
第１の時点で入力された前記第１のデータを前記第２のレジスタに格納し、該第１の時点より遅れた第２の時点で、前記第２のレジスタに格納された前記第１のデータを前記第１のレジスタに転送し、該第２の時点よりも遅れた第３の時点で入力された前記第２のデータを前記第２のレジスタに格納するデータフロー制御回路を備えたことを特徴とする請求項２記載の連想メモリ。
【請求項４】
入力された前記第１のデータを格納するレジスタを備え、
前記セレクタが、前記第１のデータよりも遅れて入力された前記第２のデータ、および前記レジスタに格納された前記第１のデータの中から前記検索データを抽出するものであることを特徴とする請求項１記載の連想メモリ。
【請求項５】
抽出された前記検索データを一時的に格納しておくキーレジスタを備えたことを特徴とする請求項１から４のうちいずれか１項記載の連想メモリ。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、複数の格納データを記憶しておき、検索データを入力し、入力された検索データに対応する格納データを検索する連想メモリに関する。
【０００２】
【従来の技術】
従来より、上記のような検索機能を備えた連想メモリ（Ａｓｓｏｃｉａｔｉｖｅ  Ｍｅｍｏｒｙ，内容アドレス式メモリ；Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）が提案されている。
図５は、連想メモリの一例を表わした回路ブロック図である。
【０００３】
この連想メモリ１０には、例えば３２ビットを１ワードとする、互いに図の横方向に並ぶ３２ビットのメモリセルからなるメモリワード１１＿１，１１＿２，…，１１＿ｎが多数備えられている。またこの連想メモリ１０は、１ワードの検索データが入力されラッチされる検索データレジスタ１２および検索データをビット毎にマスクするマスクデータが格納されるマスクレジスタ１３を備え、検索データレジスタ１２にラッチされた検索データのうち、マスクレジスタ１３に格納されたマスクデータによりマスクされていない全部もしくは所定の一部のビットパターンと、各メモリワード１１＿１，１１＿２，…，１１＿ｎに記憶された格納データのうち上記ビットパターンと対応する部分のビットパターンとの一致不一致が比較され、各メモリワード１１＿１，１１＿２，…，１１＿ｎそれぞれに対応して備えられた一致線１４＿１，１４＿２，…，１４＿ｎのうちビットパターンが一致したメモリワード１１＿１，１１＿２，…，１１＿ｎに対する一致線１４＿１，１４＿２，…，１４＿ｎに論理‘１’の一致信号が出力される。それ以外の一致線１４＿１，１４＿２，…，１４＿ｎは論理‘０’にとどまる。
【０００４】
これらの一致線１４＿１，１４＿２，…，１４＿ｎに出力された信号は、各一致フラグレジスタ１５＿１，１５＿２，…，１５＿ｎに格納される。ここでは、一例として、図示のように、各一致フラグレジスタ１５＿１，１５＿２，…，１５＿ｎにそれぞれ‘０’，‘１’，‘１’，‘０’，…，‘０’，‘０’が格納されたものとする。これらの一致フラグレジスタ１５＿１，１５＿２，…，１５＿ｎに格納された信号はアドレスエンコーダ１６に入力され、このアドレスエンコーダ１６からは、論理‘１’の信号が格納された一致フラグレジスタ（ここでは一致フラグレジスタ１５＿２と一致フラグレジスタ１５＿３の２つ）のうちの優先度の最も高い一致フラグレジスタに対応するアドレス信号が出力される。ここでは、添字が若いほど優先順位が高いものとし、従ってここでは一致フラグレジスタ１５＿２に対応するメモリアドレスが出力される。このアドレスエンコーダ１６から出力されたアドレス信号ＡＤは、必要に応じてデコーダ１７に入力される。デコーダ１７ではこの入力されたアドレス信号ＡＤをデコードして各メモリワード１１＿１，１１＿２，…，１１＿ｎのそれぞれに対応して備えられたワード線１８＿１，１８＿２，…，１８＿ｎのうちの入力されたアドレス信号ＡＤに対応するいずれか１本のワード線（ここではワード線１８＿２）にアクセス信号を出力する。これによりアクセス信号の出力されたワード線１８＿２に対応するメモリワード１１＿２に記憶されているデータが出力レジスタ１９に読み出される。
【０００５】
図６は、図５に示す連想メモリ中の１つのメモリワードを表わした詳細回路図である。
このメモリワード１１は、同一構成の３２個のメモリセル１１＿１，１１＿２，…，１１＿３２から構成されている。各メモリセル１１＿１，１１＿２，…，１１＿３２には、互いの出力が互いの入力に接続された、第１インバータ２０＿１，２０＿２，…，２０＿３２と第２インバータ２１＿１，２１＿２，…，２１＿３２が備えられており、これらのインバータ２０＿１，２１＿１；２０＿２，２１＿２；…；２０＿３２，２１＿３２により各メモリセル１１＿１，１１＿２，…，１１＿３２に論理‘１’もしくは論理‘０’の１ビットの情報が記憶される。
【０００６】
また各メモリセル１１＿１，１１＿２，…，１１＿３２において、第１のインバータ２０＿１，２０＿２，…，２０＿３２の出力はトランジスタ２２＿１，２２＿２，…，２２＿３２を介してビット線２３＿１，２３＿２，…，２３＿３２と接続されており、このトランジスタ２２＿１，２２＿２，…，２２＿３２のゲートはワード線２４に接続されている。また第２のインバータ２１＿１，２１＿２，…，２１＿３２の出力はトランジスタ２５＿１，２５＿２，…，２５＿３２を介してビットバー線２６＿１，２６＿２，…，２６＿３２と接続されており、このトランジスタ２５＿１，２５＿２，…，２５＿３２のゲートもワード線２４に接続されている。さらに各メモリセル１１＿１，１１＿２，…，１１＿３２において、ビット線２３＿１，２３＿２，…，２３＿３２とビットバー線２６＿１，２６＿２，…，２６＿３２との間をつなぐように互いにシリーズに接続された２つのトランジスタ２７＿１，２８＿１；２７＿２，２８＿２；…；２７＿３２，２８＿３２が配置されており、これら２つのトランジスタ２７＿１，２８＿１；２７＿２，２８＿２；…；２７＿３２，２８＿３２のうちの一方のトランジスタ２７＿１，２７＿２，…，２７＿３２のゲートは第１のインバータ２０＿１，２０＿２，…，２０＿３２の出力、他方のトランジスタ２８＿１，２８＿２，…，２８＿３２のゲートは第２のインバータ２１＿１，２１＿２，…，２１＿３２の出力と接続されている。
【０００７】
また一致線１４０には、各メモリセル１１＿１，１１＿２，…，１１＿３２に対応して１つずつトランジスタ２９０＿１，２９０＿２，…，２９０＿３２が備えられており、それらのトランジスタ２９０＿１，２９０＿２，…，２９０＿３２は互いにシリーズに接続され、それらのトランジスタ２９０＿１，２９０＿２，…，２９０＿３２の各ゲートは、各２つのトランジスタ２７＿１，２８＿１；２７＿２，２８＿２；…；２７＿３２，２８＿３２の中点と接続されている。
【０００８】
またこの一致線１４０にはもう１つのトランジスタ２９０＿０がシリーズに接続されており、この一致線１４０の図６の左端はこのトランジスタ２９０＿０を介して接地されている。このトランジスタ２９０＿０のゲートは制御線３００に接続されている。さらにこの一致線の図６の右側にはインバータ３１０が備えられており、一致線１４０はこのインバータ３１０の出力側にも延びて各一致フラグレジスタ１５＿１，１５＿２，…，１５＿ｎ（図５参照）と接続されている。このインバータ３１０の入力と電源ＶＤＤとの間には２つのＰ型トランジスタ３２０，３３０が備えられており、それらのうちの一方のＰ型トランジスタ３２０のゲートは制御線３００と接続され、他方のＰ型トランジスタ３３０のゲートはインバータ３１０の出力と接続されている。
【０００９】
このような構造のメモリワード及びその周辺回路を備えた連想メモリにおいて、一致検索は以下のようにして行なわれる。
先ず制御線３００が論理‘０’となりＰ型トランジスタ３２０が導通状態となって一致線１４０がプリチャージされる。この際、トランジスタ２９０＿０は非導通状態となって一致線１４０が確実に接地ラインから切り離され、これにより確実にプリチャージが行なわれる。このようにして一致線１４０が先ずプリチャージされた後検索が行なわれる。
【００１０】
ここで、メモリセル１１＿１には、論理‘１’の情報が記憶されているものとする。即ちこの場合第１のインバータ２０＿１の出力側が論理‘１’、第２のインバータ２１＿１の出力側が論理‘０’の状態にある。
このメモリセル１１＿１に対して論理‘１’の検索が行なわれるものとする。即ち、ビット線２３＿１が論理‘１’、ビットバー線２６＿１が論理‘０’とされる。ワード線２４は論理‘０’のままの状態に保持されている。また制御線３００が論理‘１’となり、トランジスタ２９０＿０が導通状態となる。この場合トランジスタ２７＿１のゲートには論理‘１’の電圧が印加され、ビット線２３＿１の論理‘１’の信号がトランジスタ２９０＿１のゲートに印加され、これによりトランジスタ２９０＿１が導通状態となる。即ちメモリセル１１＿１に記憶されたビット情報とビット線２３＿１、ビットバー線２６＿１を経由して入力された検索データ中のビット情報が一致する場合に、対応するトランジスタ２９０＿１が導通状態となる。
【００１１】
また、メモリセル１１＿２には論理‘０’の情報が記憶されているものとする。この場合第１のインバータ２０＿２の出力側が論理‘０’、第２のインバータ２１＿２の出力側が論理‘１’の状態にある。
このメモリセル１１＿２に対してやはり論理‘１’の検索が行なわれるものとする。即ち、ビット線２３＿２が論理‘１’、ビットバー線２６＿２が論理‘０’とされ、制御線３００が論理‘１’とされる。この場合、トランジスタ２８＿２を経由して論理‘０’の状態にあるビットバー線２６＿２の信号がトランジスタ２９０＿２のゲートに印加され、したがってこのトランジスタ２９０＿２は非導通状態にととどまることになる。即ち不一致の場合、一致線１４にプリチャージされていた電荷はディスチャージされない。
【００１２】
また、マスクをかけたビットについては、メモリセル１１＿３２に示すように、ビット線２３＿３２、ビットバー線２６＿３２の双方とも論理‘１’とされる。この場合このメモリセル１１＿３２に論理‘１’の情報が記憶されているか論理‘０’の情報が記憶されているかに応じてトランジスタ２７＿３２もしくはトランジスタ２８＿３２のいずれかが導通状態となり、いずれの場合もトランジスタ２９０＿３２は導通状態となる。
【００１３】
このように、図６に示すメモリワードでは、メモリワードに記憶されたビットパターンとビット線２３＿１，２３＿２，…，２３＿３２、ビットバー線２６＿１，２６＿２，…，２６＿３２を経由して入力された検索データのビットパターンとが一致する（マスクのかけられたビットについては、上述のように一致しているものとみなされる）場合、一致線１４０にプリチャージされた電荷がトランジスタ２９０＿３２，…，２９０＿２，２９０＿１，２９０＿０を経由して流れ出し、これにより一致線１４０がディスチャージされ、この一致線１４０のうち図６におけるインバータ３１０の左側の部分は論理‘０’の状態となる。この論理‘０’がインバータ３１０で反転され、論理‘１’の一致信号がこのインバータ３１０から出力され、各一致フラグレジスタ１５＿１，１５＿２，…，１５＿３２（図５参照）に入力される。
【００１４】
またメモリワードに記憶されたビットパターンとビット線２３＿１，２３＿２，…，２３＿３２、ビットバー線２６＿１，２６＿２，…，２６＿３２を経由して入力された検索データのビットパターンとが不一致の場合には、一致線１４０はプリチャージによる論理‘１’の状態にとどまり、この論理‘１’がインバータ３１０で反転され、論理‘０’の不一致信号が出力される。
【００１５】
このように、図６に示すメモリワードは、検索に先立って一致線１４０がＰ型トランジスタ３２０を経由してプリチャージされ、検索により一致した場合にだけトランジスタ２９０＿０，２９０＿１，２９０＿２，…，２９０＿３２を経由してディスチャージされるように構成したため、各検索毎にディスチャージされるのは、ほとんどの場合多数の一致線のうちの極く一部であって、大部分の一致線はプリチャージされた状態にとどまり、したがって次の検索に先立ってプリチャージする必要のある一致線の本数は少なくて済み、検索に伴う消費電力が低く押えられる。
【００１６】
尚、図６に示す回路構成は一例に過ぎず、種々の構造のものが知られ、あるいは考えられている。
【００１７】
【発明が解決しようとする課題】
例えば上記のように構成された連想メモリを用いて、通信回線等を経由してきたデータをその連想メモリに入力して検索を行なうことを考える。
図７は、通信回線等を経由して送信されてきたデータの構造図である。
例えば３２ビットパラレルの通信回路を経由して各時刻  …，ｔｉ  ，ｔｉ＋１  ，ｔｉ＋２  ，…  にそれぞれ３２ビットのデータ  …，Ｄｉ  ，Ｄｉ＋１  ，Ｄｉ＋２  ，…  が送信されてきたものとする。ところが、例えば図６に示すように、検索に用いる検索データＲＥＦ＿ＤＡＴＡが、３２ビットパラレルのデータ  …，Ｄｉ  ，Ｄｉ＋１  ，Ｄｉ＋２  ，…  のいずれかと一致するとは限らず、例えば１６ビット、８ビット等を単位としてその単位の１つ分もしくは複数分ずれている場合がある。図６では、これを一般化し、データＤｉ  の一部に検索データＲＥＦ＿ＤＡＴＡの一部のｋビットが含まれ、次に入力されるデータＤｉ＋１  に検索データＲＥＦ＿ＤＡＴＡの残りの３２−ｋビットが含まれていることを示している。
【００１８】
このような場合、従来は、連想メモリとは別に、例えばマイクロコンピュータを備え、一旦、そのマイクロコンピュータに通信データ  …，Ｄｉ  ，Ｄｉ＋１  ，Ｄｉ＋２  ，…  を入力しビットシフト等を行なって、その通信データ  …，Ｄｉ  ，Ｄｉ＋１  ，Ｄｉ＋２  ，…  の中から検索データＲＥＦ＿ＤＡＴＡを抽出する操作を行なった後その検索データＲＥＦ＿ＤＡＴＡを連想メモリに入力する必要があり、システムの複雑化、検索処理速度の低下を招いていた。
【００１９】
本発明は、上記事情に鑑み、上記のように順次入力されるデータ  …，Ｄｉ  ，Ｄｉ＋１  ，Ｄｉ＋２  ，…  のいずれかに検索データの全部が含まれないような状況が生じる場合であっても高速検索を可能とする連想メモリを提供することを目的とする。
【００２０】
【発明を解決するための手段】
上記目的を達成する本発明の連想メモリは、複数の格納データを記憶しておき、検索データが入力され、入力された検索データに対応する格納データを検索する連想メモリにおいて、
検索データの全部、もしくは検索データの、その検索データを１ビットも含まないことが許容された所定の一部のビットパターンを含む第１のデータを構成する各ビットデータと、その検索データの上記第１のデータに含まれない残余の部分のビットパターンを含む第２のデータを構成する各ビットデータとをパラレルに入力し、これら第１および第２のデータの中から上記検索データを抽出して該検索データを構成する各ビットデータをパラレルに出力するセレクタを備えたことを特徴とする。
【００２１】
ここで、上記本発明の連想メモリにおいて、上記第１および第２のデータをそれぞれ格納する第１および第２のレジスタを備え、
上記セレクタが、上記第１および第２のレジスタに格納された第１および第２のデータの中から検索データを抽出するものであってもよい。この場合に、第１の時点で入力された第１のデータを第２のレジスタに格納し、その第１の時点より遅れた第２の時点で、第２のレジスタに格納された第１のデータを第１のレジスタに転送し、その第２の時点よりも遅れた第３の時点で入力された第２のデータを第２のレジスタに格納するデータフロー制御回路を備えてもよい。
【００２２】
もしくは、上記本発明の連想メモリにおいて、入力された第１のデータを格納するレジスタを備え、上記セレクタが、第１のデータよりも遅れて入力された第２のデータ、および上記レジスタに格納された第１のデータの中から検索データを抽出するものであってもよい。
また、上記本発明の連想メモリにおいて、抽出された検索データを一時的に格納しておくキーレジスタを備えることが好ましい。
【００２３】
【作用】
本発明の連想メモリは、上記セレクタを備えたものであるため、第１のデータおよび第２のデータの中から瞬時にして検索データが抽出され、したがって高速検索が可能となる。
本発明の連想メモリは、第１および第２のデータをそれぞれ格納する第１および第２のレジスタを備え、それら第１および第２のレジスタに格納された第１および第２のデータをパラレルに入力して検索データを抽出するセレクタを備えてもよく、あるいは、時間的に先に入力された第１のデータを格納するレジスタのみを備え、時間的に後から入力された第２のデータは直接にセレクタに入力するようにしてもよい。
【００２４】
第１および第２のデータをそれぞれ格納する第１および第２のレジスタを備えた場合、順次入力されるデータを、それら第１および第２のレジスタに交互に入力してもよいが、上記データフロー制御回路を備えた場合、交互に入力する場合と比べセレクタの構成および制御が簡単に済む。
また、連想メモリにおいて、検索データが見当たらなかった場合に、その検索データを、その連想メモリに、格納データとして追記することが要望される場合がある。そこで、上記キーレジスタを備えておくと、検索データは一時的にそのキーレジスタに格納されているため、検索データに対応する格納データが見当たらなかった場合に、そのキーレジスタに格納されている検索データを格納データとして追記することができる。
【００２５】
【実施例】
以下、本発明の実施例について説明する。
図１は、本発明の連想メモリの一実施例の、順次入力されるデータの動きを説明するための模式図である。ここでは、図７に示すデータ構造に基づいて説明する。
【００２６】
ここには、３２ビットの第１のレジスタ３１と、同じく３２ビットの第２のレジスタ３２と、さらに、６４ビットのパラレル入力データの中から所望の３２ビットのデータをパラレルに出力するセレクタ３３が備えられている。
先ず時刻ｔｉ  において、３２ビットのデータＤｉ  が第２のレジスタ３２に入力される。次に、時刻ｔｉ＋１  よりも以前に、第２のレジスタ３２に入力されたデータＤｉ  が第１のレジスタ３１に転送される。その後、時刻ｔｉ＋１  において、３２ビットのデータＤｉ＋１  が第２のレジスタ３２に入力される。このように、各データ  …，Ｄｉ  ，Ｄｉ＋１  ，Ｄｉ＋２  ，…  の入力と同期して、上記のようなデータフローが順次実行される。
【００２７】
第１のレジスタ３１にデータＤｉ  が格納され、かつ第２のレジスタ３２にデータＤｉ＋１  が格納された状態において、それら第１および第２のレジスタ３１，３２に格納された第１および第２のデータＤｉ  ，Ｄｉ＋１  がパラレルにセレクタ３３に入力され、このセレクタ３３で第１のデータＤｉ  の上位ｋビットおよび第２のデータＤｉ＋１  の下位３２−ｋビットが、検索データＲＥＦ＿ＤＡＴＡとして抽出される。この抽出された検索データＲＥＦ＿ＤＡＴＡは、図５を参照して説明したように、各メモリワード１１＿１，１１＿２…，１１＿ｎに入力され一致検索が行なわれる。
【００２８】
図２は、第１および第２のレジスタ、およびセレクタの一例を示す回路図である。ここでは簡単のため、図７に示すｋは、ｋ＝０（ｋ＝３２と意味は同一）又はｋ＝１６のいずれかのみをとり得るものとする。
第１のレジスタ３１には、３２個のフリップフロップ３１＿１，３１＿２，…，３１＿１６，３１＿１７，３１＿１８，…，３１＿３２が備えられている。それらのフリップフロップ３１＿１，３１＿２，…，３１＿１６，３１＿１７，３１＿１８，…，３１＿３２のクロック入力端子には、第１のレジスタ３１と第２のレジスタ３２とに共通に延びる書込み信号線３６が接続されており、書込み信号ＷＲ＿の立ち上がりエッジでそれらのフリップフロップ３１＿１，３１＿２，…，３１＿１６，３１＿１７，３１＿１８，…，３１＿３２にデータがセットされる。
【００２９】
また、第２のレジスタ３２にも３２個のフリップフロップ３２＿１，３２＿２，…，３２＿１６，３２＿１７，３２＿１８，…，３２＿３２が備えられている。それらのフリップフロップ３２＿１，３２＿２，…，３２＿１６，３２＿１７，３２＿１８，…，３２＿３２には、書込み信号ＷＲ＿の立ち下がりエッジでデータがセットされる。
【００３０】
第２のレジスタ３２を構成する３２個のフリップフロップ３２＿１，３２＿２，…，３２＿１６，３２＿１７，３２＿１８，…，３２＿３２の入力端子は、通信回路を経由してデータ  …，Ｄｉ  ，Ｄｉ＋１  ，Ｄｉ＋２  ，…  が順次入力される各入力端子３４＿１，３４＿２，…，３４＿１６，３４＿１７，３４＿１８，…，３４＿３２に、１ビットずつ接続されている。また第１のレジスタ３１を構成する３２個のフリップフロップ３１＿１，３１＿２，…，３１＿１６，３１＿１７，３１＿１８…，３１＿３２の入力端子は、第２のレジスタ３２を構成する３２個のフリップフロップ３２＿１，３２＿２，…，３２＿１６，３２＿１７，３２＿１８，…，３２＿３２の出力端子と１ビットずつ接続されている。
【００３１】
また、第２のレジスタ３２を構成する３２個の各フリップフロップ３２＿１，３２＿２，…，３２＿１６，３２＿１７，３２＿１８，…，３２＿３２の出力は、セレクタ３３を構成する各第１のトランジスタ３３＿１＿１，３３＿１＿２，…，３３＿１＿１６，３３＿１＿１７，３３＿１＿１８，…，３３＿１＿３２を介して各出力端子３５＿１，３５＿２，…，３５＿１６，３５＿１７，３５＿１８，…，３５＿３２に接続されている。これらの各第１のトランジスタ３３＿１＿１，３３＿１＿２，…，３３＿１＿１６，３３＿１＿１７，３３＿１＿１８，…，３３＿１＿３２のゲートは、第１制御線３７に接続されており、第１制御線３７には、必要に応じて、第１のセレクト信号ＣＳ１が入力される。
【００３２】
また第１のレジスタ３１を構成する３２個のフリップフロップ３１＿１，３１＿２，…，３１＿１６，３１＿１７，３１＿１８…，３１＿３２のうちの上位側の１６個のフリップフロップ３１＿１７，３１＿１８…，３１＿３２の出力および、第２のレジスタ３２を構成する３２個のフリップフロップ３２＿１，３２＿２，…，３２＿１６，３２＿１７，３２＿１８，…，３２＿３２のうちの下位側の１６個のフリップフロップ３２＿１，３２＿２，…，３２＿１６は、それぞれ、セレクタ３３を構成する各第２のトランジスタ３３＿２＿１，３３＿２＿２，…，３３＿２＿１６，３３＿２＿１７，３３＿２＿１８，…，３３＿２＿３２を介して各出力端子３５＿１，３５＿２，…，３５＿１６，３５＿１７，３５＿１８，…，３５＿３２に接続されている。各第２のトランジスタ３４＿１，３４＿２，…，３４＿１６，３４＿１７，３４＿１８，…，３４＿３２のゲートは第２の制御線３８に接続されており、第２制御線３８には、必要に応じて、第２のセレクト信号ＣＳ２が入力される。
【００３３】
さらに第１のレジスタ３１を構成する３２個の各フリップフロップ３１＿１，３１＿２，…，３１＿１６，３１＿１７，３１＿１８，…，３１＿３２の出力は、セレクタ３３を構成する各第３のトランジスタ３３＿３＿１，３３＿３＿２，…，３３＿３＿１６，３３＿３＿１７，３３＿３＿１８，…，３３＿３＿３２を介して各出力端子３５＿１，３５＿２，…，３５＿１６，３５＿１７，３５＿１８，…，３５＿３２に接続されている。
【００３４】
以上のような構成において、書込み信号ＷＲ＿が立ち下がる毎に、入力端子３４＿１，３４＿２，…，３４＿１６，３４＿１７，３４＿１８，…，３４＿３２から入力されたデータ  …，Ｄｉ  ，Ｄｉ＋１  ，Ｄｉ＋２  ，…  が第２のレジスタ３２に格納され、書込み信号ＷＲ＿が立ち上がる毎に、第２のレジスタ３２に格納されたデータが第１のレジスタ３１に転送される。
【００３５】
３２ビットの検索データが全て第２のレジスタ３２に格納されており、その検索データを用いて検索を行なう必要があるときは第１のセレクト信号ＣＳ１が入力される。また３２ビットの検索データが第１のレジスタ３１と第２のレジスタ３２に１６ビットずつに分かれて格納され、その検索データを用いて検索を行なうときは第２のセレクト信号ＣＳ２が入力される。同様に、３２ビットの検索データが全て第１のレジスタ３１に格納されており、その検索データを用いて検索を行なう必要があるときは、第３のセレクト信号ＣＳ３が入力される。これにより、いずれの場合も、出力端子３５＿１，３５＿２，…，３５＿１６，３５＿１７，３５＿１８，…，３５＿３２から検索データＲＥＦ＿ＤＡＴＡが出力される。
【００３６】
尚、第２のレジスタ３２に３２ビットの検索データが全てのビットにわたって格納された場合に、その検索データを第１のレジスタ３１に転送することなく出力端子３５＿１，３５＿２，…，３５＿１６，３５＿１７，３５＿１８，…，３５＿３２から出力させる必要がないときは、第１のトランジスタ３３＿１＿１，３３＿１＿２，…，３３＿１＿１６，３３＿１＿１７，３３＿１＿１８，…，３３＿１＿３２は不要であることは言うまでもない。
【００３７】
また、この図２は、図７に示すデータ構造において、ｋが、ｋ＝０又はｋ＝１６のみをとる場合の例であるが、例えばｋ＝０，８，１６，２４等をとる場合や、ｋが任意の値をとる場合等であっても、それに合わせてセレクタ３３のトランジスタの段数を設計すればよい。また、上記図１、図２に示す実施例では、入力データ  …，Ｄｉ  ，Ｄｉ＋１  ，Ｄｉ＋２  ，…  を一旦第２のレジスタ３２に格納した後に第１のレジスタ３１に転送するように構成されているが、順次入力されるデータ  …，Ｄｉ  ，Ｄｉ＋１  ，Ｄｉ＋２  ，…  を第１のレジスタ３１と第２のレジスタ３２に交互に入力してもよい。ただしそのときは、セレクタ３３において、上位ビットと下位ビットとを入れ替える必要がある。
【００３８】
図３は、本発明の連想メモリの他の実施例の模式図である。
ここには、通信回線を経由して入力されるデータ  …，Ｄｉ  ，Ｄｉ＋１  ，Ｄｉ＋２  ，…  を格納するレジスタ３１１を１個のみ備え、そのレジスタ３１１に、時刻ｔｉ  に入力されたデータＤｉ  を格納し、その格納されたデータＤｉ  と、時刻ｔｉ＋１  に入力されたデータＤｉ＋１  とをセレクタ３１１に入力して検索データＲＥＦ＿ＤＡＴＡを抽出する。時刻ｔｉ＋１  に入力されたデータＤｉ＋１  は、次の検索データの抽出のためにレジスタ３１１にも入力される。
【００３９】
このように、本発明では、必ずしも２つのレジスタを備える必要はない。
また、上記各実施例は検索データを分担して持つデータ（例えば上記２つのデータＤｉ  ，Ｄｉ＋１  ）が時間がずれて順次入力される場合の例であるが、検索データを分担する２つのデータが同時に入力される場合、例えば２系統の信号経路から同時に入力された２つのデータから検索データを抽出する場合等には、上記の目的のレジスタは必ずしも１つも備える必要はない。
【００４０】
尚、上記実施例は、１ワードが３２ビットであるとして説明したが、本発明は８ビット、又は１６ビット等任意のビット数を１ワードとするものに適用することができる。
図４は、本発明の連想メモリのもう１つの実施例の模式図である。
セレクタ３３で抽出された検索データＲＥＦ＿ＤＡＴＡは、多数の格納データが格納されたメモリ１１に入力され検索が実行される。
【００４１】
またセレクタ３３から出力された検索データＲＥＦ＿ＤＡＴＡは、キーレジスタ４０にも入力され、そのキーレジスタ４０に一時的に格納される。
この連想メモリには、検索の結果、多数の一致フラグレジスタ１５のうちのいずれか１つにでも一致を表わす論理‘１’が格納されたか、あるいは全ての一致フラグレジスタ１５に不一致を表わす論理‘０’が格納されたかを示すヒットフラグが格納されるヒットフラグレジスタ４１が備えられており、検索の結果、ヒットフラグレジスタ４１に、全ての一致フラグレジスタ１５に不一致をあらわす論理‘０’が格納されたことを示す論理‘０’が格納されると、その旨がこの連想メモリの制御用に備えられたＣＰＵ５０に通知される。ＣＰＵ５０は、その通知を受けて、デコーダ１７に、空いているメモリワードのアドレスを入力するとともに、メモリ１１にキーレジスタ４０に格納されている検索データを入力し、データ書込み動作を行う。これにより、格納データとして格納されていなかった（一致が検出されなかった）検索データが、新たな格納データとしてメモリ１１に書き込まれた。
【００４２】
このように、本実施例の連想メモリには、セレクタ３３で抽出された検索データを一時的に格納しておくキーレジスタ４０が備えられているため、一致が検出されなかった場合に、そのキーレジスタ４０に格納しておいた検索データを、メモリ１１に、新たな検索データとして書き込むことができる。
【００４３】
【発明の効果】
以上説明したように、本発明の連想メモリは、第１および第２のデータをパラレルに入力してそれら第１および第２のデータの中から検索データを抽出するセレクタを備えたため、検索データが複数ワードに跨って送信されてくる場合にも、システム構成が簡単化され、また高速検索が可能となる。
【００４４】
また、本発明の連想メモリにおいて、抽出された検索データを一時的に格納しておくキーレジスタを備えておくと、一致が検出されなかった場合にその検索データを追記することができる。
【図面の簡単な説明】
【図１】本発明の連想メモリの一実施例の、順次入力されるデータの動きを説明するための模式図である。
【図２】第１および第２のレジスタ、およびセレクタの一例を示す回路図である。
【図３】本発明の連想メモリの他の実施例の模式図である。
【図４】本発明の連想メモリのもう１つの実施例の模式図である。
【図５】連想メモリの一例を表わした回路ブロック図である。
【図６】図５に示す連想メモリ中の１つのメモリワードを表わした詳細回路図である。
【図７】通信回線等を経由して送信されてきたデータの構造図である。
【符号の説明】
１０  連想メモリ
１１＿１，１１＿２，…，１１＿ｎ  メモリワード
３１  第１のレジスタ
３１＿１，…，３１＿３２  フリップフロップ
３２  第２のレジスタ
３２＿１，…，３２＿３２  フリップフロップ
３３  セレクタ
４０  キーレジスタ
４１  ヒットフラグレジスタ
５０  ＣＰＵ
３３＿１＿１，…，３３＿１＿３２  第１のトランジスタ
３３＿２＿１，…，３３＿２＿３２  第２のトランジスタ
３３＿３＿１，…，３３＿３＿３２  第３のトランジスタ
３１１  レジスタ
３３１  セレクタ
【図１】
0003573779.tif 000002
【図２】
0003573779.tif 000003
【図３】
0003573779.tif 000004
【図４】
0003573779.tif 000005
【図５】
0003573779.tif 000006
【図６】
0003573779.tif 000007
【図７】
0003573779.tif 000008