JP3597882B2 - Associative memory - Google Patents
Associative memory Download PDFInfo
- Publication number
- JP3597882B2 JP3597882B2 JP1676994A JP1676994A JP3597882B2 JP 3597882 B2 JP3597882 B2 JP 3597882B2 JP 1676994 A JP1676994 A JP 1676994A JP 1676994 A JP1676994 A JP 1676994A JP 3597882 B2 JP3597882 B2 JP 3597882B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- stored
- search
- memory
- flag
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
【0001】
【産業上の利用分野】
本発明は、一致検索の行われるデータ幅を複数のワードに拡張する機能、すなわち、連続する複数回の検索でそれぞれ一致が検出された場合に全体としての一致が検出される機能を備えた連想メモリに関する。
【0002】
【従来の技術】
従来より、配列された複数の各メモリワードそれぞれに各ディジタルデータを記憶しておき、検索データを入力し、入力された検索データの全部もしくは所定の一部のビットパターンと一致するビットパターンを有するディジタルデータが記憶されたメモリワードを検索する連想メモリ(Associative Memory,内容アドレス式メモリ;Content Addressable Memory)が提案されている。
【0003】
図2は、連想メモリの一例を表わした回路ブロック図である。
この連想メモリ10には、mビットを1ワードとする、互いに図の横方向に並ぶmビットのメモリセルからなる多数のメモリワード11_1,11_2,…,11_nが備えられている。またこの連想メモリ10は、1ワードの検索データが入力されラッチされる検索データレジスタ12を備え、検索データレジスタ12にラッチされた検索データの全部もしくは所定の一部のビットパターンと、各メモリワード11_1,11_2,…,11_nに記憶された格納データのうち上記ビットパターンと対応する部分のビットパターンとの一致不一致が比較され、各メモリワード11_1,11_2,…,11_nのそれぞれに対応して備えられた一致線14_1,14_2,…,14_nのうちビットパターンが一致したメモリワード11_1,11_2,…,11_nに対応する一致線14_1,14_2,…,14_nに論理‘1’(ここでは5Vとする)の一致信号が出力される。それ以外の一致線14_1,14_2,…,14_nは論理‘0’(ここでは0Vとする)にとどまる。
【0004】
これらの一致線14_1,14_2,…,14_nに出力された信号は、各フラグレジスタ15_1,15_2,…,15_nに格納される。ここでは、一例として、図示のように、各フラグレジスタ15_1,15_2,…,15_nにそれぞれ‘0’,‘1’,‘1’,‘0’,…,‘0’,‘0’が格納されたものとする。これらのフラグレジスタ15_1,15_2,…,15_nに格納された信号はプライオリティエンコーダ16に入力される。プライオリティエンコーダ16には、エンコードパルスEPが入力され、エンコードパルスEPが入力される毎に、所定の優先順位づけに従って、論理‘1’の信号が格納されたフラグレジスタ(ここではフラグレジスタ15_2とフラグレジスタ15_3の2つ)のうちの優先度の高いフラグレジスタに対応するアドレス信号ADが順次出力される。ここでは、添字が若いほど優先順位が高いものとし、従ってエンコードパルスEPが1つだけ入力されると、フラグレジスタ15_2に対応するメモリアドレスが出力される。このプライオリティエンコーダ16から出力されたアドレス信号ADは、必要に応じてアドレスデコーダ17に入力される。アドレスデコーダ17ではこの入力されたアドレス信号ADをデコードして、各メモリワード11_1,11_2,…,11_nそれぞれに対応して備えられたワード線18_1,18_2,…,18_nのうちの入力されたアドレス信号ADに対応するいずれか1本のワード線(ここではワード線18_2)にアクセス信号(ここでは論理‘1’の信号)を出力する。これによりアクセス信号の出力されたワード線18_2に対応するメモリワード11_2に記憶されている格納データが出力レジスタ19に読み出される。
【0005】
次に、エンコードパルスEPがもう1つ入力されると、今度はフラグレジスタ15_3に対応するメモリワード11_3のアドレスを得ることができる。
上記のように、連想メモリ10は、検索データの全部もしくは所定の一部のデータを用いて多数のメモリワード11_1,11_2,…,11_nに記憶された格納データを検索し、一致する格納データを有するメモリワードのアドレスを得、必要に応じてそのメモリワードに記憶されたデータ全体を読み出すことができるように構成されたメモリである。
【0006】
上記のような基本構成を有する連想メモリにおいて、一致検索の対象となるデータ幅を2ワードもしくはそれ以上の複数ワードに拡張する技術が提案されている。
図3は、データ拡張機能を備えた連想メモリの一例を示すブロック図である。図2に示した連想メモリの構成要素と対応する構成要素には、図2に付した符号と同一の符号を付して示し、その要素についての重複説明は省略する。
【0007】
各メモリワード11_1,11_2,…から延びる各一致線14_1,14_2,…,は、各アンドゲート20_1,20_2,…の一方の入力端子に接続されている。また各アンドゲート20_1,20_2,…の他方の入力端子には各オアゲート21_2,21_3,…の出力端子が接続されており、各オアゲート21_2,21_3,…の一方の入力端子は、初回検索制御線22に接続されている。ただし図示の一番上のアンドゲート20_1に対応するオアゲートは省略されており、そのアンドゲート20_1の入力端子に初回検索御線22が直接接続されている。
【0008】
各アンドゲート20_1,20_2,…の出力端子は各第1のフラグレジスタ23_1,23_2,…のデータ入力端子に接続され、各第1のフラグレジスタ23_1,23_2,…の出力端子は各第2のフラグレジスタ24_1,24_2,…の入力端子に接続されている。各第2のフラグレジスタ24_1,24_2,…の出力端子は、図2に示すプライオリティエンコーダ16(図3では図示省略)に接続されるとともに、図3の下方に隣接するメモリワードに対応するオアゲート21_2,21_3,…の入力端子に接続されている。
【0009】
互いに対応する第1および第2のフラグレジスタ23_1,24_1,;23_2,24_2,…の各ペアが図2に示す各フラグレジスタ15_1,15_2,…に対応する。
第1のフラグレジスタ23_1,23_2,…と第2のフラグレジスタ24_1,24_2,…には、ともに、一致結果ラッチ制御線25に出力される一致結果ラッチ信号S1が入力され、その一致結果ラッチ信号S1により各データ入力端子から入力された入力データがラッチされるが、第1のフラグレジスタ23_1,23_2,…には、一致結果ラッチ信号51の立ち上がりaの時点における入力データがラッチされ、第2のフラグレジスタ24_1,24_2,…には、一致結果ラッチ信号S1の立ち下がりbの時点の入力データがラッチされる。
【0010】
以上のように構成された連想メモリにおいては、以下のようにして一致検索が行われる。尚、ここでは図示のように、各メモリワード11_1,11_2,11_3,11_4,11_5,11_6…には、各格納データA,B,C,D,C,F,…が格納されているものとする。
ここで、各格納データを単独に検索する際は、検索データREF_DATAを入力して検索を行う際に、初回検索制御線22に初回検索タイミング信号S2を出力する。ここでは、検索データREF_DATAとしてデータ‘B’を入力したものとすると、データ‘B’が格納されたメモリワード11_2に対応する一致線14_2に論理‘1’の一致信号が出力されてアンドゲート20_2に入力され、また、これとともに初回検索タイミング信号S2がオアゲート21_2を経由してアンドゲート20_2に入力されるため、アンドゲート20_2から論理‘1’の信号が出力される。またこのとき、他の一致線14_1;14_3,14_4,…には論理‘0’の信号が出力されるため、それに対応する他のアンドゲート20_1;20_3,20_4,…からは論理‘0’の信号が出力される。
【0011】
アンドゲート20_2から出力された論理‘1’の信号は、一致結果ラッチ制御線25に出力された一致結果ラッチ信号S1の立ち上がりaのタイミングで第1のフラグレジスタ23_2にラッチされ、それに引き続く一致結果ラッチ信号S1の立ち下がりbのタイミングで第2のフラグレジスタ24_2にラッチされる。
【0012】
また第1のフラグレジスタ23_2および第2のフラグレジスタ24_2に論理‘1’の信号がラッチされる各タイミングで、他の第1フラグレジスタ23_1;23_3,23_4,…、および他の第2のフラグレジスタ24_1;24_3,;24_4,…には論理‘0’の信号がラッチされる。
このようにして各第2のフラグレジスタ24_1,24_2,24_3,…にラッチされた論理‘0’,‘1’,‘0’,…の信号が図2に示すプライオリティエンコーダ16に入力され、メモリワード11_2のアドレス信号ADが得られる。
【0013】
次に、データ幅が拡張された検索を行う場合について説明する。ここでは、2ワードに拡張された、データ‘B’とデータ‘C’からなる2ワードデータを検索する場合について説明する。
この場合、先ず上記と同様にして、データ‘B’の検索を行う。これにより、メモリワード11_2に対応する第1および第2のフラグレジスタ23_2,24_2に論理‘1’の信号がラッチされる。次に検索データREF_DATAとしてデータ‘C’を入力して検索を行うが、このときは初回検索制御線22には初回検索タイミング信号S2は出力せずに、初回検索制御線22は論理‘0’の状態に保っておく。検索データREF_DATAとしてデータ‘C’を入力して検索を行うと、図示の2つのメモリワード11_3,11_5にそれぞれ対応する一致線14_3,14_5に論理‘1’の一致信号が出力されるが、オアゲート21_3には、第2のフラグレジスタ24_2にラッチされている論理‘1’の信号が入力されているため一致線14_3の一致信号はアンドゲート20_3を通過し、第1および第2のフラグレジスタ23_3,24_3に、一致を表わす論理‘1’の信号がラッチされる。一方オアゲート21_5には、第2のフラグレジスタ24_4にラッチされている論理‘0’の信号が入力されているため一致線14_5の一致信号はアンドゲート20_5で遮断され、第1および第2のフラグレジタ23_5,24_5には不一致を表わす論理‘0’の信号がラッチされることになる。このようにして、データ‘B’とデータ‘C’のペアからなる2ワードデータの一致検出が行われる。3ワード以上のデータの一致検出も同様にして行われる。
【0014】
ただし、図3に示す連想メモリは、データ幅拡張機能を備えてはいるが、2ワード,3ワード等に拡張されるデータは、互いに隣接したメモリワードに所定の順序で格納されている必要があり、検索しようとする複数のデータが互いに離れたメモリワードに格納されている場合や逆の順序、例えばデータ‘C’,データ‘B’の順序に格納されている場合には複数のデータを結合した一致検出を行うことはできない。
【0015】
このような検索が必要となる場合のデータ構造を、図4に示す。図4には、それぞれ属性I,II,III,IVが付された4つのデータがセットとなって1つのデータ群を構成しているデータ構造が示されている。データ群および属性の概念を明確にするために一例を挙げると、例えば各群番号1,2,3,4,…毎の各データ群は各個人に属するデータであり、属性Iはその人の氏名,属性IIはその人の生年月日、属性IIIは住所、……等を示している。
【0016】
このように各属性I,II,III,IVが付された複数のデータからなるデータ群を連想メモリに格納しておいて検索を行う場合に、例えば群番号1のデータ群を検索する場合を例に説明すると、データ‘A’の検索とデータ‘B’の検索をこの順に行って、一致するデータ群の残りのデータ‘C’,‘D’を読み出すことだけではなく、例えばデータ‘A’の検索とデータ‘D’の検索を行って残りのデータ‘B’,‘C’を読み出したい場合や、データ‘B’の検索を先に行い、次にデータ‘A’の検索を行いたい場合がある。
【0017】
しかし、上述したワード幅拡張機能を備えた連想メモリ(図3参照)では、このような検索は不可能である。また上述した連想メモリでは、データ‘A’とデータ‘B’の検索を行った場合に、図4に示す群番号1の欄にある属性Iの付されたデータ‘A’と属性IIの付されたデータ‘B’とのペアと、群番号4の欄にある属性IIの付されたデータ‘A’と属性IIIの付されたデータ‘B’とのペアとの区別をすることはできず、例えば、‘氏名’という属性Iと‘生年月日’という属性IIの情報を基にそれらが一致する特定の個人の属性III,IVの情報を知ろうとしても、属性IIと属性IIIのペアでも一致が検出される等必要な情報以外のノイズが混入してしまうことになる。
【0018】
このような問題を解決した連想メモリが、本願出願人により提案されている(特願平5−248121号参照)。以下この提案に係る連想メモリについて説明する。
図5は、上記提案に係る連想メモリの一例を示すブロック図である。図3に示す連想メモリの各構成要素と同一の構成要素には、図3に付した符号と同一の符号を付して示し、相違点についてのみ説明する。
【0019】
各メモリワード11_1,11_2,…は、属性を格納する属性格納部11_1_1,11_2_1,…とデータを格納するデータ格納部11_1_2,11_2_2,…とで構成されており、各メモリワード11_1,11_2,…には、互いに対応する属性とデータとのペアからなる格納データがそれぞれ格納されている。ここでは、図示のように、各メモリワード11_1,11_2,11_3,11_4には、それぞれ、図4に示す群番号1に属する、属性I,データ‘A’、属性II,データ‘B’、属性III,データ‘C’、属性IV,データ‘D’が格納されている。また各メモリワード11_5,11_6,…には、それぞれ、図4に示す群番号2に属する、属性I,データ‘C’、属性II,データ‘F’、……が格納されている。また検索にあたっては、属性とデータとのペアからなる検索データREF_DATAが入力される。
【0020】
各メモリワード11_1,11_2には、そこに記憶された格納データ(属性及びデータの双方)が、入力された検索データ(属性及びデータの双方)と一致しているときに一致信号が出力される一致線14_1,14_2,…のほか、属性のみの一致不一致の信号が出力される属性一致線30_1,30_2,…が備えられている。尚、属性のみの一致も、属性及びデータの双方の一致も、従来の一致検出回路と同様に構成され、従来の一致検出回路は連想メモリの分野において極めて一般的な技術であるため、ここでの図示および説明は省略する。
【0021】
各メモリワード11_1,11_2に対応して第3のフラグレジスタ31_1,31_2,…が備えられており、各属性一致線30_1,30_2,…は対応する第3のフラグレジスタ31_1,31_2,…のデータ入力端子に延びている。また、この連想メモリには、図4に示す各データ群に属するデータが格納された複数のメモリワードからなるメモリワード群それぞれについて1本ずつデータ線32_1,32_2,…が備えられており、またデータ線32_1,32_2,…と各第2のフラグレジスタ24_1,24_2,…の出力端子との間には各第1のスイッチ33_1,33_2,…が備えられている。これらの第1のスイッチ33_1,33_2,…は具体的にはトランジスタ等を用いて構成される。後述する他のスイッチについても同様である。各第1のスイッチ33_1,33_2,…は、対応する各第3のフラグレジスタ31_1,31_2,…に論理‘1’の信号がラッチされているときに導通され、論理‘0’の信号がラッチされているときには遮断される。各第3のフラグレジスタ31_1,31_2,…は、一致結果ラッチ制御線25に出力される一致結果ラッチ信号S1の立ち下がりbのタイミングで、対応する属性一致線30_1,30_2,…の信号をラッチする。
【0022】
またデータ線32_1,32_2,…と各オアゲート21_1,21_2,…の入力端子との間に各第2のスイッチ34_1,34_2,…が備えられており、これら各第2のスイッチ34_1,34_2,…は、対応する属性一致線30_1,30_2,…の信号により、その信号が一致を表わす論理‘1’のときに導通状態、不一致を表わす論理‘0’の時に遮断状態となるように制御される。尚、この図5に示す連想メモリには、図3に示す連想メモリと異なり、図示の最上段のメモリワード11_1に対応するアンドゲート20_1の前段にもオアゲート21_1が備えられている。
【0023】
以上のように構成された連想メモリにおいて、一致検索は以下のようにして行われる。
1ワード分の単独のデータ検索、および連続した複数ワードの検索のうち第1回目の検索は、図3に示した従来のワード拡張機能付連想メモリの場合と同じであるためここでは説明は省略し、ここでは第1回目の検索において属性IIとデータ‘B’とからなる検索データREF_DATAによってメモリワード11_2に対応する第1および第2のメモリワード23_2,24_2に論理‘1’がラッチされたものとする。このとき、属性の一致を受けてメモリワード11_2に対応する属性一致線30_2に論理‘1’の信号が出力され、これにより、対応する第3のフラグレジスタ31_2にも論理‘1’の信号がラッチされ、対応する第1のスイッチ33_2がオンし、対応する第2のフラグレジスタ24_2に格納された、属性及びデータ双方の一致を表わす論理‘1’の信号がデータ線32_1に出力される。またこれとともに、対応する第2のスイッチ34_2もオンするが、第1回目の検索においてはこれは無用の動作である。
【0024】
次に、属性IVとデータ‘D’からなる検索データREF_DATAを入力して検索を行うものとする。このときは、図3の連想メモリの場合と同様、初回検索制御線22は論理‘0’に保持されている。このとき、属性の一致を受けてメモリワード11_4に対応する属性一致線30_4に論理‘1’の信号が出力され、これにより対応する第2のスイッチ34_4がオンし、データ線32_1に出力されていた、メモリワード11_2に対応する第2のフラグレジスタ24_2の論理‘1’の信号がオアゲート21_4を経由してアンドゲート20_4に入力される。このため、メモリワード11_4で属性IVとデータ‘D’の双方の一致が検出されて一致線14_4に論理‘1’の一致信号が出力され、一致結果ラッチ制御線25に出力される一致結果ラッチ信号S1により、対応する第1および第2のフラグレジスタ23_4,24_4に論理‘1’の信号がラッチされる。またこのとき、属性一致線30_4に出力された論理‘1’の信号が、対応する第3のフラグレジスタ31_4にラッチされ、対応する第1のスイッチ33_4がオンし、第2のフラグレジスタ24_4の論理‘1’の信号がデータ線32_1に出力される。またこの2回目の検索では、メモリワード11_2に対応する属性一致線30_2には属性の不一致を表わす論理‘0が出力されるため、対応する第3のフラグレジスタ31_2には‘0’が格納され、メモリワード11_2に対応する第1のスイッチ33_2はオフする。
【0025】
これにより、メモリワード11_4に対応する第2のフラグレジスタ24_4の論理‘1’の信号がプライオリティエンコーダ16(図2参照)に入力され、メモリワード11_4のアドレスが得られることになるが、メモリワード11_4には属性IVが格納されていることは予め分かっており、同一群内の例えば属性IIIのデータを読み出したいときは、得られたアドレスから1を引いてメモリワード11_3のアドレスを求め、そのアドレスをアドレスデコーダ17に入力してメモリワード11_3の内容を読み出せばよい。
【0026】
一方、2回目の検索時に、属性IVとデータ‘D’とからなる検索データに代わり、例えば属性IVとデータ‘B’とからなる検索データで検索が行われた場合、メモリワード11_4については、属性は一致するため第2のスイッチ34_4がオンし、データ線32_1に出力されている論理‘1’の信号が取り込まれるが、データが異なるため一致線14_4には不一致を表わす論理‘0’が出力され、第1及び第2のフラグレジスタ23_4,24_4には一致が検出されなかったことを示す論理‘0’がラッチされる。また、データ‘B’が一致するメモリワード11_2については属性が一致せず、したがって属性及びデータの双方も一致しない。
【0027】
以上のようにして、図5に示す連想メモリでは、同一の群内においては、互いに離れたメモリワードに記憶されたデータであっても、もしくはデータの順序を逆にして検索した場合であっても、検索を行うことができる。
ここで、図5に示す連想メモリにおけるデータ線32_1,32_2,…,は、1つの群に属するデータの数が予め定まっているものとしてその長さが固定されたものであるが、このように固定長のデータ線を備えると、1つの群に属するデータの数の最大を見積もり、最大のデータ数に対応した長さのデータ線を備える必要がある。これではその最大よりも少ない数のデータによりデータ群が構成される場合に無駄なメモリワードが発生することになる。そこで、1つの群に属するデータの数に合せてデータ線を可変長とすることが好ましい。
【0028】
図6は、可変長のデータ線を実現する一つの方式を示した模式図である。
データ線32が複数のメモリワード11_1,11_2,11_3,…に亘って延び、そのデータ線32には、最上端のメモリワード11_1を除く他のメモリワード11_2,11_3,…それぞれに対応する各スイッチ40_1,40_2,40_3,…が互いにシリーズに配置されている。これらの各スイッチ40_2,40_3,40_4,…は、対応するメモリワード11_2,11_3,11_4,…と、その直ぐ上段に隣接するメモリワード11_1,11_2,11_3,…との間に配置されている。それらのスイッチ40_2,40_3,40_4,…のうちの1つおきのスイッチ40_2,40_4,40_6,…は第1制御線41に出力される第1のスイッチ制御信号によりオンし、3つおきのスイッチ40_3,40_7,…は第2制御線42に出力される第2のスイッチ制御信号によりオンし、残りのスイッチのうち8つおきのスイッチ40_5,…は第3制御線43に出力される第3のスイッチ制御信号によりオンされる。
【0029】
1つのデータ群を構成するデータの数が2の場合は、第1制御線41に第1のスイッチ制御信号を出力することにより1つおきのスイッチ40_2,40_4,40_6,…をオンさせる。これにより各2つのメモリワード11_1,11_2;11_3,11_4;11_5,11_6;…毎に切断されたデータ線が形成される。また、1つのデータ群を構成するデータの数が4の場合は、第1制御線41に第1のスイッチ制御信号を出力するとともに第2制御線42に第2のスイッチ制御信号を出力する。すると、各4つのメモリワード11_1,11_2,11_3,11_4;11_5,11_6,…毎に切断されたデータ線が形成される。同様にして、1つのデータ群を構成するデータの数が8の場合は、第1制御線41、第2制御線42にそれぞれ第1および第2のスイッチ制御信号を出力するとともに、第3制御線43に第3のスイッチ制御信号を出力する。これにより各8つのメモリワード11_1,…,11_8;11_9…毎に切断されたデータ線が形成される。
【0030】
この方式によれば、1つのデータ群を構成するデータの数が2の倍数の場合はメモリワードに空きは生じないが、2の倍数以外の、例えば3,5,9等の場合空きのメモリワードが生じてしまうことになる。この空きのメモリワードが生じないように多数のスイッチ40_2,40_3,…を任意にオン,オフできるように構成すると、制御線の本数が多数本となり、またそれらの制御線にスイッチ制御信号を出力する制御回路が複雑となる。したがって、図6に示す方式は、データ線の長さを完全に任意に制御するには不向きである。
【0031】
図7は、可変のデータ線を実現するもう一つの方式を示した模式図である。
多数のメモリワードに亘ってデータ線32が延び、そのデータ線32に互いにシリーズに接続された、最上端のメモリワードを除く他のメモリワードそれぞれに対応する各スイッチ40_2,40_3,40_4,…が備えられている点は図6の場合と同じである。各メモリワードには、各属性格納部11_1_1,11_2_1,11_3_1,…が備えられており、それら属性格納部11_1_1,11_2_1,11_3_1,…には、図示の各属性I,II,III,IVがそれぞれ格納されている。この例は、属性格納部11_1_1,11_2_1,11_3_1,…に格納された属性が属性Iかそれ以外の属性II,III,IVかに応じて、属性Iの場合は対応するスイッチをオフのままとし、それ以外の属性II,III,IVの場合は対応するスイッチをオンするように構成したものである。このように構成すると、1つのデータ群を構成するデータの数がいくつであっても、また、データ数の異なるデータ群が混在していても、各データ群の先頭に属性Iのデータを配置することにより、自動的に過不足ない数のメモリワード毎に切断されたデータ線が形成されることになる。
【0032】
図8は、属性がIかそれ以外かを判定する属性判定回路の一例を示す回路図である。
ここでは属性Iに‘000’が割り当てられており、属性格納部11_i_1に格納された属性が属性I(‘000’)の場合オアゲートから‘0’が出力され、したがってトランジスタ40で構成されたスイッチはオフ状態となり、そのトランジスタ40の両側のデータ線が電気的に切断される。属性格納部11_i_1に格納された属性が属性I以外の属性の場合はオアゲートから‘1’が出力され、トランジスタ40はオン状態となり、そのトランジスタの両側のデータ線が接続される。
【0033】
このように、図5に示す連想メモリにおいて、1つのデータ群を構成するデータの数に応じてデータ線32_1,32_2,…の長さを調整することもできる。もちろん、属性データを利用するのではなく、専用の制御線によってスイッチを制御することによりデータ線の長さを調整してもよい。
【0034】
【発明が解決しようとする課題】
上記提案に係る連想メモリは、上述したように、1つのデータ群が格納されたメモリワード群内の互いに離れたアドレスの複数のメモリワードに跨る検索や、順序が逆の検索を許容する点では従来の連想メモリと比べ極立って優れているが、図5に示す構成では、例えば
(AおよびB)又は(XおよびY) ……… (1)
に合致するデータ群が存在するか否かといった、アンド(および)とオア(又は)とが入り混った検索を行なうことはできない。例えば図5に示すようなデータが格納されていた場合に、先ず、初回検索タイミング信号S2を入力して、属性IとデータAで検索すると、第2のメモリワード24 1が論理‘1’となる。次に初回検索タイミング信号S2は入力せずに、属性IIとデータBで検索すると、第2のメモリワード24 2が論理‘1’となるとともに、第2のメモリワード24 2は論理‘0’にリセットされる。ここまではよいが、次に、属性III とデータXで検索すると、初回検索タイミング信号S2を入力しても入力しなくても、図5に図示のいずれの第2のメモリワード24 1,24 2,……も論理‘0’となり、上記(1)式の検索に失敗する結果となる。これを回避するために、外部の、例えばマイクロコンピュータ等で、一連の検索(例えば上記(1)式の最初から最後まで)の途中で中間的な検索結果を調べる必要があり、極めて複雑なシステム構成となってしまい、検索速度の低下も招くという問題がある。
【0035】
本発明は、上記事情に鑑み、例えば上記(1)式のような複雑な論理の検索を、その一連の検索の途中で、その途中までの検索結果を外部からアクセスすることなく、可能とする連想メモリを提供することを目的とする。
【0036】
【課題を解決するための手段】
上記目的を解決する本発明の連想メモリは、複数の格納データを記憶しておき、検索データが入力され、入力された検索データに対応する格納データを検索する連想メモリにおいて、
(1)複数の格納データを各格納データ毎に記憶する複数のメモリワード
(2)上記複数のメモリワードそれぞれに対応して備えられた、検索の際に、入力された検索データと、上記複数のメモリワードそれぞれに格納された各格納データとの間に対応関係が存在することが検出された場合にその対応関係の存在を表わすヒットフラグを格納する複数のフラグレジスタ
(3)上記の複数のフラグレジスタのいずれかにヒットフラグが格納されたか否かを、複数回の検索それぞれについて順次格納するヒット列レジスタ
を備えたことを特徴とする。
【0037】
ここで、上記本発明の連想メモリは、上記(1)〜(3)に加え、
(4)上記メモリワードが、それぞれが複数の格納データの集合からなる複数のデータ群を構成する各格納データを、各格納データ毎に記憶するものであり、
(5)所定のメモリワードに記憶された格納データと入力された検索データとの間に対応関係が存在することが検出されたときに、その所定のメモリワードに対応するフラグレジスタにその対応関係の存在を表わすヒットフラグを格納する第1のモードと、今回の検索時に所定の第1のメモリワードにおいて対応関係が検出され、かつ、その第1のメモリワードに記憶された格納データが属するデータ群を構成する各格納データそれぞれを記憶する複数のメモリワードからなるメモリワード群に属する、その第1のメモリワードを除く他の任意の第2のメモリワードに対応するフラグレジスタにヒットフラグが格納されていた場合に、上記第1のメモリワードに対応するフラグレジスタにヒットフラグを格納するとともに上記第2のメモリワードに対応するフラグレジスタに格納されていたヒットフラグをリセットする第2のモードとを有する一致検出回路
を備えることが好ましい。
【0038】
また、上記本発明の連想メモリは、1つのデータ群内の複数の格納データを互いに識別するための属性と属性が付されたデータとのペアからなる各格納データを上記複数のメモリワードそれぞれに記憶しておき、属性とデータとのペアからなる検索データを用いて検索を行なうものであってもよい。
【0039】
【作用】
本発明の連想メモリは、上記(3)のヒット列レジスタを備えたものであるため、そのヒット列レジスタに一連の検索の間の中間の検索結果が格納されることになり、種々の論理検索に対応できる連想メモリが実現する。
【0040】
【実施例】
以下、本発明の実施例について説明する。
図1は、本発明の連想メモリの一実施例の、本発明に特徴的な部分を示した回路ブロック図である。この回路ブロックには、図5に示す連想メモリをベースにして、その図5に示す連想メモリの一部と、図5に示す連想メモリに追加された部分が示されている。
【0041】
ここでは、図示のように、各メモリワード11 1,11 2,…,11 m,…,11 n,…に、それぞれ、各属性I〜IVと各データG,H,I,J,A,B,E,E,…,A,B,C,C,…,A,A,C,Fが格納されているものとする。この実施例では、属性レジスタ12 1に格納された属性データと、外部から入力され、入力データレジスタ12 2に格納された入力データとのペアを検索データとして各メモリワード11 1,11 2,…,11 m,…,11 n,…に入力して検索を行なう。
【0042】
この連想メモリには、検索モードレジスタ51が備えられており、この検索モードレジスタ51には、一連の検索(ここでは4回の検索とする)のうちの各検索において、初回検索タイミング信号S2を入力するか否かを定めるフラグが格納される。ここでは、後述する検索を行なうために、検索モードレジスタ51には、‘1,0,1,0’が格納されており、一連の4回の検索のうち、最初の検索では初回検索タイミング信号S2が入力され、2回目の検索では初回検索タイミング信号S2は入力されず、3回目の検索では、初回検索と見なされて、初回検索タイミング信号S2が入力され、4回目の検索では初回検索タイミング信号S2は入力されない。
【0043】
また、各メモリワード11 1,11 2,…,11 m,…,11 n,…に対応して、検索の際に各メモリワード11 1,11 2,…,11 m,…,11 n,…で一致が検出されたか否かを示すヒットフラグが格納されるフラグレジスタ24 1,24 2,…,24 m,…,24 n,…が備えられている。このフラグレジスタ24 1,24 2,…,24 m,…,24 n,…は、図5に示す連想メモリの第2のフラグレジスタ24 1,24 2,…に相当する。
【0044】
またこの連想メモリには、全てのメモリワード11 1,11 2,…,11
m,…,11 n…に跨って延びる検索線52が備えられている。
検索線52とグラウンドとの間には、各メモリワード11 1,11 2,…,11 m,…,11 n,…それぞれに対応して備えられた、互いに直列に接続された各2つのトランジスタ53 1,54 1;53 2,54 2;…;53 m,54 m;…;53 n,54 n;…が配置されている。各2つのトランジスタ53 1,54 1;53 2,54 2;…;53 m,54 m;…;53 n,54 n;…のうちの一方のトランジスタ53 1,53 2,…,53 m,…,53 n,…のゲートは、対応するフラグレジスタ24 1,24 2,…,24 m,…,24 n,…に接続されており、もう一方のトランジスタ54 1,54 2,…,54 m,…,54 n,…のゲートは、共通の一本の制御線55に接続されている。
【0045】
また、検索線51の、図1の下側の一端は、その検索線51の電荷のチャージの状態を検出して論理‘0’又は論理‘1’を検出するセンスアンプ56を構成するセンスアンプインバータ57の入力に接続されている。またこのセンスアンプ56には、センスアンプインバータ57の入力と電源VDDとの間に配置されゲートがセンスアンプインバータ57の出力と接続されたフィードバック用Pチャンネルトランジスタ58と、センスアンプインバータ57の入力と電源VDDとの間に配置されゲートが制御線55に接続されたプリチャージ用Pチャンネルトランジスタ59が備えられている。
【0046】
また、センスアンプインバータ57の出力は、ヒット列レジスタ60を構成する、この実施例では4つのフリップフロップ60 1,60 2,60 3,60 4に接続されている。各フリップフロップ60 1,60 2,60 3,60 4には、一連の検索を構成する各検索毎に、それぞれ、セットパルスS3,S4,S5,S6が入力され、センスアンプ56から出力された論理‘0’又は論理‘1’の信号がそれぞれ格納される。
【0047】
以上のような構成を備えた連想メモリを用いて、ここでは、
{(属性III にデータCが存在し)かつ(属性IVにデータDが存在する)}
もしくは
{(属性IにデータAが存在し)かつ(属性IIにデータBが存在する)}……(2)
の検索を行なうものとする。
先ず、属性レジスタ12 1に属性III がセットされ、入力レジスタ12 2にデータCがセットされ、属性III とデータCにより1回目の検索が行なわれる。このときには、初回検索タイミング信号S2が入力される。
【0048】
すると、メモリワード11 m+2とメモリワード11 n+2で一致が検出され、フラグレジスタ24 m+2とフラグレジスタ24 n+2に一致が検出されたことを示す論理‘1’がセットされる。他の全てのフラグレジスタは、もし論理‘1’が格納されていたとしても全て論理‘0’にリセットされる。
このとき、制御線55に論理‘0’の信号が印加されトランジスタ59を介して検索線52がプリチャージされており、フラグレジスタ24 1,24 2,…,24 m,…,24 n,…の論理が定まると制御線55が論理‘1’に変化し、プリチャージが終了するとともにトランジスタ54 1,54 2,54 m,…,54 n,…が‘オン’となり、フラグレジスタ24 1,24 2,…,24 m,…,24 m,…のいずれかに論理‘1’がセットされていると、トランジスタ53 1,53 2,…,53 m,…,53 n,…のうちの、論理‘1’のセットされたフラグレジスタ(上記の場合フラグレジスタ24 m+2とフラグレジスタ24 n+2)に対応するトランジスタ(上記の場合トランジスタ53 m+2とトランジスタ53 n+2)が‘オン’となり、検索線52の電荷がディスチャージされ、センスアンプインバータ57の出力が論理‘1’となる。このセンスアンプインバータ57の出力が確定した時点でセットパルスS3が入力され、これにより、ヒット列レジスタ60を構成する、図1の左端のフリップフロップ60 1に、1回目の検索で一致が検出されたことを示す論理‘1’がセットされる。
【0049】
次に、属性レジスタ12 1に属性IVがセットされ、入力レジスタ12 2にデータDがセットされ、属性IVとデータDにより2回目の検索が行なわれる。このときには、初回検索タイミング信号S2は入力されない。
この検索では一致は検出されず、全てのフラグレジスタ24 1,24 2,…,24 m,…,24 n,…が論理‘0’にリセットされる。すなわち、(2)式の前半の部分、
(属性III にデータCが存在し)かつ(属性IVにデータDが存在する)…(3)
というデータ群は検出されなかったことになる。
【0050】
全てのフラグレジスタ24 1,24 2,…,24 m,…,24 n,…が論理‘0’にリセットされているため、今度は検査線52はプリチャージされたままの状態にとどまり、センスアンプインバータ57からは論理‘0’が出力され、セットパルスS4が入力され、ヒット列レジスタ60の、図示の左から2番目のフリップフロップ60 2に論理‘0’が格納される。
【0051】
次に、属性IとデータAで検索が行なわれ、かつ初回検索タイミング信号S2が入力され、3つのメモリワード11 5,11 m,11 nで一致が検出されて、それぞれに対応するフラグレジスタ24 5,24 m,24 nが論理‘1’にセットされ、センスアンプインバータ57から論理‘1’が出力され、セットパルスS5の入力を受けて、ヒット列レジスタ60の、図示の左側から3番目のフリップフロップ60 3に論理‘1’がセットされる。
【0052】
次に属性IIとデータBで検索が行なわれ、アンド検索であるため、初回検索タイミング信号S2は入力されない。このとき、2つのメモリワード11 m+1,11 n+1で一致が検出され、対応するフラグレジスタ24 6,24 m+1に論理‘1’がセットされる。またこれとともに、フラグレジスタ24 5,24 m,24 nは論理‘0’にリセットされる。また、一致が検出されたことを受けてセンスアンプインバータ57から論理‘1’が出力され、セットパルスS6の入力を受けて、ヒット列レジスタ60の、図示の右端のフリップフロップ60 4に論理‘1’が格納される。
【0053】
ヒット列レジスタ60が備えられていない図5に示す連想メモリの場合、フラグレジスタ24 1,24 2,…,24 m,…,24 n,…には最終の検索結果しか残らないために、上記の(2)式のような検索では中間の結果を知ることはできない。(2)式の例では、(3)式の後に、
(属性IにデータAが存在し)かつ(属性IIにデータBが存在する)…(4)
を満足するデータ群が存在するために、図5に示す構成の連想メモリでも最終的に(4)式を満足したことが検出されるが、(4)式が先に来て次に(3)式が来る場合には、図5に示す構成の連想メモリでは、後半の(3)式の検索結果のミスヒットしか検出されないことになる。
【0054】
これに対し、図1に示す実施例ではヒット例レジスタ60を備えたため、一連の検索を構成する各回毎の検索の結果が保持され、したがって種々の検索条件に対応することができる。しかも、図1に示すように、連想メモリを構成する全てのメモリワードに跨って1系統だけヒット列レジスタ60およびそれに付属する回路を備えるだけで済み、連想メモリ全体としては極くわずかな要素の追加にとどめることができる。
【0055】
尚、上記実施例は、一連の検索として4回の検索を行なうことを例にして図示および説明を行なったが、本発明では、4回の検索を一連の検索とするものに限られないことはもちろん、ヒット列レジスタ60を構成するフリップフロップとして一連の検索を構成する検索の最大回数以上の数のフリップフロップに備えておき、一連の検索としての検索回数を可変に構成してもよい。
【0056】
【発明の効果】
以上説明したように、本発明の連想メモリは、複数のフラグレジスタのいずれかにヒットフラグが格納されたか否かを、複数回の検索をそれぞれについて順次格納するヒット列レジスタを備えたため、一連の検索を構成する複数回の各検索毎の中間的な検索結果を、その一連の検索が終了した後にまとめて知ることができ、システムの簡単化、検索連度の向上に寄与する。また、これに伴う回路要素の付加は連想メモリ全体として極くわずかで済む。
【図面の簡単な説明】
【図1】本発明の連想メモリの一実施例の、本発明に特徴的な部分を示した回路図である。
【図2】連想メモリの一例を表わした回路ブロック図である。
【図3】データ拡張機能を備えた連想メモリの一例を示すブロック図である。
【図4】群構造のデータの一例を示す図である。
【図5】連想メモリの一例を示すブロック図である。
【図6】可変長のデータ線を実現する一つの方式を示した模式図である。
【図7】可変のデータ線を実現するもう一つの方式を示した模式図である。
【図8】属性判定回路の一例を示す回路図である。
【符号の説明】
11_1,11_2,… メモリワード
11_1_1,11_2_1,… 属性格納部
11_1_2,11_2_2,… データ格納部
14_1,14_2,… 一致線
16 プライオリティエンコーダ
17 アドレスデコータ
18_1,18_2,… ワード線
20_1,20_2,… アンドゲート
21_1,21_2,… オアゲート
23_1,23_2,… 第1のフラグレジスタ
24_1,24_2,… 第2のフラグレジスタ
25 一致結果ラッチ制御線
30_1,30_2,… 属性一致線
31_1,31_2,… 第3のフラグレジスタ
32_1,32_2,… データ線
33_1,33_2,… 第1スイッチ
34_1,34_2,… 第2スイッチ
52 検索線
56 センスアンプ
60 ビット列レジスタ[0001]
[Industrial applications]
The present invention provides an associative function having a function of extending the data width for performing a match search to a plurality of words, that is, a function of detecting a match as a whole when a match is detected in a plurality of successive searches. Regarding memory.
[0002]
[Prior art]
Conventionally, each digital data is stored in each of a plurality of arranged memory words, search data is input, and the input search data has a bit pattern that matches all or a predetermined part of the bit pattern. 2. Description of the Related Art An associative memory (Content Addressable Memory) for searching a memory word in which digital data is stored has been proposed.
[0003]
FIG. 2 is a circuit block diagram illustrating an example of the associative memory.
The
[0004]
The signals output to the match lines 14_1, 14_2,..., 14_n are stored in the flag registers 15_1, 15_2,. Here, as an example, as shown, '0', '1', '1', '0', ..., '0', '0' are stored in the flag registers 15_1, 15_2, ..., 15_n, respectively. It shall have been done. The signals stored in the flag registers 15_1, 15_2,..., 15_n are input to the
[0005]
Next, when another encode pulse EP is input, the address of the memory word 11_3 corresponding to the flag register 15_3 can be obtained.
As described above, the
[0006]
In the associative memory having the basic configuration as described above, a technique has been proposed in which the data width to be searched for a match is extended to two or more words.
FIG. 3 is a block diagram illustrating an example of an associative memory having a data extension function. The components corresponding to the components of the associative memory shown in FIG. 2 are denoted by the same reference numerals as those in FIG. 2, and redundant description of the components will be omitted.
[0007]
Each of the match lines 14_1, 14_2,... Extending from each of the memory words 11_1, 11_2,... Is connected to one input terminal of each of the AND gates 20_1, 20_2,. Are connected to the other input terminals of the AND gates 20_1, 20_2,..., Respectively, and one input terminal of each OR gate 21_2, 21_3,. 22. However, the OR gate corresponding to the uppermost AND gate 20_1 in the drawing is omitted, and the first
[0008]
The output terminal of each AND gate 20_1, 20_2,... Is connected to the data input terminal of each first flag register 23_1, 23_2,..., And the output terminal of each first flag register 23_1, 23_2,. Are connected to the input terminals of the flag registers 24_1, 24_2,. The output terminals of the second flag registers 24_1, 24_2,... Are connected to the priority encoder 16 (not shown in FIG. 3) shown in FIG. 2, and the OR gate 21_2 corresponding to the memory word adjacent to the lower part in FIG. , 21_3,....
[0009]
Each pair of the first and second flag registers 23_1, 24_1, 23_2, 24_2,... Corresponds to each flag register 15_1, 15_2,.
The first flag registers 23_1, 23_2,... And the second flag registers 24_1, 24_2,... Both receive the match result latch signal S1 output to the match result
[0010]
In the associative memory configured as described above, a match search is performed as follows. Here, as shown in the figure, each of the memory words 11_1, 11_2, 11_3, 11_4, 11_5, 11_6,... Stores stored data A, B, C, D, C, F,. I do.
Here, when each stored data is searched independently, the first search timing signal S2 is output to the first
[0011]
The signal of logic “1” output from the AND gate 20_2 is latched by the first flag register 23_2 at the timing of the rising edge a of the match result latch signal S1 output to the match result
[0012]
Further, at each timing when the signal of logic '1' is latched in the first flag register 23_2 and the second flag register 24_2, the other first flag registers 23_1; 23_3, 23_4,. Registers 24_1; 24_3, 24_4,... Latch a signal of logic “0”.
The signals of logic '0', '1', '0',... Latched in the second flag registers 24_1, 24_2, 24_3,... Are input to the
[0013]
Next, a case in which a search with an extended data width is performed will be described. Here, a case will be described in which two-word data consisting of data "B" and data "C" expanded to two words is searched.
In this case, a search for data "B" is first performed in the same manner as described above. As a result, the signal of logic “1” is latched in the first and second flag registers 23_2 and 24_2 corresponding to the memory word 11_2. Next, a search is performed by inputting data 'C' as search data REF_DATA. At this time, the first
[0014]
However, the associative memory shown in FIG. 3 has a data width extending function, but data expanded to two words, three words, etc., must be stored in a predetermined order in adjacent memory words. In the case where a plurality of data to be searched are stored in memory words separated from each other or in the reverse order, for example, in the order of data 'C' and data 'B', a plurality of data are stored. No combined match detection is possible.
[0015]
FIG. 4 shows a data structure when such a search is required. FIG. 4 shows a data structure in which four data to which attributes I, II, III, and IV are respectively provided as a set to form one data group. To clarify the concepts of the data group and the attribute, for example, each data group of each
[0016]
When a data group consisting of a plurality of data to which the attributes I, II, III, and IV are assigned is stored in an associative memory and a search is performed, for example, a data group with a
[0017]
However, such a search is impossible with the associative memory having the word width expansion function described above (see FIG. 3). Further, in the above-mentioned associative memory, when data "A" and data "B" are searched, data "A" and data II with attribute I in the column of
[0018]
An associative memory that solves such a problem has been proposed by the present applicant (see Japanese Patent Application No. 5-248121). Hereinafter, the associative memory according to this proposal will be described.
FIG. 5 is a block diagram showing an example of the associative memory according to the above proposal. The same components as those of the associative memory shown in FIG. 3 are denoted by the same reference numerals as those shown in FIG. 3, and only different points will be described.
[0019]
Each of the memory words 11_1, 11_2,... Includes an attribute storage unit 11_1_1, 11_2_1,... For storing attributes, and data storage units 11_1_2, 11_2_2,. Stores stored data composed of pairs of attributes and data corresponding to each other. Here, as shown in the figure, each of the memory words 11_1, 11_2, 11_3, and 11_4 has attribute I, data 'A', attribute II, data 'B', and attribute belonging to the
[0020]
A match signal is output to each of the memory words 11_1 and 11_2 when the stored data (both attributes and data) stored therein matches the input search data (both attributes and data). In addition to the matching lines 14_1, 14_2,..., There are provided attribute matching lines 30_1, 30_2,. Note that the matching of only the attribute and the matching of both the attribute and the data are configured in the same manner as the conventional match detection circuit, and the conventional match detection circuit is a very common technique in the field of associative memory. And illustration thereof will be omitted.
[0021]
There are provided third flag registers 31_1, 31_2,... Corresponding to the respective memory words 11_1, 11_2, and each attribute match line 30_1, 30_2,. Extends to the input terminal. Further, the associative memory is provided with one data line 32_1, 32_2,... For each of a memory word group including a plurality of memory words storing data belonging to each data group shown in FIG. The first switches 33_1, 33_2,... Are provided between the data lines 32_1, 32_2,... And the output terminals of the second flag registers 24_1, 24_2,. These first switches 33_1, 33_2,... Are specifically configured using transistors and the like. The same applies to other switches described later. Each of the first switches 33_1, 33_2,... Becomes conductive when the corresponding third flag register 31_1, 31_2,. It is shut off when it is done. The third flag registers 31_1, 31_2,... Latch the signals of the corresponding attribute match lines 30_1, 30_2,... At the falling edge b of the match result latch signal S1 output to the match result
[0022]
Are provided between the data lines 32_1, 32_2,... And the input terminals of the respective OR gates 21_1, 21_2,..., And the second switches 34_1, 34_2,. Are controlled by signals on the corresponding attribute match lines 30_1, 30_2,... So that the signal is in a conductive state when the signal is a logic “1” indicating a match, and is turned off in a logic “0” indicating a mismatch. . The associative memory shown in FIG. 5 differs from the associative memory shown in FIG. 3 in that an OR gate 21_1 is also provided before the AND gate 20_1 corresponding to the uppermost memory word 11_1 in the figure.
[0023]
In the associative memory configured as described above, the match search is performed as follows.
Since the single data search for one word and the first search among a plurality of continuous words are the same as those of the conventional associative memory with a word extension function shown in FIG. 3, the description is omitted here. Here, in the first search, logic “1” is latched in the first and second memory words 23_2 and 24_2 corresponding to the memory word 11_2 by the search data REF_DATA including the attribute II and the data “B”. Shall be. At this time, in response to the attribute match, a signal of logic '1' is output to the attribute match line 30_2 corresponding to the memory word 11_2, whereby the signal of logic '1' is also output to the corresponding third flag register 31_2. The signal is latched, the corresponding first switch 33_2 is turned on, and the signal of logic '1', which is stored in the corresponding second flag register 24_2 and indicates the coincidence of both the attribute and the data, is output to the data line 32_1. At the same time, the corresponding second switch 34_2 is also turned on, but this is an unnecessary operation in the first search.
[0024]
Next, it is assumed that search is performed by inputting search data REF_DATA including attribute IV and data 'D'. At this time, as in the case of the associative memory of FIG. 3, the initial
[0025]
As a result, the signal of logic '1' of the second flag register 24_4 corresponding to the memory word 11_4 is input to the priority encoder 16 (see FIG. 2), and the address of the memory word 11_4 is obtained. It is known in advance that attribute IV is stored in 11_4, and when it is desired to read, for example, data of attribute III in the same group, 1 is subtracted from the obtained address to obtain the address of memory word 11_3. What is necessary is just to input the address to the
[0026]
On the other hand, at the time of the second search, if the search is performed using the search data including the attribute IV and the data “B” instead of the search data including the attribute IV and the data “D”, for the memory word 11_4, Since the attributes match, the second switch 34_4 is turned on, and the signal of logic “1” output to the data line 32_1 is taken in. However, since the data is different, the logic “0” indicating mismatch does not appear on the match line 14_4. The logic "0" is output and latched in the first and second flag registers 23_4 and 24_4 to indicate that no match was detected. Also, the attribute does not match for the memory word 11_2 to which the data 'B' matches, and therefore both the attribute and the data do not match.
[0027]
As described above, in the associative memory shown in FIG. 5, in the same group, even if data stored in memory words separated from each other is searched or data is searched in reverse order. Even a search can be performed.
Here, the data lines 32_1, 32_2,... In the associative memory shown in FIG. 5 have fixed lengths assuming that the number of data belonging to one group is predetermined. When a fixed-length data line is provided, it is necessary to estimate the maximum number of data belonging to one group and provide a data line having a length corresponding to the maximum number of data. In this case, useless memory words are generated when a data group is constituted by a smaller number of data than the maximum. Therefore, it is preferable that the data lines have a variable length according to the number of data belonging to one group.
[0028]
FIG. 6 is a schematic diagram showing one method for realizing a variable-length data line.
A
[0029]
When the number of data constituting one data group is 2, a first switch control signal is output to the
[0030]
According to this method, when the number of data constituting one data group is a multiple of 2, no free space is generated in the memory word, but when the number of data other than a multiple of 2, for example, 3, 5, 9, or the like, an empty memory is used. Words will result. If a large number of switches 40_2, 40_3,... Can be turned on and off arbitrarily so as not to generate this empty memory word, the number of control lines becomes large and switch control signals are output to those control lines. A complicated control circuit is required. Therefore, the method shown in FIG. 6 is not suitable for completely arbitrarily controlling the length of the data line.
[0031]
FIG. 7 is a schematic diagram showing another method for realizing a variable data line.
A
[0032]
FIG. 8 is a circuit diagram illustrating an example of an attribute determination circuit that determines whether an attribute is I or other.
Here, '000' is assigned to the attribute I, and when the attribute stored in the attribute storage unit 11_i_1 is the attribute I ('000'), '0' is output from the OR gate. Is turned off, and the data lines on both sides of the
[0033]
Thus, in the associative memory shown in FIG. 5, the length of the data lines 32_1, 32_2,... Can be adjusted according to the number of data constituting one data group. Of course, instead of using the attribute data, the length of the data line may be adjusted by controlling the switch using a dedicated control line.
[0034]
[Problems to be solved by the invention]
The associative memory according to the above proposal is, as described above, in that a search over a plurality of memory words at addresses apart from each other in a memory word group in which one data group is stored and a search in a reverse order are allowed. Although it is extremely superior to the conventional associative memory, the configuration shown in FIG.
(A and B) or (X and Y) ... (1)
It is not possible to perform a mixed search of AND (or) and OR (or), such as whether or not there is a data group that matches. For example, when the data as shown in FIG. 5 is stored, first, when the first search timing signal S2 is input and the search is performed with the attribute I and the data A, the
[0035]
In view of the above circumstances, the present invention makes it possible to perform a complicated logic search, for example, as in the above equation (1), without accessing the search results up to the middle during a series of searches. An object is to provide an associative memory.
[0036]
[Means for Solving the Problems]
The associative memory of the present invention that solves the above object stores a plurality of stored data, and the search data is input, and in the associative memory that searches the stored data corresponding to the input search data,
(1) A plurality of memory words for storing a plurality of stored data for each stored data
(2) There is a correspondence between search data input at the time of a search provided for each of the plurality of memory words and each of the stored data stored in each of the plurality of memory words. A plurality of flag registers for storing hit flags indicating the existence of the corresponding relationship when it is detected that
(3) A hit column register for sequentially storing whether a hit flag is stored in any of the plurality of flag registers for each of a plurality of searches.
It is characterized by having.
[0037]
Here, the associative memory of the present invention includes the above (1) to (3),
(4) The memory word stores, for each stored data, each stored data constituting a plurality of data groups each including a set of a plurality of stored data;
(5) When it is detected that a correspondence exists between the stored data stored in the predetermined memory word and the input search data, the correspondence is stored in the flag register corresponding to the predetermined memory word. And a first mode for storing a hit flag indicating the presence of a search flag, and a data to which a corresponding relationship is detected in a predetermined first memory word at the time of this search, and to which the stored data stored in the first memory word belongs. A hit flag is stored in a flag register corresponding to an arbitrary second memory word other than the first memory word belonging to a memory word group consisting of a plurality of memory words for storing respective stored data constituting the group. If so, the hit flag is stored in the flag register corresponding to the first memory word, and the second memory word is stored. Coincidence detecting circuit and a second mode to reset the hit flag stored in the flag register corresponding to the de
It is preferable to provide
[0038]
Also, the associative memory of the present invention stores each storage data consisting of a pair of an attribute for identifying a plurality of storage data in one data group from each other and data with the attribute to each of the plurality of memory words. The search may be performed by using stored search data including pairs of attributes and data.
[0039]
[Action]
Since the associative memory of the present invention includes the hit string register of the above (3), an intermediate search result during a series of searches is stored in the hit string register. Is realized.
[0040]
【Example】
Hereinafter, examples of the present invention will be described.
FIG. 1 is a circuit block diagram showing a characteristic part of the present invention in an embodiment of the associative memory of the present invention. This circuit block shows a part of the associative memory shown in FIG. 5 and a part added to the associative memory shown in FIG. 5, based on the associative memory shown in FIG.
[0041]
Here, as shown, each
[0042]
The associative memory is provided with a search mode register 51. The search mode register 51 stores an initial search timing signal S2 in each of a series of searches (here, four searches). A flag for determining whether to input is stored. Here, in order to perform a search described later, '1, 0, 1, 0' is stored in the search mode register 51, and in a series of four searches, an initial search timing signal is used in the first search. S2 is input, the first search timing signal S2 is not input in the second search, the first search is regarded as the first search in the third search, the first search timing signal S2 is input, and the first search timing is input in the fourth search. The signal S2 is not input.
[0043]
Also, each
[0044]
This associative memory also contains all
m, ..., 11 A
Between the
[0045]
A lower end of the search line 51 shown in FIG. 1 is a sense amplifier constituting a
[0046]
The output of the
[0047]
Using the associative memory having the above configuration, here,
{(Data C exists in attribute III) and (Data D exists in attribute IV)}
Or
{(Data A exists in attribute I) and (Data B exists in attribute II)} (2)
Shall be searched.
First, the
[0048]
Then, memory word 11 m + 2 and memory word 11 A match is detected at n + 2 and the flag register 24 m + 2 and flag register 24 A logic ‘1’ indicating that a match has been detected is set at n + 2. All other flag registers are reset to logic '0' even if logic '1' is stored.
At this time, a signal of logic “0” is applied to the
[0049]
Next, the
In this search, no match is detected, and all flag registers 24 1,24 2, ..., 24 m, ..., 24 are reset to logic "0". That is, the first half of equation (2),
(Data C exists in attribute III) and (Data D exists in attribute IV) (3)
Is not detected.
[0050]
All flag registers 24 1,24 2, ..., 24 m, ..., 24 Since n,... have been reset to logic '0', the
[0051]
Next, a search is performed with the attribute I and the data A, and an initial search timing signal S2 is input, and three
[0052]
Next, a search is performed using the attribute II and the data B, and since the AND search is performed, the first search timing signal S2 is not input. At this time, two memory words 11 m + 1,11 A match is detected at n + 1 and the
[0053]
In the case of the associative memory shown in FIG. 1,24 2, ..., 24 m, ..., 24 Since only the final search result remains in n,..., it is not possible to know an intermediate result by the search as in the above equation (2). In the example of equation (2), after equation (3),
(Data A exists in attribute I) and (Data B exists in attribute II) (4)
Since there is a data group that satisfies the condition (1), it is finally detected that the expression (4) is satisfied even in the associative memory having the configuration shown in FIG. When the expression (3) comes, the associative memory having the configuration shown in FIG. 5 will detect only the mishit in the search result of the latter expression (3).
[0054]
On the other hand, in the embodiment shown in FIG. 1, since the hit
[0055]
Although the above embodiment has been illustrated and described as an example of performing a search four times as a series of searches, the present invention is not limited to the case where the four searches are performed as a series of searches. Needless to say, flip-flops constituting the hit
[0056]
【The invention's effect】
As described above, the associative memory of the present invention includes a hit string register that sequentially stores whether or not a hit flag is stored in any of a plurality of flag registers for each of a plurality of searches. Intermediate search results for each of a plurality of searches making up the search can be collectively known after the series of searches is completed, which contributes to simplification of the system and improvement of the degree of search. In addition, the addition of circuit elements accompanying this is extremely small for the entire associative memory.
[Brief description of the drawings]
FIG. 1 is a circuit diagram showing a characteristic portion of the present invention in one embodiment of an associative memory of the present invention.
FIG. 2 is a circuit block diagram illustrating an example of an associative memory.
FIG. 3 is a block diagram illustrating an example of an associative memory having a data extension function.
FIG. 4 is a diagram illustrating an example of data of a group structure.
FIG. 5 is a block diagram illustrating an example of an associative memory.
FIG. 6 is a schematic diagram showing one method for realizing a variable-length data line.
FIG. 7 is a schematic diagram showing another method for realizing a variable data line.
FIG. 8 is a circuit diagram illustrating an example of an attribute determination circuit.
[Explanation of symbols]
11_1, 11_2, ... memory words
11_1_1, 11_2_1,... Attribute storage unit
11_1_2, 11_2_2, ... Data storage unit
14_1, 14_2, ... Matching line
16 priority encoder
17 Address decoder
18_1, 18_2, ... word line
20_1, 20_2, ... AND gate
21_1, 21_2, ... or gate
23_1, 23_2,... First flag register
24_1, 24_2, ... second flag register
25 Match result latch control line
30_1, 30_2, ... attribute matching line
31_1, 31_2,... Third flag register
32_1, 32_2, ... data lines
33_1, 33_2, ... 1st switch
34_1, 34_2, ... 2nd switch
52 search line
56 sense amplifier
60-bit string register
Claims (3)
複数の格納データを各格納データ毎に記憶する複数のメモリワードと、
前記複数のメモリワードそれぞれに対応して備えられた、検索の際に、入力された検索データと、前記複数のメモリワードそれぞれに格納された各格納データとの間に対応関係が存在することが検出された場合にその対応関係の存在を表わすヒットフラグを格納する複数のフラグレジスタと、
前記複数のフラグレジスタのいずれかに前記ピットフラグが格納されたか否かを、複数回の検索それぞれについて順次格納するヒット列レジスタとを備えたことを特徴とする連想メモリ。In the associative memory for storing a plurality of stored data and receiving search data, and searching for stored data corresponding to the input search data,
A plurality of memory words for storing a plurality of stored data for each stored data;
At the time of a search provided corresponding to each of the plurality of memory words, there may be a corresponding relationship between the input search data and each of the stored data stored in each of the plurality of memory words. A plurality of flag registers for storing a hit flag indicating the existence of the corresponding relationship when detected;
A hit column register for sequentially storing whether or not the pit flag is stored in any of the plurality of flag registers for each of a plurality of searches.
それぞれが複数の格納データの集合からなる複数のデータ群を構成する各格納データを、該各格納データ毎に記憶する複数のメモリワードと、
前記複数のメモリワードそれぞれに対応して備えられた、検索の際に、入力された検索データと、前記複数のメモリワードそれぞれに格納された各格納データとの間に対応関係が存在することが検出された場合にその対応関係の存在を表わすヒットフラグを格納する複数のフラグレジスタと、
所定のメモリワードに記憶された格納データと入力された検索データとの間に対応関係が存在することが検出されたときに、該所定のメモリワードに対応する前記フラグレジスタに対応関係の存在を表わすヒットフラグを格納する第1のモードと、今回の検索時に所定の第1のメモリワードにおいて対応関係が検出され、かつ、前記第1のメモリワードに記憶された格納データが属するデータ群を構成する各格納データそれぞれを記憶する複数のメモリワードからなるメモリワード群に属する、前記第1のメモリワードを除く他の任意の第2のメモリワードに対応する前記フラグレジスタに前記ヒットフラグが格納されていた場合に、前記第1のメモリワードに対応する前記フラグレジスタに前記ヒットフラグを格納するとともに前記第2のメモリワードに対応する前記フラグレジスタに格納されていた前記ヒットフラグをリセットする第2のモードとを有する一致検出回路と、前記複数のフラグレジスタのいずれかに前記ヒットフラグが格納されたか否かを、複数回の検索それぞれについて順次格納するヒット列格納レジスタとを備えたことを特徴とする連想メモリ。In the associative memory for storing a plurality of stored data and receiving search data, and searching for stored data corresponding to the input search data,
A plurality of storage words each storing a plurality of storage data, each of which forms a plurality of data groups each including a set of a plurality of storage data,
At the time of a search provided corresponding to each of the plurality of memory words, there may be a corresponding relationship between the input search data and each of the stored data stored in each of the plurality of memory words. A plurality of flag registers for storing a hit flag indicating the existence of the corresponding relationship when detected;
When it is detected that there is a correspondence between the stored data stored in the predetermined memory word and the inputted search data, the presence of the correspondence in the flag register corresponding to the predetermined memory word is determined. A first mode for storing a hit flag to be represented, and a data group to which a correspondence relationship is detected in a predetermined first memory word at the time of the current search and to which stored data stored in the first memory word belongs. The hit flag is stored in the flag register corresponding to an arbitrary second memory word other than the first memory word belonging to a memory word group including a plurality of memory words for storing respective stored data to be stored. The hit flag is stored in the flag register corresponding to the first memory word and the second A match detection circuit having a second mode for resetting the hit flag stored in the flag register corresponding to the memory word; and determining whether the hit flag is stored in any of the plurality of flag registers. A hit string storage register for sequentially storing a plurality of searches.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1676994A JP3597882B2 (en) | 1994-02-10 | 1994-02-10 | Associative memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1676994A JP3597882B2 (en) | 1994-02-10 | 1994-02-10 | Associative memory |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07226091A JPH07226091A (en) | 1995-08-22 |
JP3597882B2 true JP3597882B2 (en) | 2004-12-08 |
Family
ID=11925431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP1676994A Expired - Fee Related JP3597882B2 (en) | 1994-02-10 | 1994-02-10 | Associative memory |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3597882B2 (en) |
-
1994
- 1994-02-10 JP JP1676994A patent/JP3597882B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH07226091A (en) | 1995-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5852569A (en) | Content addressable memory multiple match detection circuit | |
US6219748B1 (en) | Method and apparatus for implementing a learn instruction in a content addressable memory device | |
US6240485B1 (en) | Method and apparatus for implementing a learn instruction in a depth cascaded content addressable memory system | |
US6246601B1 (en) | Method and apparatus for using an inter-row configurable content addressable memory | |
TW445410B (en) | Method and apparatus for performing a read next highest priority match instruction in a content addressable memory device | |
JP3095064B2 (en) | Associative memory | |
US20030131188A1 (en) | Synchronous content addressable memory | |
JPS605498A (en) | Associative memory device | |
US6252789B1 (en) | Inter-row configurability of content addressable memory | |
US5592407A (en) | Associative memory | |
JP2000353388A (en) | Improvement of contents referable memory | |
US6618280B2 (en) | Associative memory for accomplishing longest coincidence data detection by two comparing operations | |
US7095641B1 (en) | Content addressable memory (CAM) devices having priority class detectors therein that perform local encoding of match line signals | |
US6868475B2 (en) | Content addressable memory having data width extension capability | |
JP3597882B2 (en) | Associative memory | |
US5465228A (en) | Associative memory | |
JP3597899B2 (en) | Associative memory | |
JP3130736B2 (en) | Usage of associative memory and associative memory | |
JP2838034B2 (en) | Content addressable memory | |
JP3063956B2 (en) | Associative memory | |
JP3645293B2 (en) | Associative memory | |
JP2741806B2 (en) | Content addressable memory | |
JP3202899B2 (en) | Associative memory | |
JP3597881B2 (en) | Associative memory | |
JP3083064B2 (en) | Associative memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040806 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040907 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040910 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080917 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080917 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090917 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100917 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |