(57)【要約】【課題】記憶装置内部で演算処理を行わせることなく、ネットワークアドレスの最長一致判定が可能となる。【解決手段】出力ポート３ａ〜３ｎは、ネットワーク７ａ〜７ｎに接続されている。アドレスバス２ａａは、接続先ノードを一意に特定するノードアドレスを構成するビットに対応した信号線を有する。記憶装置４ａ〜４ｍは、ネットワークアドレスのビット数と同数のアドレスバスの信号線が接続され、ネットワークアドレスに対応したメモリアドレスに、出力ポート３ａ〜３ｎを示すポート情報が格納されている。アドレスレジスタ５は、受信したノードアドレスをアドレスバス２ａａに出力する。選択回路６は、ノードアドレスに応じて複数の記憶装置４ａ〜４ｍから出力されるポート情報のうち、最も多くの信号線が接続された記憶装置４ａ〜４ｍのポート情報を選択して出力する。【選択図】　　　　図１
2004088202.tif 000002
【特許請求の範囲】
【請求項１】
データの出力ポートを判定する出力ポート判定装置において、
ネットワークに接続される複数の出力ポートと、
接続先ノードを一意に特定するノードアドレスを構成するビットに対応した信号線を有するアドレスバスと、
前記ネットワークのネットワークアドレスのビット数と同数の前記信号線が接続され、前記ネットワークアドレスに対応したメモリアドレスに、データを出力すべき前記出力ポートを示すポート情報が格納された複数の記憶装置と、
前記ノードアドレスを前記アドレスバスに出力するアドレスレジスタと、
前記ノードアドレスに応じて前記複数の記憶装置から出力される前記ポート情報のうち、最も多くの前記信号線が接続された前記記憶装置の前記ポート情報を選択して出力する選択回路と、
を有することを特徴とする出力ポート判定装置。
【請求項２】
前記複数の記憶装置は、前記アドレスバスの上位ビットから下位ビットの前記信号線が順に追加されて接続されることを特徴とする請求項１記載の出力ポート判定装置。
【請求項３】
前記記憶装置の前記ネットワークアドレスに対応するメモリアドレス以外のアドレスには、前記ポート情報と識別されるための初期化情報が格納されていることを特徴とする請求項１記載の出力ポート判定装置。
【請求項４】
前記ポート情報は、自情報がポート情報であることを識別される識別情報を有することを特徴とする請求項１記載の出力ポート判定装置。
【請求項５】
前記選択回路は、前記識別情報によって前記ポート情報を識別し、最も多くの前記信号線が接続された前記記憶装置の前記ポート情報を選択することを特徴とする請求項４記載の出力ポート判定装置。
【請求項６】
前記記憶装置を指定する指定回路と、
前記指定された記憶装置の前記ネットワークアドレスに対応するメモリアドレスに前記ポート情報を書き込む書き込み回路と、
を有することを特徴とする請求項１記載の出力ポート判定装置。
【請求項７】
前記書き込み回路は、前記記憶装置の前記ネットワークアドレスに対応するメモリアドレス以外のアドレスに前記ポート情報と識別されるための初期化情報を格納することを特徴とする請求項６記載の出力ポート判定装置。
【請求項８】
前記ノードアドレスのノードアドレス空間以上のアドレス空間を有し、前記ノードアドレス空間以上のアドレス空間で前記ネットワークアドレスのビット数と同数の信号線が接続された前記記憶装置を指定し、前記ノードアドレス空間内で前記記憶装置の前記ネットワークアドレスに対応するメモリアドレスを指定する中央演算処理装置を有することを特徴とする請求項１記載の出力ポート判定装置。
【請求項９】
前記中央演算処理装置は、前記記憶装置の前記ネットワークアドレスに対応するメモリアドレスに前記ポート情報を書き込むことを特徴とする請求項８記載の出力ポート判定装置。
【請求項１０】
前記中央演算処理装置は、前記記憶装置の前記ネットワークアドレスに対応するメモリアドレス以外のアドレスに前記ポート情報と識別されるための初期化情報を書き込むことを特徴とする請求項８記載の出力ポート判定装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータの出力ポートを判定する出力ポート判定装置に関し、特にノードアドレスと最長一致するネットワークアドレスを有するネットワークと接続された出力ポートを判定する出力ポート判定装置に関する。
【０００２】
【従来の技術】
ＩＰルータは、異なるネットワーク同士を相互接続しパケット通信を行う。ルータは、ネットワーク同士で通信されるパケットのヘッダ部を解析し、ＩＰアドレスに基づいてパケットのネットワーク経路を選択する。
【０００３】
ＩＰルータは、高速にパケット通信をするよう、ＩＰアドレスと最長一致するネットワークアドレスを検索し、最短の通信路でパケットを送信するようにする。ＩＰアドレスに最長一致するネットワークアドレスの検索は、ソフトウェア、又はハードウェアによって実現される。なお、ハードウェアによって、最長一致検索を行う装置として、特開平１１−２６１６４７に示すような装置がある。
【０００４】
【発明が解決しようとする課題】
しかしながら、従来の最長一致検索を行う装置では、ネットワークアドレスの最長一致検索をするのに、内部で演算処理を行う連想記憶装置（ＣＡＭ：Ｃｏｎｔｅｎｔｓ　Ａｓｓｏｃｉａｔｅｄ　Ｍｅｍｏｒｙ）を使用し、ハードウェア構成が複雑であるという問題点があった。
【０００５】
本発明はこのような点に鑑みてなされたものであり、記憶装置内部での演算処理を不要とし、簡単なハードウェア構成による最長一致判定が可能な出力ポート判定装置を提供することを目的とする。
【０００６】
【課題を解決するための手段】
本発明では、上記課題を解決するために、図１に示すデータの出力ポートを判定する出力ポート判定装置１において、ネットワーク７ａ〜７ｎに接続される複数の出力ポート３ａ〜３ｎと、接続先ノードを一意に特定するノードアドレスを構成するビットに対応した信号線を有するアドレスバス２ａａと、ネットワーク７ａ〜７ｎのネットワークアドレスのビット数と同数の前記信号線が接続され、ネットワークアドレスに対応したメモリアドレスに、データを出力すべき出力ポート３ａ〜３ｎを示すポート情報が格納された複数の記憶装置４ａ〜４ｍと、ノードアドレスをアドレスバス２ａａに出力するアドレスレジスタ５と、ノードアドレスに応じて複数の記憶装置４ａ〜４ｍから出力されるポート情報のうち、最も多くの信号線が接続された記憶装置のポート情報を選択して出力する選択回路６と、を有することを特徴とする出力ポート判定装置１が提供される。
【０００７】
このような出力ポート判定装置１によれば、アドレスバス２ａａにノードアドレスを出力したとき、記憶装置４ａ〜４ｍから出力されるポート情報のうち、最も多くの本数の信号線が接続された記憶装置から出力されたポート情報が、ネットワークアドレスが最も長いネットワークに接続された出力ポートを示すこととなる。これにより、記憶装置４ａ〜４ｍ内部での演算が不要となる。
【０００８】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本発明の原理を説明する原理図である。図１に示すように出力ポート判定装置１は、制御回路２、出力ポート３ａ〜３ｎ、記憶装置４ａ〜４ｍ、アドレスレジスタ５、及び選択回路６を有している。
【０００９】
出力ポート判定装置１は、ネットワーク７ａ〜７ｎ、及び図示しないその他のネットワークと接続されている。ネットワーク７ａ〜７ｎには、ネットワークアドレスが付与される。出力ポート判定装置１は、ネットワーク７ａ〜７ｎ又はその他のネットワークから、接続先ノードを一意に特定するノードアドレスを有するデータを受信する。出力ポート判定装置１は、ノードアドレスに含まれるネットワークアドレスに従って、データをネットワーク７ａ〜７ｎに送信する。
【００１０】
制御回路２は、アドレスバス２ａと接続されている。また、制御回路２は、データの送受信を行うデータバス２ｂと接続されている。制御回路２は、ネットワーク７ａ〜７ｎから受信したデータが有するノードアドレスを、アドレスバス２ａを介してアドレスレジスタ５に出力する。また、制御回路２は、選択回路６から出力される、データを出力すべき出力ポート３ａ〜３ｎを示したポート情報に従って、受信したデータを出力ポート３ａ〜３ｎに送信する。
【００１１】
出力ポート３ａ〜３ｎは、データバス２ｂと接続されている。また、出力ポート３ａ〜３ｎは、ネットワーク７ａ〜７ｎと接続されている。出力ポート３ａ〜３ｎは、制御回路２から送信されるデータを受信し、ネットワーク７ａ〜７ｎに送信する。
【００１２】
記憶装置４ａ〜４ｍは、ノードアドレスを構成するビットに対応したアドレスバス２ａａと接続されている。記憶装置４ａ〜４ｍは、アドレスバス２ａａの信号線が互いに異なる本数となるように接続されている。記憶装置４ａ〜４ｍのうち、ネットワーク７ａ〜７ｎのネットワークアドレスのビット数と同数の信号線が接続された記憶装置は、そのネットワークアドレスに対応したメモリアドレスに、そのネットワークアドレスが付与されたネットワークと接続された出力ポートを示すポート情報が格納されている。
【００１３】
例えば、ノードアドレスがＸビットで示されるとする。Ｘビットのノードアドレスのうち、Ｙビットがネットワークアドレスを示すとする（Ｘ＞Ｙ）。この場合、Ｙ本の信号線と接続された記憶装置が、ネットワークアドレスのビット数と同数の信号線が接続された記憶装置となる。そして、このＹ本の信号線と接続された記憶装置の、ネットワークアドレスに対応したメモリアドレスに、そのネットワークアドレスが付与されたネットワークと接続された出力ポートのポート情報が格納されている。
【００１４】
記憶装置４ａ〜４ｍは、アドレスレジスタ５によって指定されたメモリアドレスにおけるデータを選択回路６に出力する。
アドレスレジスタ５は、アドレスバス２ａ、アドレスバス２ａａと接続されている。アドレスレジスタ５は、制御回路２から出力されるノードアドレスをアドレスバス２ａａに出力する。
【００１５】
選択回路６は、記憶装置４ａ〜４ｍと接続されている。また、選択回路６は、データバス２ｂと接続されている。選択回路６は、記憶装置４ａ〜４ｍから出力されるポート情報のうち、最も多くのアドレスバス２ａａの信号線と接続された記憶装置４ａ〜４ｍから出力されるポート情報を選択して、データバス２ｂに出力する。
【００１６】
以下、出力ポート判定装置１の動作について説明する。
まず、制御回路２は、ネットワーク７ａ〜７ｎ、又は他のネットワークから送信されてきたデータのノードアドレスをアドレスレジスタ５に出力する。アドレスレジスタ５は、ノードアドレスをアドレスバス２ａａに出力する。
【００１７】
記憶装置４ａ〜４ｍは、アドレスバス２ａａに出力されているノードアドレスに応じて、格納されているポート情報を選択回路６に出力する。なお、最も多くの本数の信号線が接続された記憶装置から出力されたポート情報が、ネットワークアドレスが最も長いネットワークに接続された出力ポートを示す。
【００１８】
選択回路６は、記憶装置４ａ〜４ｍから出力されるポート情報のうち、最も多くの信号線が接続された記憶装置のポート情報を選択して出力する。
制御回路２は、選択回路６から出力されたポート情報に従って、データを出力ポート３ａ〜３ｎに出力する。データを受け取った出力ポートは、そのデータをネットワーク７ａ〜７ｎに送信する。
【００１９】
このように、最長一致するネットワークアドレスと接続された出力ポートを、記憶装置４ａ〜４ｍの内部で、演算処理を行うことなく判定でき、簡単なハードウェア構成による最長一致判定が可能となる。
【００２０】
次に、本発明の第１の実施の形態を、ＴＣＰ／ＩＰプロトコルに従って、パケット通信を行うルータに適用した場合について説明する。
図２は、第１の実施の形態に係るルータをネットワーク同士の相互接続に適用したときの図である。図には、ルータ１０ａ〜１０ｆ、ネットワーク１１ａ〜１１ｆが示してある。また、ネットワーク１１ａ〜１１ｆのネットワークアドレスが示してある。以下、特に断らない限り、３２ビットデータを４つの２５６進数で（ｘ１，ｘ２，ｘ３，ｘ４）と表現する。
【００２１】
図２の例では、ネットワーク１１ａのネットワークアドレスは、（９１，＊，＊，＊）である。ネットワーク１１ｂのネットワークアドレスは、（９２，＊，＊，＊）である。ネットワーク１１ｃのネットワークアドレスは、（９３，＊，＊，＊）である。ネットワーク１１ｄのネットワークアドレスは、（９２，１，＊，＊）である。ネットワーク１１ｅのネットワークアドレスは、（９２，２，＊，＊）である。ネットワーク１１ｆのネットワークアドレスは、（９２，１，１，＊）である。なお、‘＊’は、ネットワークアドレスのマスク部分（不定部分）を示す。
【００２２】
ルータ１０ａ〜１０ｆは、パケットを受信すると、パケットに付されているＩＰアドレスに従って、受信したパケットをネットワーク１１ａ〜１１ｆに出力する。ルータ１０ａ〜１０ｆは、ＩＰアドレスと最長一致するネットワークアドレスを持つネットワーク１１ａ〜１１ｆにパケットを出力する。
【００２３】
例えば、ルータ１０ａがＩＰアドレス（９２，１，１，４）のパケットを受信したとする。この場合、ネットワーク１１ｂ、１１ｄ、１１ｆは、このパケットの送信先として全て正しいが、ルータ１０ａは、最長一致するネットワークアドレス（９２，１，１，＊）を持つネットワーク１１ｆのルータ１０ｆにパケットを出力する。
【００２４】
このように、ルータ１０ａは、最長一致するネットワークアドレスにパケットを送信する。
図３は、ルータの回路ブロック図を示す。図に示すルータ１０ａは、ＣＰＵ２０、アドレスレジスタ３０、ＲＡＭ−リード／ライト回路４０、ライトデータレジスタ５０、ＲＡＭ６０−０〜６０−３１、セレクタ回路７０、及び出力ポート８０ａ〜８０ｅを有している。
【００２５】
ＣＰＵ２０は、３２ビットのアドレスバス２１、３２ビットのデータバス２２と接続されている。ＣＰＵ２０は、ネットワーク１１ａ〜１１ｆ、又は他のネットワークから送信されてくるパケットのＩＰアドレスをアドレスバス２１に出力する。また、ＣＰＵ２０は、接続先のネットワーク１１ｂ〜１１ｆのネットワークアドレスに対応したＲＡＭ６０−０〜６０−３１のメモリアドレスに、パケットを出力すべき出力ポート８０ａ〜８０ｅを示すポート情報を書き込む。
【００２６】
アドレスレジスタ３０は、３２ビットのレジスタである。アドレスレジスタ３０は、アドレスバス２１、データバス２２を介して、ＣＰＵ２０と接続されている。また、アドレスレジスタ３０は、３２ビットのアドレスバス３１と接続されている。ここで、アドレスバス３１の各ビットにおける信号線を信号線Ａ＜ｘ＞で示す。また、アドレスバス３１の複数の信号線を信号線Ａ＜ｘ：ｙ＞で示す。例えば、アドレスバス３１のビット３１の信号線を示すときは、信号線Ａ＜３１＞で示す。アドレスバス３１のビット３１からビット２０の信号線を示すときは、信号線Ａ＜３１：２０＞で示す。
【００２７】
アドレスレジスタ３０は、ＣＰＵ２０からパケットのＩＰアドレスが出力されると、そのＩＰアドレスをアドレスバス３１に出力する。アドレスバス３１の各信号線は、ＩＰアドレスの各ビットに対応している。信号線Ａ＜３１＞は、ＩＰアドレスの３１ビットに対応している。信号線Ａ＜３０＞は、ＩＰアドレスの３０ビットに対応している。以下同様に、信号線Ａ＜２９＞〜Ａ＜０＞は、ＩＰアドレスの２９ビットから０ビットに対応している。
【００２８】
ＲＡＭ−リード／ライト回路４０は、アドレスバス２１、データバス２２を介して、ＣＰＵ２０と接続されている。また、ＲＡＭ−リード／ライト回路４０は、３２ビットのセレクトバス４１と接続されている。また、ＲＡＭ−リード／ライト回路４０は、信号線Ｒ，Ｗを介して、ＲＡＭ６０−０〜６０−３１と接続されている。また、ＲＡＭ−リード／ライト回路４０は、信号線Ｃｌｒを介してセレクタ回路７０と接続されている。なお、信号線Ａ＜ｘ＞、信号線Ａ＜３１：０＞と同様に、セレクトバス４１の各信号線を信号線Ｓｅｌ＜ｘ＞で示し、複数の信号線を信号線Ｓｅｌ＜ｘ：ｙ＞で示す。
【００２９】
ＲＡＭ−リード／ライト回路４０は、出力ポート８０ａ〜８０ｅと接続されているネットワークアドレスの有効アドレス長がＣＰＵ２０によって書き込まれ、その有効アドレス長に対応する信号線Ｓｅｌにセレクト信号を出力する。例えば、図２で示した、ネットワーク１１ｂのネットワークアドレスは、（９２，＊，＊，＊）である。このネットワークアドレスの有効アドレス長は、８ビットである。ＣＰＵ２０が、ＲＡＭ−リード／ライト回路４０に有効アドレス長‘８’を書き込むと、ＲＡＭ−リード／ライト回路４０は、信号線Ｓｅｌ＜７＞にセレクト信号を出力する。
【００３０】
ライトデータレジスタ５０は、８ビットのレジスタである。ライトデータレジスタ５０は、データバス２２を介して、ＣＰＵ２０と接続されている。また、ライトデータレジスタ５０は、８ビットのデータバス５１と接続されている。ライトデータレジスタ５０は、ＣＰＵ２０によって書き込まれたデータをデータバス５１に出力する。
【００３１】
ＲＡＭ６０−０〜６０−３１は、アドレスバス３１の上位ビットから順に下位ビットの信号線が１本ずつ追加されて接続されている。ＲＡＭ６０−０は、信号線Ａ＜３１＞が接続されている。ＲＡＭ６０−１は、信号線Ａ＜３１：３０＞が接続されている。ＲＡＭ６０−２は、信号線Ａ＜３１：２９＞が接続されている。以下同様に、アドレスバス３１の下位のビットの信号線Ａが１本ずつ追加されて接続され、ＲＡＭ６０−３１には、信号線Ａ＜３１：０＞が接続されている。
【００３２】
また、ＲＡＭ６０−０〜６０−３１には、セレクトバス４１の下位ビットから順に上位の信号線が接続されている。ＲＡＭ６０−０は、信号線Ｓｅｌ＜０＞と接続されている。ＲＡＭ６０−１は、信号線Ｓｅｌ＜１＞と接続されている。ＲＡＭ６０−２は、信号線Ｓｅｌ＜２＞と接続されている。以下、セレクトバス４１の上位のビットの信号線が順に接続され、ＲＡＭ６０−３１には、信号線Ｓｅｌ＜３１＞が接続されている。また、ＲＡＭ６０−０〜６０−３１には、信号線Ｒ，Ｗが接続されている。
【００３３】
ＲＡＭ６０−０〜６０−３１のうち、ネットワーク１１ｂ〜１１ｆのネットワークアドレスのビット数と同数の信号線Ａ＜３１＞〜Ａ＜０＞が接続されたＲＡＭ６０−０〜６０−３１は、そのネットワークアドレスに対応したメモリアドレスに、そのネットワークアドレスを持つネットワーク１１ｂ〜１１ｆと接続された出力ポート８０ａ〜８０ｅを示すポート情報が格納されている。
【００３４】
例えば、ネットワークアドレス（９２，＊，＊，＊）は、２進数表現において、８ビット必要である。ＲＡＭ６０−０〜６０−３１のうち、８ビットの信号線と接続されているのは、ＲＡＭ６０−８である。そして、２５６進数の‘９２’に対応するメモリアドレス、すなわち２進数で（０，１，０，１，１，１，０，０）のメモリアドレスには、ネットワークアドレス（９２，＊，＊，＊）を持つネットワーク１１ｂと接続された出力ポート８０ａを示すポート情報が格納される。
【００３５】
セレクタ回路７０は、ＲＡＭ６０−０〜６０−３１の各々と、８ビットのデータバス７１−０〜７１−３１を介して接続されている。なお、信号線Ａ＜ｘ＞、信号線Ａ＜３１：０＞と同様に、データバス７１−０〜７１−３１の信号線を、信号線Ｄ０＜７：０＞、信号線Ｄ３１＜７：０＞で示す。
【００３６】
セレクタ回路７０は、ＲＡＭ６０−０〜６０−３１から出力されるポート情報のうち、最も多くの信号線が接続されたＲＡＭのポート情報を選択して、データバス２２に出力する。ＣＰＵ２０は、ポート情報に従って、パケットを出力ポート８０ａ〜８０ｅに出力する。また、セレクタ回路７０は、ライトデータレジスタ５０に書き込まれたデータを信号線Ｄ０＜７：０＞〜Ｄ３１＜７：０＞に出力する。
【００３７】
出力ポート８０ａは、図２で示したネットワーク１１ｂと接続されている。出力ポート８０ｂは、ネットワーク１１ｃと接続されている。出力ポート８０ｃは、ネットワーク１１ｄと接続されている。出力ポート８０ｄは、ネットワーク１１ｅと接続されている。出力ポート８０ｅは、ネットワーク１１ｆと接続されている。出力ポート８０ａ〜８０ｅは、ＣＰＵ２０からパケットが送信されると接続先のネットワーク１１ｂ〜１１ｆに出力する。
【００３８】
以下、図３のルータ１０ａの動作について説明する。
まず、ＲＡＭ６０−０〜６０−３１を初期化する動作について説明する。ＣＰＵ２０は、ライトデータレジスタ５０に初期化データ、例えば‘０’を書き込む。セレクタ回路７０は、ライトデータレジスタ５０に書き込まれた初期化データ‘０’をデータバス７１−０〜７１−３１に出力する。
【００３９】
ＣＰＵ２０は、初期化対象のネットワークアドレスをアドレスレジスタ３０に書き込む。アドレスレジスタ３０は、ＣＰＵ２０によって書き込まれた初期化対象のネットワークアドレスをアドレスバス３１に出力する。
【００４０】
ＣＰＵ２０は、ネットワークアドレスの有効アドレス長をＲＡＭ−リード／ライト回路４０に書き込む。ＲＡＭ−リード／ライト回路４０は、ＣＰＵ２０によって書き込まれた有効アドレス長に対応する信号線Ｓｅｌに、セレクト信号を出力する。すなわち、ネットワークアドレスを指定するのに、必要な信号線Ａ＜３１＞〜Ａ＜０＞が接続されたＲＡＭが選択される。
【００４１】
例えば、初期化対象のネットワークアドレスを（９２，＊，＊，＊）とする。２５６進数の‘９２’は、２進数の８ビットで表現すると（０，１，０，１，１，１，０，０）である。これにより、信号線Ａ＜３１＞には、‘０’が出力される。信号線Ａ＜３０＞には、‘１’が出力される。信号線Ａ＜２９＞には、‘０’が出力される。信号線Ａ＜２８＞には、‘１’が出力される。信号線Ａ＜２７＞には、‘１’が出力される。信号線Ａ＜２６＞には、‘１’が出力される。信号線Ａ＜２５＞には、‘０’が出力される。信号線Ａ＜２４＞には、‘０’が出力される。信号線Ａ＜２３：０＞は、不定であり、どのような値が出力されてもよい。
【００４２】
ネットワークアドレス（９２，＊，＊，＊）は、２進数表現において、上位８ビットがネットワークアドレスを示し、下位２４ビットは、不定を示す。従って、有効アドレス長は、８ビットであり、ＲＡＭ−リード／ライト回路４０は、信号線Ｓｅｌ＜７＞にセレクト信号を出力する。すなわち、この例では、ネットワークアドレスを指定するのに８本の信号線が必要であり、８本の信号線Ａ＜３１：２４＞と接続されたＲＡＭ６０−７が選択される。そして、信号線Ａ＜３１：２４＞には、ネットワークアドレスの‘９２’が出力される。
【００４３】
ＲＡＭ−リード／ライト回路４０は、信号線Ｗに書き込み信号を出力する。信号線Ｓｅｌによって選択されているＲＡＭは、ＲＡＭ−リード／ライト回路４０から書き込み信号が出力されることにより、データバス７１−０〜７１−３１に出力されている初期化データが書き込まれる。
【００４４】
上記のネットワークアドレス（９２，＊，＊，＊）の例では、ＲＡＭ６０−７がセレクト信号によって選択されている。ＲＡＭ−リード／ライト回路４０から書き込み信号が出力されることによって、ＲＡＭ６０−７は、ネットワークアドレス（９２，＊，＊，＊）に対応するメモリアドレスに、データバス７１−７に出力されている初期化データが書き込まれる。
【００４５】
このようにして、ＲＡＭ６０−０〜６０−３１は、初期化データに初期化される。
なお、ポート情報と識別されるように、出力ポート８０ａ〜８０ｅと接続されているネットワークのネットワークアドレスに対応するメモリアドレス以外のアドレスには、初期化データを格納するようにする。
【００４６】
また、上記の全ＲＡＭにおける初期化手順を簡略化するために、リセット機能（全メモリアドレスのデータを初期化する）を持つＲＡＭを使用するようにしてもよい。ＲＡＭにデータをリセットするための信号を全ＲＡＭに入力するようにし、この信号によってＲＡＭの全データを初期化するようにする。
【００４７】
次に、ネットワークアドレスに対応する、ＲＡＭ６０−０〜６０−３１のメモリアドレスに、ポート情報を格納する動作について説明する。ＣＰＵ２０は、出力ポート８０ａ〜８０ｅの接続先ネットワーク１１ｂ〜１１ｆのネットワークアドレスをアドレスレジスタ３０に書き込む。アドレスレジスタ３０は、ＣＰＵ２０によって書き込まれたネットワークアドレスをアドレスバス３１に出力する。
【００４８】
ＣＰＵ２０は、アドレスレジスタ３０に書き込まれたネットワークアドレスを持つネットワーク１１ｂ〜１１ｆと接続された出力ポート８０ａ〜８０ｅを示すポート情報をライトデータレジスタ５０に書き込む。なお、ポート情報の７ビット目には、自ポート情報が有効であることを示す‘１’が設定される。また、ポート情報の６〜０ビットで、パケットを出力すべき出力ポートのポート情報が設定される。
【００４９】
セレクタ回路７０は、ライトデータレジスタ５０に書き込まれたポート情報をデータバス７１−０〜７１−３１に出力する。
ＣＰＵ２０は、ネットワークアドレスの有効アドレス長をＲＡＭ−リード／ライト回路４０に書き込む。ＲＡＭ−リード／ライト回路４０は、ＣＰＵ２０によって書き込まれた有効アドレス長に対応する信号線Ｓｅｌに、セレクト信号を出力する。すなわち、ネットワークアドレスを指定するのに必要なビット数と同数の信号線Ａが接続されたＲＡＭが選択される。
【００５０】
ＲＡＭ−リード／ライト回路４０は、信号線Ｗに書き込み信号を出力する。信号線Ｓｅｌによって選択されているＲＡＭは、ＲＡＭ−リード／ライト回路４０から書き込み信号が出力されることにより、データバス７１−０〜７１−３１に出力されているポート情報が書き込まれる。
【００５１】
例えば、ＣＰＵ２０は、ネットワーク１１ｂのネットワークアドレス（９２，＊，＊，＊）をアドレスレジスタ３０に書き込んだとする。アドレスレジスタ３０は、ＣＰＵ２０によって書き込まれたネットワークアドレスをアドレスバス３１に出力する。
【００５２】
ＣＰＵ２０は、ネットワーク１１ｂと接続されている出力ポート８０ａを示すポート情報をライトデータレジスタ５０に書き込む。セレクタ回路７０は、ライトデータレジスタ５０に書き込まれたポート情報をデータバス７１−０〜７１−３１に出力する。
【００５３】
ネットワークアドレス（９２，＊，＊，＊）を３２ビットの２進数表現にすると、上位３１ビットから２４ビットは、（０，１，０，１，１，１，０，０）で表される。２３ビットから０ビットは、不定であるので、どのような値が出力されてもよい。
【００５４】
これにより、信号線Ａ＜３１＞には、‘０’が出力される。信号線Ａ＜３０＞には、‘１’が出力される。信号線Ａ＜２９＞には、‘０’が出力される。信号線Ａ＜２８＞には、‘１’が出力される。信号線Ａ＜２７＞には、‘１’が出力される。信号線Ａ＜２６＞には、‘１’が出力される。信号線Ａ＜２５＞には、‘０’が出力される。信号線Ａ＜２４＞には、‘０’が出力される。信号線Ａ＜２３：０＞には、どのような値が出力されてもよい。
【００５５】
ネットワークアドレス（９２，＊，＊，＊）は、２進数表現において、上位８ビットがネットワークアドレスを示し、下位２４ビットは、不定である。従って、有効アドレス長は、８ビットであり、ＲＡＭ−リード／ライト回路４０は、信号線Ｓｅｌ＜７＞にセレクト信号を出力する。すなわち、この例では、ネットワークアドレスを指定するのに８本の信号線が必要であり、８本の信号線Ａ＜３１：２４＞と接続されたＲＡＭ６０−７が選択される。そして、信号線Ａ＜３１：２４＞には、ネットワークアドレスの‘９２’が出力されている。
【００５６】
ＲＡＭ−リード／ライト回路４０から書き込み信号が出力されることによってＲＡＭ６０−７は、ネットワークアドレス‘９２’に対応するメモリアドレスに、データバス７１−７に出力されているポート情報が書き込まれる。
【００５７】
すなわち、ネットワークアドレス（９２，＊，＊，＊）に対応するメモリアドレスには、ネットワークアドレス（９２，＊，＊，＊）を持つネットワーク１１ｂと接続された出力ポート８０ａを示すポート情報が格納される。
【００５８】
以上の動作を繰り返して、ネットワーク１１ｃ〜１１ｆのネットワークアドレスに対応した、ＲＡＭ６０−０〜６０−３１のメモリアドレスに、出力ポートを示すポート情報を格納していく。
【００５９】
次に、最長一致するネットワークアドレスを検索してパケットを送信する動作について説明する。ＣＰＵ２０は、ネットワーク１１ａ〜１１ｆ、又はその他のネットワークから送信されてくるパケットを受信する。ＣＰＵ２０は、パケットに付されるＩＰアドレスをアドレスレジスタ３０に書き込む。
【００６０】
アドレスレジスタ３０は、書き込まれたＩＰアドレスをアドレスバス３１に出力する。ＲＡＭ６０−０〜６０−３１は、信号線Ｒに読み出し信号が出力されたとき、各信号線Ａに出力されているＩＰアドレスに応じたメモリアドレスに格納されている情報をデータバス７０−０〜７０−３１に出力する。
【００６１】
セレクタ回路７０は、ＲＡＭ６０−０〜６０−３１から出力された情報の７ビット目を参照し、７ビット目が‘１’であるポート情報を選択する。セレクタ回路７０は、選択したポート情報のうち、最も多くの信号線Ａが接続されたＲＡＭが出力したポート情報をさらに選択する。選択されたポート情報は、ネットワークアドレスが最も長いネットワークに接続された出力ポートを示す。セレクタ回路７０は、選択したポート情報をデータバス２２に出力する。
【００６２】
ＣＰＵ２０は、セレクタ回路７０から出力されるポート情報を参照して、パケットをポート出力８０ａ〜８０ｅに出力する。出力ポート８０ａ〜８０ｅは、接続先のネットワーク１１ａ〜１１ｆにパケットを送信する。
【００６３】
例えば、ＣＰＵ２０が、ＩＰアドレス（９２，１，２，３）のパケットを受信したとする。ＣＰＵ２０は、ＩＰアドレス（９２，１，２，３）をアドレスレジスタ３０に書き込む。アドレスレジスタ３０は、ＩＰアドレスをアドレスバス３１に出力する。
【００６４】
ところで、図２のネットワーク１１ｂのネットワークアドレス（９２，＊，＊，＊）は、８ビットで示される。よって、８ビットの信号線と接続されたＲＡＭ６０−７のメモリアドレス‘９２’には、ネットワーク１１ｂと接続された出力ポート８０ａを示すポート情報が格納されている。ネットワーク１１ｃのネットワークアドレス（９３，＊，＊，＊）は、８ビットで示される。よって、８ビットの信号線と接続されたＲＡＭ６０−７のメモリアドレス‘９３’には、ネットワーク１１ｃと接続された出力ポート８０ｂを示すポート情報が格納されている。ネットワーク１１ｄのネットワークアドレス（９２，１，＊，＊）は、１６ビットで示される。よって、１６ビットの信号線と接続されたＲＡＭ６０−１５のメモリアドレス‘９２，１’には、ネットワーク１１ｄと接続された出力ポート８０ｃを示すポート情報が格納されている。ネットワーク１１ｅのネットワークアドレス（９２，２，＊，＊）は、１６ビットで示される。よって、１６ビットの信号線と接続されたＲＡＭ６０−１５のメモリアドレス‘９２，２’には、ネットワーク１１ｅと接続された出力ポート８０ｄを示すポート情報が格納されている。ネットワーク１１ｆのネットワークアドレス（９２，１，１，＊）は、２４ビットで示される。よって、２４ビットの信号線と接続されたＲＡＭ６０−２３のメモリアドレス‘９２，１，１’には、ネットワーク１１ｆと接続された出力ポート８０ｅを示すポート情報が格納されている。なお、その他のメモリアドレスには、初期化データが格納されている。
【００６５】
従って、アドレスレジスタ３０にＩＰアドレス（９２，１，２，３）が書き込まれた場合、ＲＡＭ６０−７のメモリアドレス‘９２’と、ＲＡＭ６０−１５のメモリアドレス‘９２，１’からポート情報が出力される。その他のＲＡＭからは、初期化データが出力される。
【００６６】
セレクタ回路７０は、ポート情報の７ビット目の‘１’によって、ポート情報と初期化データを識別し、識別したポート情報のうち、最も多くの信号線が接続されたＲＡＭ６０−１５のポート情報を選択してデータバス２２に出力する。
【００６７】
ＣＰＵ２０は、セレクタ回路７０から出力されたポート情報に従って、パケットを出力ポート８０ｃに出力する。
このように、最長一致するネットワークアドレスと接続された出力ポートを、ＲＡＭの内部で、演算処理を行うことなく判定できるので、市販されている通常のメモリを使用した最長一致判定が可能となる。
【００６８】
また、市販されている通常のメモリを使用することによって、コストを低減することができる。
なお、上記のルータ１０ａは、１チップの半導体装置によっても実現される。
【００６９】
次に、図３に示す各レジスタ、回路の動作を詳細に説明する。
図４は、図３のアドレスレジスタと入出力される信号を示した図である。図４に示すように、アドレスレジスタ３０は、アドレスバス２１を介して、ＣＰＵ２０からアドレス信号が入力される。アドレスレジスタ３０は、ＣＰＵ２０のメモリ空間に割り当てられており、ＣＰＵ２０のアドレス信号によってセレクトされる。
【００７０】
アドレスレジスタ３０は、データバス２２を介して、ＣＰＵ２０からデータ信号が入力される。なお、アドレスレジスタ３０に入力されるデータ信号は、３２ビットのＩＰアドレスである。
【００７１】
アドレスレジスタ３０は、図３に示してないが、制御バスを介して、ＣＰＵ２０からライト信号が入力される。アドレスレジスタ３０は、制御バスを介して、例えば、ルータ１０ａの内部で発生するシステムリセットＳＲが入力される。アドレスレジスタ３０は、図３に示してないが、クロック線を介して、システムクロックＳＣが入力される。
【００７２】
アドレスレジスタ３０は、ＣＰＵ２０のアドレス信号によってセレクトされる。そして、アドレスレジスタ３０は、ＣＰＵ２０からデータ信号、すなわちＩＰアドレスが入力される。このとき、アドレスレジスタ３０は、ＣＰＵ２０からライト信号を受信すると、入力されたＩＰアドレスの値を保持して、アドレスバス３１に出力する。
【００７３】
図５は、アドレスレジスタのタイミングチャートを示す。アドレスレジスタ３０は、図に示すシステムクロックＳＣに同期して動作する。アドレスレジスタ３０は、ＣＰＵ２０からアドレス信号が入力される。アドレスレジスタ３０は、ＣＰＵ２０からアドレス信号に遅れてデータ信号が入力される。図の例においては、データ信号は、アドレス信号より、システムクロックＳＣの１クロック分遅れてＣＰＵ２０から出力されている。
【００７４】
アドレスレジスタ３０は、ＣＰＵ２０からデータ信号に遅れてライト信号が入力される。図の例においては、ライト信号は、データ信号より、システムクロックＳＣの１クロック分遅れてＣＰＵ２０から出力されている。アドレスレジスタ３０は、矢印Ａで示すライト信号の立ち上がりで、入力されているデータ信号を保持し、データ信号をアドレスバス３１に出力する。
【００７５】
アドレスレジスタ３０は、システムリセットＳＲが入力されると、保持していたデータ信号をリセットする（例えば‘０’にする）。
このように、アドレスレジスタ３０は、ＣＰＵ２０のアドレス信号によってデコードされる。そして、アドレスレジスタ３０は、ＣＰＵ２０からデータ信号、すなわちＩＰアドレスが入力される。アドレスレジスタ３０は、このときＣＰＵ２０からライト信号を受信すると、送られてきたＩＰアドレスの値を保持して、アドレスバス３１に出力する。
【００７６】
図６は、図３のＲＡＭ−リード／ライト回路と入出力される信号を示した図である。ＲＡＭ−リード／ライト回路４０は、アドレスバス２１を介して、ＣＰＵ２０からアドレス信号が入力される。ＲＡＭ−リード／ライト回路４０は、ＣＰＵ２０のメモリ空間に割り当てられており、ＣＰＵ２０のアドレス信号によってセレクトされる。
【００７７】
ＲＡＭ−リード／ライト回路４０は、データバス２２を介して、ＣＰＵ２０から３２ビットのデータ信号が入力される。データ信号には、所定のビット位置のビット信号で、ＲＡＭ−リード／ライト回路４０の動作を決定するコマンドが設定される。なお、コマンドについては、後述詳細する。
【００７８】
ＲＡＭ−リード／ライト回路４０は、制御バスを介して、ＣＰＵ２０からライト信号が入力される。ＲＡＭ−リード／ライト回路４０は、制御バスを介して、例えば、ルータ１０ａの内部で発生するシステムリセットＳＲが入力される。ＲＡＭ−リード／ライト回路４０は、クロック線を介して、システムクロックＳＣが入力される。
【００７９】
ＲＡＭ−リード／ライト回路４０は、ＣＰＵ２０のアドレス信号によってデコードされる。そして、ＲＡＭ−リード／ライト回路４０は、ＣＰＵ２０からデータ信号が入力される。このとき、ＲＡＭ−リード／ライト回路４０は、ＣＰＵ２０からライト信号を受信すると、入力されたデータ信号を保持して、コマンドに応じて、セレクト信号、クリア信号、読み出し信号、及び書き込み信号を出力する。
【００８０】
図７は、ＲＡＭ−リード／ライト回路のタイミングチャートを示す。ＲＡＭ−リード／ライト回路４０は、図に示すシステムクロックＳＣに同期して動作する。ＲＡＭ−リード／ライト回路４０は、ＣＰＵ２０からアドレス信号が入力される。ＲＡＭ−リード／ライト回路４０は、ＣＰＵ２０からアドレス信号に遅れてデータ信号が入力される。図の例においては、データ信号は、アドレス信号より、システムクロックＳＣの１クロック分遅れてＣＰＵ２０から出力されている。
【００８１】
ＲＡＭ−リード／ライト回路４０は、データ信号に遅れてライト信号が入力される。図の例においては、ライト信号は、データ信号より、システムクロックＳＣの１クロック分遅れてＣＰＵ２０から出力されている。ＲＡＭ−リード／ライト回路４０は、ライト信号の立ち上がりで、データ信号を入力する。
【００８２】
ＲＡＭ−リード／ライト回路４０は、ライト信号の立ち上がりから、矢印Ｂ１に示すコマンド解析期間の間に、入力したデータ信号のコマンドを解析する。ＲＡＭ−リード／ライト回路４０は、データ信号のコマンドに従って、セレクト信号、クリア信号、読み出し信号、及び書き込み信号を出力する。
【００８３】
図８は、ＲＡＭ−リード／ライト回路のコマンド一覧を示す図である。図のコマンド一覧９０に示すように、ＲＡＭ−リード／ライト回路４０は、３２ビットのデータ信号の０〜４ビットによって、ネットワークアドレスの有効アドレス長が設定される。データ信号の５ビットによって、ＲＡＭ６０−０〜６０−３１を全部選択するか否かが設定される。データ信号の６ビットによって、信号線Ｒに読み出し信号を出力するか、又は信号線Ｗに書き込み信号を出力するかが設定される。データ信号の７〜９ビットによって、信号線Ｒに出力する読み出し信号のサイクル数が設定される。データ信号の１０〜１１ビットによって、信号線Ｗに出力する書き込み信号の、図７に示す矢印Ｂ２のフェーズＷ０におけるサイクル数が設定される。データ信号の１２〜１３ビットによって、信号線Ｗに出力する書き込み信号の、図７に示す矢印Ｂ３のフェーズＷ１におけるサイクル数が設定される。データ信号の１４〜１５ビットによって、信号線Ｗに出力する書き込み信号の、図７に示す矢印Ｂ４のフェーズＷ２におけるサイクル数が設定される。
【００８４】
ＲＡＭ−リード／ライト回路４０は、データ信号の０〜４ビットに設定された有効アドレス長に従って、セレクトバス４１の信号線Ｓｅｌにセレクト信号を出力する。例えば、有効アドレス長（０，０，０，０，０）（２進表記）が設定された場合、ＲＡＭ−リード／ライト回路４０は、セレクトバス４１の信号線Ｓｅｌ＜０＞にセレクト信号を出力する。有効アドレス長（０，０，０，０，１）が設定された場合、ＲＡＭ−リード／ライト回路４０は、セレクトバス４１の信号線Ｓｅｌ＜１＞にセレクト信号を出力する。有効アドレス長（１，１，１，１，１）が設定された場合、ＲＡＭ−リード／ライト回路４０は、セレクトバス４１の信号線Ｓｅｌ＜３１＞にセレクト信号を出力する。
【００８５】
ＲＡＭ−リード／ライト回路４０は、データ信号の５ビットに設定されるビット信号に従って、ＲＡＭ６０−０〜６０−３１を全部選択する。例えば、‘１’が設定された場合、ＲＡＭ−リード／ライト回路４０は、セレクトバス４１の信号線Ｓ＜３１：０＞にセレクト信号を出力する。
【００８６】
ＲＡＭ−リード／ライト回路４０は、データ信号の６ビットに設定されるビット信号に従って、信号線Ｒに読み出し信号を出力し、又は信号線Ｗに書き込み信号を出力する。例えば、‘１’が設定された場合、ＲＡＭ−リード／ライト回路４０は、信号線Ｗに書き込み信号を出力する。
【００８７】
ＲＡＭ−リード／ライト回路４０は、データ信号の１０〜１１ビットに設定されるサイクル数に従って、書き込み信号の、図６に示す矢印Ｂ２のフェーズＷ０におけるサイクル数を設定する。これにより、コマンド解析後からライト信号が立ち下がるまでの期間が設定される。
【００８８】
ＲＡＭ−リード／ライト回路４０は、データ信号の１２〜１３ビットに設定されるサイクル数に従って、書き込み信号の、図６に示す矢印Ｂ３のフェーズＷ１におけるサイクル数を設定する。これにより、書き込み信号の立ち下がり期間が設定される。
【００８９】
ＲＡＭ−リード／ライト回路４０は、データ信号の１４〜１５ビットに設定されるサイクル数に従って、書き込み信号の、図６に示す矢印Ｂ４のフェーズＷ２におけるサイクル数を設定する。これにより、ＲＡＭ−リード／ライト回路４０は、設定されたフェーズＷ２のサイクルを待って、ＣＰＵ２０からの新たなデータ信号の入力が可能となる。クリア信号は、セレクタ回路７０の内部に保持されているデータをクリアするため、リード／ライト動作の前に、１サイクルアサートされる。
【００９０】
図９は、ＲＡＭ−リード／ライト回路のステートマシンを示す図である。図に示すように、状態Ｃ１では、ＲＡＭ−リード／ライト回路４０は、ＣＰＵ２０からのデータ信号の入力待ち状態となる（Ｉｄｌｅ状態）。ＲＡＭ−リード／ライト回路４０は、データ信号が入力されると、状態Ｃ２に遷移し、データ信号に含まれるコマンドを解釈する。
【００９１】
コマンドが、セレクト信号の書き込みであれば、ＲＡＭ−リード／ライト回路４０は、状態Ｃ３に遷移し、フェーズＷ０の期間、書き込み信号の出力待機状態となる。フェーズＷ０の期間が経過すると、ＲＡＭ−リード／ライト回路４０は、状態Ｃ４に遷移し、フェーズＷ１の期間、書き込み信号を出力する状態となる。フェーズＷ１の期間が経過すると、ＲＡＭ−リード／ライト回路４０は、状態Ｃ５に遷移し、フェーズＷ２の期間、データ信号を受け付けない状態となる。フェーズＷ２の期間が経過すると、状態Ｃ１に遷移し、ＣＰＵ２０からのデータ信号の入力待ち状態となる（Ｉｄｌｅ状態）。
【００９２】
コマンドが、ポート情報読み出しであれば、ＲＡＭ−リード／ライト回路４０は、状態Ｃ６に遷移し、読み出し信号をデータ信号のコマンドに従って、出力し続ける状態となる。その後、ＲＡＭ−リード／ライト回路４０は、状態Ｃ１に遷移し、ＣＰＵ２０からのデータ信号の入力待ち状態となる（Ｉｄｌｅ状態）。
【００９３】
このように、ＲＡＭ−リード／ライト回路４０は、ＣＰＵ２０のアドレス信号によって選択され、ＩＰアドレスであるデータ信号が入力される。そして、ＲＡＭ−リード／ライト回路４０は、データ信号に含まれるコマンドを解釈し、セレクト信号、読み出し信号、書き込み信号、及びクリア信号を出力する。
【００９４】
図１０は、図３のライトデータレジスタと入出力される信号を示した図である。図１０に示すように、ライトデータレジスタ５０は、アドレスバス２１を介して、ＣＰＵ２０からアドレス信号が入力される。ライトデータレジスタ５０は、ＣＰＵ２０のメモリ空間に割り当てられており、ＣＰＵ２０のアドレス信号によってセレクトされる。
【００９５】
ライトデータレジスタ５０は、データバス２２を介して、ＣＰＵ２０からデータ信号が入力される。なお、ライトデータレジスタ５０に送られてくるデータ信号は、８ビットのポート情報、又はＲＡＭ６０−０〜６０−３１を初期化する初期化データである。
【００９６】
ライトデータレジスタ５０は、図３に示してないが、制御バスを介して、ＣＰＵ２０からライト信号が入力される。ライトデータレジスタ５０は、制御バスを介して、例えば、ルータ１０ａ内で発生するシステムリセットＳＲが入力される。ライトデータレジスタ５０は、図３に示してないが、クロック線を介して、システムクロックＳＣが入力される。
【００９７】
ライトデータレジスタ５０は、ＣＰＵ２０のアドレス信号によってセレクトされる。そして、ライトデータレジスタ５０は、ＣＰＵ２０からデータ信号、すなわちポート情報、又は初期化データが入力される。このとき、ライトデータレジスタ５０は、ＣＰＵ２０からライト信号を受信すると、入力されたポート情報、又は初期化データの値を保持して、セレクタ回路７０に出力する。
【００９８】
図１１は、ライトデータレジスタのタイミングチャートを示す。ライトデータレジスタ５０は、図に示すシステムクロックＳＣに同期して動作する。ライトデータレジスタ５０は、ＣＰＵ２０からアドレス信号が入力される。ライトデータレジスタ５０は、ＣＰＵ２０からアドレス信号に遅れてデータ信号が入力される。図の例においては、データ信号は、アドレス信号より、システムクロックＳＣの１クロック分遅れてＣＰＵ２０から出力されている。
【００９９】
ライトデータレジスタ５０は、データ信号に遅れてライト信号が入力される。図の例においては、ライト信号は、データ信号より、システムクロックＳＣの１クロック分遅れてＣＰＵ２０から出力されている。ライトデータレジスタ５０は、矢印Ｄで示すライト信号の立ち上がりで、入力されているデータ信号を保持し、データ信号をセレクタ回路７０に出力する。
【０１００】
ライトデータレジスタ５０は、システムリセットＳＲが入力されると、保持していたデータ信号をリセットする（例えば‘０’にする）。
このように、ライトデータレジスタ５０は、ＣＰＵ２０のアドレス信号によってデコードされる。そして、ライトデータレジスタ５０は、ＣＰＵ２０からデータ信号、すなわちポート情報、又は初期化データが入力される。ライトデータレジスタ５０は、このときＣＰＵ２０からライト信号を受信すると、送られてきたポート情報、又は初期化データを保持して、セレクタ回路７０に出力する。
【０１０１】
図１２は、図３のセレクタ回路と入出力される信号を示した図である。図４に示すように、セレクタ回路７０は、アドレスバス２１を介して、ＣＰＵ２０からアドレス信号が入力される。セレクタ回路７０は、ＣＰＵ２０のメモリ空間に割り当てられており、ＣＰＵ２０のアドレス信号によってセレクトされる。
【０１０２】
セレクタ回路７０は、データバス２２を介して、ＣＰＵ２０にデータ信号を出力する。なお、データ信号は、ＲＡＭ６０−０〜６０−３１から出力された８ビットのポート情報である。
【０１０３】
セレクタ回路７０は、図３に示してないが、制御バスを介して、ＣＰＵ２０のリード信号が入力される。セレクタ回路７０は、制御バスを介して、ＣＰＵ２０のシステムリセットＳＲが入力される。セレクタ回路７０は、図３に示してないが、クロック線を介して、システムクロックＳＣが入力される。
【０１０４】
セレクタ回路７０は、ＲＡＭ−リード／ライト回路４０からクリア信号が入力される。セレクタ回路７０は、ＲＡＭ−リード／ライト回路４０からセレクト信号が入力される。セレクタ回路７０は、ＲＡＭ−リード／ライト回路４０から読み出し信号、書き込み信号が入力される。セレクタ回路７０は、ポート情報、又は初期化データをＲＡＭ６０−０〜６０−３１に出力し、又はＲＡＭ６０−０〜６０−３１が格納するポート情報が入力される。セレクタ回路７０は、ライトデータレジスタ５０が出力するポート情報、又は初期化データが入力される。
【０１０５】
図１３は、セレクタ回路の回路ブロック図である。図に示すようにセレクタ回路７０は、アドレスデコーダ７０ａ、データ選択回路７０ｂ、一致データ選択回路７０ｃ、及び一致データ読み出しレジスタ７０ｄを有している。セレクタ回路７０は、システムクロックＳＣに同期して動作する。
【０１０６】
アドレスデコーダ７０ａは、ＣＰＵ２０からデコードされたアドレス信号が入力される。アドレスデコーダ７０ａは、アドレス信号が入力されると一致データ読み出しレジスタ７０ｄをセレクトする。
【０１０７】
データ選択回路７０ｂは、信号線Ｗと接続されている。データ選択回路７０ｂは、データバス５１と接続されている。データ選択回路７０ｂは、信号線Ｓｅｌ＜３１：０＞と接続されている。データ選択回路７０ｂは、信号線Ｗから書き込み信号が入力されると、データバス５１を介して入力されたポート情報、又は初期化データを、データバス７１−０〜７１−３１のうち、セレクト信号が選択しているＲＡＭと接続されたデータバス７１−０〜７１−３１に出力する。
【０１０８】
一致データ選択回路７０ｃは、データバス７１−０〜７１−３１と接続されている。一致データ選択回路７０ｃは、信号線Ｒと接続されている。一致データ選択回路７０ｃは、信号線Ｓｅｌ＜３１：０＞と接続されている。一致データ選択回路７０ｃは、信号線Ｒから読み出し信号が入力されると、ＲＡＭ６０−０〜６０−３１がデータバス７１−０〜７１−３１に出力しているポート情報を入力する。一致データ選択回路７０ｃは、入力したポート情報の７ビット目を参照し、７ビット目が‘１’であるポート情報を選択する。そして、そのポート情報のうち、最も多くの信号線Ａと接続されたＲＡＭが出力したポート情報を選択して、一致データ読み出しレジスタ７０ｄに出力する。
【０１０９】
一致データ読み出しレジスタ７０ｄは、一致データ選択回路７０ｃから出力されたポート情報を保持する。一致データ読み出しレジスタ７０ｄは、アドレスデコーダ７０ａによってセレクトされ、ＣＰＵ２０からリード信号を受信すると、保持しているポート情報（データ信号）をデータバス２２に出力する。一致データ読み出しレジスタ７０ｄは、信号線Ｃｌｒと接続され、クリア信号を受信すると、保持していたポート情報をクリアする（例えば‘０’にする）。
【０１１０】
以下、セレクタ回路７０の動作について説明する。
まず、ＲＡＭ６０−０〜６０−３１を初期化するときの動作について説明する。データ選択回路７０ｂは、データバス５１から初期化データが入力される。また、初期化するＲＡＭ６０−０〜６０−３１を選択するセレクト信号が、信号線Ｓｅｌ＜３１：０＞を介して入力される。データ選択回路７０ｂは、信号線Ｗから書き込み信号を受けると、初期化データをセレクト信号によって選択されるＲＡＭと接続されたデータバス７１−０〜７１〜３１に出力する。
【０１１１】
このように、セレクタ回路７０は、初期化データ、セレクト信号が入力される。そして、書き込み信号が入力されたとき、セレクト信号によって選択されるＲＡＭと接続されたデータバス７１−０〜７１−３１に初期化データを出力し、ＲＡＭ６０−０〜６０−３１を初期化する。
【０１１２】
次に、ＲＡＭ６０−０〜６０−３１にポート情報を設定するときの動作について説明する。データ選択回路７０ｂは、データバス５１を介して、ＲＡＭに設定するポート情報が入力される。また、ポート情報を設定するＲＡＭ６０−０〜６０−３１を選択するセレクト信号が、信号線Ｓｅｌ＜３１：０＞を介して入力される。データ選択回路７０ｂは、信号線Ｗから書き込み信号を受けると、ポート情報をセレクト信号によって選択されるＲＡＭと接続されたデータバス７１−０〜７１−３１に出力する。
【０１１３】
このように、セレクタ回路７０は、ＲＡＭに格納すべきポート情報が入力される。そして、書き込み信号が入力されたとき、セレクト信号によって選択されるＲＡＭと接続されたデータバス７１−０〜７１−３１にポート情報を出力し、ＲＡＭ６０−０〜６０−３１にポート情報を書き込む。
【０１１４】
次に、ＲＡＭ６０−０〜６０−３１からポート情報が出力されたときの動作について説明する。一致データ選択回路７０ｃは、読み出し信号が入力されたとき、ＲＡＭ６０−０〜６０−３１から出力されているポート情報を入力する。一致データ選択回路７０ｃは、ＲＡＭ６０−０〜６０−３１から出力されるポート情報の７ビット目を参照し、７ビット目が‘１’であるポート情報を選択する。そして、そのポート情報のうち、最も多くの信号線Ａと接続されたＲＡＭが出力したポート情報を選択して、一致データ読み出しレジスタ７０ｄに出力する。
【０１１５】
一致データ読み出しレジスタ７０ｄは、一致データ選択回路７０ｃから出力されたポート情報を保持する。一致データ読み出しレジスタ７０ｄは、アドレスデコーダ７０ａによってデコードされ、ＣＰＵ２０からリード信号を受信すると、保持しているポート情報をデータバス２２に出力する。
【０１１６】
このように、セレクタ回路７０は、ＲＡＭ６０−０〜６０−３１から出力されるポート情報を入力する。そして、各々のポート情報の７ビット目を参照して、最も多くの信号線Ａ＜３１：０＞と接続されたＲＡＭ６０−０〜６０−３１が出力するポート情報を選択し、データバス２２に出力する。
【０１１７】
次に、本発明の第２の実施の形態について説明する。
図１４は、第２の実施の形態に係るルータの回路ブロック図を示す。図に示すルータ１００は、ＣＰＵ１１０、デコーダ１２０、ＲＡＭ１３０−０〜１３０−３１、セレクタ回路１４０、及び出力ポート１５０ａ〜１５０ｅを有している。
【０１１８】
ＣＰＵ１１０は、６４ビットのアドレスバス１１１、３２ビットのデータバス１１２、及び制御バス１１３と接続されている。ＣＰＵ１１０は、図２で示したネットワーク１１ａ〜１１ｆ、又は他のネットワークから送信されてくるパケットのＩＰアドレスをアドレスバス１１１の下位３２ビットに出力する。ＣＰＵ１１０は、ＲＡＭ１３０−０〜１３０−３１を選択するためのセレクト信号をアドレスバス１１１の上位３２ビットに出力する。ＣＰＵ１１０は、制御バス１１３に書き込み信号、読み出し信号を出力する。また、接続先のネットワークのネットワークアドレスに対応した、ＲＡＭ１３０−０〜１３０−３１のアドレスに出力ポートのポート情報を書き込む。また、ＣＰＵ１１０は、初期化すべきＲＡＭ６０−０〜６０−３１に初期化データ、例えば‘０’を書き込む。
【０１１９】
デコーダ１２０は、アドレスバス１１１の上位３２ビットと接続されている。デコーダ１２０は、ＣＰＵ１１０から出力されたセレクト信号を保持して、３２ビットのセレクトバス１２１に出力する。第１の実施の形態と同様に３２ビットのセレクトバス１２１の信号線を信号線Ｓｅｌ＜３１：０＞で示す。
【０１２０】
ＲＡＭ１３０−０〜１３０−３１は、アドレスバス１１１の下位３２ビットにおける、上位ビットから順に下位ビットの信号線Ａが１本ずつ追加されて接続されている。第１の実施の形態と同様に３２ビットのアドレスバス１１１の信号線を信号線Ａ＜３１：０＞で示す。ＲＡＭ１３０−０は、信号線Ａ＜３１＞が接続されている。ＲＡＭ１３０−１は、信号線Ａ＜３１：３０＞が接続されている。ＲＡＭ１３０−２は、信号線Ａ＜３１：２９＞が接続されている。以下、アドレスバス１１１の下位のビットの信号線Ａが１本ずつ追加されて接続され、ＲＡＭ１３０−３１には、信号線Ａ＜３１：０＞が接続されている。なお、信号線Ａ＜３１：０＞は、ＩＰアドレスを構成するビットに対応している。
【０１２１】
また、ＲＡＭ１３０−０〜１３０−３１は、セレクトバス１２１の下位ビットから順に上位の信号線Ｓｅｌが接続されている。ＲＡＭ１３０−０は、信号線Ｓｅｌ＜０＞と接続されている。ＲＡＭ１３０−１は、信号線Ｓｅｌ＜１＞と接続されている。ＲＡＭ１３０−２は、信号線Ｓｅｌ＜２＞と接続されている。以下同様に、セレクトバス１２１の上位のビットの信号線が順に接続され、ＲＡＭ１３０−３１には、信号線Ｓｅｌ＜３１＞が接続されている。また、ＲＡＭ１３０−０〜１３０−３１には、制御バス１１３の信号線Ｒ，Ｗが接続されている。
【０１２２】
セレクタ回路１４０は、８ビットのデータバス１４０−０〜１４０−３１を介してＲＡＭ１３０−０〜１３０−３１と接続されている。データバス１４０−０〜１４０−３１の信号線を第１の実施の形態と同様にＤ０＜７：０＞〜Ｄ３１＜７：０＞で示す。セレクタ回路１４０は、制御バス１１３の信号線Ｒ，Ｗと接続されている。また、セレクタ回路１４０は、データバス１１２と接続されている。
【０１２３】
セレクタ回路１４０は、ＲＡＭ１３０−０〜１３０−３１から出力されるポート情報のうち、最も多くの信号線が接続されたＲＡＭのポート情報を選択して、データバス１１２に出力する。また、セレクタ回路１４０は、ＣＰＵ１１０からＲＡＭ１３０−０〜１３０−３１に設定すべきポート情報、又は初期化データが入力され、そのポート情報、又は初期化データをデータバス１４０−０〜１４０−３１に出力する。
【０１２４】
出力ポート１５０ａは、図２におけるネットワーク１１ｂと接続されている。出力ポート１５０ｂは、ネットワーク１１ｃと接続されている。出力ポート１５０ｃは、ネットワーク１１ｄと接続されている。出力ポート１５０ｄは、ネットワーク１１ｅと接続されている。出力ポート１５０ｅは、ネットワーク１１ｆと接続されている。出力ポート１５０ａ〜１５０ｅは、ＣＰＵ１１０から送られてくるパケットを接続先のネットワーク１１ｂ〜１１ｆに出力する。
【０１２５】
以下、図１４のルータ１００の動作について説明する。
まず、ＲＡＭ１３０−０〜１３０−３１を初期化する動作について説明する。ＣＰＵ１１０は、初期化対象のネットワークアドレスをアドレスバス１１１の下位３２ビットに出力する。ＣＰＵ１１０は、アドレスバス１１１の上位３２ビットに、初期化対象のネットワークアドレスのビット数と同数の信号線が接続されたＲＡＭ１３０−０〜１３０−３１を選択するセレクト信号を出力する。アドレスバス１１１の上位３２ビットに出力されたセレクト信号は、デコーダ１２０に入力され、デコーダ１２０は、セレクト信号を保持して信号線Ｓｅｌ＜３１：０＞に出力する。
【０１２６】
ＣＰＵ１１０は、データバス１１２に初期化データ、例えば、２進８ビットの‘０’を出力する。ＣＰＵ１１０は、制御バス１１３に書き込み信号を出力する。
【０１２７】
セレクタ回路１４０は、制御バス１１３の信号線Ｗを介して、書き込み信号が入力されると、データバス１１２に出力されている初期化データをデータバス１４０−０〜１４０−３１に出力する。
【０１２８】
セレクト信号で選択されているＲＡＭ１３０−０〜１３０−３１は、制御バス１１３の信号線Ｗを介して書き込み信号が入力されると、データバス１４０−０〜１４０−３１に出力されている初期化データを格納する。
【０１２９】
このようにして、ＲＡＭ１３０−０〜１３０−３１は、初期化データに初期化される。
なお、ポート情報と識別されるように、出力ポート１５０ａ〜１５０ｅと接続されているネットワークのネットワークアドレスに対応するメモリアドレス以外のアドレスには、初期化データを格納するようにする。
【０１３０】
次に、ネットワークアドレスに対応する、ＲＡＭ１３０−０〜１３０−３１のメモリアドレスにポート情報を設定する動作について説明する。ＣＰＵ１１０は、出力ポート１５０ａ〜１５０ｅの接続先ネットワーク１１ｂ〜１１ｆのネットワークアドレスをアドレスバス１１１の下位３２ビットに出力する。ＣＰＵ１１０は、アドレスバス１１１の下位３２ビットに出力したネットワークアドレスのビット数と同数の信号線Ａと接続されたＲＡＭ１３０−０〜１３０−３１を選択するためのセレクト信号をアドレスバス１１１の上位３２ビットに出力する。デコーダ１２０は、ＣＰＵ１１０から出力されたセレクト信号を保持して、セレクトバス１２１に出力する。
【０１３１】
ＣＰＵ１１０は、データバス１１２にポート情報を書き込む。データバス１１２には、アドレスバス１１１の下位３２ビットに出力されたネットワークアドレスを持つネットワーク１１ｂ〜１１ｆと接続された出力ポート１５０ａ〜１５０ｅを示すポート情報が出力される。なお、ポート情報の７ビット目には、自ポート情報が有効であることを示す‘１’が設定される。また、ポート情報の６〜０ビットで、パケットを出力すべき出力ポートのポート情報が設定される。
【０１３２】
セレクタ回路１４０は、ＣＰＵ１１０から出力されたポート情報をデータバス１４０−０〜１４０−３１に出力する。
ＣＰＵ１１０から書き込み信号が信号線Ｗに出力されると、セレクト信号で選択されているＲＡＭ１３０−０〜１３０−３１は、データバス１４０−０〜１４０−３１に出力されているポート情報を格納する。
【０１３３】
このようにして、出力ポート１５０ａ〜１５０ｅの先に接続されたネットワークのネットワークアドレスに対応するメモリアドレスに、出力ポート１５０ａ〜１５０ｅを示すポート情報が格納される。
【０１３４】
次に、最長一致するネットワークアドレスを検索してパケットを送信する動作について説明する。ＣＰＵ１１０は、ネットワークから送信されてくるパケットを受信する。ＣＰＵ１１０は、パケットに含まれるＩＰアドレスをアドレスバス１１１の下位３２ビットに出力する。
【０１３５】
ＲＡＭ１３０−０〜１３０−３１は、信号線Ｒに読み出し信号が出力されたとき、各信号線Ａに出力されているＩＰアドレスに応じたメモリアドレスに格納されている情報をデータバス１４０−０〜１４０−３１に出力する。
【０１３６】
セレクタ回路１４０は、ＲＡＭ１３０−０〜１３０−３１からデータバス１４０−０〜１４０−３１に出力される情報の７ビット目を参照し、７ビット目が‘１’であるポート情報を選択する。セレクタ回路１４０は、選択したポート情報のうち、最も多くの信号線Ａが接続されたＲＡＭのポート情報を選択する。すなわち、ＩＰアドレスに最長一致するネットワークアドレスを持つネットワークと接続された出力ポートを示すポート情報が選択される。セレクタ回路１４０は、選択したポート情報をデータバス１１２に出力する。
【０１３７】
ＣＰＵ１１０は、セレクタ回路１４０から出力されるポート情報を参照して、パケットを出力ポート１５０ａ〜１５０ｅに出力する。出力ポート１５０ａ〜１５０ｅは、接続先のネットワークにパケットを送信する。
【０１３８】
このように、最長一致するネットワークアドレスと接続された出力ポートを、ＲＡＭの内部で、演算処理を行うことなく判定できるので、市販されている通常のメモリを使用した最長一致判定が可能となる。
【０１３９】
また、市販されている通常のメモリを使用することによって、コストを低減することができる。
また、６４ビットあるアドレス空間のうち、下位３２ビットをＩＰアドレスに最長一致するネットワークアドレスの検索に使用し、上位３２ビットをＲＡＭ１３０−０〜１３０−３１の選択に使用することによって、アドレスを保持するためのアドレスレジスタや、データを保持するためのデータレジスタが不要となり部品を低減することができる。
【０１４０】
なお、上記のルータ１００は、１チップの半導体装置によっても実現される。
次に、ＣＰＵ１１０のアドレス空間について説明する。
図１５は、ＣＰＵのアドレス空間を示す図である。なお、以下では、アドレスを１６進数で表記する。ＣＰＵ１１０は、６４ビットのアドレス空間を持つ。ＣＰＵ１１０は、アドレスバス１１１と接続され、そのアドレスバス１１１の下位３２ビットは、ＲＡＭ１３０−０〜１３０−３１と接続されている。従って、図１５のアドレス空間１６０に示すように、ＣＰＵ１１０のアドレス空間０＿００００００００から０＿ｆｆｆｆｆｆｆｆは、ＩＰアドレスに対応するネットワークアドレスを検索するためのメモリ空間となる。
【０１４１】
ＣＰＵ１１０の上位３２ビットは、デコーダ１２０と接続されている。ＣＰＵ１１０は、上位３２ビットを使用して、ＲＡＭ１３０−０〜１３０−３１を選択する。従って、図１５のアドレス空間１６０に示すように、ＣＰＵ１１０のアドレス空間１＿００００００００から１＿ｆｆｆｆｆｆｆｆは、ＲＡＭ１３０−３１の選択に使用される。以下同様にして、ＣＰＵ１１０の上位３２ビットは、ＲＡＭ１３０−０〜１３０−３０の選択に使用される。
【０１４２】
なお、ＲＡＭ１３０−３１は、信号線Ａ＜３１：０＞と接続され、アドレス空間幅は、２の３２乗である。ＲＡＭ１３０−３０は、信号線Ａ＜３１：１＞と接続され、アドレス空間幅は、２の３１乗である。順に、ＲＡＭ１３０−０まで、信号線Ａの本数は順に減少し、ＲＡＭ１３０−０のアドレス空間幅は、２の１乗となる。
【０１４３】
このように、ＩＰアドレスより大きいアドレス空間を持つＣＰＵを使用することによって、ＩＰアドレスのアドレス空間より大きいアドレス空間で、ＲＡＭを選択することができ、アドレスレジスタや、データを保持するためのデータレジスタが不要となり、ルータ１００を構成する部品を低減することができる。
【０１４４】
次にセレクタ回路１４０の詳細について説明する。
図１６は、セレクタ回路の回路ブロック図である。図に示すようにセレクタ回路１４０は、データ選択回路１４０ａ、一致データ選択回路１４０ｂ、及び一致データ読み出しレジスタ１４０ｃを有している。セレクタ回路１４０は、システムクロックＳＣが入力され、システムクロックＳＣに同期して動作する。
【０１４５】
データ選択回路１４０ａは、信号線Ｗと接続されている。データ選択回路１４０ａは、データバス１１２と接続されている。データ選択回路１４０ａは、信号線Ｓｅｌ＜３１：０＞と接続されている。データ選択回路１４０ａは、信号線Ｗから書き込み信号が入力されると、データバス１１２から入力されるポート情報、又は初期化データを、データバス１４０−０〜１４０−３１のうち、セレクト信号が選択しているＲＡＭと接続されたデータバス１４０−０〜１４０−３１に出力する。
【０１４６】
一致データ選択回路１４０ｂは、データバス１４０−０〜１４０−３１と接続されている。一致データ選択回路１４０ｂは、信号線Ｒと接続されている。一致データ選択回路１４０ｂは、信号線Ｓｅｌ＜３１：０＞と接続されている。一致データ選択回路１４０ｂは、信号線Ｒから読み出し信号が入力されると、ＲＡＭ１３０−０〜１３０−３１がデータバス１４０−０〜１４０−３１に出力しているポート情報を入力する。一致データ選択回路１４０ｂは、入力したポート情報の７ビット目を参照し、７ビット目が‘１’であるポート情報を選択する。そして、そのポート情報のうち、最も多くの信号線Ａと接続されたＲＡＭが出力したポート情報を選択して、一致データ読み出しレジスタ１４０ｃに出力する。
【０１４７】
一致データ読み出しレジスタ１４０ｃは、一致データ選択回路１４０ｂから出力されたポート情報を保持する。一致データ読み出しレジスタ１４０ｃは、読み出し信号を受信すると、保持しているポート情報（データ信号）をデータバス２２に出力する。
【０１４８】
以下、セレクタ回路１４０の動作について説明する。
まず、ＲＡＭ１３０−０〜１３０−３１を初期化するときの動作について説明する。データ選択回路１４０ａは、データバス１１２から初期化データが入力される。また、初期化するＲＡＭ１３０−０〜１３０−３１を選択するセレクト信号が、信号線Ｓｅｌ＜３１：０＞を介して入力される。データ選択回路１４０ａは、信号線Ｗから書き込み信号を受けると、初期化データをセレクト信号によって選択されるＲＡＭと接続されたデータバス１４０−０〜１４０〜３１に出力する。
【０１４９】
このように、セレクタ回路１４０は、初期化データ、セレクト信号が入力される。そして、書き込み信号が入力されたとき、セレクト信号によって選択されるＲＡＭと接続されたデータバス１４０−０〜１４０−３１に初期化データを出力し、ＲＡＭ１３０−０〜１３０−３１を初期化する。
【０１５０】
次に、ＲＡＭ１３０−０〜１３０−３１にポート情報を設定するときの動作について説明する。データ選択回路１４０ａは、データバス１１２を介して、ＲＡＭに設定するポート情報が入力される。また、ポート情報を設定するＲＡＭ１３０−０〜１３０−３１を選択するセレクト信号が、信号線Ｓｅｌ＜３１：０＞を介して入力される。データ選択回路１４０ａは、信号線Ｗから書き込み信号を受けると、ポート情報をセレクト信号によって選択されたＲＡＭと接続されたデータバス１４０−０〜１４０〜３１に出力する。
【０１５１】
このように、セレクタ回路１４０は、ＲＡＭに格納すべきポート情報が入力される。そして、書き込み信号が入力されたとき、セレクト信号によって選択されるＲＡＭと接続されたデータバス１４０−０〜１４０−３１にポート情報を出力し、ＲＡＭ１３０−０〜１３０−３１にポート情報を書き込む。
【０１５２】
次に、ＲＡＭ１３０−０〜１３０−３１からポート情報が出力されたときの動作について説明する。一致データ選択回路１４０ｂは、読み出し信号が入力されたとき、ＲＡＭ１３０−０〜１３０−３１から出力されているポート情報を入力する。一致データ選択回路１４０ｂは、ＲＡＭ１３０−０〜１３０−３１から出力されるポート情報の７ビット目を参照し、７ビット目が‘１’であるポート情報を選択する。そして、そのポート情報のうち、最も多くの信号線Ａと接続されたＲＡＭが出力したポート情報を選択して、一致データ読み出しレジスタ１４０ｃに出力する。
【０１５３】
一致データ読み出しレジスタ１４０ｃは、一致データ選択回路１４０ｂから出力されたポート情報を保持する。一致データ読み出しレジスタ１４０ｃは、信号線Ｒから読み出し信号を受信すると、保持しているポート情報をデータバス１１２に出力する。
【０１５４】
このように、セレクタ回路１４０は、ＲＡＭ１３０−０〜１３０−３１から出力されるポート情報を入力する。そして、各々のポート情報の７ビット目を参照して、最も多くの信号線Ａ＜３１：０＞と接続されたＲＡＭ１３０−０〜１３０−３１が出力するポート情報を選択し、データバス１１２に出力する。
【０１５５】
（付記１）　データの出力ポートを判定する出力ポート判定装置において、
ネットワークに接続される複数の出力ポートと、
接続先ノードを一意に特定するノードアドレスを構成するビットに対応した信号線を有するアドレスバスと、
前記ネットワークのネットワークアドレスのビット数と同数の前記信号線が接続され、前記ネットワークアドレスに対応したメモリアドレスに、データを出力すべき前記出力ポートを示すポート情報が格納された複数の記憶装置と、
前記ノードアドレスを前記アドレスバスに出力するアドレスレジスタと、
前記ノードアドレスに応じて前記複数の記憶装置から出力される前記ポート情報のうち、最も多くの前記信号線が接続された前記記憶装置の前記ポート情報を選択して出力する選択回路と、
を有することを特徴とする出力ポート判定装置。
【０１５６】
（付記２）　前記複数の記憶装置は、前記アドレスバスの上位ビットから下位ビットの前記信号線が順に追加されて接続されることを特徴とする付記１記載の出力ポート判定装置。
【０１５７】
（付記３）　前記ポート情報に基づいて、前記ネットワークに出力するデータを前記出力ポートに出力する制御回路を有することを特徴とする付記１記載の出力ポート判定装置。
【０１５８】
（付記４）　前記記憶装置の前記ネットワークアドレスに対応するメモリアドレス以外のアドレスには、前記ポート情報と識別されるための初期化情報が格納されていることを特徴とする付記１記載の出力ポート判定装置。
【０１５９】
（付記５）　前記ポート情報は、自情報がポート情報であることを識別される識別情報を有することを特徴とする付記１記載の出力ポート判定装置。
（付記６）　前記選択回路は、前記識別情報によって前記ポート情報を識別し、最も多くの前記信号線が接続された前記記憶装置の前記ポート情報を選択することを特徴とする付記５記載の出力ポート判定装置。
【０１６０】
（付記７）　前記記憶装置を指定する指定回路と、
前記指定された記憶装置の前記ネットワークアドレスに対応するメモリアドレスに前記ポート情報を書き込む書き込み回路と、
を有することを特徴とする付記１記載の出力ポート判定装置。
【０１６１】
（付記８）　前記書き込み回路は、前記記憶装置の前記ネットワークアドレスに対応するメモリアドレス以外のアドレスに前記ポート情報と識別されるための初期化情報を格納することを特徴とする付記７記載の出力ポート判定装置。
【０１６２】
（付記９）　前記ノードアドレスのノードアドレス空間以上のアドレス空間を有し、前記ノードアドレス空間以上のアドレス空間で前記ネットワークアドレスのビット数と同数の信号線が接続された前記記憶装置を指定し、前記ノードアドレス空間内で前記記憶装置の前記ネットワークアドレスに対応するメモリアドレスを指定する中央演算処理装置を有することを特徴とする付記１記載の出力ポート判定装置。
【０１６３】
（付記１０）　前記中央演算処理装置は、前記記憶装置の前記ネットワークアドレスに対応するメモリアドレスに前記ポート情報を書き込むことを特徴とする付記９記載の出力ポート判定装置。
【０１６４】
（付記１１）　前記中央演算処理装置は、前記記憶装置の前記ネットワークアドレスに対応するメモリアドレス以外のアドレスに前記ポート情報と識別されるための初期化情報を書き込むことを特徴とする付記９記載の出力ポート判定装置。
【０１６５】
（付記１２）　データの出力ポートを判定する半導体装置において、
ネットワークに接続される複数の出力ポートと、
接続先ノードを一意に特定するノードアドレスを構成するビットに対応した信号線を有するアドレスバスと、
前記ネットワークのネットワークアドレスのビット数と同数の前記信号線が接続され、前記ネットワークアドレスに対応したメモリアドレスに、データを出力すべき前記出力ポートを示すポート情報が格納された複数の記憶装置と、
前記ノードアドレスを前記アドレスバスに出力するアドレスレジスタと、
前記ノードアドレスに応じて前記複数の記憶装置から出力される前記ポート情報のうち、最も多くの前記信号線が接続された前記記憶装置の前記ポート情報を選択して出力する選択回路と、
を有することを特徴とする半導体装置。
【０１６６】
（付記１３）　データの出力ポートを判定する出力ポート判定方法において、接続先ノードを一意に特定するノードアドレスを接続先のネットワークから受信し、
前記ノードアドレスを構成するビットに対応した信号線を有するアドレスバスに、前記ノードアドレスを出力し、
前記ネットワークのネットワークアドレスのビット数と同数の前記信号線が接続され、前記ネットワークアドレスに対応したメモリアドレスに、データを出力すべき前記出力ポートを示すポート情報が格納された複数の記憶装置の前記ノードアドレスに応じて出力される前記ポート情報のうち、最も多くの前記信号線が接続された前記記憶装置の前記ポート情報を選択して出力する、
ことを特徴とする出力ポート判定方法。
【０１６７】
【発明の効果】
以上説明したように本発明では、複数の記憶装置に対し、出力ポートの先に接続されたネットワークのネットワークアドレスに対応するメモリアドレスに、出力ポートのポート情報を格納した。さらに、各記憶装置には、格納されたポート情報の出力ポートに対応するネットワークアドレスのビット数と同数のアドレスバスの信号線を接続した。そして、アドレスバスにノードアドレスを出力したときに各記憶装置から出力されるポート情報のうち最も多くの信号線が接続された記憶装置のポート情報を選択するようにした。記憶装置に接続された信号線の本数は、ネットワークアドレスのビット数に一致するため、出力されるポート情報のうち、最も多くの本数の信号線が接続された記憶装置から出力されたポート情報が、ネットワークアドレスが最も長いネットワークに接続された出力ポートを示すこととなる。この結果、記憶装置内部で演算を行う必要がなくなり、簡単なハードウェア構成による最長一致判定が可能となる。
【図面の簡単な説明】
【図１】本発明の原理を説明する原理図である。
【図２】第１の実施の形態に係るルータをネットワーク同士の相互接続に適用したときの図である。
【図３】第１の実施の形態に係るルータの回路ブロック図を示す。
【図４】図３のアドレスレジスタと入出力される信号を示した図である。
【図５】アドレスレジスタのタイミングチャートを示す。
【図６】図３のＲＡＭ−リード／ライト回路と入出力される信号を示した図である。
【図７】ＲＡＭ−リード／ライト回路のタイミングチャートを示す。
【図８】ＲＡＭ−リード／ライト回路のコマンド一覧を示す図である。
【図９】ＲＡＭ−リード／ライト回路のステートマシンを示す図である。
【図１０】図３のライトデータレジスタと入出力される信号を示した図である。
【図１１】ライトデータレジスタのタイミングチャートを示す。
【図１２】図３のセレクタ回路と入出力される信号を示した図である。
【図１３】セレクタ回路の回路ブロック図である。
【図１４】第２の実施の形態に係るルータの回路ブロック図を示す。
【図１５】ＣＰＵのアドレス空間を示す図である。
【図１６】セレクタ回路の回路ブロック図である。
【符号の説明】
１　出力ポート判定装置
２　制御回路
２ａ，２ａａ，２１，３１，１１１　アドレスバス
２ｂ，２２，５１，１１２　データバス
３ａ〜３ｎ，８０ａ〜８０ｅ，１５０ａ〜１５０ｅ　出力ポート
４ａ〜４ｍ　記憶装置
５，３０　アドレスレジスタ
６　選択回路
７ａ〜７ｎ，１１ａ〜１１ｆ　ネットワーク
１０ａ〜１０ｆ，１００　ルータ
４０　ＲＡＭ−リード／ライト回路
４１，１２１　セレクトバス
５０　ライトデータレジスタ
７０，１４０　セレクタ回路
７０ａ　アドレスデコーダ
７０ｂ，１４０ａ　データ選択回路
７０ｃ，１４０ｂ　一致データ選択回路
７０ｄ，１４０ｃ　一致データ読み出しレジスタ
１１３　制御バス
１２０　デコーダ
【図１】
2004088202.tif 000003
【図２】
2004088202.tif 000004
【図３】
2004088202.tif 000005
【図４】
2004088202.tif 000006
【図５】
2004088202.tif 000007
【図６】
2004088202.tif 000008
【図７】
2004088202.tif 000009
【図８】
2004088202.tif 000010
【図９】
2004088202.tif 000011
【図１０】
2004088202.tif 000012
【図１１】
2004088202.tif 000013
【図１２】
2004088202.tif 000014
【図１３】
2004088202.tif 000015
【図１４】
2004088202.tif 000016
【図１５】
2004088202.tif 000017
【図１６】
2004088202.tif 000018