トップ :: G 物理学 :: G11 情報記憶




【発明の名称】 連想メモリとその検索方法及びルータとネットワークシステム
【発明者】 【氏名】小倉 直志

【要約】 【課題】データ転送速度の高いネットワーク・システムの消費電力を削減する。

【解決手段】検索データ12と一致した記憶データに対応するマスク情報の全てに対してマスク有効状態を真とする論理積演算を行った結果の各ビットについてマスク情報の無効状態ならば検索データ12の対応するビットを出力情報の該当ビットに出力しマスク情報の有効状態ならば記憶データの無効状態を出力情報の該当ビットに出力する連想メモリ1を用いて、連想メモリ1に検索データ12を入力して1次検索を行い出力情報を取り出し、1次検索にて一致した記憶データに対して得られた出力情報を検索データとして2次検索を行い、出力情報と一致したワードの一致線5のみを検索結果として選択する。選択された一致線5をエンコードして最適のメモリ・アドレス信号403を求め、最短ネットワーク接続を可能とする転送先アドレス405を得、入力転送データ408中のデータ部412及び目的地ネットワーク・アドレス411を合成して出力転送データ409を生成する。
【特許請求の範囲】
【請求項1】 記憶データの1ビット又は複数ビットごとに検索対象から除外するか否かを、有効状態、無効状態により設定可能なマスク情報を当該記憶データの1ワード又は複数ワードごとに有する連想メモリにおいて、対応するマスク情報がマスク有効状態の場合に記憶データの1ビット又は複数ビットを検索対象から除外する1次検索を当該記憶データの1ワードごとに外部から入力された検索データを用いて行った結果、選出されるべきデータとして1つ又は複数のワードが選出された際、当該選出されたワードに対応するマスク情報同士をマスク有効状態を真とした論理積を行った一致マスク論理積情報と前記検索データとの第1の論理演算を行う手段を設けたこと、を特徴とする連想メモリ。
【請求項2】 前記記憶データとして1次検索の際に対応する前記マスク情報により検索対象から除外される1ビット又は複数のビットに特定ビット・パターンを格納し、2次検索として前記記憶データが前記第1の論理演算の結果と一致したワードを選出すること、を特徴とする請求項1の連想メモリ。
【請求項3】 前記記憶データにおいて1次検索の際に対応する前記マスク情報により検索対象から除外された1ビット又は複数のビットが特定ビット・パターンであると見なして前記論理演算の結果を検索データとする2次検索を行い、前記第1の論理演算の結果と一致したワードを選出すること、を特徴とする請求項1の連想メモリ。
【請求項4】 前記特定ビット・パターンは、すべての当該ビットが記憶データの無効状態により構成されていること、を特徴とす請求項2又は3の連想メモリ。
【請求項5】 前記第1の論理演算は、前記一致マスク論理積情報のビットがマスク情報の無効状態ならば前記検索データの同じビット位置の情報を、前記一致マスク論理積情報のビットがマスク情報の有効状態ならば記憶データの無効状態を、同じビット位置の演算結果とすること、を特徴とする請求項1、2、3又は4の連想メモリ。
【請求項6】 記憶データの1ビット又は複数ビットごとに検索対象から除外するか否かを、有効状態、無効状態により設定可能なマスク情報を当該記憶データの1ワード又は複数ワードごとに有する連想メモリにおいて、対応するマスク情報がマスク有効状態の場合に記憶データの1ビット又は複数ビットを検索対象から除外する1次検索を当該記憶データの1ワードごとに外部から入力された検索データを用いて行った結果、選出されるべきデータとして1つ又は複数のワードが選出された際、当該選出されたワードに対応するマスク情報同士をマスク有効状態を真とした論理積を行った一致マスク論理積情報と前記検索データとの第1の論理演算を行う手段を有する第1の連想メモリと、前記第1の連想メモリの対応するアドレスのワードに格納されている記憶データを格納している第2の連想メモリを有し、外部から与えられた検索データを第1の連想メモリに入力し論理演算結果を得る1次検索と、前記論理演算結果を前記第2の連想メモリの検索データとして入力し前記論理演算結果と前記記憶データのビット情報に一致するワードを選択する2次検索を行うこと、を特徴とする連想メモリ。
【請求項7】 前記第1の連想メモリが出力する前記論理演算結果を、1つ又は複数の記憶手段に格納し、該記憶手段の出力を前記第2の記憶データに入力することにより、前記第1の連想メモリによる検索と、前記第2の連想メモリによる検索を並列に実行すること、を特徴とする請求項6の連想メモリ。
【請求項8】 記憶データの1ビット又は複数ビットごとに検索対象から除外するか否かを、有効状態、無効状態により設定可能なマスク情報を当該記憶データの1ワード又は複数ワードごとに有する連想メモリにおいて、対応するマスク情報がマスク有効状態の場合に記憶データの1ビット又は複数ビットを検索対象から除外する1次検索を当該記憶データの1ワードごとに外部から入力された検索データを用いて行った結果1つ又は複数の記憶データが前記検索データと一致したとき、検索データに対して一致した記憶データに対応するマスク情報のすべての中で検索対象から除外するよう設定された記憶情報のビット数が最小であるマスク情報を中間情報として生成し、該中間情報と前記検索情報との前記第1の論理演算を行った結果を演算結果出力線に出力する第1の検索手段と、演算結果出力線に一致する前記記憶データを識別する信号を出力する第2の検索手段とを有すること、を特徴とする連想メモリ。
【請求項9】 前記1次検索の際に対応する前記マスク情報により検索対象から除外される前記記憶データの1ビット又は複数のビットに特定ビット・パターンを格納していること、を特徴とする請求項8の連想メモリ。
【請求項10】 前記第2の検索手段において、前記1次検索の際に対応する前記マスク情報により検索対象から除外される前記記憶データの1ビット又は複数のビットを特定ビット・パターンとみなして検索を行い前記演算結果出力線と一致したワードを選出すること、を特徴とする請求項8の連想メモリ。
【請求項11】 前記特定ビット・パターンは、すべての当該ビットが記憶データの無効状態により構成されていること、を特徴とする請求項9又は10の連想メモリ。
【請求項12】 前記第1の検索手段が、記憶データ1語ごとに検索データとマスク情報を付加した該記憶データが一致するときに有効状態となる一致線を有し、かつ、一つ又は複数の記憶データが該検索データと一致したとき、一致した記憶データに対応するマスク情報のすべてに対してマスク情報の有効状態を真とする論理積演算結果を中間情報として生成し、当該中間情報のビットがマスク情報の無効状態ならば前記検索データの同じビット位置の情報を、当該中間情報のビットがマスク情報の有効状態ならば記憶データの無効状態を、演算結果出力線の同じビット位置に出力する演算結果とする演算結果出力回路を有する演算結果出力機能付連想メモリにより構成されること、を特徴とする請求項8、9、10又は11の連想メモリ。
【請求項13】 前記第1の検索手段において、演算結果出力線の情報を格納する第1の記憶手段と、外部からの検索情報と第1の記憶手段の出力信号とを選択し検索データとして入力する選択手段と、第1の記憶手段の出力信号が検索データとして選択されているときには対応するマスク情報がマスク有効状態である前記記憶データの1ビット又は複数ビットを検索対象から除外する機能を無効化して前記検索データと当該記憶データを比較した結果を対応する前記一致線に出力する比較手段とを有することにより、第2の検索手段の構成要素を第1の検索手段の構成要素と共有すること、を特徴とする請求項8、9、10又は11の連想メモリ。
【請求項14】 前記第1の検索手段において、演算結果出力線の情報を格納する第1の記憶手段と、外部からの検索情報と第1の記憶手段の出力信号とを選択し検索データとして入力する選択手段と、第1の記憶手段の出力信号が検索データとして選択されているときには対応するマスク情報がマスク有効状態である前記記憶データの1ビット又は複数ビットを記憶データの無効状態とみなして前記検索データと当該記憶データを比較した結果を対応する前記一致線に出力する比較手段とを有することにより、第2の検索手段の構成要素を第1の検索手段の構成要素と共有すること、を特徴とする請求項8、9、10又は11の連想メモリ。
【請求項15】 記憶データの1ビット又は複数ビットごとに検索対象から除外するか否かを、有効状態、無効状態により設定するマスク情報を当該記憶データ1ワード又は複数ワードごとに有する連想メモリに経路情報を格納するルータにおいて、ワードごとにマスク情報がマスク有効状態の場合に対応する当該記憶データの1ビット又は複数ビットを検索対象から除外する1次検索を入力転送データの目的地ネットワーク・アドレスを検索データとして行った結果一つ又は複数の経路情報が一致したとき、目的地ネットワーク・アドレスに対して一致した記憶データに対応するマスク情報同士をマスク有効状態を真とした論理積を行うことで生成した一致マスク論理積情報と前記検索データとの第1の論理演算を行った結果を演算結果出力線に出力する第1の検索手段と、演算結果出力線の情報と一致する記憶データを有する前記経路情報を識別する一致信号を出力する第2の検索手段と、前記一致信号により前記入力転送データの転送先アドレスを決定する手段と、前記入力転送データを前記転送先アドレスに転送する手段と、を備えたこと、を特徴とするルータ。
【請求項16】 記憶データの1ビット又は複数ビットごとに検索対象から除外するか否かを、有効状態、無効状態により設定するマスク情報を当該記憶データ1ワード又は複数ワードごとに有する経路情報を複数格納する経路情報テーブルを有するルータにおいて、ワードごとにマスク情報がマスク有効状態の場合に対応する当該記憶データの1ビット又は複数ビットを検索対象から除外する1次検索を入力転送データの目的地ネットワーク・アドレスを検索データとして行った結果一つ又は複数の経路情報が一致したとき、目的地ネットワーク・アドレスに対して一致した記憶データに対応するマスク情報同士をマスク有効状態を真とした論理積を行うことで生成した一致マスク論理積情報と前記検索データとの第1の論理演算を行い演算結果出力信号を発生し、演算結果出力信号と一致する記憶データを有する前記経路情報を識別する一致信号を発生し、前記一致信号により前記入力転送データの転送先アドレスを決定し、前記入力転送データを前記転送先アドレスに転送することを特徴とするルータ。
【請求項17】 請求項15又は16の前記ルータを介してネットワークに接続された機器間でデータ通信を行うこと、を特徴とするネットワークシステム。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は、連想メモリとその検索方法及びルータとそのネットワークシステムに係り、特に検索マスク機能を有する連想メモリとその検索方法及びそれを用いたルータ及びネットワークシステムに関する。
【0002】
【従来の技術】従来のコンピュータ・ネットワーク・システムに用いられるネットワーク・ルータ(以下「ルータ」という)では、次に示すように最適転送先を計算する機能が不可欠である。
【0003】従来のコンピュータ・ネットワークの構成の接続例を図18に示す。ネットワークに参加しているユーザ機器、例えばコンピュータ端末などは、他のユーザ機器と識別するために、その機器がネットワークに参加するときに、あらかじめ決められた規則に従って特定のネットワーク・アドレスを割り当てられる。ここではネットワーク・アドレスは複数桁の数値、例えば4桁の数値(a.b.c.d)で表現されるものとして説明する。また、あらかじめ決められた規則は、例えばネットワーク・アドレスの先頭の数値でイギリス、ドイツ、日本などの国を示し、第2番目の数値で国の中の都市名を示し、更に第3番目の数値で都市の中の企業名を示す、というように階層構造をとっている。以下、この階層をセグメントと呼ぶこととする。図18においては、セグメントの階層構造を模擬的に示したものである。図において太線で囲まれた1つの矩形が1のセグメントである。図18では、ネットワーク・アドレスの先頭の数値が1であるセグメント1と、先頭の数値が2であるセグメント2と、先頭の数値が3であるセグメント3が、最上位のセグメントとして存在している。セグメント1の下の階層に、上位2つの数値が1.2であるネットワーク・アドレスを持つセグメント4があり、更にその下に上位3つの数値が1.2.2であるネットワーク・アドレスを持つセグメント6があり、更にその中にネットワーク・アドレス1.2.2.1を持つユーザ機器PC401−1が接続されている。また、セグメント2の下の階層に、上位2つの数値が2.1であるネットワーク・アドレスを持つセグメント5があり、更にその下に上位3つの数値が2.1.1であるネットワーク・アドレスを持つセグメント7がある。図に例示されているアドレスにおいて、*はドント・ケアを意味する。
【0004】各セグメントは、ネットワークに参加しているユーザ機器間の通信データを転送するためにルータを有している。図18の構成例では、セグメント1はルータ400−1を、セグメント2はルータ400−2を、セグメント3はルータ400−3を、セグメント4はルータ400−4を、セグメント5はルータ400−5を、セグメント6はルータ400−6を、セグメント7はルータ400−7を、それぞれ有している。セグメントが有するルータは、そのルータに接続されているユーザ機器又は他のルータから入力された転送データを、転送データに付随する転送先アドレスとネットワーク機器の接続関係を基に最適な転送ルートを計算し、その最適なルートを経由して転送先にデータを転送する。図18の構成例では、各ルータはそのセグメント直下のルータ又はユーザ機器と接続されている。また、ルータ400−3は、ルータ400−1、ルータ400−4,ルータ400−6、ルータ400−2、ルータ400−7とも接続している。
【0005】各ユーザ機器同士を直接通信回線で接続するのではなく、ルータの通信制御機能を用いて通信データの転送を制御して通信を行うことにより、有限の通信回線を効率よく使用している。
【0006】次に、これらルータの説明を図19を用いて行う。図ではルータ400−3を例に示しているが、他のルータもこれと同様の構成である。
【0007】ルータ400−3には自分自身が属するセグメントのネットワーク・アドレス(3.*.*.*)以外のセグメントのネットワーク・アドレス情報を記憶させている。これら各ネットワーク・アドレスは、その各桁を4進数で表現した全体で8ビットのビット列で表現されるものと仮定する。例えば、ネットワーク・アドレス(1.*.*.*)はビット列(01.00.00.00)で表現される。ここで、*はドント・ケアであるので、(01.00.00.00)のビット列の上位2ビットが有効でありそれ以下のビットは無効であることを示す必要がある。そこで、マスク情報と呼ばれる情報をネットワーク・アドレス情報と対になって記憶させている。この例では、(00.11.11.11)としている。ここで、“0"がマスク無効状態を“1"がマスク有効状態を示している。これらネットワーク・アドレス情報及びマスク情報は、図示のようにルータの中で連想メモリ116に格納されている。連想メモリ・ワード117−1には、ルータ400−1が属するセグメント1のネットワーク・アドレス(1.*.*.*)が記憶されている。連想メモリ・ワード117−2には、ルータ400−2が属するセグメント2のネットワーク・アドレス(2.*.*.*)が記憶されている。連想メモリ・ワード117−3には、ルータ400−6が属するセグメント6のネットワーク・アドレス(1.2.2.*)が記憶されている。連想メモリ・ワード117−4には、ルータ400−4が属するセグメント4のネットワーク・アドレス(1.2.*.*)が記憶されている。連想メモリ・ワード117−5には、ルータ400−7が属するセグメント7のネットワーク・アドレス(1.*.*.*)が記憶されている。連想メモリ116は、通常のメモリと同様にアドレスを指定して記憶データの書き込み、読み出しを行う機能のほかに、入力した検索データ102と、対応するマスク情報を考慮して比較した結果一致する記憶データの中で、マスク情報の有効状態のビットが最も少ない記憶データに対応するマスク一致線119−1〜119−5を有効状態にする機能を有している。連想メモリ116が出力したマスク一致線119−1〜119−5はエンコーダ402によりメモリ・アドレス信号403に符号化される。
【0008】メモリ404には、連想メモリ116の各連想メモリ・ワードに格納されている記憶データ、マスク情報により構成されるセグメントのネットワーク・アドレスに対応するルータのネットワーク・アドレスを、連想メモリ116の格納アドレスと同一のアドレスのワードに記憶させてある。例えば、連想メモリ116の連想メモリ・ワード1にはアドレス(1.*.*.*)が記憶されているが、これに対応する図18のルータ400−1のネットワーク・アドレスがメモリ404のワード1に格納されている。同様にメモリ404のワード2にはルータ400−2のアドレスが、ワード3にはルータ400−6のアドレスが、ワード4にはルータ400−4のアドレスが、ワード5にはルータ400−7のアドレスが格納されている。メモリ404はメモリ・アドレス信号403をリード・アドレスとして指定される格納データを、メモリ・データ信号405として出力する。
【0009】冷却装置414は、発熱量の多い従来の連想メモリ116を冷却する。これは、例えば空冷ファンなどで構成される。
【0010】なお、図には示していないが、各ルータはその内部にCPUを有しており、そのCPUにより上述したルータの動作の制御が行われる。
【0011】次に、各ルータによって制御される従来のネットワークのデータ転送の動作例を説明する。例えばルータ400−3に入力された転送データの目的地ネットワーク・アドレスが(1.2.1.1)の場合、従来の連想メモリ116で検索すると連想メモリ・ワード1の(1.*.*.*)、及び連想メモリ・ワード4の(1.2.*.*)が一致するが、その中でマスク情報の有効状態のビットが最も少ない連想メモリ・ワード4に対応するマスク一致線119−4のみが有効状態となる。これにより、エンコーダ402はメモリ・アドレス403として“4"を出力し、メモリ404はルータ400−4のネットワーク・アドレスをメモリ・データ信号405として出力する。これにより、ルータ400−3は、目的地アドレス(1.2.1.1)の入力転送データを、ルータ300−4に向けて転送する。ルータ300−4は転送されてきたデータに基づいて上述したのと同様な動作を行い、次々とルータにデータを転送して最終目的地のネットワーク・アドレス(1.2.1.1)に接続しているユーザ機器にデータを転送する。
【0012】
【従来の連想メモリの説明】図14は、従来の連想メモリの一構成例を示すブロック図である。連想メモリ116は、nビット2入力1出力セレクタ128と、nビットm語の連想メモリ・ワード117−1〜117−mと、nビット・ラッチ126と制御回路131を有しており、各連想メモリ・ワード117−jは、n個の連想メモリ・セル118−j−1〜118−j−nと1個のラッチ123−jを備えている。各連想メモリ・ワード117−jには、対応するデータ・ワード線106−j、マスク・ワード線111−jが入力のために接続され、対応するマスク一致線119−j、及びn本の最短マスク線122−1〜122−nが出力のために接続され、n本のビット線103−1〜103−nが入出力のために接続されている。
【0013】各連想メモリ・セル118−j−kには、対応するデータ・ワード線106−j、マスク・ワード線111−jが入力のために接続され、対応するデータ一致線107−j、マスク一致線119−j、及び最短マスク線122−kが出力のために接続され、ビット線103−kが入出力のために接続されている。
【0014】各連想メモリ・セル118−j−kは、ビット線103−kを介して外部から入力される記憶データの対応するビット情報を格納するデータ・セル108−j−kと、データ・セルに記憶されたビット情報と外部から入力される検索データ102の対応するビット情報102−kとを比較する比較器113−j−kと、外部からビット線103−kを介して入力されるマスク情報の対応するビット情報を格納するマスク・セル112−j−kと、マスク・セルに記憶されたビット情報とnビット・ラッチ126から出力された最短マスク情報127の対応するビット情報127−kとを比較するマスク比較器120−j−kと、及び論理ゲート121−j−kとを備えている。
【0015】なお、本実施の形態では、マスク情報の有効状態を“1"、無効状態を“0"とし、最短マスク線122−1〜122−nの有効状態を“1"、無効状態を“0"とする。データ一致線107−1〜107−mの有効状態を“1"、無効状態を“0"とする。また、マスク一致線119−1〜119−mの有効状態を“1"、無効状態を“0"とする。
【0016】データ・セル108−1−1〜108−m−nは、対応するデータ・ワード線106が有効状態の場合、対応するビット線103に書き込みデータがドライブされていれば記憶データとして格納し、対応するビット線103がドライブされていなければ格納している記憶データを対応するビット線103に出力する。対応するデータ・ワード線106が無効状態ならば、ビット線103に対してなんら操作は行わない。また、対応するデータ・ワード線106の値にかかわらず、格納している記憶データを同一の連想メモリ・セル118−1−1〜118−m−nの中の比較器113に出力する。
【0017】マスク・セル112―1−1〜112−m−nは、対応するマスク・ワード線111が有効状態の場合、対応するビット線103に書き込みデータがドライブされていれば書き込みデータをマスク情報として格納し、対応するビット線103がドライブされていなければ、格納しているマスク情報を対応するビット線103に出力する。対応するマスク・ワード線111が無効状態ならば、ビット線103に対してなんら操作は行わない。また、対応するマスク・ワード線111の値にかかわらず、格納しているマスク情報を同一の連想メモリ・セル118−1−1〜118−m−nの中の比較器113に出力する。
【0018】データ一致線107は、検索動作の開始前には、ハイ・レベルにプリ・チャージされているか、図示しない抵抗によりプル・アップされ、有効状態“1"になっているものとする。
【0019】比較器113は、対応するビット線103と、それに同一の連想メモリ・セル118−1−1〜118−m−nの中のデータ・セル108の記憶データ及びマスク・セル112のマスク情報を入力とし、マスク情報が有効状態、又はビット線103の値と記憶データが一致するならば対応するデータ一致線107を開放状態にし、それ以外の場合には無効状態“0"を出力する。連想メモリ・ワード117の中のn個の比較器113がすべてデータ一致線107を開放状態にしているときに、データ一致線107は有効状態“1"となり、それ以外の場合には無効状態“0"となるワイアードAND論理接続を構成している。つまり、検索動作時には、連想メモリ・ワード117が格納している記憶データとビット線103−1〜103−nがマスク情報により比較対象から除外されたビットを除いて完全に一致する場合に限り、データ一致線107は有効状態“1"となり、それ以外の場合は無効状態“0"となる。もちろん同様の動作となるように通常の論理ゲートを用いて構成してもかまわない。
【0020】論理ゲート121−1−1〜121−m−nは、同一の連想メモリ・ワード117−1〜117−mの中のデータ一致線107−1〜107−mが有効状態“1"かつ、同一の連想メモリ・セル118−1−1〜118−m−nの中のマスク・セル112−1−1〜112−m−nに格納されたマスク情報が無効状態“0"のときに、対応する最短マスク線122−1〜122−nに無効状態“0"を出力し、それ以外の場合には開放状態にする。
【0021】各最短マスク線122−1〜122−nは、抵抗125−1〜125−nによりプル・アップされており、対応するm個の論理ゲート121−1−1〜121−m−nとワイアードAND論理接続を構成している。従って、接続されているm個の論理ゲート121がすべて最短マスク線122を開放状態にしているときに、最短マスク線122は有効状態“1"となり、それ以外の場合には無効状態“0"となる。
【0022】ラッチ123−1〜123−mは、同一の連想メモリ・ワード117−1〜117−mの中のデータ一致線107−1〜107−mの状態を、ラッチ制御線124が有効状態の時に内部に格納する。また、格納した状態を出力するため、同一の連想メモリ・ワード117−1〜117−mの中にあるマスク一致線119―1〜119−mと対応し、ワイアード論理接続されている。ラッチ123−1〜123−mは対応するマスク一致線119−1〜119−mに対して、格納されたデータが無効状態“0"の場合には“0"を出力し、格納されたデータが有効状態“1"の場合には対応するマスク一致線119−1〜119−mを開放状態とする。
【0023】マスク一致線119−1〜119−mは、検索動作の終了時に、検索データ102と一致した記憶データの中で、マスク情報により検索対象から除外されたビット数が最も少ない記憶データに対応するものだけが有効状態となり、それ以外は無効状態となる。マスク一致線119−1〜119−mは検索動作開始前に図示しない抵抗によりプル・アップされているか、ハイ・レベルにプリ・チャージされることにより、有効状態“1"になっているものとする。
【0024】マスク比較器120は、対応するマスク・セル112が格納するマスク情報の状態と対応するビット線103上の最短マスク情報を比較し、一致しているならば対応するマスク一致線119を開放状態にし、不一致ならば対応するマスク一致線119に無効状態“0"を出力する。従って、連想メモリ・ワード117の中のn個の連想メモリ・セル118と、1個のラッチ123がすべてマスク一致線119を開放状態にしているときに、マスク一致線119は有効状態“1"となり、それ以外の場合には無効状態“0"となるワイアードAND論理接続を構成している。
【0025】つまり、検索動作時には、連想メモリ・ワード117が格納しているマスク情報とビット線103−1〜103−nが完全に一致し、かつ、ラッチ123に格納されているデータ一致線107の状態が有効状態“1"の場合に限り、マスク一致線119は有効状態“1"となり、それ以外の場合は無効状態“0"となる。
【0026】nビット・ラッチ126は、ラッチ制御信号124が有効状態の時に、最短マスク線122−1〜122−nの状態を内部に格納する。また、格納した状態をラッチ出力線127−1〜127−nに出力する。
【0027】nビット2入力1出力セレクタ128は、ビット線103−1〜103−nに出力するデータを、選択信号129の状態により、検索データ102−1〜102−nとラッチ出力線127−1〜127−nの一方から選択する。
【0028】制御回路130は、連想メモリ116の動作を制御するため、クロック信号130に同期して、ラッチ制御信号124、選択信号129を出力する。
【0029】
【従来の連想メモリの詳細説明】次に、図15に従来の連想メモリ・セル118の一構成例を示す。ここで、2本のビット線103a,103bは図14に示されている各ビット線に対応するものであるが、図14においては101−iで代表して表現している。この2本のビット線を介してメモリ・セルへのデータの読み書きや、検索データ102の入力を行う。データを書き込む場合、及び検索データの入力を行う場合には、ビット線103bにはビット線103aの値を反転した値を入力する。データ・セル108は、入出力が相互に接続された反転論理ゲート(G101)301、反転論理ゲート(G102)302と、反転論理ゲート(G102)302の出力をビット線103aに接続しデータ・ワード線106がハイ・レベルのときに導通状態となるMOSトランジスタ(T101)303と、反転論理ゲート(G101)301の出力をビット線103bに接続しデータ・ワード線106がハイ・レベルのときに導通状態となるMOSトランジスタ(T102)304とにより構成される一般的なスタティックRAM素子である。
【0030】また、マスク・セル112も、入出力が相互に接続された反転論理ゲート(G103)309、反転論理ゲート(G104)310と、反転論理ゲート(G104)310の出力をビット線103aに接続しマスク・ワード線111がハイ・レベルのときに導通状態となるMOSトランジスタ(T107)311と、反転論理ゲート(G103)309の出力をビット線103bに接続しマスク・ワード線111がハイ・レベルのときに導通状態となるMOSトランジスタ(T108)312とにより構成される一般的なスタティックRAM素子である。
【0031】比較器113はMOSトランジスタ(T103)305、MOSトランジスタ(T104)306、MOSトランジスタ(T105)307、MOSトランジスタ(T106)308により構成される。MOSトランジスタ(T103)305とMOSトランジスタ(T104)306はビット線103a,103bの間に直列に挿入される。MOSトランジスタ(T103)305は、データ・セル108内の反転論理ゲート(G101)301の出力がハイ・レベルのときに導通状態となる。MOSトランジスタ(T104)306は、データ・セル108内の反転論理ゲート(G102)302の出力がハイ・レベルのときに導通状態となる。MOSトランジスタ(T105)307とMOSトランジスタ(T106)308は、低電位と、データ一致線107の間に直列に挿入される。MOSトランジスタ(T105)307は、MOSトランジスタ(T103)305とMOSトランジスタ(T104)306の接続点の電位がハイ・レベルの時に導通状態となる。MOSトランジスタ(T106)308は、マスク・セル112内の反転論理ゲート(G103)309の出力がハイ・レベルの時に導通状態となる。ビット線103aと反転論理ゲート(G101)301の出力が共にハイ・レベル、又はビット線103bと反転論理ゲート(G102)302の出力が共にハイ・レベルのときに、MOSトランジスタ(T103)305とMOSトランジスタ(T104)306の接続点はハイ・レベルとなり、MOSトランジスタ(T105)307を導通状態とする。
【0032】従って、データ・セル108に格納されている記憶データと、ビット線103a,103b上の検索データ102が異なる場合にMOSトランジスタ(T105)307は導通状態になる。またMOSトランジスタ(T106)308はマスク・セル112内に格納されているマスク情報が“1"のときには開放状態であり、“0"のときに導通状態となる。データ一致線107は、図示しない抵抗により高電位にプル・アップされているか、又は、検索動作を開始する前に高電位にプリ・チャージされているものとする。これにより、複数の連想メモリ・セル118がデータ一致線107にMOSトランジスタ(T106)308を介して接続されているとき、一つの連想メモリ・セル118でもロウ・レベルを出力しているとデータ一致線107はロウ・レベルとなるようなワイアードAND接続となる。
【0033】MOSトランジスタ(T105)307、MOSトランジスタ(T106)308が共に導通状態のときに連想メモリ・セル118はデータ一致線107に無効状態“0"を出力し、それ以外の時にはデータ一致線107を開放状態とする。即ち、マスク情報が“1"の場合にはデータ一致線107を必ず開放状態とし、マスク情報が“0"の場合にはビット線103a,103b上の検索データ102とデータ・セルに格納されている記憶データが一致するときに開放状態とし、異なる場合には無効状態“0"を出力する。
【0034】次に、論理ゲート121と最短マスク線122の働きを説明する。最短マスク線122は図14の抵抗125によりプル・アップされ検索動作前には有効状態“1"になっている。論理ゲート121は、最短マスク線122と低電位との間に直列に挿入されたMOSトランジスタ(T109)313と、MOSトランジスタ(T110)314で構成されている。MOSトランジスタ(T109)313は、データ一致線107が有効状態“1"のときに導通状態となり、無効状態“0"のときには開放状態となる。MOSトランジスタ(T110)314は、マスク・セル112内部の反転論理ゲート(G103)309の出力がハイ・レベルの場合に導通状態となり、ロウ・レベルの場合には開放状態となる。つまり、マスク・セル112に格納されているマスク情報が無効状態“0"のときに導通状態となり、有効状態“1"のときには開放状態となる。これにより論理ゲート121は、データ一致線107が有効状態“1"かつマスク・セル112に格納されたマスク情報が無効状態“0"のときに、最短マスク線122に無効状態“0"を出力し、それ以外の場合には開放状態にする。
【0035】次に、マスク比較器120とマスク一致線119の働きを説明する。マスク一致線119は、図示しない抵抗により高電位にプル・アップされているか、又は、検索動作を開始する前に高電位にプリ・チャージされているものとする。
【0036】マスク比較器120は、MOSトランジスタ(T111)315、MOSトランジスタ(T112)316、MOSトランジスタ(T113)317により構成される。MOSトランジスタ(T111)315とMOSトランジスタ(T112)316はビット線103a,103bの間に直列に挿入される。MOSトランジスタ(T111)315は、マスク・セル112内の反転論理ゲート(G103)309の出力がハイ・レベルのときに導通状態となる。MOSトランジスタ(T112)316は、マスク・セル112内の反転論理ゲート(G104)310の出力がハイ・レベルのときに導通状態となる。MOSトランジスタ(T113)317は、低電位と、マスク一致線119の間に挿入される。MOSトランジスタ(T113)317は、MOSトランジスタ(T111)315とMOSトランジスタ(T112)316の接続点の電位がハイ・レベルの時に導通状態となる。
【0037】ビット線103aと反転論理ゲート(G103)309の出力が共にハイ・レベル、又はビット線103bと反転論理ゲート(G104)310の出力が共にハイ・レベルのときに、MOSトランジスタ(T111)315とMOSトランジスタ(T112)316の接続点はハイ・レベルとなり、MOSトランジスタ(T113)317は導通状態になり、その他の場合は開放状態となる。
【0038】従って、マスク・セル112に格納されているマスク情報と、ビット線103a,103b上の検索データ102が異なる場合にMOSトランジスタ(T113)317は導通状態になりマスク一致線119に無効状態“0"を出力し、一致する場合にはマスク一致線119を開放状態にする。
【0039】これにより、複数の連想メモリ・セル118がマスク一致線119にMOSトランジスタ(T113)317を介して接続されているとき、一つの連想メモリ・セルでもロウ・レベルを出力しているとマスク一致線119はロウ・レベルとなり、それ以外の場合はハイ・レベルにするワイアードAND接続を構成している。
【0040】
【従来の連想メモリの動作】次に、上述の従来の連想メモリ116を、図18のルータ400−3における転送先ネットワーク・アドレスの計算に用いた場合の動作を、図16を用いて説明する。そのときのタイミングチャートを図17に示す。
【0041】連想メモリ116を8ビット5語の構成と仮定する。従って、各連想メモリ・ワード117−1〜117−5に格納されている記憶データ、マスク情報は、図19の連想メモリの場合と全く同一であり、図18のルータ400−3のネットワーク・アドレス(3.*.*.*)以外の接続情報を記憶している。つまり、連想メモリ・ワード117−1には(1.*.*.*)を実現するため2進数で、記憶データには(01.00.00.00)を、マスク情報として(00.11.11.11)を格納してある。同様に連想メモリ・ワード117−2には(2.*.*.*)を、117−3には(1.2.2.*)を、117−4には(1.2.*.*)を、117−5には(2.1.1.*)を格納してある。以下、検索データ102として図18のPC401−1の4進数のネットワーク・アドレス(1.2.2.1)を入力し検索動作を行った場合の動作説明をする。
【0042】まず、図17のタイミング(1)で、すべてのデータ一致線107−1〜107−8は、ハイ・レベルにプリ・チャージされ、有効状態“1"になっている。
【0043】次に図17のタイミング(2)で、制御回路131が出力する選択信号129により、nビット2入力1出力セレクタ128は検索データ102を選択し、ビット線103−1〜103−8に出力する。これにより、連想メモリ116の連想メモリ・ワード117−1に格納されている4進表現の(1.*.*.*)と、連想メモリ・ワード117−3に格納されている4進表現の(1.2.2.*)と、連想メモリ・ワード117−4に格納されている4進表現の(1.2.*.*)がビット線103−1〜103−8上のデータと一致する。従って、データ一致線107−1、107−3及び107−4の3本が有効状態“1"となり、残りのデータ一致線107−2、107−5は無効状態“0"となる。
【0044】ここで、最短マスク線122−1からは、連想メモリ・ワード117−1内の最短マスク線122−1に対応するマスク情報“0"と、連想メモリ・ワード117−3内の最短マスク線122−1に対応するマスク情報“0"と、連想メモリ・ワード117−4内の最短マスク線122−1に対応するマスク情報“0"の論理積“0"が出力される。最短マスク線122−2からは、連想メモリ・ワード117−1内の最短マスク線122−2に対応するマスク情報“0"と、連想メモリ・ワード117−3内の最短マスク線122−2に対応するマスク情報“0"と、連想メモリ・ワード117−4内の最短マスク線122−2に対応するマスク情報“0"の論理積“0"が出力される。以下同様に、最短マスク線122−3からは“1"と“0"と“0"の論理積“0"が、最短マスク線122−4からは“1"と“0"と“0"の論理積“0"が、最短マスク線122−5からは“1"と“0"と“1"の論理積“0"が、最短マスク線122−6からは“1"と“0"と“1"の論理積“0"が、最短マスク線122−7からは“1"と“1"と“1"の論理積“1"が、最短マスク線122−8からは“1"と“1"と“1"の論理積“1"が、それぞれ出力される。従って、最短マスク線122−1〜122−8には、2進表現で“00000011"が出力される。
【0045】この状態で、制御回路131が出力するラッチ制御信号124が有効状態になり、ラッチ123−1〜123−5は対応する一致線107−1〜107−5の状態を内部に格納し、nビット・ラッチ126は最短マスク線122−1〜122−8の状態を内部に格納する。従って、ラッチ123−1には“1"が、ラッチ123−2には“0"が、ラッチ123−3には“1"が、ラッチ123−4には“1"が、ラッチ123−5には“0"が、それぞれ格納され、nビット・ラッチ126には2進表現で“00000011"が格納される。また、nビット・ラッチ126は、格納した状態“00000011"をラッチ出力線127−1〜127−8に出力する。
【0046】次に図17のタイミング(3)で、すべてのマスク一致線119−1〜119−8はハイ・レベルにプリ・チャージされ、有効状態“1"になっている。
【0047】図17のタイミング(4)で、制御回路131が出力する選択信号129により、nビット2入力1出力セレクタ128はラッチ出力線127を選択し、その情報“00000011"を対応するビット線103−1〜103−8に出力した後、連想メモリは2回目の検索動作を開始する。2回目の検索動作では、マスク一致線119−1〜119−8の状態を利用し、データ一致線107−1〜107−8の状態は無視される。
【0048】ビット線103−1〜103−8の状態“00000011"に対して、連想メモリ・ワード117−3と117−5が格納するマスク情報が完全に一致し、対応するマスク一致線119−3,119−5を開放状態にする。他の連想メモリ・ワード117−1,117−2及び117−4が格納するマスク情報は一致しないので、対応するマスク一致線119−1,119−2、及び119−4に無効状態“0"を出力する。
【0049】また、ラッチ123−1は格納した状態が“1"なので対応するマスク一致線119−1を解放状態にし、ラッチ123−2は格納した状態“0"を対応するマスク一致線119−2に出力し、ラッチ123−3は格納した状態が“1"なので対応するマスク一致線119−3を開放状態にし、ラッチ123−4は格納した状態が“1"なので対応するマスク一致線119−4を開放状態にし、ラッチ123−5は格納した状態“0"を対応するマスク一致線119−5に出力する。
【0050】従って、マスク一致線119−1は、ラッチ123−1が解放状態にしているが、連想メモリ・ワード117−1内のマスク比較器120−1−1〜120−1−8が“0"を出力しているので、無効状態“0"になる。マスク一致線119−2は、連想メモリ・ワード117−2のマスク比較器120−2−1〜120−2−8が“0"を出力しラッチ123−2も“0"を出力しているので無効状態“0"となる。マスク一致線119−3は、連想メモリ・ワード117−3のマスク比較器120−3−1〜120−3−8がすべて開放状態でありラッチ123−3も開放状態であるので有効状態“1"を保持する。マスク一致線119−4は、ラッチ123−4が開放状態にしているが、連想メモリ・ワード117−4のマスク比較器120−4−1〜120−4−8が“0"を出力しているので無効状態“0"となる。マスク一致線119−5は、連想メモリ・ワード117−5のマスク比較器120−5−1〜120−5−8が開放状態にしているが、ラッチ123−5が“0"を出力しているので、マスク一致線119−5は無効状態“0"となる。
【0051】これにより、タイミング(2)の1回目の検索動作で、予め格納されている記憶データがマスク情報を考慮して検索データ102と一致し、かつタイミング(4)の2回目の検索動作で、予め格納されているマスク情報が1回目の検索動作の結果得られた最短マスク線122−1〜122−8の状態と一致するような連想メモリ・ワード117−1〜117−5に対応するマスク一致線119−3のみが、2回目の検索動作終了時に有効状態“1"になる。従って、入力した検索データ102と、対応するマスク情報を考慮して比較した結果一致する記憶データの中で、マスク情報の有効状態のビットが最も少ない記憶データに対応するマスク一致線119−3のみに有効状態を出力することがわかる。
【0052】
【発明が解決しようとする課題】上述した従来の連想メモリ116は、1回目の検索動作では、m語の連想メモリ・ワード117―1〜117−mに格納された記憶データと検索データ102を比較した結果をm本のデータ一致線107−1〜107−mに出力し、2回目の検索動作では、m語の連想メモリ・ワード117―1〜117−mに格納されたマスク情報とラッチ出力線127の値を比較した結果をm本のマスク一致線119−1〜119−mに出力する。そのため、各連想メモリ・ワード117−1〜117−mの中のn個の連想メモリ・セル118−1−1〜118−m−nは、記憶データを比較するための比較器113−1−1〜113−m−nと、マスク情報を比較するためのマスク比較器120−1−1〜120−m−nの2つの比較手段が必要である。
【0053】ここで反転論理ゲートが2個のMOSトランジスタから構成されるとすると、連想メモリ・セル118は図15に示すように21個のMOSトランジスタから構成される。この中で、データ・セル108、マスク・セル112はスタティックRAM素子であるため、これらを構成する各MOSトランジスタの面積は、一般的に、従来の連想メモリ116を製造する際に許される最小面積のMOSトランジスタと等しい。
【0054】ところが、図14に示すように、各データ一致線107−1〜107−mは1語の連想メモリ・ワード117の中のn個の比較器113とワイアード論理接続をするための配線長が必要であるために配線容量は非常に大きく、その配線容量を駆動するため、比較器113を構成するMOSトランジスタの面積は非常に大きくなる。例えば、0.25μm製造プロセスの場合、64個の比較器を接続するためには1mmほどの配線長が必要となり、この配線長の配線容量はおよそ0.3pF程度となる。この容量を駆動するためのトランジスタ・サイズは製造プロセスで許される最小面積のMOSトランジスタの10〜30倍は必要である。同様に、各マスク一致線119−1〜119−mもn個のマスク比較器120とワイアード論理接続をするための配線長が必要であり、マスク比較器120を構成するMOSトランジスタの面積も、最小面積のMOSトランジスタの10〜30倍は必要である。また、図14に示すように、各最短マスク線122−1〜122−nもm個の論理ゲート121とワイアード論理接続をするための配線長が必要であり、マスク比較器120を構成するMOSトランジスタの面積も、最小面積のMOSトランジスタの10〜30倍は必要であることになる。
【0055】従って、比較器113,マスク比較器120,及び論理ゲート121を構成するMOSトランジスタの面積を、最小面積のMOSトランジスタの10倍、一般的なスタティックRAM素子の面積は最小面積のMOSトランジスタの6倍と仮定すると、図15から容易に分かるように連想メモリ・セル118の面積は、最小面積のMOSトランジスタの102倍となる。即ち、同じチップ面積のスタティックSRAMの記憶容量と比べると従来の連想メモリ116は17分の1しか格納できないという問題があった。
【0056】また、上述したように、1回目の検索動作の結果が出力されるのはm本のデータ一致線107−1〜107−mであり、2回目の検索動作の結果が出力されるのはm本のマスク一致線119−1〜119−mである。このため、1回目の検索動作の結果を2回目の検索動作を実行するまで保持する必要がある。ここで、例えば、連想メモリ116が1語64ビットで32768語の構成の場合、ラッチ123が10個のMOSトランジスタから構成されていると仮定すると、32768個のラッチ123を構成するためには、およそ33万個のMOSトランジスタが必要となる。即ち、記憶データのビット数nとは無関係に、m個のラッチ123−1〜123−mの分だけチップ面積が大きくなってしまうという問題があった。
【0057】また、それぞれm本あるデータ一致線107−1〜107−m、マスク一致線119−1〜119−mは、検索動作のたびに最終的に有効状態を出力する一本を除いて、検索前に有効状態にプリ・チャージした電荷をそれぞれ対応するMOSトランジスタを介して放電することになる。従って、1語64ビットで32768語構成の場合、データ一致線107,マスク一致線119を合わせて、32768×2−1=65535本の配線容量を検索動作のたびにプリ・チャージしなければならない。最短マスク線122−1〜122−nはn本であり、上述の例では64本であるので無視できる。即ち、従来の連想メモリの消費電力は、ほとんど、データ一致線107、マスク一致線119を検索動作のたびにプリ・チャージするのに要する電力であることがわかる。ここで、前述のように0.25μm製造プロセスの場合、データ一致線107、マスク一致線119の配線容量をそれぞれ0,3pFと仮定し、電源電圧を2.5V、クロック信号130の周期を20nsとすると、チップ全体の消費電力は、(0.3pF×2.5V)÷20ns×2.5V×65535本=6.1Wと非常に大きい。従って、従来の連想メモリ116には、それぞれm本あるデータ一致線107−1〜107−m、マスク一致線119−1〜119−mは、検索動作のたびに最終的に有効状態を出力する一本を除いて、検索前に有効状態にプリ・チャージする必要があるため、消費電力が非常に大きいという問題があった。
【0058】また、上述のように、従来の連想メモリ116は記憶容量が小さいために、ルータの用いた場合には、複数個の連想メモリ116を使用する必要があった。そのためルータの発熱量が非常に大きくなり、図19に示すように冷却装置414を内蔵する必要があった。また、複数個の連想メモリ116の検索結果を比較し最終的な検索結果を求める必要があるため、データ転送速度が低下するという問題があった。
【0059】そこで、本発明の目的は、検索データと一致する記憶データの中で対応するマスク情報の有効状態のビット数が最も少ない記憶データを識別する信号を出力し、なおかつ単位チップ面積当たりの記憶容量の大きい連想メモリを提供することにある。
【0060】また、他の目的としては、検索データと一致する記憶データの中で対応するマスク情報の有効状態のビット数が最も少ない記憶データを識別する信号を出力し、なおかつ語数当たりの消費電力の小さい連想メモリを提供することにある。
【0061】更に、他の目的としては、冷却装置を必要としないルータを提供することにある。
【0062】更に、他の目的としては、高速にデータを転送できるネットワークシステムを提供することにある。
【0063】
【課題を解決するための手段】そこで、本発明は、検索される記憶データとそのマスクデータとを対として複数組有する連想メモリにおいて、検索データを検索した結果、検索されるべきデータとして複数の記憶データが選出された際、当該選出された複数の記憶データに対応するマスクデータの論理演算を行う手段を設けたものである。
【0064】即ち、マスクデータが“1"と“0"の論理値で定義されていることに注目し、複数の一致線が有効になったときは、これら一致線を出力している連想メモリ・ワードに対応するマスク情報の各ビット同士に例えば論理積を行うことにより、一致した記憶データに対応するマスク情報の中でマスク有効状態のビットが最も少ないマスク情報(最短マスク情報)を得るものである。
【0065】この結果得られたマスク情報と同じビット情報を、一致線を有効にしている複数のメモリ・ワードに格納されているマスク情報から探せば、有効状態のビット数が最小のマスク情報に対応する記憶データを選択することができる。
【0066】本発明の連想メモリに係る手段1は、記憶データの1ビット又は複数ビットごとに検索対象から除外するか否かを、有効状態、無効状態により設定可能なマスク情報を当該記憶データの1ワード又は複数ワードごとに有する連想メモリにおいて、対応するマスク情報がマスク有効状態の場合に記憶データの1ビット又は複数ビットを検索対象から除外する1次検索を当該記憶データの1ワードごとに外部から入力された検索データを用いて行った結果、選出されるべきデータとして1つ又は複数のワードが選出された際、当該選出されたワードに対応するマスク情報同士をマスク有効状態を真とした論理積を行った一致マスク論理積情報と前記検索データとの第1の論理演算を行う手段を設けたものである。
【0067】本発明の連想メモリに係る手段2は、前記記憶データとして1次検索の際に対応する前記マスク情報により検索対象から除外される1ビット又は複数のビットに特定ビット・パターンを格納し、2次検索として前記記憶データが前記第1の論理演算の結果と一致したワードを選出するものである。
【0068】本発明の連想メモリに係る手段3は、前記記憶データにおいて1次検索の際に対応する前記マスク情報により検索対象から除外された1ビット又は複数のビットが特定ビット・パターンであると見なして前記論理演算の結果を検索データとする2次検索を行い、前記第1の論理演算の結果と一致したワードを選出するものである。
【0069】本発明の連想メモリに係る手段4は、前記特定ビット・パターンは、すべての当該ビットが記憶データの無効状態により構成されているものである。
【0070】本発明の連想メモリに係る手段5は、前記第1の論理演算は、前記一致マスク論理積情報のビットがマスク情報の無効状態ならば前記検索データの同じビット位置の情報を、前記一致マスク論理積情報のビットがマスク情報の有効状態ならば記憶データの無効状態を、同じビット位置の演算結果とするものである。
【0071】本発明の連想メモリに係る手段6は、記憶データの1ビット又は複数ビットごとに検索対象から除外するか否かを、有効状態、無効状態により設定可能なマスク情報を当該記憶データの1ワード又は複数ワードごとに有する連想メモリにおいて、対応するマスク情報がマスク有効状態の場合に記憶データの1ビット又は複数ビットを検索対象から除外する検索を当該記憶データの1ワードごとに外部から入力された検索データを用いて行った結果、選出されるべきデータとして1つ又は複数のワードが選出された際、当該選出されたワードに対応するマスク情報同士をマスク有効状態を真とした論理積を行った一致マスク論理積情報と前記検索データとの第1の論理演算を行う手段を有する第1の連想メモリと、前記第1の連想メモリの対応するアドレスのワードに格納されている記憶データを格納している第2の連想メモリを有し、外部から与えられた検索データを第1の連想メモリに入力し論理演算結果を得る1次検索と、前記論理演算結果を前記第2の連想メモリの検索データとして入力し前記論理演算結果と前記記憶データのビット情報に一致するワードを選択する2次検索を行うものである。
【0072】本発明の連想メモリに係る手段7は、前記第1の連想メモリが出力する前記論理演算結果を、1つ又は複数の記憶手段に格納し、該記憶手段の出力を前記第2の記憶データに入力することにより、前記第1の連想メモリによる検索と、前記第2の連想メモリによる検索を並列に実行するものである。
【0073】本発明の連想メモリに係る手段8は、記憶データの1ビット又は複数ビットごとに検索対象から除外するか否かを、有効状態、無効状態により設定可能なマスク情報を当該記憶データの1ワード又は複数ワードごとに有する連想メモリにおいて、対応するマスク情報がマスク有効状態の場合に記憶データの1ビット又は複数ビットを検索対象から除外する1次検索を当該記憶データの1ワードごとに外部から入力された検索データを用いて行った結果1つ又は複数の記憶データが前記検索データと一致したとき、検索データに対して一致した記憶データに対応するマスク情報のすべての中で検索対象から除外するよう設定された記憶情報のビット数が最小であるマスク情報を中間情報として生成し、該中間情報と前記検索情報との前記第1の論理演算を行った結果を演算結果出力線に出力する第1の検索手段と、演算結果出力線に一致する前記記憶データを識別する信号を出力する第2の検索手段とを有するものである。
【0074】本発明の連想メモリに係る手段9は、前記1次検索の際に対応する前記マスク情報により検索対象から除外される前記記憶データの1ビット又は複数のビットに特定ビット・パターンを格納しているものである。
【0075】本発明の連想メモリに係る手段10は、第2の検索手段において、前記1次検索の際に対応する前記マスク情報により検索対象から除外される前記記憶データの1ビット又は複数のビットを特定ビット・パターンとみなして検索を行い前記演算結果出力線と一致したワードを選出するものである。
【0076】本発明の連想メモリに係る手段11は、前記特定ビット・パターンは、すべての当該ビットが記憶データの無効状態により構成されているものである。
【0077】本発明の連想メモリに係る手段12は、第1の検索手段が、記憶データ1語ごとに検索データとマスク情報を付加した該記憶データが一致するときに有効状態となる一致線を有し、かつ、一つ又は複数の記憶データが該検索データと一致したとき、一致した記憶データに対応するマスク情報のすべてに対してマスク情報の有効状態を真とする論理積演算結果を中間情報として生成し、当該中間情報のビットがマスク情報の無効状態ならば前記検索データの同じビット位置の情報を、当該中間情報のビットがマスク情報の有効状態ならば記憶データの無効状態を、演算結果出力線の同じビット位置に出力する演算結果とする演算結果出力回路を有する演算結果出力機能付連想メモリにより構成されるものである。
【0078】本発明の連想メモリに係る手段13は、第1の検索手段において、演算結果出力線の情報を格納する第1の記憶手段と、外部からの検索情報と第1の記憶手段の出力信号とを選択し検索データとして入力する選択手段と、第1の記憶手段の出力信号が検索データとして選択されているときには対応するマスク情報がマスク有効状態である前記記憶データの1ビット又は複数ビットを検索対象から除外する機能を無効化して前記検索データと当該記憶データを比較した結果を対応する前記一致線に出力する比較手段とを有することにより、第2の検索手段の構成要素を第1の検索手段の構成要素と共有するものである。
【0079】本発明の連想メモリに係る手段14は、第1の検索手段において、演算結果出力線の情報を格納する第1の記憶手段と、外部からの検索情報と第1の記憶手段の出力信号とを選択し検索データとして入力する選択手段と、第1の記憶手段の出力信号が検索データとして選択されているときには対応するマスク情報がマスク有効状態である前記記憶データの1ビット又は複数ビットを記憶データの無効状態とみなして前記検索データと当該記憶データを比較した結果を対応する前記一致線に出力する比較手段とを有することにより、第2の検索手段の構成要素を第1の検索手段の構成要素と共有するものである。
【0080】本発明のルータに係る手段15は、記憶データの1ビット又は複数ビットごとに検索対象から除外するか否かを、有効状態、無効状態により設定するマスク情報を当該記憶データ1ワード又は複数ワードごとに有する連想メモリに経路情報を格納するルータにおいて、ワードごとにマスク情報がマスク有効状態の場合に対応する当該記憶データの1ビット又は複数ビットを検索対象から除外する1次検索を入力転送データの目的地ネットワーク・アドレスを検索データとして行った結果一つ又は複数の経路情報が一致したとき、目的地ネットワーク・アドレスに対して一致した記憶データに対応するマスク情報同士をマスク有効状態を真とした論理積を行うことで生成した一致マスク論理積情報と前記検索データとの第1の論理演算を行った結果を演算結果出力線に出力する第1の検索手段と、演算結果出力線の情報と一致する記憶データを有する前記経路情報を識別する一致信号を出力する第2の検索手段と、前記一致信号により前記入力転送データの転送先アドレスを決定する手段と、前記入力転送データを前記転送先アドレスに転送する手段と、を備えたものである。
【0081】本発明のルータに係る手段16は、記憶データの1ビット又は複数ビットごとに検索対象から除外するか否かを、有効状態、無効状態により設定するマスク情報を当該記憶データ1ワード又は複数ワードごとに有する経路情報を複数格納する経路情報テーブルを有するルータにおいて、ワードごとにマスク情報がマスク有効状態の場合に対応する当該記憶データの1ビット又は複数ビットを検索対象から除外する1次検索を入力転送データの目的地ネットワーク・アドレスを検索データとして行った結果一つ又は複数の経路情報が一致したとき、目的地ネットワーク・アドレスに対して一致した記憶データに対応するマスク情報同士をマスク有効状態を真とした論理積を行うことで生成した一致マスク論理積情報と前記検索データとの第1の論理演算を行い演算結果出力信号を発生し、演算結果出力信号と一致する記憶データを有する前記経路情報を識別する一致信号を発生し、前記一致信号により前記入力転送データの転送先アドレスを決定し、前記入力転送データを前記転送先アドレスに転送するものである。
【0082】本発明のネットワークシステムに係る手段17は、前記ルータを介してネットワークに接続された機器間でデータ通信を行うものである。
【0083】
【発明の実施の形態】
【第一の実施例の構成】本発明の第一の実施の形態について図面を参照して詳細に説明する。図1は、本発明の連想メモリ1の構成例を示すブロック図である。連想メモリ1は、nビット2入力1出力セレクタ23と、nビットm語の連想メモリ・ワード2−1〜2−mと、nビット・ラッチ21と、制御回路30と、反転論理ゲート16−1〜16−nと、論理ゲート18−1〜18−nを有しており、各連想メモリ・ワード2−jは、n個の連想メモリ・セル7−j−1〜7−j−nを備えている。各連想メモリ・ワード2−jには、対応するデータ・ワード線3−jと、マスク・ワード線6−jと、及び比較制御信号4が入力のために接続され、対応する一致線5−j、及びn本の一致マスク中間論理線14−1〜14−nが出力のために接続され、n本のビット線13−1〜13−nが入出力のために接続されている。
【0084】各連想メモリ・セル7−j−kには、対応するデータ・ワード線3−jと、マスク・ワード線6−jと、及び比較制御信号4が入力のために接続され、対応する一致線5−j、及び一致マスク中間論理線14−kが出力のために接続され、ビット線13−kが入出力のために接続されている。
【0085】各連想メモリ・セル7−j−kは、ビット線13−kを介して外部から入力される記憶データの対応するビット情報を格納するデータ・セル8−j−kと、データ・セル8−j−kに記憶されたビット情報と外部からビット線13−kを介して入力される情報とを比較する比較器10−j−kと、外部からビット線13−kを介して入力されるマスク情報の対応するビット情報を格納するマスク・セル9−j−kと、及び論理ゲート11−j−kとを備えている。ここで、マスク・セル9−j−kに格納されたビット情報がマスク情報の無効状態の場合には、対応するデータ・セル8−j−kには、記憶データの無効状態を格納する。
【0086】なお、本実施の形態では、マスク情報の有効状態を“0"、無効状態を“1"とし、記憶データの有効状態を“1"、無効状態を“0"とする。マスク情報と同様に、一致マスク論理積線17−1〜17−nの有効状態を“0"、無効状態を“1"とする。一致線5−1〜5−mの有効状態を“1"、無効状態を“0"とする。
【0087】データ・ワード線3−1〜3−mと、データ・セル8−1−1〜8−m−nの動作は、従来の連想メモリのデータ・ワード線106−1〜106−mと、データ・セル108−1−1〜108−m−nの動作と同じである。また、マスク・ワード線6−1〜6−mと、マスク・セル9−1−1〜9−m−nの動作は、従来の連想メモリのマスク・ワード線111−1〜111−mと、マスク・セル112−1−1〜112−m−nの動作と同じである。
【0088】一致線5は、検索動作の開始前には、ハイ・レベルにプリ・チャージされ、有効状態“1"になっているものとする。
【0089】比較器10は、対応するビット線13と、それに同一の連想メモリ・セル7−1−1〜7−m−nの中のデータ・セル8に格納されている記憶データと、マスク・セル9に格納されているマスク情報と、及び比較制御信号4を入力とする。比較器10は、比較制御信号4が無効状態“0"かつマスク情報が有効状態ならば、対応する一致線5を解放状態にし、それ以外の場合には、ビット線13の値と記憶データが一致するならば対応する一致線5を開放状態にし、一致しないならば無効状態“0"を出力する。連想メモリ・ワード2の中のn個の比較器10がすべて一致線5を開放状態にしているときに、一致線5は有効状態“1"となり、それ以外の場合には無効状態“0"となる、一致線5の有効状態“1"を真としたワイアードAND論理接続を構成している。つまり、検索動作時には、比較制御信号4が無効状態“0"かつマスク情報が有効状態“0"のために比較対象から除外されたビットを除いて、連想メモリ・ワード2が格納している記憶データとビット線13−1〜13−nが完全に一致する場合に限り、一致線5は有効状態“1"となり、それ以外の場合は無効状態“0"となる。もちろん同様の動作となるように通常の論理ゲートを用いて構成してもかまわない。
【0090】論理ゲート11−1−1〜11−m−nは、同一の連想メモリ・ワード2−1〜2−mの中の一致線5−1〜5−mが有効状態“1"かつ、同一の連想メモリ・セル7−1−1〜7−m−nの中のマスク・セル9−1−1〜9−m−nに格納されたマスク情報が無効状態“1"のときに、対応する一致マスク中間論理線14−1〜14−nに“0"を出力し、それ以外の場合には開放状態にする。
【0091】各一致マスク中間論理線14−1〜14−nは、抵抗15−1〜15−nによりプル・アップされており、対応するm個の論理ゲート11−1−1〜11−m−nとワイアード論理接続を構成している。従って、接続されているm個の論理ゲート11がすべて一致マスク中間論理線14を開放状態にしているときに、一致マスク中間論理線14は“1"となり、それ以外の場合には“0"となる。もちろん同様の動作となるように通常の論理ゲートを用いて構成してもかまわない。
【0092】反転論理ゲート16−1〜16−nは、対応する一致マスク中間論理線14−1〜14−nの論理状態を反転し、一致マスク論理積線17−1〜17−nとして出力する。これにより、一致マスク論理積線17−1〜17−nには、検索動作時に有効状態“1"となっている一致線5を有する連想メモリ・ワード2の中のマスク情報のすべてに対して、マスク情報の有効状態“0"を真とした論理積演算した結果が得られることになる。つまり、一致マスク論理積線17−1〜17−nは、検索動作時に検索データ12と一致した記憶データに対応するマスク情報の中で、最も有効状態“0"のビット数が少ないマスク情報と同じ値となる。
【0093】論理ゲート18−1〜18−nは、対応するビット線13−1〜13−nと一致マスク論理積線17−1〜17−nを入力とし、一致マスク論理積線17がマスク情報の無効状態ならばビット線13の状態をそのまま演算結果出力線19−1〜19−nに出力し、一致マスク論理積線17がマスク情報の有効状態ならば、記憶データの無効状態を演算結果出力線19−1〜19−nに出力する。これにより、検索動作時に検索データ12と一致した記憶データに対応するマスク情報の中で、最も有効状態“0"のビット数が少ないマスク情報の有効状態“0"となっているビットに対応する検索データ12のビットを、記憶データの無効状態“0"に置換した値が、演算結果出力線19−1〜19−nに得られることになる。本実施の形態ではマスク情報の無効状態を“1"、記憶データの無効状態を“0"としているので、論理ゲート18−1〜18−nは、“1"を真とした論理積ゲートで構成することができる。
【0094】nビット・ラッチ21は、ラッチ制御信号22が有効状態の時に、演算結果出力線19−1〜19−nの状態を内部に格納する。また、格納した状態をラッチ出力線20−1〜20−nに出力する。
【0095】nビット2入力1出力セレクタ23は、ビット線13−1〜13−nに出力するデータを、選択信号24の状態により、検索データ12−1〜12−nとラッチ出力線20−1〜20−nの一方から選択する。
【0096】制御回路30は、連想メモリ1の動作を制御するため、クロック信号31に同期して、ラッチ制御信号22、選択信号24及び比較制御信号4を出力する。
【0097】
【第一の実施例の構成詳細】次に、上述の連想メモリ・セル7の構成例を図2を用いて説明する。図15に示す従来の連想メモリ・セル118と比較すれば分かるように、本発明の連想メモリ・セル7の、ビット線13a、13b、データ・ワード線3、データ・セル8、マスク・ワード線6、及びマスク・セル9は、従来の連想メモリ・セル118と同様である。
【0098】従って従来と異なる部分のみの説明を行う。なお、従来の連想メモリ・セル118が有していたマスク比較器120及びマスク一致線119は、本発明の連想メモリ・セルでは不要である。
【0099】比較器10はMOSトランジスタ(T3)205、MOSトランジスタ(T4)206、MOSトランジスタ(T5)207、MOSトランジスタ(T6)208、及びMOSトランジスタ(T7)209により構成される。MOSトランジスタ(T3)205とMOSトランジスタ(T4)206はビット線13a,13bの間に直列に挿入される。MOSトランジスタ(T3)205は、データ・セル8内の反転論理ゲート(G1)201の出力がハイ・レベルのときに導通状態となる。MOSトランジスタ(T4)206は、データ・セル8内の反転論理ゲート(G2)202の出力がハイ・レベルのときに導通状態となる。MOSトランジスタ(T6)208とMOSトランジスタ(T7)209は並列接続され、この並列接続された2つのMOSトランジスタは、MOSトランジスタ(T5)207と共に、一致線5と低電位の間に直列に挿入される。MOSトランジスタ(T6)208は、マスク・セル9内の反転論理ゲート(G4)211の出力がハイ・レベルの時に導通状態となる。MOSトランジスタ(T7)209は、比較制御信号4が有効状態“1"の時に導通状態となる。
【0100】MOSトランジスタ(T5)207は、MOSトランジスタ(T3)205とMOSトランジスタ(T4)206の接続点の電位がハイ・レベルの時に導通状態となる。ビット線13aと反転論理ゲート(G1)201の出力が共にハイ・レベル、又はビット線13bと反転論理ゲート(G2)202の出力が共にハイ・レベルのときに、MOSトランジスタ(T3)205とMOSトランジスタ(T4)206の接続点はハイ・レベルとなり、MOSトランジスタ(T5)207を導通状態とする。
【0101】従って、データ・セル8に格納されている記憶データと、ビット線13a,13b上の検索データ12が異なる場合にMOSトランジスタ(T5)207は導通状態になる。またMOSトランジスタ(T6)208はマスク・セル9内に格納されているマスク情報が“0"のときには開放状態であり、“1"のときに導通状態となる。一致線5は検索動作を開始する前に高電位にプリ・チャージされているものとする。これにより、複数の連想メモリ・セル7が一致線5にMOSトランジスタ(T6)208、及びMOSトランジスタ(T7)209を介して接続されているとき、一つの連想メモリ・セル7でもロウ・レベルを出力していると一致線5はロウ・レベルとなるようなワイアードAND接続となる。
【0102】MOSトランジスタ(T5)207が導通状態のときに、並列接続されたMOSトランジスタ(T6)208、MOSトランジスタ(T7)209のどちらか一つでも導通状態の場合に連想メモリ・セル7は一致線5に無効状態“0"を出力し、それ以外の時には一致線5を開放状態とする。即ち、マスク情報が有効状態“0"かつ比較制御信号4が無効状態“0"の場合には検索データ12と記憶データの比較結果によらず一致線5を開放状態とし、それ以外の場合にはビット線13a,13b上の検索データ12とデータ・セル8に格納されている記憶データが一致するときに開放状態とし、異なる場合には無効状態“0"を出力する。
【0103】次に、論理ゲート11と一致マスク中間論理線14の働きを説明する。一致マスク中間論理線14は図1の抵抗15によりプル・アップされ検索動作前には“1"になっている。論理ゲート11は、一致マスク中間論理線14と低電位との間に直列に挿入されたMOSトランジスタ(T10)214と、MOSトランジスタ(T11)215で構成されている。MOSトランジスタ(T10)214は、一致線5が有効状態“1"のときに導通状態となり、無効状態“0"のときには開放状態となる。MOSトランジスタ(T11)215は、マスク・セル9内部の反転論理ゲート(G4)211の出力がハイ・レベルの場合に導通状態となり、ロウ・レベルの場合には開放状態となる。つまり、マスク・セル9に格納されているマスク情報が無効状態“1"のときに導通状態となり、有効状態“0"のときには開放状態となる。これにより論理ゲート11は、一致線5が有効状態“1"かつマスク・セル9に格納されたマスク情報が無効状態“1"のときに、一致マスク中間論理線14に“0"を出力し、それ以外の場合には開放状態にする。
【0104】
【第一の実施例の動作】次に、上述の連想メモリ1を、図18のルータ400−3における転送先ネットワーク・アドレスの計算に用いた場合の動作を、図3を用いて説明する。そのときのタイミングチャートを図4に示す。
【0105】連想メモリ1を8ビット5語の構成と仮定し、各連想メモリ・ワード2−1〜2−5に格納されている記憶データ、マスク情報には、図18のルータ400−3のネットワーク・アドレス(3.*.*.*)以外の接続情報を記憶しているものとする。このとき、接続情報の中のドント・ケア“*"状態のビットは、記憶データの該当ビットを記憶データの無効状態“0"、マスク情報の該当ビットをマスク・データの有効状態“0"とすることで表現される。
【0106】つまり、連想メモリ・ワード2−1には(1.*.*.*)を実現するため2進数で、記憶データには(01.00.00.00)を、マスク情報として(11.00.00.00)を格納してある。同様に連想メモリ・ワード2−2には(2.*.*.*)を実現するため2進数で、記憶データには(10.00.00.00)を、マスク情報として(11.00.00.00)を格納してある。連想メモリ・ワード2−3には(1.2.2.*)を実現するため2進数で、記憶データには(01.10.10.00)を、マスク情報として(11.11.11.00)を格納してある。連想メモリ・ワード2−4には(1.2.*.*)を実現するため2進数で、記憶データには(01.10.00.00)を、マスク情報として(11.11.00.00)を格納してある。連想メモリ・ワード2−5には(2.1.1.*)を実現するため2進数で、記憶データには(10.01.01.00)を、マスク情報として(11.11.11.00)を格納してある。
【0107】以下、検索データ12として図18のPC401−1の4進数のネットワーク・アドレス(1.2.2.1)を入力し検索動作を行った場合の動作説明をする。
【0108】まず、図4のタイミング(1)で、すべての一致線5−1〜5−5は、ハイ・レベルにプリ・チャージされ、有効状態“1"になっている。次に図4のタイミング(2)で、制御回路30が出力する選択信号24により、nビット2入力1出力セレクタ23は検索データ12を選択し、ビット線13−1〜13−8に出力する。また、制御回路30は比較制御信号4に無効状態“0"を出力し、各連想メモリ・セル7−1−1〜7−m−nにおいて、その中の記憶データと検索データ12の対応ビットの比較結果によらずに、その中のマスク情報が有効状態“0"の場合には対応する一致線5を解放状態とすることを許可する。つまりドント・ケア“*"も考慮して比較する。これにより、連想メモリ1の連想メモリ・ワード2−1に格納されている4進表現の(1.*.*.*)と、連想メモリ・ワード2−3に格納されている4進表現の(1.2.2.*)と、連想メモリ・ワード2−4に格納されている4進表現の(1.2.*.*)がビット線13−1〜13−8上の検索データ12と一致する。従って、一致線5−1、5−3及び5−4の3本が有効状態“1"となり、残りの一致線5−2、5−5は無効状態“0"となる。
【0109】ここで、一致マスク論理積線17−1からは、連想メモリ・ワード2−1内の一致マスク中間論理線14−1に対応するマスク情報“1"と、連想メモリ・ワード2−3内の一致マスク中間論理線14−1に対応するマスク情報“1"と、連想メモリ・ワード2−4内の一致マスク中間論理線14−1に対応するマスク情報“1"の、マスク情報の有効状態“0"を真とした論理積“1"が出力される。一致マスク論理積線17−2からは、連想メモリ・ワード2−1内の一致マスク中間論理線14−2に対応するマスク情報“1"と、連想メモリ・ワード2−3内の一致マスク中間論理線14−2に対応するマスク情報“1"と、連想メモリ・ワード2−4内の一致マスク中間論理線14−2に対応するマスク情報“1"の、マスク情報の有効状態“0"を真とした論理積“1"が出力される。以下同様に、一致マスク論理積線17−3からは“0"と“1"と“1"のマスク情報の有効状態“0"を真とした論理積“1"が、一致マスク論理積線17−4からは“0"と“1"と“1"のマスク情報の有効状態“0"を真とした論理積“1"が、一致マスク論理積線17−5からは“0"と“1"と“0"のマスク情報の有効状態“0"を真とした論理積“1"が、一致マスク論理積線17−6からは“0"と“1"と“0"のマスク情報の有効状態“0"を真とした論理積“1"が、一致マスク論理積線17−7からは“0"と“0"と“0"のマスク情報の有効状態“0"を真とした論理積“0"が、一致マスク論理積線17−8からは“0"と“0"と“0"のマスク情報の有効状態“0"を真とした論理積“0"が、それぞれ出力される。従って、一致マスク論理積線17−1〜17−8には、2進表現で“11111100"が出力される。論理ゲート18−1〜18−8は、一致マスク論理積線17−1〜17−8の値“11111100"と、ビット線13−1〜13−8に出力されている検索データ12の値“01101001"を入力とし、前述のとおり“1"を真とした論理積の値“01101000"を演算結果出力線19−1〜19−8に出力する。
【0110】この状態で、制御回路30が出力するラッチ制御信号20が有効状態になり、nビット・ラッチ21は演算結果出力線19−1〜19−8の状態を内部に格納する。従って、nビット・ラッチ21は2進表現で“01101000"を格納し、その値をラッチ出力線20−1〜20−8に出力する。
【0111】図4のタイミング(3)は、本実施の形態では、タイミング(2)とタイミング(4)双方のクロック信号31の状態を同一にするために挿入されており、連想メモリ1は、タイミング(2)の最終状態を保持し続ける。タイミング(2)とタイミング(4)双方のクロック信号31の状態を同一でなくても制御回路30が動作する場合には、タイミング(3)を挿入する必要ない。
【0112】次に図4のタイミング(4)で、制御回路30が出力する選択信号24により、nビット2入力1出力セレクタ23はラッチ出力線20を選択し、その情報“01101000"を対応するビット線13−1〜13−8に出力した後、連想メモリ1は2回目の検索動作を開始する。2回目の検索動作では、一致線5−1〜5−5に保持されている、タイミング(2)で実行した1回目の検索動作の結果を利用する。本実施の形態では、一致線5−1、5−3及び5−4の3本が有効状態“1"を保持しており、データ一致線5−2、5−5は無効状態“0"を保持している。1回目の検索動作の結果を記憶手段に格納し、タイミング(4)での検索時にその格納状態を利用してもよいことは、言うまでもない。また、制御回路30は比較制御信号4に有効状態“1"を出力する。これにより、各連想メモリ・セル7−1−1〜7−m−nは、その中のマスク情報によらず、その中の記憶データと対応するビット線13の比較結果が不一致の場合には、一致線5に無効状態“0"を出力する。つまりドント・ケア“*"を考慮せず、各連想メモリ・ワード2−1〜2−5に格納されている記憶データ自体とビット線13―1〜13−8の状態“01101000"とを比較し、不一致の場合には対応する一致線5−1〜5−5に無効状態“0"を出力することになる。
【0113】本実施の形態では、ビット線13−1〜13−8の状態“01101000"に対して、連想メモリ・ワード2−3が格納する記憶データが完全に一致し、対応する一致線5−3を開放状態にする。他の連想メモリ・ワード2−1,2−2、2−4、及び2−5が格納する記憶データは一致しないので、対応する一致線5−1,5−2、5−4、及び5−5に無効状態“0"を出力する。従って、2回目の検索動作開始前に有効状態“1"を保持していた一致線5−1,5−3,5−4の3本の中で、2回目の検索動作後も有効状態“1"を保持し続けるのは、一致線5−3のみとなる。
【0114】従って、入力した検索データ12と、対応するマスク情報を考慮して比較した結果一致する記憶データの中で、マスク情報の有効状態のビットが最も少ない記憶データに対応する一致線5−3のみに有効状態を出力することがわかる。
【0115】上述のように、本発明の第一の実施例の連想メモリ1は、1回目の検索動作、2回目の検索動作共に、比較器10−1−1〜10−m−nで実行し、結果を一致線5−1〜5−mに出力する。従って図2に示すように連想メモリ・セル7は、図15に示す連想メモリ・セル118と比較して、マスク・比較器が削除することができる。ここで、従って、比較器10,及び論理ゲート11を構成するMOSトランジスタの面積を、最小面積のMOSトランジスタの10倍、一般的なスタティックRAM素子の面積は最小面積のMOSトランジスタの6倍と仮定すると、図2から容易に分かるように連想メモリ・セル7の面積は、最小面積のMOSトランジスタの82倍となる。従来の連想メモリ・セル118の面積は前述のように最小面積のMOSトランジスタの102倍であったから、本発明の連想メモリ・セル7は、従来の連想メモリ・セル118に比べて20%程度面積を削減できることになる。
【0116】また、1回目の検索動作の結果も、2回目の検索動作の結果も同一の一致線5−1〜5−mに出力されるため、従来の連想メモリ116で必要であった1回目の検索動作の結果を2回目の検索動作を実行するまで保持するためのラッチ123−1〜123−mが不要である。従って、従来の連想メモリ116に比べて、さらに面積削減が可能である。例えば、1語64ビットで32768語の構成の場合、ラッチ123が10個のMOSトランジスタから構成されていると仮定すると、およそ33万個のMOSトランジスタ分の面積が削減できることになる。従って、上記の連想メモリ・セルの面積削減分と合わせると、チップ全体で25%程度の面積削減が可能となる。
【0117】また、1回目の検索動作の結果も、2回目の検索動作の結果も同一の一致線5−1〜5−mに出力されるため、検索動作のごとのプリ・チャージもm本の一致線5−1〜5−mとn本の一致マスク中間論理線14−1〜14−nのみでよい。つまり検索動作のたび(m+n)本プリ・チャージすればよい。従来の連想メモリ116では、前述のとおり、m本のデータ一致線107−1〜107−m、m本のマスク一致線119−1〜119−m、及びn本の最短マスク線122−1〜122−nのプリ・チャージが必要であり、従って、検索動作のたびに(2m+n)本プリ・チャージすることになる。ここで1語64ビットで32768語の構成の場合、チップ全体でプリ・チャージする配線の本数は、従来の連想メモリ116では65600本、本発明の連想メモリ1では32832本となり、従って、従来の連想メモリ116と比較して消費電力が50%程度削減できることになる。
【0118】また、連想メモリ・セル7の面積削減に伴い、ビット線13−1〜13−n、一致マスク中間論理線14−1〜14−nの配線長も短縮される。連想メモリ・セル7を構成するMOSトランジスタの大きさが前述の例のとおりだとすると、図2から容易に分かるように従来の連想メモリ・セル118に比べて25%程度配線長が短縮されることになる。配線容量がその分減少するので、クロック信号31の周波数を32%程度高くすることができるという効果もある。
【0119】
【第二の実施例の構成】次に、本発明の第二の実施の形態について図面を参照して詳細に説明する。本実施の形態の連想メモリ26は、記憶データの有効状態を“0"、無効状態を“1"としていること、及び論理ゲート25−1〜25−nの構成を除けば、第一の実施の形態の連想メモリ1と同様である。ここで第一の実施の形態と同様に、マスク・セル9−j−kに格納されたビット情報がマスク情報の無効状態の場合には、対応するデータ・セル8−j−kには、記憶データの無効状態を格納する。
【0120】論理ゲート25−1〜25−nは、第一の実施の形態と同様に、対応するビット線13−1〜13−nと一致マスク論理積線17−1〜17−nを入力とし、一致マスク論理積線17がマスク情報の無効状態ならばビット線13の状態をそのまま演算結果出力線19−1〜19−nに出力し、一致マスク論理積線17がマスク情報の有効状態ならば、記憶データの無効状態を演算結果出力線19−1〜19−nに出力する。これにより、検索動作時に検索データ12と一致した記憶データに対応するマスク情報の中で、最も有効状態“0"のビット数が少ないマスク情報の有効状態“0"となっているビットに対応する検索データ12のビットを、記憶データの無効状態“1"に置換した値が、演算結果出力線19−1〜19−nに得られることになる。本実施の形態ではマスク情報の無効状態を“1"、記憶データの無効状態を“1"としているので、論理ゲート25−1〜25−nは、“1"を真とし、一致マスク論理積線17の論理反転とビット線13との論理和を演算する論理回路で構成することができる。
【0121】
【第二の実施例の動作】次に、上述の連想メモリ26を、図18のルータ400−3における転送先ネットワーク・アドレスの計算に用いた場合の動作を、図6を用いて説明する。
【0122】連想メモリ26を8ビット5語の構成と仮定し、各連想メモリ・ワード2−1〜2−5に格納されている記憶データ、マスク情報には、図18のルータ400−3のネットワーク・アドレス(3.*.*.*)以外の接続情報を記憶しているものとする。このとき、接続情報の中のドント・ケア“*"状態のビットは、記憶データの該当ビットを記憶データの無効状態“1"、マスク情報の該当ビットをマスク情報の有効状態“0"とすることで表現される。
【0123】つまり、連想メモリ・ワード2−1には(1.*.*.*)を実現するため2進数で、記憶データには(01.11.11.11)を、マスク情報として(11.00.00.00)を格納してある。同様に連想メモリ・ワード2−2には(2.*.*.*)を実現するため2進数で、記憶データには(10.11.11.11)を、マスク情報として(11.00.00.00)を格納してある。連想メモリ・ワード2−3には(1.2.2.*)を実現するため2進数で、記憶データには(01.10.10.11)を、マスク情報として(11.11.11.00)を格納してある。連想メモリ・ワード2−4には(1.2.*.*)を実現するため2進数で、記憶データには(01.10.11.11)を、マスク情報として(11.11.00.00)を格納してある。連想メモリ・ワード2−5には(2.1.1.*)を実現するため2進数で、記憶データには(10.01.01.11)を、マスク情報として(11.11.11.00)を格納してある。
【0124】以下、検索データ12として図18のPC401−1の4進数のネットワーク・アドレス(1.2.2.1)を入力し検索動作を行った場合の動作を、第一の実施の形態と異なる点についてのみ説明する。
【0125】1回目の検索動作においては、第一の実施の形態と同様に、連想メモリ・ワード2−1、2−3,及び2−4が一致し、一致マスク論理積線17−1〜17−8には、2進表現で“11111100"が出力される。論理ゲート18−1〜18−8は、一致マスク論理積線17−1〜17−8の値“11111100"と、ビット線13−1〜13−8に出力されている検索データ12の値“01101001"を入力とし、前述のとおり“1"を真とし、一致マスク論理積線17の論理反転とビット線13との論理和を演算結果“01101011"を演算結果出力線19−1〜19−8に出力する。
【0126】2回目の検索動作においては、ビット線13−1〜13−8の状態“01101011"に対して、連想メモリ・ワード2−3が格納する記憶データが完全に一致し、対応する一致線5−3を開放状態にする。他の連想メモリ・ワード2−1,2−2、2−4、及び2−5が格納する記憶データは一致しないので、対応する一致線5−1,5−2、5−4、及び5−5に無効状態“0"を出力する。従って、2回目の検索動作開始前に有効状態“1"を保持していた一致線5−1,5−3,5−4の3本の中で、2回目の検索動作後も有効状態“1"を保持し続けるのは、一致線5−3のみとなる。
【0127】従って、入力した検索データ12と、対応するマスク情報を考慮して比較した結果一致する記憶データの中で、マスク情報の有効状態のビットが最も少ない記憶データに対応する一致線5−3のみに有効状態を出力することがわかる。
【0128】第一の実施の形態、第二の実施の形態共にマスク情報の有効状態を“0"として説明したが、マスク情報の有効状態を“1"とした場合においても、前述と同様に、各連想メモリ・ワードにおいて、マスク情報の有効状態となっているマスク情報のビットに対応する記憶データのビットに記憶データの無効状態を格納しておき、第1回目の検索動作時に有効状態となっている一致線を有する連想メモリ・ワードの中のマスク情報のすべてに対して、マスク情報の有効状態を真とした論理積演算を行い、その演算結果が出力されている一致マスク論理積線の各ビットがマスク情報の無効状態ならば対応するビット線の状態を2回目の検索動作時のビット線の状態とし、マスク情報の有効状態ならば、記憶データの無効状態を2回目の検索動作時のビット線の状態とするように構成すれば、本発明の連想メモリを実現できることは言うまでもない。
【0129】また、第一の実施の形態、第二の実施の形態共に各連想メモリ・ワードにおいて、マスク有効状態となっているマスク情報のビットに対応する記憶データのビットに記憶データの無効状態を格納したが、比較制御信号4が有効状態となる2回目の検索動作時には、比較器10においてマスク有効状態なっているマスク情報のビットに対応する記憶データには記憶データの無効状態が記憶されているものとみなして比較を行っても同じ結果が得られることは容易に分かる。
【0130】
【第三の実施例の構成】次に、本発明の第三の実施の形態について図面を参照して詳細に説明する。図7は本発明の第三の実施の形態の連想メモリ42の構成を示すブロック図である。
【0131】連想メモリ42は、nビットm語の演算結果出力機能付連想メモリ33と、nビットm語のマスク機能無し連想メモリ101とから構成される。本実施の形態では、演算結果出力機能付連想メモリ33が1回目の検索動作を行い演算結果38を計算し、得られた演算結果38を用いてマスク機能無し連想メモリ101が2回目の検索動作を行い一致線5−1〜5−mを出力する。
【0132】nビットm語の演算結果出力機能付連想メモリ33は、n本のビット線13−1〜13−nに入力された検索データ12を、m個の連想メモリ・ワード43−1〜43−mごとに内部のデータ・セル8−1−1〜8−1−nに格納されている記憶データ及びマスク・セル9−1−1〜9−m−nに格納されたマスク情報を用いて、計算された演算結果38をn本の演算結果出力線19−1〜19−nに出力する。演算結果38は、第一の実施の形態の連想メモリ1と同様な操作により計算される。ここで、マスク・セル9−j−kに格納されたビット情報がマスク情報の無効状態の場合には、対応するデータ・セル8−j−kに格納する状態は任意である。
【0133】マスク機能無し連想メモリ101は、ビット線103−1〜103−nから入力された演算結果38を、m個の連想メモリ・ワード104−1〜104−mごとに内部のデータ・セル105−1−1〜105−m−nに格納している第二の記憶データと一致しているかを比較した結果、一致した連想メモリ・ワード104に対応するデータ一致線107−1〜107−mに有効状態“1"を出力する。データ一致線107−1〜107−mの状態は、一致線5−1〜5−mとして連想メモリ42から出力される。ここで、演算結果出力機能付連想メモリ33のマスク・セル9−j−kに格納されたビット情報がマスク情報の無効状態の場合には、対応するデータ・セル105−j−kには、記憶データの無効状態を格納する。
【0134】なお、本実施の形態では、マスク情報の有効状態を“0"、無効状態を“1"とし、記憶データの有効状態を“1"、無効状態を“0"とする。マスク情報と同様に、一致マスク論理積線17−1〜17−nの有効状態を“0"、無効状態を“1"とする。一致線5−1〜5−mの有効状態を“1"、無効状態を“0"とする。
【0135】nビットm語の演算結果出力機能付連想メモリ33の構成例を図8に示す。演算結果出力機能付連想メモリ33は、nビットm語の連想メモリ・ワード43−1〜43−mと、反転論理ゲート16−1〜16−nと、論理ゲート18−1〜18−nを有しており、各連想メモリ・ワード43−jは、n個の連想メモリ・セル44−j−1〜44−j−nを備えている。反転論理ゲート16−1〜16−nと、論理ゲート18−1〜18−nの動作は第一の実施の形態の連想メモリ1と全く同様である。
【0136】各連想メモリ・ワード43−jには、対応するデータ・ワード線3−jと、マスク・ワード線6−jが入力のために接続され、対応する中間一致線41−j、及びn本の一致マスク中間論理線14−1〜14−nが出力のために接続され、n本のビット線13−1〜13−nが入出力のために接続されている。
【0137】各連想メモリ・セル44−j−kには、対応するデータ・ワード線3−jと、マスク・ワード線6−jが入力のために接続され、対応する中間一致線41−j、及び一致マスク中間論理線14−kが出力のために接続され、ビット線13−kが入出力のために接続されている。
【0138】各連想メモリ・セル44−j−kは、ビット線13−kを介して外部から入力される記憶データの対応するビット情報を格納するデータ・セル8−j−kと、データ・セル8−j−kに記憶されたビット情報と外部からビット線13−kを介して入力される情報とを比較する比較器32−j−kと、外部からビット線13−kを介して入力されるマスク情報の対応するビット情報を格納するマスク・セル9−j−kと、及び論理ゲート11−j−kとを備えている。
【0139】連想メモリ・セル43の、データ・ワード線3,マスク・ワード線6、一致マスク中間論理線14、ビット線13、データ・セル8,マスク・セル9、論理ゲート11の動作は、第一の実施例の連想メモリ1の連想メモリ・セル7と全く同様である。第一の実施例の連想メモリ1の連想メモリ・セル7の一致線5は、中間一致線41に名称変更されている。従って、第一の実施例の連想メモリ1の連想メモリ・セル7と異なる点についてのみ説明する。
【0140】本実施の形態では各データ・セル8に対応するマスク・セル9に格納されているマスク情報が有効状態の場合、該当データ・セル8に格納する記憶情報は、無効状態、有効状態のどちらでも構わない。
【0141】中間一致線41は、検索動作の開始前には、ハイ・レベルにプリ・チャージされているか、図示しない抵抗によりプル・アップされ、有効状態“1"になっているものとする。
【0142】比較器32は、対応するビット線13と、それに同一の連想メモリ・セル7−1−1〜7−m−nの中のデータ・セル8に格納されている記憶データと、マスク・セル9に格納されているマスク情報を入力とする。比較器32は、マスク情報が有効状態ならば、対応する中間一致線41を解放状態にし、それ以外の場合には、ビット線13の値と記憶データが一致するならば対応する中間一致線41を開放状態にし、一致しないならば無効状態“0"を出力する。連想メモリ・ワード43の中のn個の比較器32がすべて中間一致線41を開放状態にしているときに、中間一致線41は有効状態“1"となり、それ以外の場合には無効状態“0"となる、中間一致線41の有効状態“1"を真としたワイアードAND論理接続を構成している。つまり、検索動作時には、マスク情報が有効状態“0"のために比較対象から除外されたビットを除いて、連想メモリ・ワード43が格納している記憶データとビット線13−1〜13−nが完全に一致する場合に限り、中間一致線41は有効状態“1"となり、それ以外の場合は無効状態“0"となる。もちろん同様の動作となるように通常の論理ゲートを用いて構成してもかまわない。
【0143】次に、上述の連想メモリ・セル44の構成例を図9を用いて説明する。図2に示す第一の実施例の連想メモリ・セル7と比較すれば分かるように、本発明の連想メモリ・セル44は、比較制御線4と、比較器内MOSトランジスタ(T7)209が削除され、一致線5が中間一致線41に名称変更されている点を除くと、第一の実施例の連想メモリ・セル7と同様である。従って連想メモリ・セル7と異なる部分のみの説明を行う。
【0144】比較器32はMOSトランジスタ(T3)205、MOSトランジスタ(T4)206、MOSトランジスタ(T5)207、及びMOSトランジスタ(T6)208により構成され、それらの動作は第一の実施例の連想メモリ・セル7と同様である。
【0145】従って、MOSトランジスタ(T5)207が導通状態のときに、MOSトランジスタ(T6)208が導通状態の場合に連想メモリ・セル7は一致線5に無効状態“0"を出力し、それ以外の時には一致線5を開放状態とする。即ち、マスク情報が無効状態“0"の場合には検索データ12と記憶データの比較結果によらず一致線5を開放状態とし、それ以外の場合にはビット線13a,13b上の検索データ12とデータ・セル8に格納されている記憶データが一致するときに開放状態とし、異なる場合には無効状態“0"を出力する。
【0146】nビットm語のマスク機能無し連想メモリ101の構成例を図10に示す。マスク機能無し連想メモリ101は、連想メモリ・ワード104−1〜104−mから構成され、各連想メモリ・ワード104−jは、n個の連想メモリ・セル105−j−1〜105−j−nを備えている。各連想メモリ・ワード104−jには、対応するデータ・ワード線106−jが入力のために接続され、対応するデータ一致線107−jが出力のために接続され、n本のビット線103−1〜103−nが入出力のために接続されている。
【0147】各連想メモリ・セル105−j−kには、対応するデータ・ワード線106−jが入力のために接続され、対応するデータ一致線107−jが出力のために接続され、ビット線103−kが入出力のために接続されている。また、各連想メモリ・セル105−j−kは、第二の記憶データの対応するビット情報を格納するデータ・セル108−j−kと、ビット線103−kを介して入力される演算結果38とデータ・セル108−j−kに記憶されたビット情報とを比較する比較器109−j−kとを備えている。演算結果出力機能付連想メモリ33の対応する連想メモリ・ワード43−jのマスク・セル9−j−1〜9−j−nの中でマスク情報の有効状態となっているビットと対応するデータ・セル108―j−1〜108−j−nには、記憶データの無効状態をあらかじめ格納する。それ以外のビットのデータ・セル108―j−1〜108−j−nには、演算結果出力機能付連想メモリ33の対応するデータ・セル8−j−1〜8−j−nと同一の値をあらかじめ格納しておく。
【0148】各連想メモリ・セル105−1−1〜105−m−nにおいて、ビット線103、データ・ワード線106,データ・セル108、及びデータ一致線107の動作は、従来の連想メモリ116と同様である。
【0149】データ一致線107は、検索動作の開始前には、ハイ・レベルにプリ・チャージされているか、図示しない抵抗によりプル・アップされ、有効状態“1"になっているものとする。
【0150】比較器109は、対応するビット線103と、それに同一の連想メモリ・セル105−1−1〜105−m−nの中のデータ・セル108に格納されている第二の記憶データとを比較し、一致するならば対応するデータ一致線107を開放状態にし、一致しないならば無効状態“0"を出力する。連想メモリ・ワード104の中のn個の比較器109がすべてデータ一致線107を開放状態にしているときに、データ一致線107は有効状態“1"となり、それ以外の場合には無効状態“0"となる、データ一致線107の有効状態“1"を真としたワイアードAND論理接続を構成している。つまり、検索動作時には、連想メモリ・ワード104が格納している第二の記憶データとビット線103−1〜103−nが完全に一致する場合に限り、データ一致線107は有効状態“1"となり、不一致の場合には無効状態“0"となる。もちろん同様の動作となるように通常の論理ゲートを用いて構成してもかまわない。
【0151】次に、マスク機能無し連想メモリ101の連想メモリ・セル105の構成例を図11を用いて説明する。図15に示す従来の連想メモリ・セル118と比較すれば分かるように、マスク機能無し連想メモリ101の連想メモリ・セル105の、ビット線103a、103b、データ・ワード線106、データ・セル108は、従来の連想メモリ・セル118と同様である。従って従来と違う部分のみの説明を行う。
【0152】比較器109は、MOSトランジスタ(T103)305、MOSトランジスタ(T104)306、及びMOSトランジスタ(T105)307により構成される。従来の連想メモリ・セル118の比較器113とは、データ一致線107と低電位の間に直列に挿入されるMOSトランジスタからMOSトランジスタ(T106)308が削除され、データ一致線107とMOSトランジスタT105(307)を介してワイアードAND接続している点のみが異なる。
【0153】従って、検索動作時には、データ・セル108に格納されている第二の記憶データと、ビット線103a,103b上の検索データ102が異なる場合にMOSトランジスタ(T105)307は導通状態になり、連想メモリ・セル105はデータ一致線107に無効状態“0"を出力し、それ以外の時にはデータ一致線107を開放状態とする。
【0154】
【第三の実施例の動作】次に、上述の連想メモリ42を、図18のルータ400−3における転送先ネットワーク・アドレスの計算に用いた場合の動作を、図12を用いて説明する。連想メモリ42を8ビット5語の構成と仮定し、演算結果出力機能付連想メモリ33の各連想メモリ・ワード43−1〜43−5に格納されている記憶データ、マスク情報には、図18のルータ400−3のネットワーク・アドレス(3.*.*.*)以外の接続情報を記憶しているものとする。このとき、接続情報の中のドント・ケア“*"状態のビットは、マスク情報の該当ビットをマスク・データの有効状態“0"とすることで表現される。記憶データの該当ビットの状態は任意であるが、本実施の形態では記憶データの無効状態“0"を格納することにする。
【0155】つまり、連想メモリ・ワード43−1には(1.*.*.*)を実現するため2進数で、記憶データには(01.00.00.00)を、マスク情報として(11.00.00.00)を格納してある。同様に連想メモリ・ワード43−2には(2.*.*.*)を実現するため2進数で、記憶データには(10.00.00.00)を、マスク情報として(11.00.00.00)を格納してある。連想メモリ・ワード43−3には(1.2.2.*)を実現するため2進数で、記憶データには(01.10.10.00)を、マスク情報として(11.11.11.00)を格納してある。連想メモリ・ワード43−4には(1.2.*.*)を実現するため2進数で、記憶データには(01.10.00.00)を、マスク情報として(11.11.00.00)を格納してある。連想メモリ・ワード43−5には(2.1.1.*)を実現するため2進数で、記憶データには(10.01.01.00)を、マスク情報として(11.11.11.00)を格納してある。
【0156】マスク機能無し連想メモリ101の各連想メモリ・ワード104−1〜104−5に格納されている第二の記憶データとして、図18のルータ400−3の接続情報においてドント・ケア“*"状態のビットを記憶データの無効状態“0"とした値を記憶しているものとする。つまり、連想メモリ・ワード104−1には(01.00.00.00)を、連想メモリ・ワード104−2には(10.00.00.00)を、連想メモリ・ワード104−3には(01.10.10.00)を、連想メモリ・ワード104−4には(01.10.00.00)を、連想メモリ・ワード104−5には(10.01.01.00)を、それぞれ格納してある。
【0157】以下、検索データ12として図18のPC401−1の4進数のネットワーク・アドレス(1.2.2.1)を入力し検索動作を行った場合の動作説明をする。
【0158】まず、検索動作の前に、すべての中間一致線41−1〜41−5、及びデータ一致線107−1〜107−5は、ハイ・レベルにプリ・チャージされているか、図示しない抵抗によりプル・アップされ、有効状態“1"になっているものとする。
【0159】検索データ12をビット線13−1〜13−8に入力すると、演算結果出力機能付連想メモリ33の連想メモリ・ワード43−1に格納されている4進表現の(1.*.*.*)と、連想メモリ・ワード43−3に格納されている4進表現の(1.2.2.*)と、連想メモリ・ワード43−4に格納されている4進表現の(1.2.*.*)がビット線13−1〜13−8上の検索データ12と一致する。従って中間一致線41−1、41−3及び41−4の3本が有効状態“1"となり、残りの中間一致線41−2、41−5は無効状態“0"となる。
【0160】ここで、一致マスク論理積線17−1からは、連想メモリ・ワード43−1内の一致マスク中間論理線14−1に対応するマスク情報“1"と、連想メモリ・ワード43−3内の一致マスク中間論理線14−1に対応するマスク情報“1"と、連想メモリ・ワード43−4内の一致マスク中間論理線14−1に対応するマスク情報“1"の、マスク情報の有効状態“0"を真とした論理積“1"が出力される。一致マスク論理積線17−2からは、連想メモリ・ワード43−1内の一致マスク中間論理線14−2に対応するマスク情報“1"と、連想メモリ・ワード43−3内の一致マスク中間論理線14−2に対応するマスク情報“1"と、連想メモリ・ワード43−4内の一致マスク中間論理線14−2に対応するマスク情報“1"の、マスク情報の有効状態“0"を真とした論理積“1"が出力される。以下同様に、一致マスク論理積線17−3からは“0"と“1"と“1"のマスク情報の有効状態“0"を真とした論理積“1"が、一致マスク論理積線17−4からは“0"と“1"と“1"のマスク情報の有効状態“0"を真とした論理積“1"が、一致マスク論理積線17−5からは“0"と“1"と“0"のマスク情報の有効状態“0"を真とした論理積“1"が、一致マスク論理積線17−6からは“0"と“1"と“0"のマスク情報の有効状態“0"を真とした論理積“1"が、一致マスク論理積線17−7からは“0"と“0"と“0"のマスク情報の有効状態“0"を真とした論理積“0"が、一致マスク論理積線17−8からは“0"と“0"と“0"のマスク情報の有効状態“0"を真とした論理積“0"が、それぞれ出力される。従って、一致マスク論理積線17−1〜17−8には、2進表現で“11111100"が出力される。論理ゲート18−1〜18−8は、一致マスク論理積線17−1〜17−8の値“11111100"と、ビット線13−1〜13−8に出力されている検索データ12の値“01101001"を入力とし、前述のとおり“1"を真とした論理積の値“01101000"を演算結果出力線19−1〜19−8に演算結果38として出力する。
【0161】演算結果38の状態“01101000"は、マスク機能無し連想メモリ101のビット線103−1〜103−8に入力され、マスク機能無し連想メモリ101は2回目の検索動作を開始する。本実施の形態では、ビット線103−1〜103−8の状態“01101000"に対して、連想メモリ・ワード104−3が格納する第二の記憶データが完全に一致し、対応するデータ一致線107−3を開放状態にする。他の連想メモリ・ワード104−1,104−2、104−4、及び104−5が格納する記憶データは一致しないので、対応するデータ一致線107−1,107−2、107−4、及び107−5に無効状態“0"を出力する。従って、データ一致線107−1〜107−5の中で2回目の検索動作後も有効状態“1"を保持し続けるのは、データ一致線107−3のみとなる。データ一致線107−1〜107−5の状態は、一致線5−1〜5−5として外部に出力されるので、2回目の検索動作後も有効状態を出力しているのは一致線5−3のみとなる。
【0162】従って、入力した検索データ12と、対応するマスク情報を考慮して比較した結果一致する記憶データの中で、マスク情報の有効状態のビットが最も少ない記憶データに対応する一致線5−3のみに有効状態を出力することがわかる。上述のように、第三の実施の形態の連想メモリを使用すれば1クロックで最短マスク情報を持つワードを選択できる。ここで、記憶手段をビット線103−1〜103−nと、演算結果出力線19−1〜19−nの間に挿入し、マスク機能無し連想メモリ101が格納された演算結果38に対する2回目の検索動作を実行するのと同時に、演算結果出力機能付連想メモリ33が次の検索データ12に対する1回目の検索動作を実行するようにパイプライン処理を構成することができるのも言うまでもない。もちろん、記憶手段を挿入する場所は、上述の場所に限らないことも言うまでもない。
【0163】
【第四の実施例の構成】次に、本発明の第一の実施の形態の連想メモリ1を転送先ネットワーク・アドレス計算に用いたルータの構成例を示すブロック図を図13に示す。ルータ400は、入力転送データ408を入力とし、出力転送データ409を出力する。入力転送データ408は、目的地ネットワーク・アドレス411と、転送先ネットワーク・アドレス410とデータ部412を有している。出力転送データ409は、目的地ネットワーク・アドレス411と、第2の転送先ネットワーク・アドレス413とデータ部412を有している。
【0164】入力転送データ408の転送先ネットワーク・アドレス410は当然ルータ400のネットワーク・アドレスとなっている。ルータ400は、目的地ネットワーク・アドレス抽出部406と、連想メモリ1と、エンコーダ402と、メモリ404と転送先ネットワーク・アドレス変更部407とにより構成される。図19に示す従来のルータでは、従来の連想メモリ116の消費電力が大きいために冷却装置414を有していたが、本発明の連想メモリ1を用いた本発明のルータでは冷却装置414は不要である。
【0165】ここでは、図18のルータ400−3に適用した場合において、ネットワーク・アドレス(3.*.*.*)の機器から、ネットワーク・アドレス(1.*.*.*)又は(2.*.*.*)の機器に転送する場合について説明する。図13では、記憶データの有効状態は“1"、無効状態は“0"とする。マスク情報の有効状態は“0"、無効状態は“1"である。また、一致線5−1〜5−5の有効状態は“1"、無効状態は“0"とする。
【0166】目的地ネットワーク・アドレス抽出部406は、入力転送データ408の目的地ネットワーク・アドレス411を抽出し、検索データ12として、連想メモリ1に入力する。
【0167】連想メモリ1にはルータ400−3のネットワーク・アドレス(3.*.*.*)以外の接続情報を記憶している。このとき、接続情報の中のドント・ケア“*"状態のビットは、記憶データの該当ビットを記憶データの無効状態“0"、マスク情報の該当ビットをマスク・データの有効状態“0"とすることで表現される。つまり、連想メモリ・ワード2−1には(1.*.*.*)を実現するため2進数で、記憶データには(01.00.00.00)を、マスク情報として(11.00.00.00)を格納してある。同様に連想メモリ・ワード2−2には(2.*.*.*)を実現するため2進数で、記憶データには(10.00.00.00)を、マスク情報として(11.00.00.00)を格納してある。連想メモリ・ワード2−3には(1.2.2.*)を実現するため2進数で、記憶データには(01.10.10.00)を、マスク情報として(11.11.11.00)を格納してある。連想メモリ・ワード2−4には(1.2.*.*)を実現するため2進数で、記憶データには(01.10.00.00)を、マスク情報として(11.11.00.00)を格納してある。連想メモリ・ワード2−5には(2.1.1.*)を実現するため2進数で、記憶データには(10.01.01.00)を、マスク情報として(11.11.11.00)を格納してある。
【0168】連想メモリ・ワード2−1〜連想メモリ・ワード2−5に対応する一致線5−1〜5−5はエンコーダ402に出力される。エンコーダ402は一致線5−1〜5−5を、メモリ・アドレス信号403にエンコードし、メモリ404に出力する。
【0169】メモリ404には、連想メモリ1の各連想メモリ・ワード2−1〜2−5の記憶データ、マスク情報により構成されるネットワーク・アドレスに対応するルータのネットワーク・アドレスを、同一のワードに記憶してある。例えば、連想メモリ1の連想メモリ・ワード2−1にはネットワーク・アドレス(1.*.*.*)が記憶されているが、これに対応するルータ400−1のネットワーク・アドレスがメモリ404の同じくワード1に格納されている。同様にメモリ404のワード2にはルータ400−2のネットワーク・アドレスが、ワード3にはルータ400−6のネットワーク・アドレスが、ワード4にはルータ400−4のネットワーク・アドレスが、ワード5にはルータ400−7のネットワーク・アドレスが格納されている。また、メモリ404は、メモリ・アドレス信号403をリード・アドレスとして指定されるワードに格納されているデータを、メモリ・データ信号405として出力する。転送先ネットワーク・アドレス変更部407は、出力転送データ409の第2の転送先アドレス413を、メモリ・データ信号405の値に変更した後、第2のネットワーク・アドレスに対応するネットワーク機器に転送を行う。
【0170】例えば入力転送データ408の目的地ネットワーク・アドレス411が(1.2.2.1)の場合、連想メモリ1での検索動作終了時には、連想メモリ・ワード2−3が格納している(1.2.2.*)に対応する一致線5−3のみが有効状態となる。これにより、エンコーダ402はメモリ・アドレス403として“3"を出力し、メモリ404はルータ400−6のネットワーク・アドレスをメモリ・データ信号405として出力する。転送先ネットワーク・アドレス変更部407により、出力転送データ409の第2の転送先ネットワーク・アドレス413を、ルータ400−6のネットワーク・アドレスに変更し、ルータ400−6に向けて出力転送データ409を転送する。
【0171】このように、本発明の連想メモリ1をネットワーク・アドレス計算を行うルータ400に組み込めば、従来に比較して消費電力が小さくなるため、冷却装置414が不要になりコストが削減することができる。
【0172】また、チップ当たりの記憶容量増加に伴いルータ400に内蔵する連想メモリ1の個数を削減するができる。従って、複数の連想メモリが出力した検索結果の比較処理が不要になるため、ルータ400を用いたコンピュータ・ネットワーク・システムのデータ転送速度を高速化することができる。
【0173】
【発明の効果】上述のように、本発明の連想メモリは、外部から与えられる検索データを、格納しているマスク情報を考慮して、格納している記憶データと比較する第1の検索動作と、第1の検索動作の結果を利用して計算される値を格納している前記記憶データと比較する第2の検索動作の2回の検索動作を、各ワードごとに同一の比較器を用いて同一の一致線に出力する手段を有しているため、従来の連想メモリと比較して1ビットを格納する単位セルのトランジスタ面積を25%程度削減できるという効果がある。つまり単位チップ面積当たりの記憶容量を約33%程度増大できるという効果がある。また、面積削減に伴い、配線容量も削減されるため、従来の連想メモリと比較して、動作周波数を32%程度高くすることができるという効果もある。
【0174】また、同一のワード数で比較した場合、従来の連想メモリの消費電力に対して50%程度削減できるという効果がある。
【0175】更に、本発明の連想メモリをネットワーク・アドレス計算を行うルータに組み込めば、従来に比較して消費電力が小さくなるために、冷却装置が不要になりコストが削減できるという効果を有する。
【0176】本発明のルータをコンピュータ・ネットワーク・システムに適用した場合、データ転送速度を高速化できるという効果がある。上述のように動作周波数を向上できるためと、及びチップ当たりの記憶容量増加に伴いルータに内蔵する連想メモリのチップ数を削減することにより複数チップが出力した検索結果の比較処理が不要になる、等の優れた効果を有する。
【出願人】 【識別番号】500282483
【氏名又は名称】小倉 直志
【識別番号】399119952
【氏名又は名称】株式会社テルミナス・テクノロジー
【出願日】 平成12年8月10日(2000.8.10)
【代理人】 【識別番号】100099667
【弁理士】
【氏名又は名称】武政 善昭
【公開番号】 特開2002−56684(P2002−56684A)
【公開日】 平成14年2月22日(2002.2.22)
【出願番号】 特願2000−243485(P2000−243485)