(57)【特許請求の範囲】
【請求項１】
Ｗビットのデータが入力されるデータ入力ポートと、
このデータ入力ポートを介して入力されるＷビットのデータが格納されるＮ（Ｗ＜Ｎ）ビットの第１のバッファおよびＭ（Ｗ＜Ｍ）ビットの第２のバッファと、
前記Ｗビットのデータを前記第１または第２のバッファに格納する入力制御手段と、
前記Ｗビットのデータが、前記第１のバッファにｋ回（ｋ×Ｗ≦Ｎ）または前記第２のバッファにｒ回（ｒ×Ｗ≦Ｍ）入力されたことを検知する検知手段と、この検知手段からの検知信号により、前記データ入力ポートを介して入力されるＷビットのデータが格納されるバッファを、前記第１または第２のバッファから、前記第２または第１のバッファに切り替える切り替え手段、および、
前記第１または第２のバッファのデータを用いて、連想メモリのメモリ領域への検索動作を行う検索制御手段とを有し、
前記検索動作のサイクル時間Ｔｓと、前記Ｗビットのデータを前記第１または第２のバッファへデータを書き込むサイクル時間Ｔｗとが、Ｔｗ＜Ｔｓを満足し、前記第１または第２のバッファのデータを用いて、前記連想メモリのメモリ領域への検索動作が行われている間に、前記第２または第１のバッファに次の検索動作のための前記Ｗビットのデータを入力することを特徴とする連想メモリ装置。
【請求項２】
Ｗビットのデータが入力されるデータ入力ポートと、
このデータ入力ポートを介して入力されるＷビットのデータが格納されるＮ（Ｗ＜Ｎ）ビットの第１のバッファおよびＭ（Ｗ＜Ｍ）ビットの第２のバッファと、
前記Ｗビットのデータを前記第１または第２のバッファに格納する入力制御手段と、
前記Ｗビットのデータが、前記第１のバッファにｋ回（ｋ×Ｗ≦Ｎ）または前記第２のバッファにｒ回（ｒ×Ｗ≦Ｍ）入力されたことを検知する検知手段と、この検知手段からの検知信号により、前記データ入力ポートを介して入力されるＷビットのデータが格納されるバッファを、前記第１または第２のバッファから、前記第２または第１のバッファに切り替える切り替え手段、および、
前記第１または第２のバッファのデータを用いて、連想メモリのメモリ領域への検索動作を行う検索制御手段と、
前記検索動作により得られた前記連想メモリのメモリ領域のヒットワードのアドレスおよびその内容の少なくとも一部を出力する出力ポートを有し、
前記検索動作のサイクル時間Ｔｓと、前記Ｗビットのデータを前記第１または第２のバッファへデータを書き込むサイクル時間Ｔｗとが、Ｔｗ＜Ｔｓを満足し、前記第１または第２のバッファのデータを用いて、前記連想メモリのメモリ領域への検索動作が終了した後に、前記第２または第１のバッファに次の検索動作のための前記Ｗビットのデータを入力することを特徴とする連想メモリ装置。
【請求項３】
前記連想メモリのメモリ領域からのデータの読み出しサイクル時間Ｔｒが、前記書き込みサイクル時間Ｔｗよりも長く（Ｔｗ＜Ｔｒ）、このメモリ領域から前記検索動作の終了と同時にデータの読み出しを開始するとともに、該読み出されたデータを一時保持する保持手段ＤＨを有し、この保持手段ＤＨからのデータの読み出しサイクル時間Ｔｈが前記読み出しサイクル時間Ｔｒよりも短い（Ｔｈ＜Ｔｒ）ことを特徴とする請求項２に記載の連想メモリ装置。
【請求項４】
前記連想メモリのメモリ領域への検索動作終了時に、検索ヒットしたメモリワードの少なくとも一部を自動的に前記保持手段ＤＨに保持する自動保持制御手段を有することを特徴とする請求項３に記載の連想メモリ装置。
【請求項５】
前記連想メモリのメモリ領域への検索動作により得られる、前記第１または第２のバッファのデータに一致するデータが格納されたメモリワードのアドレスをそれぞれ格納する第１および第２のヒットアドレスレジスタを有し、前記第１または第２のバッファのデータを用いて、前記連想メモリのメモリ領域への検索動作を行った後に、前記第２または第１のヒットアドレスレジスタに格納されたアドレスのワードメモリに格納された付属データの少なくとも一部を最新の情報に更新することを特徴とする請求項１、２、３または４に記載の連想メモリ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、外部とのインタフェースを最小にしながらかつ高速動作が可能な連想メモリ装置に関するものである。
【０００２】
【従来の技術】
従来からこの種の連想メモリ装置が開発されており、工業的にもＬＡＮ(Local Area Network)機器のパケットデータのポートスイッチングに使用されてきた。しかし、従来のものは、昨今のように高速データ通信の要求があまり厳しくない状況で開発されたものであるために、主にその周辺回路の設計を容易化することに主眼が置かれていた。このために、検索データ幅よりも小さい入出力ポートを１つのみ設けた構成となっていた。この従来例を以下に具体的に示す。
【０００３】
図９は従来の装置のブロック図を示すものである。この従来例の連想メモリ装置は、１６ビットの入出力ポート５１と、このポートから入力される検索データを入力する６４ビットの検索データレジスタ５２と、検索動作時に検索データレジスタ５２のどのビットをケア（検索対象と）するかを指定するマスクレジスタ５３と、検索対象のメモリ領域５０と、このメモリ領域５０のどのメモリワード５０ａが検索動作により一致したかを示すヒットアドレス（ＨＨＡ）を格納するヒットアドレスレジスタ（ＨＨＡレジスタ）５４とを有し、検索データレジスタ５２に入出力ポート５１からあるビット数、この例の場合は４８ビット、即ち３回データが入力された時（同図の▲１▼から▲３▼までのデータが入力された時）、自動的に検索動作を開始する検索制御回路５５を含む連想メモリ制御回路５６で構成され、これらのレジスタ等をアクセスするためにアドレスポート５７が用意されている。
【０００４】
また、この例ではメモリ領域５０を構成するメモリワード５０ａは６４ビットで構成され、このうち４８ビットが検索対象のＭＡＣアドレスを示し、残りの１６ビットにポート番号等の付属データが格納されている。このポート番号Ｐｋというのは、そのＭＡＣアドレスをもつ装置（端末）が属しているポートを示すものである。
各通信パケットデータの先頭部に存在する宛先ＭＡＣアドレスをこの連想メモリ装置に入力し、検索動作を行う。この検索動作によりヒットしたメモリワードのアドレス（ヒットアドレス（ＨＨＡ））がヒットアドレスレジスタ５４に格納される。また、ヒットしたメモリワード５０ａの付属データに格納されたポート番号Ｐｋが読み出され、そのポート番号によりパケットデータの出力ポートが決定される。
【０００５】
検索データレジスタ５２、ヒットアドレスレジスタ５４、マスクレジスタ５３等の通常のレジスタへのアクセスは、３０〜４０ｎｓ程度の高速アクセスが可能である。しかし、メモリ領域５０へのアクセスや検索動作は、その対象となるメモリ領域５０が高密度に設計されており、高速なアクセスが困難となり、アクセススピードは８０ｎｓ程度になってしまい検索処理スピードを遅くする原因となっている。
【０００６】
ここで、一般的な検索動作の手順を以下に示す。
Ａ）検索データ（４８ビット）の入力
Ｂ）検索動作
Ｃ）ヒットアドレス（ＨＨＡ）の読み出し
Ｄ）ヒットメモリの付属データの読み出し
ここで、上記Ｃ）の動作はパケットデータの出力ポート番号を知るだけならば不要であるが、多くの場合この１６ビットだけでは十分な付属データ幅がないことが多く外部に外部ＲＡＭを使用することが多く、その場合、上記ヒットメモリのアドレス（ＨＨＡ）に対応した外部ＲＡＭを定義しておいて、そのアドレス（ＨＨＡ）で外部ＲＡＭからデータを読み出すことが一般的に行われる。
【０００７】
このＡ）からＤ）の操作のタイミング概略を示したものが図１０である。このタイミング図で、長四角１つが１サイクルの４０ｎｓを表現し、この例ではＴ０からＴ８までの検索データ処理サイクルが８サイクルであることを表わす。またＴ８の下から右へＴ０、Ｔ１と続いているのは、この次の検索データ処理サイクルが連続することを表現している。
ここで、まず検索データレジスタ５２へのデータの入力はＴ０、Ｔ１およびＴ２のタイミングで各々１６ビットのデータが入力される。ただし、Ｔ２のタイミングでは、このデータの入力と同時に検索動作が検索制御回路５５によって実行される。この検索動作はメモリ領域５０へのアクセスであり８０ｎｓの時間を要する。しかる後のＴ４のタイミングで、ヒットアドレスレジスタ５４からの読み出し動作が開始され、４０ｎｓ後のＴ５のタイミングで入出力ポート５１から読み出される。
【０００８】
また、ついでヒットワード５０ａの付属データＰｋの読み出しがＴ５のタイミングで開始される。このデータの読み出しはメモリ領域５０へのアクセスであり、８０ｎｓの時間を要する。しかしてＴ７のタイミングでヒットワードの付属データ、即ちポート番号Ｐｋが入出力ポート５１から出力される。
さらに、入出力ポート５１は検索データの書き込みポートと兼用されており、次の検索データの処理のための検索データの書き込みをこのＴ７のタイミングで行うことが出来ない。そのために、次のサイクルまでに１サイクルのダミーサイクルが必要となる。つまり、一連の検索データ処理サイクルは８サイクル（３２０ｎｓ）かかることになる。
【０００９】
【発明が解決しようとする課題】
一方、昨今の高速データ通信では、この一連の検索データ処理サイクルを２００ｎｓに近づけ、更に２００ｎｓを切るように高速化したいという要求がある。しかしながら、この従来例に見られるように、周辺回路の設計容易化のために、検索データ幅よりも小さい入出力ポートを１つだけ備える従来の連想メモリ装置では、この要求に対し十分なパフォーマンスを提供できなくなっている。
【００１０】
本発明の目的は、上記従来技術の問題点を解消し、従来の連想メモリの周辺回路の設計容易性を損なうことなく、高速でパフォーマンスのよい連想メモリ装置を提供することにある。
【００１１】
【課題を解決するための手段】
上記目的を達成するために、本発明は、Ｗビットのデータが入力されるデータ入力ポートと、
このデータ入力ポートを介して入力されるＷビットのデータが格納されるＮ（Ｗ＜Ｎ）ビットの第１のバッファおよびＭ（Ｗ＜Ｍ）ビットの第２のバッファと、
前記Ｗビットのデータを前記第１または第２のバッファに格納する入力制御手段と、
前記Ｗビットのデータが、前記第１のバッファにｋ回（ｋ×Ｗ≦Ｎ）または前記第２のバッファにｒ回（ｒ×Ｗ≦Ｍ）入力されたことを検知する検知手段と、この検知手段からの検知信号により、前記データ入力ポートを介して入力されるＷビットのデータが格納されるバッファを、前記第１または第２のバッファから、前記第２または第１のバッファに切り替える切り替え手段、および、
前記第１または第２のバッファのデータを用いて、連想メモリのメモリ領域への検索動作を行う検索制御手段とを有し、
前記検索動作のサイクル時間Ｔｓと、前記Ｗビットのデータを前記第１または第２のバッファへデータを書き込むサイクル時間Ｔｗとが、Ｔｗ＜Ｔｓを満足し、前記第１または第２のバッファのデータを用いて、前記連想メモリのメモリ領域への検索動作が行われている間に、前記第２または第１のバッファに次の検索動作のための前記Ｗビットのデータを入力することを特徴とする連想メモリ装置を提供するものである。
また、本発明は、Ｗビットのデータが入力されるデータ入力ポートと、
このデータ入力ポートを介して入力されるＷビットのデータが格納されるＮ（Ｗ＜Ｎ）ビットの第１のバッファおよびＭ（Ｗ＜Ｍ）ビットの第２のバッファと、
前記Ｗビットのデータを前記第１または第２のバッファに格納する入力制御手段と、
前記Ｗビットのデータが、前記第１のバッファにｋ回（ｋ×Ｗ≦Ｎ）または前記第２のバッファにｒ回（ｒ×Ｗ≦Ｍ）入力されたことを検知する検知手段と、この検知手段からの検知信号により、前記データ入力ポートを介して入力されるＷビットのデータが格納されるバッファを、前記第１または第２のバッファから、前記第２または第１のバッファに切り替える切り替え手段、および、
前記第１または第２のバッファのデータを用いて、連想メモリのメモリ領域への検索動作を行う検索制御手段と、
前記検索動作により得られた前記連想メモリのメモリ領域のヒットワードのアドレスおよびその内容の少なくとも一部を出力する出力ポートを有し、
前記検索動作のサイクル時間Ｔｓと、前記Ｗビットのデータを前記第１または第２のバッファへデータを書き込むサイクル時間Ｔｗとが、Ｔｗ＜Ｔｓを満足し、前記第１または第２のバッファのデータを用いて、前記連想メモリのメモリ領域への検索動作が終了した後に、前記第２または第１のバッファに次の検索動作のための前記Ｗビットのデータを入力することを特徴とする連想メモリ装置を提供する。
【００１２】
ここで、前記連想メモリのメモリ領域からのデータの読み出しサイクル時間Ｔｒが、前記書き込みサイクル時間Ｔｗよりも長く（Ｔｗ＜Ｔｒ）、このメモリ領域から前記検索動作の終了と同時にデータの読み出しを開始するとともに、該読み出されたデータを一時保持する保持手段ＤＨを有し、この保持手段ＤＨからのデータの読み出しサイクル時間Ｔｈが前記読み出しサイクル時間Ｔｒよりも短い（Ｔｈ＜Ｔｒ）のが好ましい。
また、前記連想メモリのメモリ領域への検索動作終了時に、検索ヒットしたメモリワードの少なくとも一部を自動的に前記保持手段ＤＨに保持する自動保持制御手段を有するのが好ましい。
さらに、前記連想メモリのメモリ領域への検索動作により得られる、前記第１または第２のバッファのデータに一致するデータが格納されたメモリワードのアドレスをそれぞれ格納する第１および第２のヒットアドレスレジスタを有し、前記第１または第２のバッファのデータを用いて、前記連想メモリのメモリ領域への検索動作を行った後に、前記第２または第１のヒットアドレスレジスタに格納されたアドレスのワードメモリに格納された付属データの少なくとも一部を最新の情報に更新するのが好ましい。
【００１３】
【発明の実施の形態】
本発明に係る連想メモリ装置を添付の図面に示す好適実施例に基づいて以下に詳細に説明する。
【００１４】
図１に本発明の連想メモリ装置の一実施例のブロック図を示す。
図１に示す連想メモリ装置は、検索の対象となる複数の６４ビットメモリワード１０ａからなるメモリ領域１０と、１６ビットの検索データが入力され、また検索により一致したメモリワード１０ａのヒットアドレス（ＨＨＡ）および付属データ（ポート番号Ｐｋ）が出力される入出力ポート１１と、入出力ポート１１から入力された検索データを保持する検索データレジスタＡ１２ａおよびＢ１２ｂと、検索データのうち検索対象とするビット以外のビットをマスクするマスクレジスタ１３と、検索データと一致（ヒット）したデータを持つメモリワード１０ａのヒットアドレス（ＨＨＡ）を格納するヒットアドレスレジスタ（ＨＨＡレジスタ）１４と、検索データレジスタＡ１２ａおよびＢ１２ｂへの入出力ポート１１からの検索データの入力を交互に制御するとともに、検索動作を制御する検索データレジスタ制御および検索制御回路１５と、この制御回路１５を含み連想メモリ装置全体の制御を行う連想メモリ制御回路１６と、検索データレジスタＡ１２ａ，Ｂ１２ｂ、ヒットアドレスレジスタ１４および制御回路１５や１６などにアクセスするためのアドレスポート１７と、検索データにヒットしたメモリワード１０ａの付属データを含む内容を一時的に保持するデータ保持回路１８とを有する。
【００１５】
この連想メモリ装置は、図９に示す従来例と同様に、１６ビットの入出力ポート１１を有し、この入出力ポート１１からＭＡＣアドレスデータ（４８ビット）が３回にわたって入力され、検索処理が行われる。図示例装置は、外見上（特にピンカウント）は、図９に示される従来のものと何ら変わるものではなく、この連想メモリ装置を制御するための周辺装置が必要とする制御ピン数は全く同じであり、仮にこの両者の装置が同一ボード上に実装される場合、その実装に必要とされる実装面積は、全く従来のものと同じとなるものである。
【００１６】
しかし、ここでこの連想メモリ装置が図９の従来例と大きく異る点は、２つの検索データレジスタＡ１２ａおよびＢ１２ｂが設けられている点である。図示例装置において、この検索データレジスタＡ１２ａおよび検索データレジスタＢ１２ｂの動作方法について以下に述べる。
【００１７】
まず、ＭＡＣアドレスデータ（４８ビット）のうちの３２ビットが１６ビットづつ、それぞれ検索データレジスタＡ１２ａの同図▲１▼および▲２▼のエリアに格納される。この格納はレジスタへの書き込みであり高速に（１サイクル：書き込みサイクル時間Ｔｗ＝４０ｎｓ（図２参照）で）行われる。
次いで、残りの１６ビットが検索データレジスタＡ１２ａの同図▲３▼のエリアに書き込まれると同時に、これら検索データレジスタＡ１２ａに格納された４８ビットのＭＡＣアドレスデータで、メモリ領域１０への検索動作が開始される。
【００１８】
この時、従来のものと同様に、マスクレジスタ１３により検索データレジスタＡ１２ａのどのビットが検索対象ビットになるかが決定される。今の場合は、検索データレジスタＡ１２ａのエリア▲１▼から▲３▼の４８ビットが対象ビットであり、エリア▲４▼の１６ビットが非対象となり、たとえばこのマスクレジスタ１３の検索データレジスタＡ１２ａのエリア▲１▼〜▲３▼に相当する４８ビットに‘０’を、エリア▲４▼に相当する１６ビットに‘１’を定義することでマスク処理がなされる。
【００１９】
ところで、このメモリ領域１０への検索動作は、高速な処理が困難であり、どうしても２サイクル（検索動作サイクル時間Ｔｓ＝８０ｎｓ（図２参照））かかってしまう。この２サイクルの前半の１サイクルは検索データレジスタＡ１２ａの▲３▼のエリアへのデータの書き込みであり、その間入出力ポート１１は書き込みデータで専有されてしまうが、後半の１サイクルに関しては、入出力ポート１１はアイドル状態である。
もともと周辺制御回路の設計の容易化とコストダウンを考えて１６ビットの入出力ポート１１を採用するが故に、ＭＡＣアドレス（４８ビット）のデータ入力に３サイクルも必要になっているわけであり、この制限下で最大のパフォーマンスを発揮させるという点では、上記入出力ポート１１のアイドル状態は、極めて不経済といわざるを得ない。
【００２０】
そこで、もう１つの検索データレジスタＢ１２ｂを設けることで、次のＭＡＣアドレスデータ（４８ビット）の先頭の１６ビットを同レジスタＢ１２ｂの▲１▼のエリアに書き込むことが可能となる。
このようにすることで本発明の連想メモリ装置によりＭＡＣアドレスデータを連続的に検索処理する場合、あたかもＭＡＣアドレスデータが４８ビット（１６ビット×３サイクル）ではなく、３２ビット（１６ビット×２サイクル）のようにデータ入力サイクルを１つ不用にすることが出来る。
【００２１】
このタイミングチャートの一例の概略図を図２に示す。
同図において、Ｔ０およびＴ１のタイミングで▲２▼および▲３▼のデータが検索データレジスタＡ１２ａに入力され、検索動作がスタート（Ｔ１のタイミングで）しているが、これは、すでに１つ前のＭＡＣアドレスデータの検索データ処理サイクルで、今回のＭＡＣアドレスデータの先頭１６ビットが同じレジスタＡ１２ａのエリア▲１▼（図１参照）に入力されていると仮定している。
【００２２】
また、今回のＭＡＣアドレスデータの検索動作が同図Ｔ１から開始されると同時に、次のサイクルのＴ２で次のＭＡＣアドレスデータの先頭１６ビットが検索データレジスタＢ１２ｂの▲１▼のエリア（図１参照）に書き込まれる。
同様に、Ｔ６のタイミングから次のＭＡＣアドレスデータの検索処理が開始されるが、そのＴ６（Ｔ０）から２サイクルで残り３２ｂｉｔのデータがエリア▲２▼，▲３▼と順次書き込まれ、Ｔ８（Ｔ２）のタイミングでは、更に次のＭＡＣアドレスデータの先頭１６ビットが検索データレジスタＡ１２ａの図１のエリア▲１▼に書き込まれる。
【００２３】
これらの検索データレジスタＡ１２ａおよび検索データレジスタＢ１２ｂを交互に制御するものが、図１に示す検索データレジスタ制御および検索制御回路１５である。
この検索データレジスタ制御および検索制御回路１５には、図示しないが少なくとも１つのデータ書き込み切り換えレジスタを持ち、検索データレジスタＡ１２ａと検索データレジスタＢ１２ｂの切りかえをコントロールする。即ち、この例では、入出力ポート１１から検索データレジスタＡ１２ａおよびＢ１２ｂの一方への書き込み回数をカウントし、それが３回になれば、検索データレジスタＡ１２ａおよびＢ１２ｂのもう一方へ書き込み先を変更するものである。
【００２４】
つまり、この切り換えレジスタにより両検索データレジスタＡ１２ａおよびＢ１２ｂがトグルするようになっているわけである。もちろん、このトグル制御は初期値を持ち、この連想メモリ装置をリセットすると、最初の検索データレジスタへの１６ビットの書き込みは、例えば検索データレジスタＡ１２ａの方に定義される。
また、このようにトグルの初期値を持つことで、検索データレジスタＡ１２ａから検索データレジスタＢ１２ｂへ、およびその逆に検索データレジスタＢ１２ｂから検索データレジスタＡ１２ａへのデータ書き込みの切り換えを定義するレジスタを２つ持ち、切り換えタイミングを別々に制御することも可能である。
【００２５】
さらに、今までの説明では検索データレジスタＡ１２ａまたは検索データレジスタＢ１２ｂへのデータの書き込みが完了すると同時に各検索動作がスタートしていたが、この検索動作のタイミングは、別の検索動作タイミング定義レジスタを設けることもできる。その場合も、各検索データレジスタＡ１２ａまたは検索データレジスタＢ１２ｂに対して１つあるいは別々に設けることができる。
この定義レジスタを設けることで、例えば上述した例では、４８ビットすなわち１６ビットデータが３回入力されると検索データレジスタが入れ変わるように設定されていたが、検索動作タイミング定義レジスタを例えば２回に定義しておくと、各検索データレジスタＡ１２ａまたはＢ１２ｂの図１に示す▲２▼のエリアに検索データが入力された時に、検索動作をスタートさせることが可能となり、検索データの書き込み先の検索データレジスタＡ１２ａおよびＢ１２ｂの切り換えと検索開始タイミングを別々に制御することが可能になる。
【００２６】
このように検索データレジスタＡ１２ａ、Ｂ１２ｂを２つ設けることは、一見単純に見えるが、本発明の連想メモリ装置の特性とその使用方法を注意深く考察することではじめて成しえるものである。その根拠としては、実際このレジスタの設計そのものは決して複雑ではなく、外部仕様を全く変更することなく実現できるわけであるが、従来の連想メモリ装置構成として設けられていない点からもうかがえる。
【００２７】
また、この例では、説明を単純化するために検索動作（Ｔｓ）を通常のレジスタアクセス（Ｔｗ）の２倍程度に設定しており、そのため１サイクルのみの高速化にとどまっているが、実際はレジスタアクセスに対し検索動作はかなり遅く、このように検索データレジスタを２つ設けることで次の検索データの準備を完全に済ませることが可能であり、この新しい構成を持つ連想メモリ装置の高速通信への寄与は極めて大きいといえる。
【００２８】
さらに、本実施例に示されるもう１つの高速化技術について以下に説明する。これもやはり、この種の装置の構成、つまりスピードよりも高集積を第１の目的として設計された大容量メモリと高速アクセスが可能なレジスタ群の両者をもち、一連の検索動作でこの両者へのアクセスが必須であることに着目し、充分な熟考の後に考案されたものである。
【００２９】
図２あるいは従来例の図１０において、検索動作の後に、ヒットアドレス（ＨＨＡ）レジスタ１４からヒットアドレス（ＨＨＡ）を読み出す。もちろんこれはレジスタへのアクセスであり高速（１サイクル）での読み出しが可能であるが、この次のヒットアドレスで指示されるヒットしたメモリワード１０ａの付属データの読み出しは、高密度設計されたメモリ領域１０へのアクセスとなり、２サイクル（メモリ領域からのデータの読み出しサイクル時間Ｔｒ＝８０ｎｓ）必要となる（図２および図１０参照）。
【００３０】
しかしながら、ヒットアドレス（ＨＨＡ）の読み出しに続いて付属データを読み出すことを手順として決めてやるならば、これは図１のブロック図に示されるように、内部的には異るエリアへのアクセスであり、ＨＨＡレジスタ１４の内容を入力ポート１１に読み出しながら、同時にメモリ領域１０の内容を一時的に内部に新たに設けたデータ保持回路１８に読み出す操作をすることは可能である。
つまり図２のＴ３のタイミングでＨＨＡレジスタ１４のデータ読み出しと同時にメモリ領域１０のヒットワードの読み出しを開始しており、このデータをデータ保持回路１８に一時的に蓄積しておく。このデータ保持回路１８の読み出しはＴ４のタイミングで開始され、この時点ではまだ正しいヒットワードのデータは出力されないが、Ｔ５の時点までには正しい値として出力される（１サイクル：データ保持回路からのデータの読み出しサイクル時間Ｔｈ＝４０ｎｓ（図２参照））。
【００３１】
このようにすることで、従来２サイクルかかっていたヒットしたメモリワード１０ａのデータをあたかも１サイクルで読み出せるかのように扱うことが可能となる。
もちろんこの場合は、この動作のトリガーはＨＨＡレジスタ１４の読み出しであり、このＨＨＡレジスタ１４を読み出す時は常にこの動作であるとは限らず、かえってこの動作が次の動作を防げる可能性がある。そこでこの一連のヒットアドレス（ＨＨＡ）の読み出しと、そのメモリ内容の読み出しが連続する場合は、通常のＨＨＡレジスタ１４へのアクセスと異るアドレスをアドレスポート１７から入力するように定義しておく。
【００３２】
このような工夫により図２に示すように、一連の検索処理サイクルは６サイクル、すなわち６×４０ｎｓ＝２４０ｎｓと従来の３２０ｎｓから２５％もスピードがアップしたことになる。しかも、この高速化は、外部のインタフェースを全く変更することなく、従来の周辺回路の設計容易性やコストを全く犠牲にすることなく、得ることができるのである。
また、これらの例では簡単のためにレジスタへのアクセスを１サイクル４０ｎｓと仮定しているが、実際はもっと高速にすることが可能であり、上述のように検索データは前の検索サイクルで完了し、実際にはさらに１〜２サイクル程度の時間短縮が可能であり、これらの技術の工業的価値は極めて高い。
【００３３】
さらに、この技術的価値を裏付けるものとして、従来例における高速（ハイスピード）版の説明を以下に簡単に述べる。
従来のものは、その外部インタフェースの数を少なくし、周辺制御装置の設計容易化と、コストダウンを主眼として入出力ポートを１６ビットにしていた。しかしながら、検索データ処理サイクルの高速化の要求により改善が望まれており、その入出力ポートを３２ビット化することが、高速化を達成すべく提案されている。
【００３４】
つまり、図１０で４８ビットのＭＡＣアドレスデータを入力するのに３回要したサイクルを２回に減らすことが提案されているわけである。この改善によって一連の検索データ処理サイクルは、３２０ｎｓ（４０ｎｓ×８）から２８０ｎｓ（４０ｎｓ×７）となったが、そのために外部インタフェースピンが１６本（１６ビット分）も増加してしまい、周辺制御装置のコストアップにつながってしまっている。
ところが本発明の第１の実施例では、外部インタフェースピンの増加を‘０’におさえ、すなわちなくし、かつ２４０ｎｓ（４０ｎｓ×６）を実現しており、本発明の優れている点を明確に示すものとなっている。
【００３５】
さらに本発明者は、ここでもう１つの高速化への提案をするものである。というのも、上述の第２の従来例のごとく外部インタフェースを変更するならば、さらにパフォーマンスが得られることを知見したからである。
図３に、本発明の連想メモリ装置の第２の実施例のブロック図を示す。
【００３６】
同図に示す連想メモリ装置が図１に示す連想メモリ装置と異る点は、データ保持回路１８およびＨＨＡレジスタ１４からの出力をセレクタ３８をを介して、出力ポート３７から出力することが可能になっている点である。
この出力ポート３７は、一例として１６ビットからなり、その出力のセレクトのためのセレクト信号３９が設けられている。
つまり、従来例の入出力ポート１１を１６ビットから３２ビットへ拡張したものとほぼ同数の外部インタフェースの増加になるがパフォーマンスははるかに向上する。
【００３７】
図３に示す連想メモリ装置における一連の検索データ処理サイクルのタイミングチャートを示したものが図４である。
１６ビットの出力ポート３７を設けるだけで、検索データの入力が極めて容易になる。すなわち、図２で示されるように、Ｔ３からＴ４のヒットアドレス（ＨＨＡ）の読み出し時や、Ｔ４からＴ５のヒットワードからの付属データの読み出し時に、この出力ポート３７を利用することで入出力ポート１１が専有されることがなくなり、次の検索のＭＡＣアドレスデータの一部を検索データレジスタＡ１２ａまたは検索データレジスタＢ１２ｂに格納することが可能となる。
【００３８】
図４に示すタイミングチャートのＴ２およびＴ３のタイミングで次の検索対象となるＭＡＣアドレスデータの３２ビット（１６ビット×２）が検索データレジスタＢ１２ｂに入力される。すなわち、次の検索は、ＭＡＣアドレスデータの残りの１６ビットが検索データレジスタＢ１２ｂに入力されたＴ４（Ｔ０）のタイミングで開始されるわけである。
同様にしてこのタイミングチャートでは、すでに今回の検索のＭＡＣアドレスデータの３２ビット（１６ビット×２）が既に入力されているものと仮定して、Ｔ０のタイミングで最後の１６ビットが検索データレジスタＡ１２ａに入力されると同時に検索動作が開始されるものとして説明する。
【００３９】
Ｔ０のタイミングから検索動作がスタートし、Ｔ２でヒットアドレスの読み出しがＨＨＡレジスタ１４から行われる。この時第１の実施例と同様にヒットしたメモリワード１０ａの内容の読み出しも同時に行われ、Ｔ４のタイミングで出力ポート３７に出力される。
また、従来例あるいは本発明の第１の実施例では、Ｔ４の後に次の検索データ処理サイクルが始まる前にダミーサイクルを挿入する必要があった。これは、ヒットワードの内容の読み出しデータと次の検索のためのデータが同一入出力ポート１１でぶつかるのを防ぐためであったが、この第２の実施例のごとくヒットワードの内容と読み出す出力ポート３７と、次の検索のデータを書き込む入出力ポート１１が異るためにダミーサイクルが不要になる。
【００４０】
以上の結果、本実施例では、一連の検索データ処理サイクルは何と４サイクルの１６０ｎｓ（４０ｎｓ×４）となり、１６ビットの入出力ポート１１を有する図９に示す従来例の３２０ｎｓの１／２となり、２倍高速化されている。
また、３２ビットの入出力ポートを持つ従来の高速版の一連の検索データ処理サイクルの７サイクル２８０ｎｓと比較しても、１．７５倍改善されており、本発明の第１の実施例との６サイクルと比較しても、１．５倍のスピードアップとなっている。
また、これは高速データ通信での使用を求めるユーザの２００ｎｓを充分満足するものとなっている。
すなわち、従来デバイスの改善として３２ビットの入出力ポートを持つものとほぼ同じ外部インタフェースを持ちながら、その性能で格段に優れたものとなっており、これは通信で使用される方法と、この種の装置が持つ特性を充分考慮し、創意工夫をすることで始めてなし得たものであり、その工業的価値は今後の高速データ通信にとって極めて重要なハイパフォーマンス、ローコストの連想メモリ装置となりうるものである。
【００４１】
ところで、上述する実施例は、パケットデータの先頭部に存在するＭＡＣアドレスに対応するポート番号等の付属データを取得するために、一連の動作として、検索動作の後、ヒットアドレスのメモリワード１０ａに格納されているポート番号等の付属データを読み出す場合の一例を示したものである。
以下の実施例においては、付属データを常時最新の情報に更新するために、一連の動作として、検索動作の後、ヒットアドレスのメモリワード１０ａに格納されている付属データを書き替える場合の一例について説明する。
【００４２】
例えば、本発明の連想メモリ装置を用いて、パケットデータの先頭部に存在するＭＡＣアドレスに対応するポート番号等の付属データを取得するスイッチング機器においては、それぞれのポートに、それぞれのパーソナルコンピュータ（以下、ＰＣという）が接続されて使用される。
【００４３】
ここで、あるＰＣを接続するポートをポート１からポート３に変更した場合、このＰＣに対応するＭＡＣアドレスのデータが格納されたワードメモリ１０ａの付属データに格納されたポート番号をポート１からポート３に更新しておかなければ、このＰＣへ転送されるパケットデータは、実際に接続されているポート３ではなく、以前に接続されていたポート１に転送されてしまう。これを防止するために、それぞれのＰＣが接続されているポート番号を常時最新の情報に更新する必要がある。
【００４４】
また、ワードメモリ１０ａのワード数は、ネットワーク上の全体のＰＣの台数よりも少ないのが一般的であり、各メモリワード１０ａには、選択的に特定のＰＣの情報だけが格納される。連想メモリ装置の使用効率を向上するために、例えば付属データとして、使用時間を管理するためのタイムスタンプ情報を格納し、このタイムスタンプ情報を常に更新して、使用頻度の高いＰＣの情報だけをワードメモリ１０ａに登録している。従って、それぞれのワードメモリ１０ａのタイムスタンプ情報を常時最新の情報に更新する必要がある。
【００４５】
このように、連想メモリ装置の一般的な使用条件下では、検索動作の後、ヒットアドレスのメモリワード１０ａからの付属データの読み出し（リード）、あるいは、ヒットアドレスのメモリワード１０ａへの更新された付属データの書き込み（ライト）を一連の動作として、この一連の動作が連続的に繰り返し行われる。
【００４６】
ここで、図５に、本発明の連想メモリ装置におけるライト、リードおよび検索の各処理サイクルの一例の概念図を示す。同図に示すように、ヒットアドレスのメモリワード１０ａへの付属データのライトは、まず、Ｌ＆Ｄ（Latch ＆ Decode ：ラッチおよびデコード）フェーズにおいて、外部からのアドレスをラッチし、これをデコードし、且つその時の外部からの要求がデータライトであることで、この外部からのアドレスがヒットしたメモリワードを指し、且つデータの書き込みであることを確認し、その後、ＥＸＥＣ（Execution ：実行）フェーズにおいて、ヒットアドレスで指定されるメモリワード１０ａに付属データをライトすることによって行われる。この時の書き込みデータは、前述のＬ＆Ｄフェーズにおいてラッチされた外部から入力されるデータが使用される。
【００４７】
また、付属データのリードは、上記同様Ｌ＆Ｄフェーズで、外部から与えられたアドレスがヒットしたメモリワードを示し、且つその時の要求がデータリードであると、ＥＸＥＣフェーズにおいて、ヒットアドレスで指定されるメモリワード１０ａから、ポート番号やタイムスタンプ情報等の付属データをリードし、ＷＡＩＴ（ウエイト）フェーズにおいて、ワードメモリ１０ａからリードされた付属データをデータ保持回路１８にラッチし、ＯＵＴＰＵＴ（出力）フェーズにおいて、データ保持回路１８にラッチされた付属データを出力ポート３７から出力することにより行われる。
【００４８】
検索は、Ｌ＆Ｄフェーズにおいて、アドレスポート１７から入力されたアドレスをラッチし、これをデコードすることで、そのアドレスが検索を示すことが解釈され、ＥＸＥＣフェーズにおいて、デコードされたアドレスの一部で指定される検索データレジスタＡ１２ａまたはＢ１２ｂの検索データと各メモリワード１０ａのＭＡＣアドレスのデータとを比較し、ＷＡＩＴフェーズにおいて、ヒットアドレスをＨＨＡレジスタ１４にラッチし、ＯＵＴＰＵＴフェーズにおいて、ＨＨＡレジスタ１４にラッチされたヒットアドレスを出力ポート３７から出力することにより行われる。
【００４９】
このように連続した一連の動作をパイプライン的に行う場合の例を図６に示す。この一連の動作とは、検索データレジスタＡ１２ａの検索データを用いて検索Ａを行った後、この検索Ａによって出力されるヒットアドレスのワードメモリ１０ａに付属データのリードまたはライト、この実施例においてはリード（Ｒ／ＷＡ）を行い、次に、検索データレジスタＢ１２ｂの検索データを用いて検索Ｂを行った後、この検索Ｂによって出力されるヒットアドレスのメモリワード１０ａに付属データのライト（Ｒ／ＷＢ）を行うことを交互に繰り返すものとする。
【００５０】
図６のタイミングチャートに示すように、▲１▼番目の外部からの要求動作の検索Ａでは、ＥＸＥＣフェーズの後、メモリ領域１０からヒットアドレス（ＨＨＡ）が出力される。一方、この検索動作から得られるヒットアドレス（ＨＨＡ）のメモリワード１０ａの付属データをリードするための外部からの要求を、図６の▲２▼番目の外部からの要求動作のタイミングで入力すると、そのリード動作の実行のＥＸＥＣフェーズが、▲１▼番目の検索動作のＥＸＥＣフェーズの直後に実行されてしまい、ＷＡＩＴフェーズを経ていないので、正しいＨＨＡアドレスによるリードが実行できない。
【００５１】
そこで、この外部からのリード要求動作を図６の▲３▼番目のタイミングで入力する。こうすることで、▲１▼番目の検索動作の結果がＷＡＩＴの後のタイミングで、リードのＥＸＥＣフェーズが実行されるために、ＨＨＡレジスタ１４にラッチされた正しいヒットアドレス（ＨＨＡ）を用いてリード動作が実行される。外部からの要求動作の▲４▼番目の検索Ｂおよび▲６▼番目の検索Ｂのヒットアドレスのメモリワード１０ａへの付属データのライト（Ｒ／ＷＢ）についても全く同様である。しかしながら、このように正しく外部からの要求動作が実行されるには、図６の▲２▼番目や▲５▼番目のアイドル状態が必要となる。
【００５２】
従って、使用効率の点から言えば、検索Ａの後、直ちに付属データのリード（Ｒ／ＷＡ）を行い、続いて、検索Ｂの後、直ちに付属データのライト（Ｒ／ＷＢ）を行い、以後同様にして、検索および付属データのリード／ライトを繰り返し行うのが好ましいのは言うまでもないことである。しかしながら、上記理由により、検索Ａと付属データのリード（Ｒ／ＷＡ）との間、および、検索Ｂと付属データのライト（Ｒ／ＷＢ）との間に、何も行われないアイドル状態の期間が挿入されるため、使用効率を向上させことができないという問題点が生じる。
【００５３】
この問題点を解決するものが、図７に示す連想メモリ装置である。
図示例の連想メモリ装置は、本発明の連想メモリ装置の第３の実施例となるもので、同図に示す連想メモリ装置が、図３に示す連想メモリ装置と異なる点は、２つのＨＨＡレジスタＡ１４ａ，Ｂ１４ｂが設けられている点である。これらのＨＨＡレジスタＡ１４ａ，Ｂ１４ｂには、それぞれ検索データレジスタＡ１２ａ，Ｂ１２ｂの検索データに一致するＭＡＣアドレスデータが格納されたメモリワード１０ａのヒットアドレスが格納される。
【００５４】
すなわち、検索データレジスタＡ１２ａの検索データを使って各メモリワード１０ａを検索したときには、この検索データに一致するＭＡＣアドレスのデータが格納されたメモリワード１０ａのアドレスが、ヒットアドレスとしてＨＨＡレジスタＡ１４ａに格納される。また、検索データレジスタＢ１２ｂの検索データを使って、各メモリワード１０ａを検索したときには、この検索データに一致するＭＡＣアドレスのデータが格納されたメモリワード１０ａのアドレスが、ヒットアドレスとしてＨＨＡレジスタＢ１４ｂに格納される。
【００５５】
なお、図示していないが、ヒットフラグ、すなわち、検索動作の後、検索データレジスタＡ１２ａまたはＢ１２ｂの検索データに一致するＭＡＣアドレスのデータが格納されたワードメモリ１０ａが存在する（ヒット）かどうかという情報を保持するヒットフラグレジスタや、マルチヒットフラグ、すなわち、検索データに一致するＭＡＣアドレスのデータが格納されたワードメモリ１０ａが複数存在する（マルチヒット）かどうかという情報を保持するマルチヒットフラグレジスタ等も、ヒットしたかどうか、マルチヒットかどうかを確認するために、必要に応じてそれぞれ２つ設けても良い。
【００５６】
続いて、図７の連想メモリ装置における一連の検索データ処理サイクルのタイミングチャートを図８に示す。ここでは、検索データレジスタＡ１２ａを使用して検索Ａを行った後、この検索Ａの前に行われた検索Ｂによって出力されるヒットアドレスのワードメモリ１０ａに付属データのライト（Ｒ／ＷＢ）を行い、次に、検索データレジスタＢ１２ｂを使用して検索Ｂを行った後、この検索Ｂの前に行われた検索Ａによって出力されるヒットアドレスのメモリワード１０ａに付属データのリード（Ｒ／ＷＡ）を行うことを交互に繰り返すものとする。
【００５７】
図８のタイミングチャートに示すように、▲１▼番目の検索Ａでは、ＥＸＥＣフェーズの後、メモリ領域１０からヒットアドレス（ＨＨＡ）が出力され、ＷＡＩＴフェーズでＨＨＡレジスタＡ１４ａにラッチされる。この検索Ａに続く▲２▼番目の付属データのライト（Ｒ／ＷＢ）では、図示していないが、検索Ａの直前に行われた検索Ｂによって、ＨＨＡレジスタＢ１４ｂにラッチされたヒットアドレスをＥＸＥＣフェーズで使用し、▲１▼番目の検索Ａの直前に行われた検索Ｂのヒットアドレスのワードメモリ１０ａに新しい付属データをライトする。
【００５８】
また、この▲２▼番目の付属データのライト（Ｒ／ＷＢ）に続いて▲３▼番目の検索Ｂが行われ、ＥＸＥＣフェーズの後、メモリ領域１０からヒットアドレス（ＨＨＡ）が出力され、ＷＡＩＴフェーズでＨＨＡレジスタＢ１４ｂにラッチされる。この▲３▼番目の検索Ｂに続く▲４▼番目の付属データのリード（Ｒ／ＷＡ）では、▲３▼番目の検索Ｂの直前に行われた▲１▼番目の検索ＡによってＨＨＡレジスタＡ１４ａにラッチされたヒットアドレスをＥＸＥＣフェーズで使用し、検索Ａのヒットアドレスのワードメモリ１０ａから付属データをリードする。
【００５９】
このように、図７の連想メモリ装置では、２つのＨＨＡレジスタＡ１４ａ，Ｂ１４ｂを設け、検索Ａの後、この検索Ａの直前に行われた検索Ｂのヒットアドレスのワードメモリ１０ａに付属データのライト（Ｒ／ＷＢ）を行い、同じように、検索Ｂの後、この検索Ｂの直前に行われた検索Ａより得られるヒットアドレスのワードメモリ１０ａから付属データをリード（Ｒ／ＷＡ）することができる。これにより、検索と付属データのリード／ライトとの間に、アイドル状態の期間が挿入されることなく一連の検索動作を行うことができるようになり、連想メモリ装置の使用効率を向上させることができる。図８の実施例では、▲１▼から▲４▼番までで一連の動作が終了する。一方、図６では、これが▲１▼から▲６▼番までかかってしまう。
【００６０】
【発明の効果】
以上詳述したように、本発明では、従来の周辺制御回路の設計の容易性やコストダウンのために外部インタフェースの数（ピン数）の増加を抑え、かつ、通信データの処理手順とこの種の連想メモリ装置の特性を鑑み熟考のすえ、以下の４点の創意工夫をなすことで飛躍的に、その一連の検索データの処理スピードを改善することができたものである。
１）検索データレジスタを２つ設け、一方が比較的長いサイクルを要する検索動作中に、次の検索データの一部をもう一方の検索データレジスタに入力し、これを交互に制御することで一連の検索データ処理サイクルを短くする。
２）メモリ領域からのデータの読み出しを、他のレジスタ（ＨＨＡレジスタ）アクセスと同時に行い、一時的に内部保持回路に保持し、次の短いサイクルでこの内部保持回路からデータを読み出すことで見かけ上のスピード向上をはかっている。
３）また、従来装置のスピード改善版のように単に入出力ポートを拡大するのではなく、高速化のためにネックとなっている要素を分析し、１６ビットの出力ポートを設けることで、ほぼ同じ外部インタフェースの増加に抑えながら、従来のものの２倍のスピードアップを達成している。
４）さらに、２つのＨＨＡレジスタを設け、一方が検索のために使われているときに、他方にラッチされた、この検索の直前に行われた検索のヒットアドレスのワードメモリに付属データを書き込むことを交互に制御することによって、無駄なアイドル状態のサイクルが発生するのを防止している。
以上の創意工夫により、本発明の連想メモリ装置は極めてコストパフォーマンスの良い装置となっており、その工業的価値は大きいものである。
【図面の簡単な説明】
【図１】  本発明に係る連想メモリ装置の一実施例のブロック図である。
【図２】  図１に示す連想メモリ装置の検索データ処理サイクルの一例の概略タイミングチャートである。
【図３】  本発明に係る連想メモリ装置の別の実施例のブロック図である。
【図４】  図３に示す連想メモリ装置の検索データ処理サイクルの一例の概略タイミングチャートである。
【図５】  本発明の連想メモリ装置におけるライト、リードおよび検索の各処理サイクルの一例の概念図である。
【図６】  図３に示す連想メモリ装置の検索データ処理サイクルの別の例の概略タイミングチャートである。
【図７】  本発明に係る連想メモリ装置のさらに別の実施例のブロック図である。
【図８】  図７に示す連想メモリ装置の検索データ処理サイクルの一例の概略タイミングチャートである。
【図９】  従来の連想メモリ装置のブロック図である。
【図１０】  図９に示す連想メモリ装置の検索動作のタイミングチャートである。
【符号の説明】
１０  メモリ領域
１０ａ  メモリワード
１１  入出力ポート
１２ａ，１２ｂ  検索データレジスタ（Ａ，Ｂ）
１３  マスクレジスタ
１４，１４ａ，１４ｂ  ヒットアドレス（ＨＨＡ）レジスタ
１５，３５  検索データレジスタ制御および検索制御回路
１６，３６  連想メモリ制御回路
１７  アドレスポート
１８  データ保持回路
３７  出力ポート
３８  セレクタ
３９  セレクト信号
【図１】
0003766166.tif 000002
【図２】
0003766166.tif 000003
【図３】
0003766166.tif 000004
【図４】
0003766166.tif 000005
【図５】
0003766166.tif 000006
【図６】
0003766166.tif 000007
【図７】
0003766166.tif 000008
【図８】
0003766166.tif 000009
【図９】
0003766166.tif 000010
【図１０】
0003766166.tif 000011