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