(57)【要約】【課題】高スループットで自動学習を行うことができる連想メモリを提供する。【解決手段】本発明の連想メモリは、検索命令または検索と学習命令が与えられると、検索データと各々のＣＡＭワードに記憶されているデータとの検索を行い、その検索結果を出力するＣＡＭ部と、検索データおよび空きアドレス信号を一時的に保持し、検索と学習命令の検索結果として偽が得られた場合に、検索データと保持されている検索データとの比較結果を出力する学習内容一時記憶部と、検索と学習命令の検索結果として偽が得られた場合に、検索データおよび空きアドレス信号を学習内容一時記憶部に保持し、空きアドレスが確定した後、ＣＡＭ部の空きアドレスに対応するＣＡＭワードに検索データを記憶するように制御する学習制御部と、所定の優先順位に従って、ＣＡＭ部から出力される検索結果、および学習内容一時記憶部から出力される比較結果のうちの一方を出力する出力制御部とを備える。【選択図】図１
2004334980.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＡＭワードを有し、検索命令または検索と学習命令が与えられると、検索データと各々の前記ＣＡＭワードに記憶されているデータとの検索を行い、その検索結果を出力するＣＡＭ部と、
前記検索データおよびこの検索データが記憶されるＣＡＭワードに対応する空きアドレス信号を一時的に保持し、前記検索と学習命令の検索結果として偽が得られた場合に、前記検索データと保持されている検索データとの比較結果を出力する学習内容一時記憶部と、
前記検索と学習命令の検索結果として偽が得られた場合に、前記検索データおよび前記空きアドレス信号を前記学習内容一時記憶部に保持し、前記空きアドレスが確定した後、前記ＣＡＭ部の前記空きアドレスに対応するＣＡＭワードに前記検索データを記憶するように制御する学習制御部と、
所定の優先順位に従って、前記ＣＡＭ部から出力される検索結果、および前記学習内容一時記憶部から出力される比較結果のうちの一方を出力する出力制御部とを備えることを特徴とする連想メモリ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、自動学習機能を持つ連想メモリに関するものである。
【０００２】
【従来の技術】
連想メモリ（以下、ＣＡＭという）を利用する分野では、検索結果が不一致（偽）の場合に、その時の検索データを空きアドレスのＣＡＭワードに書き込むという自動学習の処理が頻繁に行われる。自動学習の処理には、「検索」、「空きアドレスの取得」、「書き込み」という一連の手続きが必要である。この処理は各手続きを独立に行えば実現できるが、より高性能が求められる分野では、ＣＡＭに自動学習の処理を効率よく行う機能が求められている。
【０００３】
以下、図３のタイミングチャートに従って、ＣＡＭの自動学習処理について説明する。
【０００４】
図３のタイミングチャートに示す例は、ＣＡＭの内部クロックが外部クロックの２倍の周波数で動作し、外部クロックの立ち上がり、すなわち時刻Ｔ０，Ｔ２，…，Ｔｎ（ｎは偶数）で、検索、検索と学習等の命令を与えることが可能な仕様である。
【０００５】
ＣＡＭでは、検索命令が実行された場合にその検索結果が出力され、検索結果が一致（真）の場合（検索データと一致するデータが存在する場合）にはその一致アドレスが出力される。また、検索と学習命令が実行された場合には検索命令と同じ動作が行われ、さらに検索結果が不一致（偽）の場合（検索データと一致するデータが存在しない場合）に、空きアドレスのＣＡＭワードにその検索データが書き込まれる。すなわち、自動学習が行われる。
【０００６】
なお、空きアドレスは、「書き込み」命令により、外部から新規なデータが空きアドレスのＣＡＭワードに書き込まれた場合や、上記「検索と学習」命令により、検索データが空きアドレスのＣＡＭワードに書き込まれた場合にＣＡＭ内部で自動的に更新される。
【０００７】
まず、時刻Ｔ０において、検索と学習命令（０）が入力される。この時の検索データはデータＫであり、ＣＡＭには、時刻Ｔ０以前にデータＫは登録されていないものとする。
【０００８】
なお、図３のタイミングチャートでは、各信号の値の後に番号が付けられている。この番号は、命令が与えられたことによって生じるＣＡＭワード内判定信号、ＣＡＭ全体判定信号、空きアドレス信号、学習の書き込み信号の値の変化を識別するためのものであり、例えば検索と学習命令（０）に対応してこれらの信号が変化したことを表すために、結果（０）、空きアドレス（０）、学習（０）というように同じ番号が付けられている。
【０００９】
上記のように、時刻Ｔ０で検索と学習命令（０）が与えられると、ＣＡＭ内部では、時刻Ｔ１までに各ＣＡＭワードにおける検索処理が終了し、各ワードの検索結果（ＣＡＭワード内判定信号）として全て偽（結果（０）［偽］）が得られる。続いて、時刻Ｔ２までに、全ワードの検索結果を反映してＣＡＭ全体の検索処理が完了し、ＣＡＭ全体の検索結果（ＣＡＭ全体判定信号）としても偽（結果（０）［偽］）が得られる。
【００１０】
ここで、ＣＡＭ全体の検索結果が偽であるから、時刻Ｔ３において、学習の書き込み信号の立ち上がり（学習（０）の立ち上がり）で検索データＫが空きアドレス（−１）のＣＡＭワードに書き込まれる。空きアドレス（−１）は、検索と学習命令（０）が与えられる直前の命令が与えられた結果、時刻Ｔ３までには決定される。また、新たにデータが書き込まれたため、空きアドレスの再計算が行われ、時刻Ｔ５までには新たな空きアドレス（０）が確定する。
【００１１】
次に、時刻Ｔ４において、次の検索と学習命令（１）が入力される。この時の検索データは時刻Ｔ０の時と同じデータＫである。
【００１２】
この場合、その直前の検索と学習命令（０）により、時刻Ｔ３でデータＫはＣＡＭに登録済みであるから、時刻Ｔ５における検索と学習命令（１）の検索結果（結果（１））は真となる。
【００１３】
ここで、時刻Ｔ２は命令を入力することが可能な時刻であるが、時刻Ｔ２の時点では、時刻Ｔ０で入力された検索と学習命令（０）が完了しておらず、ＣＡＭにはデータＫが登録されていない。このため、時刻Ｔ２では検索と学習命令（１）を入力することができず（ＮＯＰ：ノーオペレーション）、上記のように、時刻Ｔ４まで待たなければならない。
【００１４】
仮に、時刻Ｔ２で検索と学習命令（１）を入力し、その時の検索データがデータＫであるとすると、この時点では、データＫがＣＡＭに書き込まれていないため、検索結果として真ではなく偽が得られることになる。すなわち、正しい検索結果が得られないことになる。
【００１５】
上記のように、従来のＣＡＭでは、同じ検索データが連続して検索と学習命令に使用される場合には、命令を入力可能なタイミングで検索と学習命令を連続的に与えることができず、スループットが低下するという問題があった。
【００１６】
これに対し、特許文献１には、上記の問題が存在しないＣＡＭが提案されている。特許文献１に開示のＣＡＭは、その図１１に示されているタイミング発生回路（非同期回路）により、遅延素子によってクロック信号を遅延して複数の信号を生成し、同図６のタイミングチャートに示されているように、命令を入力することが可能なクロック信号の立ち上がりのエッジ間において、検索と学習命令の全ての処理が完了するように構成されている。
【００１７】
しかし、特許文献１のように、非同期回路を利用した回路は一般に設計が困難である。また、クロック周波数を高めることが難しく、結果として高スループットを得ることは難しいという問題があった。
【００１８】
【特許文献１】
米国特許第６２１９７４８号明細書
【００１９】
【発明が解決しようとする課題】
本発明の目的は、前記従来技術に基づく問題点を解消し、高スループットで自動学習を行うことができる連想メモリを提供することにある。
【００２０】
【課題を解決するための手段】
上記目的を達成するために、本発明は、複数のＣＡＭワードを有し、検索命令または検索と学習命令が与えられると、検索データと各々の前記ＣＡＭワードに記憶されているデータとの検索を行い、その検索結果を出力するＣＡＭ部と、
前記検索データおよびこの検索データが記憶されるＣＡＭワードに対応する空きアドレス信号を一時的に保持し、前記検索と学習命令の検索結果として偽が得られた場合に、前記検索データと保持されている検索データとの比較結果を出力する学習内容一時記憶部と、
前記検索と学習命令の検索結果として偽が得られた場合に、前記検索データおよび前記空きアドレス信号を前記学習内容一時記憶部に保持し、前記空きアドレスが確定した後、前記ＣＡＭ部の前記空きアドレスに対応するＣＡＭワードに前記検索データを記憶するように制御する学習制御部と、
所定の優先順位に従って、前記ＣＡＭ部から出力される検索結果、および前記学習内容一時記憶部から出力される比較結果のうちの一方を出力する出力制御部とを備えることを特徴とする連想メモリを提供するものである。
【００２１】
【発明の実施の形態】
以下に、添付の図面に示す好適実施形態に基づいて、本発明の連想メモリを詳細に説明する。
【００２２】
図１は、本発明の連想メモリの一実施形態の構成概略図である。同図に示す連想メモリ（以下、ＣＡＭという）１０は、検索結果が不一致の場合に、その時の検索データを空きアドレスのＣＡＭワードに書き込む自動学習機能を持つものであり、デコーダ１２と、ＣＡＭ部１４と、学習制御部１６と、学習内容一時記憶部１８と、出力制御部２０とを備えている。
【００２３】
デコーダ１２には、ＣＡＭ１０の外部から供給される命令が入力され、デコーダ１２からは、検索信号＿、学習信号＿、および外部書き込み信号＿が出力されている。なお、各内部信号の後の‘＿’は、この信号が負論理であることを表す。
【００２４】
デコーダ１２は、命令をデコードし、この命令に対応する内部信号を発生する。本実施形態の場合、検索命令が与えられると検索信号＿が‘０’となる。また、検索と学習命令が与えられると検索信号＿および学習信号＿が共に‘０’となり、書き込み命令が与えられると外部書き込み信号＿が‘０’となる。なお、読み出し命令等の他の命令は、図面の煩雑さを避けるために省略してあるが、必要に応じて設けることができる。
【００２５】
ＣＡＭ部１４は、図示省略しているが、複数のＣＡＭワード、アドレスデコーダ、優先順位エンコーダ、空きアドレスの再計算部等を備えている。
【００２６】
ＣＡＭ部１４には、デコーダ１２から出力される検索信号＿、学習制御部１６のＡＮＤゲート２６から出力される書き込み信号＿、外部から供給される検索データ、学習制御部１６のマルチプレクサ２２，２４から出力される書き込みデータおよび書き込みアドレス信号が入力されている。また、ＣＡＭ部１４からは、ＣＡＭワード内判定信号＿、ＣＡＭワード内一致アドレス信号、および空きアドレス信号が出力されている。
【００２７】
ＣＡＭ部１４では、デコーダ１２から検索信号＿が与えられると、外部から供給される検索データと各々のＣＡＭワードに記憶されているデータとの検索が同時に行われる。その結果、各々のＣＡＭワードの検索結果に基づいて、全てのＣＡＭワードの検索結果となるＣＡＭワード内判定信号＿、および一致が検出されたＣＡＭワードのうち、最優先順位のＣＡＭワードに対応するアドレスであるＣＡＭワード内一致アドレス信号が出力される。
【００２８】
また、ＣＡＭ部１４では、書き込み信号＿が与えられると、マルチプレクサ２４から出力されるアドレス信号によって指定されるＣＡＭワードに、マルチプレクサ２２から出力されるデータが書き込まれる。本実施形態の場合、ＣＡＭ部１４に与えられる書き込み信号＿、すなわちＡＮＤゲート２６の出力信号は、外部書き込み信号＿または学習の書き込み信号＿が‘０’の場合に‘０’となる（両者は同時には‘０’にならない）。
【００２９】
外部書き込み信号＿が‘０（＝Ｌ）’の場合、外部から供給されるアドレス信号に対応するＣＡＭワードに、外部から供給されるデータが書き込まれる。これに対し、学習の書き込み信号＿が‘０’（外部書き込み信号＿は‘１（＝Ｈ）’）の場合、空きアドレス信号に対応するＣＡＭワードに、外部から供給され、学習制御部１６のフリップフロップ４４，４６，４８によってタイミング調整されたデータ（検索データ）が書き込まれる。
【００３０】
また、ＣＡＭ部１４では、書き込み信号＿が与えられ、現在の空きアドレスに対応するＣＡＭワードに新たなデータが書き込まれると空きアドレスの再計算が行われ、再計算後の新たな空きアドレス信号が出力される。本実施形態では、ＣＡＭ部１４の内部に、空きアドレスの再計算部が設けられているが、これに限定されるわけではなく、空きアドレスの再計算部はＣＡＭ部１４の外部に設けられていてもよい。
【００３１】
ＣＡＭ部１４は、学習機能を備えていない従来公知のＣＡＭがいずれも利用可能である。また、説明を簡略化するために図示省略しているが、従来のＣＡＭが備える構成要素は必要に応じて当然備えているものとする。
【００３２】
続いて、学習制御部１６は、マルチプレクサ２２，２４と、ＡＮＤゲート２６と、フリップフロップ２８，３０，３４，３８，４０，４４，４６，４８と、ＡＮＤゲート３２と、インバータ４２とを備えている。
【００３３】
マルチプレクサ２２の入力端子０には外部から供給されるデータが入力され、その入力端子１にはフリップフロップ４８の出力信号が入力されている。マルチプレクサ２４の入力端子０には外部から供給されるアドレス信号が入力され、その入力端子１にはＣＡＭ部１４から出力される空きアドレス信号が入力されている。また、マルチプレクサ２２，２４の選択入力端子にはデコーダ１２から出力される外部書き込み信号＿が共通に入力され、マルチプレクサ２２，２４の出力信号は、それぞれ書き込みデータ信号および書き込みアドレス信号としてＣＡＭ部１４に入力されている。
【００３４】
フリップフロップ２８には、デコーダ１２から出力される学習信号＿が入力されている。フリップフロップ２８，３０，３８，４０は直列に接続され、フリップフロップ３０の出力信号は、ＡＮＤゲート３２の一方の入力端子（反転入力）に入力されている。ＡＮＤゲート３２の他方の入力端子（正転入力）には、出力制御部２０のＡＮＤゲート５８から出力されるＣＡＭ全体判定信号＿が入力され、その出力信号はフリップフロップ３４に入力されている。
【００３５】
フリップフロップ４４には外部から供給されるデータが入力され、フリップフロップ４４，４６，４８は直列に接続されている。インバータ４２にはフリップフロップ３４の出力信号が入力されている。ＡＮＤゲート２６には、デコーダ１２から出力される外部書き込み信号＿、およびインバータ４２の出力信号（学習の書き込み信号＿）が入力され、ＡＮＤゲート２６の出力信号は、書き込み信号＿としてＣＡＭ部１４に入力されている。
【００３６】
学習制御部１６は自動学習の制御を行う。すなわち、検索と学習命令が与えられ（検索信号＿＝学習信号＿＝‘０’）、ＣＡＭ１０全体の検索結果として偽（ＣＡＭ全体判定信号＿＝‘１’）が得られた場合に、学習すべき内容である検索データおよび空きアドレス信号を学習内容一時記憶部１８に保持し、空きアドレスが確定した時点で、空きアドレス信号に対応するＣＡＭ部１４のＣＡＭワードに検索データを書き込むように制御する。
【００３７】
学習内容一時記憶部１８は、外部から供給される検索データを保持するデータ記憶部５０と、ＣＡＭ部１４から出力される空きアドレス信号を保持するアドレス記憶部５２と、データ記憶部５０に保持されているデータと外部から供給される検索データとの比較結果（一致判定結果）を出力する比較器５４と、ＯＲゲート５６とを備えている。本実施形態の場合、データ記憶部５０およびアドレス記憶部５２はラッチである。
【００３８】
データ記憶部５０のデータ入力端子には、学習制御部１６のフリップフロップ４８の出力信号が入力され、アドレス記憶部５２のデータ入力端子には、ＣＡＭ部１４から出力される空きアドレス信号が入力されている。また、データ記憶部５０およびアドレス記憶部５２のイネーブル入力端子Ｅには、学習制御部１６のフリップフロップ３４の出力信号（ラッチイネーブル信号）が共通に入力されている。
【００３９】
比較器５４には、データ記憶部５０の出力信号、および外部から供給されるデータが入力されている。ＯＲゲート５６には、学習制御部１６のフリップフロップ４０の出力信号、および比較器５４の出力信号が入力されている。
【００４０】
学習内容一時記憶部１８では、検索と学習命令が与えられ（検索信号＿＝学習信号＿＝‘０’）、ＣＡＭ１０全体の検索結果として偽（ＣＡＭ全体判定信号＿＝‘１’）が得られた場合に、検索データおよび空きアドレス信号がそれぞれデータ記憶部５０およびアドレス記憶部５２に保持される。
【００４１】
また、比較器５４により、データ記憶部５０に保持されているデータと外部から与えられた検索データとの比較が行われ、比較結果として、一致の場合に‘０’、不一致の場合に‘１’が出力される。ＯＲゲート５６により、検索と学習命令が与えられた場合に限って、比較器５４の比較結果が学習内容一時記憶部判定信号＿として出力される。検索と学習命令ではない場合、学習内容一時記憶部判定信号＿は常に‘１’となる。
【００４２】
ここで、次の検索命令または検索と学習命令が与えられた時に、ＣＡＭ部１４からＣＡＭワード内判定信号＿が出力されるタイミングと、比較器５４により、データ記憶部５０に記憶されたデータと外部から供給される検索データとの比較が行われ、その比較結果である学習内容一時記憶部判定信号＿が出力されるタイミングとがほぼ一致するようなタイミングでデータ記憶部５０に検索データを記憶しておく必要がある。
【００４３】
同様に、次の検索命令または検索と学習命令が与えられた時に、ＣＡＭ部１４からＣＡＭワード内一致アドレス信号＿が出力されるタイミングと、アドレス記憶部５２から空きアドレス信号が出力されるタイミングとがほぼ一致するようなタイミングでアドレス記憶部５２に空きアドレス信号を記憶しておく必要がある。
【００４４】
すなわち、前回の検索と学習命令で学習すべき内容である検索データおよび空きアドレス信号は、次回の検索または検索と学習命令で検索対象とすることができるタイミングで、それぞれデータ記憶部５０およびアドレス記憶部５２に記憶しておく必要がある。
【００４５】
続いて、出力制御部２０は、ＡＮＤゲート５８と、出力選択論理６０とを備えている。
【００４６】
ＡＮＤゲート５８には、ＣＡＭ部１４から出力されるＣＡＭワード内判定信号＿、および学習内容一時記憶部１８のＯＲゲート５６の出力信号である学習内容一時記憶部判定信号＿が入力され、ＡＮＤゲート５８からは、ＣＡＭ１０全体の一致検索結果となるＣＡＭ全体判定信号＿が出力されている。
【００４７】
また、出力選択論理６０には、ＣＡＭ部１４から出力されるＣＡＭワード内判定信号＿およびＣＡＭワード内一致アドレス信号と、学習内容一時記憶部１８から出力される学習内容一時記憶部判定信号＿および空きアドレス信号とが入力されている。出力選択論理６０からは、一致が検出されたＣＡＭワードのうち、最優先順位のＣＡＭワードに対応するアドレスであるＣＡＭ全体一致アドレス信号が出力されている。
【００４８】
出力制御部２０は、ＣＡＭ部１４から出力される検索結果（ＣＡＭワード内判定信号＿）、および学習内容一時記憶部１８から出力される比較結果（学習内容一時記憶部判定信号＿）に基づき、所定の優先順位に従って、ＣＡＭ１０の最終的な検索結果（ＣＡＭ全体判定信号＿）および一致アドレス（ＣＡＭ全体一致アドレス信号）を出力する。
【００４９】
本実施形態の場合、ＣＡＭ部１４の検索結果が偽（ＣＡＭワード内判定信号＿＝‘１’）であり、学習内容一時記憶部１８の比較結果も不一致（学習内容一時記憶部判定信号＿＝‘１’）である場合、ＣＡＭ１０の最終的な検索結果は偽（ＣＡＭ全体判定信号＿＝‘１’）となる。
【００５０】
また、ＣＡＭ部１４の検索結果が真（ＣＡＭワード内判定信号＿＝‘０’）であり、学習内容一時記憶部１８の比較結果が不一致である場合、ＣＡＭ１０の最終的な検索結果は、ＣＡＭ部１４の検索結果に基づいて出力される。すなわち、ＣＡＭ１０の最終的な検索結果は真（ＣＡＭ全体判定信号＿＝‘０’）となり、一致アドレスとして、ＣＡＭ部１４から出力される一致アドレス（ＣＡＭワード内一致アドレス信号）が出力される。また、複数のＣＡＭワードで一致が検出された場合、所定の優先順位に従って、最優先順位のＣＡＭワードのアドレスが出力される。
【００５１】
逆に、ＣＡＭ部１４の検索結果が偽であり、学習内容一時記憶部１８の比較結果が一致（学習内容一時記憶部判定信号＿＝‘０’）である場合、ＣＡＭ１０の最終的な検索結果は、学習内容一時記憶部１８の比較結果に基づいて出力される。すなわち、ＣＡＭ１０の最終的な検索結果は真となり、一致アドレスとして、学習内容一時記憶部１８のアドレス記憶部５２から出力される空きアドレス信号が出力される。
【００５２】
また、ＣＡＭ部１４の検索結果が真であり、学習内容一時記憶部１８の比較結果も一致である場合、ＣＡＭ１０の最終的な検索結果は真となり、一致アドレスとして、ＣＡＭ部１４から出力されるＣＡＭワード内一致アドレス信号、および学習内容一時記憶部１８のアドレス記憶部５２から出力される空きアドレス信号のうち、所定の優先順位に従って、最優先順位のアドレスが出力される。
【００５３】
次に、図２に示すタイミングチャートに従って、ＣＡＭ１０の自動学習処理について説明する。
【００５４】
なお、従来のＣＡＭとの対比が容易となるように、図２のタイミングチャートに示す例は、ＣＡＭ１０の内部クロックが外部クロックの２倍の周波数で動作し、外部クロックの立ち上がり、すなわち時刻Ｔ−２，Ｔ０，Ｔ２，…，Ｔｎ（ｎは偶数）で、各種の命令を与えることが可能な仕様である。また、検索と学習、検索結果、空きアドレス、学習等の各信号の値の後には、命令が与えられたことによって生じる各信号の値の変化を識別する番号が付けられている。
【００５５】
図２の例では、時刻Ｔ−２，Ｔ０，Ｔ２、すなわち命令を入力可能なタイミングで検索と学習命令（−１）、（０）、（１）が連続的に入力されている。検索と学習命令（−１）、（０）、（１）における検索データは、それぞれデータＪ、データＫおよびデータＫであり、ＣＡＭ１０には、時刻Ｔ−２以前にデータＫ，Ｊのいずれも登録されていないものとする。以下、時刻Ｔ０で入力される検索と学習命令（０）を中心として説明を行う。
【００５６】
まず、時刻Ｔ０において、検索と学習命令（０）が入力される。前述の通り、この時の検索データはデータＫである。
【００５７】
時刻Ｔ０で検索と学習命令（０）が与えられると、デコーダ１２から出力される検索信号＿および学習信号＿が共に‘０’になる。
【００５８】
検索信号＿が‘０’になると、ＣＡＭ部１４において、外部から供給される検索データと各々のＣＡＭワードに記憶されているデータとの一致検索が同時に行われる。そして、時刻Ｔ１までに各ＣＡＭワードでの検索処理が終了し、本実施形態の場合、全ＣＡＭワードの検索結果（ＣＡＭワード内判定信号＿）として偽（結果（０）［偽］＝‘１’）が得られる。
【００５９】
ここで、直前の検索と学習命令（−１）により、時刻Ｔ０において、データＪが学習内容一時記憶部１８のデータ記憶部５０に保持される。検索と学習命令（０）では、時刻Ｔ０の時点でＣＡＭ部１４の各ＣＡＭワードに記憶されているデータだけでなく、直前の検索と学習命令で学習すべき内容、すなわち学習内容一時記憶部１８のデータ記憶部５０に記憶されているデータも検索対象とする必要がある。
【００６０】
データＪが時刻Ｔ０で学習内容一時記憶部１８のデータ記憶部５０に保持されると、比較器５４により、外部から供給される検索データ（データＫ）とデータ記憶部５０に記憶されているデータ（データＪ）との比較が行われる。本実施形態の場合、両者の比較結果は偽となる。この比較結果は、直前の命令が検索と学習命令である場合に限って、ＯＲゲート５６により、学習内容一時記憶部判定信号＿として出力される。
【００６１】
本実施形態の場合、直前の検索と学習命令（−１）により、時刻Ｔ−２のタイミングで学習信号＿が‘０’となる。この学習信号＿はフリップフロップ２８，３０，３８，４０により遅延され、時刻Ｔ１のタイミングでＯＲゲート５６の図中上側の入力端子に入力される。従って、ＯＲゲート５６からは、学習内容一時記憶部判定信号＿として、時刻Ｔ１のタイミングで偽（結果（０）［偽］＝‘１’）が出力される。
【００６２】
続いて、出力制御部２０において、時刻Ｔ２までに、ＣＡＭワード内判定信号＿および学習内容一時記憶部判定信号＿に基づいてＣＡＭ全体の検索処理が完了する。ＣＡＭ全体判定信号＿は、ＡＮＤゲート５８により、ＣＡＭワード内判定信号＿および学習内容一時記憶部判定信号＿の少なくとも一方が‘真＝０’の時に‘０’となる。本実施形態の場合、ＣＡＭ全体の検索結果（ＣＡＭ全体判定信号＿）として偽（結果（０）［偽］＝‘１’）が得られる。
【００６３】
また、学習信号＿が時刻Ｔ０で‘０’になると、この学習信号＿は、学習制御部１６のフリップフロップ２８，３０により時刻Ｔ１のタイミングまで遅延される。また、上記のように、時刻Ｔ２までにはＣＡＭ全体の検索結果として偽（ＣＡＭ全体判定信号＿＝‘１’）が得られるから、ＡＮＤゲート３２の出力信号は‘１’となる。ＡＮＤゲート３２の出力信号はフリップフロップ３４により遅延され、時刻Ｔ２のタイミングでラッチイネーブル信号が‘１’となり、同時にインバータ４２を介して学習の書き込み信号＿が‘０’となる。
【００６４】
また、外部から供給される検索データは、フリップフロップ４４，４６，４８により時刻Ｔ２のタイミングまで遅延される。従って、時刻Ｔ２のタイミングでラッチイネーブル信号が‘１’になると、検索と学習命令（０）の検索データであるデータＫが学習内容一時記憶部１８のデータ記憶部５０に保持される。なお、データ記憶部５０のラッチは、ラッチイネーブル信号が‘１’の期間はスルー状態となり、‘０’の期間はホールド状態となる。
【００６５】
また、時刻Ｔ２のタイミングで同時に空きアドレス信号（−１）がアドレス記憶部５２に保持される（同様に、時刻Ｔ３のタイミングでホールドされる）。空きアドレス（−１）は、検索と学習命令（−１）が与えられた結果、時刻Ｔ３までには確定する。この空きアドレス（−１）は、後続の検索と学習命令（１）が与えられ、その検索結果として、学習内容一時記憶部１８の比較結果が採用された場合に、その一致アドレスとして用いられる。
【００６６】
学習の書き込み信号＿はＡＮＤゲート２６を介してＣＡＭ部１４に入力される。ＣＡＭ部１４では、学習の書き込み信号＿が時刻Ｔ３のタイミングで立ち上がると（学習（０）の立ち上がり）、フリップフロップ４４，４６，４８により時刻Ｔ２のタイミングまで遅延された検索データ（データＫ）が空きアドレス（−１）に書き込まれる。また、新たにデータが書き込まれたため、空きアドレスの再計算が行われ、時刻Ｔ５までには新たな空きアドレス（０）が確定する。
【００６７】
なお、時刻Ｔ２において、検索と学習命令（１）が与えられるが、時刻Ｔ３までに各ＣＡＭワードでの検索は完了している。このため、時刻Ｔ３での検索データＫの空きアドレス（−１）への書き込みは、検索と学習命令（１）の検索結果には影響を及ぼさない。また、空きアドレスの再計算は、ＣＡＭ部１４の構成に応じて計算時間が異なるが、この計算を時刻Ｔ５までに完了することにより後続の検索と学習命令を連続的に行うことが可能となる。
【００６８】
次に、前述の通り、時刻Ｔ２において、後続の検索と学習命令（１）が入力される。この時の検索データは時刻Ｔ０の時と同じデータＫである。
【００６９】
時刻Ｔ２では、先行する検索と学習命令（０）が完了していないため、データＫはまだ空きアドレス（−１）に対応するＣＡＭワードに登録されていない。しかし、学習内容一時記憶部１８のデータ記憶部５０には時刻Ｔ２でデータＫが保持されている。このため、検索と学習命令（１）が与えられると、時刻Ｔ３までに各ＣＡＭワードの検索結果（ＣＡＭワード内判定信号＿）として全て偽（結果（１）［偽］）が得られ、学習内容一時記憶部１８の比較結果（学習内容一時記憶部判定信号＿）として正しい検索結果である真（結果（１）［真］）が得られる。
【００７０】
以上のように、ＣＡＭ１０では、命令を入力可能なタイミングで検索と学習命令を連続的に与えることができるため、検索と学習命令のスループットを向上させることができる。
【００７１】
なお、上記実施形態と比べて、検索動作のレイテンシーが大きい場合や、空きアドレスの再計算に時間が必要な場合であっても、学習内容一時記憶部を複数備え、複数の学習内容一時記憶部で分散処理を行うことにより、ＣＡＭ部１４がどのような構成のものであっても、命令を入力可能なタイミングで検索と学習命令を連続的に与えることが可能となり、検索と学習命令のスループットを向上させることができる。
【００７２】
また、複数のＣＡＭをカスケード接続して使用し、外部から見かけ上１つのＣＡＭとして使用することが可能な技術が知られている。このような構成のＣＡＭでは、上位のＣＡＭの検索結果を順次下位のＣＡＭに伝達することにより、複数のＣＡＭをあたかも１つのＣＡＭとして使用することが可能である。本発明は、このように複数のＣＡＭをカスケード接続して使用している場合にも問題なく適用することが可能である。
【００７３】
本発明は、基本的に以上のようなものである。
以上、本発明の連想メモリについて詳細に説明したが、本発明は上記実施形態に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
【００７４】
【発明の効果】
以上詳細に説明した様に、本発明の連想メモリによれば、命令を入力可能なタイミングで検索と学習命令を連続的に与えることができるため、検索と学習命令のスループットを向上させることができる。
【図面の簡単な説明】
【図１】本発明の連想メモリの一実施形態の構成概略図である。
【図２】本発明の連想メモリの動作を表す一実施形態のタイミングチャートである。
【図３】従来の連想メモリの動作を表す一例のタイミングチャートである。
【符号の説明】
１０  連想メモリ
１２  デコーダ
１４  ＣＡＭ部
１６  学習制御部
１８  学習内容一時記憶部
２０  出力制御部
２２，２４  マルチプレクサ
２６，３２，５８  ＡＮＤゲート
２８，３０，３４，３８，４０，４４，４６，４８  フリップフロップ
４２  インバータ
５０  データ記憶部
５２  アドレス記憶部
５４  比較器
５６  ＯＲゲート
６０  出力選択論理
【図１】
2004334980.tif 000003
【図２】
2004334980.tif 000004
【図３】
2004334980.tif 000005