(57)【特許請求の範囲】
【請求項１】
複数のバンクによって構成されるパケットバッファメモリに対するパケットデータの読み出しおよび書き込みを制御する半導体装置であって、
読み出し要求の対象アドレスを一定期間蓄積し、書き込み要求が発生したときにそのデータサイズと蓄積された前記対象アドレスとに基づいて、バンク衝突を回避可能なバンク候補を選択する選択手段と、
前記パケットバッファメモリの空きアドレスをバンク毎に管理し、前記選択手段によって選択されたバンク候補の中から選択したバンクの空きアドレスを前記選択手段に出力するアドレス管理手段と、
データを書き込んだときの前記パケットバッファメモリのアドレスを登録するアドレス登録手段とを含み、
前記選択手段は、前記アドレス管理手段から受けた空きアドレスにデータを書き込み、書き込んだアドレスを前記アドレス登録手段に登録し、
前記選択手段は、
前記読み出し要求の対象アドレスを順次シフトして保持する複数段の保持手段と、
前記データサイズに対応する段数の前記保持手段に保持される対象アドレスに対応するバンク以外のバンクを前記バンク候補として選択するバンク選択手段とを含む、半導体装置。
【請求項２】
前記アドレス管理手段は、空きアドレスがなくなったバンクが発生したときに、前記バンク選択手段に通知し、
前記バンク選択手段は、前記アドレス管理手段から通知があったときに、前記保持手段の１つに保持される対象アドレスに対応するバンク以外のバンクを前記バンク候補として選択する、請求項１記載の半導体装置。
【請求項３】
前記半導体装置はさらに、書き込み要求が発生したときにそのデータサイズをカウントする制御手段を含む、請求項１記載の半導体装置。
【請求項４】
パケットデータを蓄積して出力する通信装置であって、
複数のバンクによって構成され、前記パケットデータを蓄積するパケットバッファメモリと、
読み出し要求の対象アドレスを一定期間蓄積し、書き込み要求が発生したときにそのデータサイズと蓄積された前記対象アドレスとに基づいて、バンク衝突を回避可能なバンク候補を選択する選択手段と、
前記パケットバッファメモリの空きアドレスをバンク毎に管理し、前記選択手段によって選択されたバンク候補の中から選択したバンクの空きアドレスを前記選択手段に出力するアドレス管理手段と、
データを書き込んだときの前記パケットバッファメモリのアドレスを登録するアドレス登録手段とを含み、
前記選択手段は、前記アドレス管理手段から受けた空きアドレスにデータを書き込み、書き込んだアドレスを前記アドレス登録手段に登録し、
前記選択手段は、
前記読み出し要求の対象アドレスを順次シフトして保持する複数段の保持手段と、
前記データサイズに対応する段数の前記保持手段に保持される対象アドレスに対応するバンク以外のバンクを前記バンク候補として選択するバンク選択手段とを含む、通信装置。
【請求項５】
前記アドレス管理手段は、空きアドレスがなくなったバンクが発生したときに、前記バンク選択手段に通知し、
前記バンク選択手段は、前記アドレス管理手段から通知があったときに、前記保持手段の１つに保持される対象アドレスに対応するバンク以外のバンクを前記バンク候補として選択する、請求項４記載の通信装置。
【請求項６】
前記通信装置はさらに、書き込み要求が発生したときにそのデータサイズをカウントする制御手段を含む、請求項４記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットデータを一時的に保存して適宜出力する技術に関し、特に、大容量の汎用ＤＲＡＭ（Dynamic Random Access Memory）をパケットバッファメモリとして制御する半導体装置およびそれを用いた通信装置に関する。
【背景技術】
【０００２】
近年、ネットワークの高速化が進んでおり、それに伴ってパケットデータを一時的に保存するルータ、スイッチなどの通信装置の高機能化も進んでいる。一般に、このような通信装置においては、転送先を決めるまでパケットデータ（以下、単にデータとも呼ぶ。）を一時的に保存するために、パケットバッファメモリを有する必要がある。
【０００３】
これは、品質情報に基づいた優先順位に従ってデータを出力する必要があるため、ネットワークによっては通信速度が異なるのでデータをバッファリングする必要があるため、複数のネットワークからのデータを受信する必要があるため、などの理由による。
【０００４】
ネットワークの高速化に伴って、パケットバッファメモリの更なる大容量化が求められており、低コスト、大容量の汎用ＤＲＡＭをパケットバッファメモリの一部として組み込んだパケットバッファシステムが開発されている。
【０００５】
パケットバッファシステムは、ネットワーク上に配置されたルータ、スイッチなどの通信装置に使用される特性上、外部から高レートで、かつ、ある一定範囲の可変長データのＷｒｉｔｅ要求およびＲｅａｄ要求がランダムに入力されるといった特徴を有している。
【０００６】
たとえば、パケットバッファシステムにデータのＷｒｉｔｅ要求が入力されると、パケットバッファメモリの空きアドレスを抽出し、空きアドレスに対応するパケットバッファメモリの領域に、Ｗｒｉｔｅ要求があった対象データを書き込む。このとき、将来、そのデータが読み出される場合に備えて、データを書き込んだアドレスを登録しておく。
【０００７】
また、パケットバッファシステムにデータのＲｅａｄ要求が入力されると、過去に、そのＲｅａｄ対象データを書き込んだ時に登録したアドレスを抽出し、そのアドレスに対応するパケットバッファメモリの領域からＲｅａｄ対象データを読み出す。
【０００８】
一方、一般的な汎用ＤＲＡＭをパケットバッファメモリとして使用し、メモリ空間を複数のバンクで構成することにより、あるバンクに対するアクセスの最中であっても、他のバンクであれば同時にアクセスが可能である。これに関連する技術として、下記の特許文献１に開示された発明がある。
【０００９】
特許文献１は、メモリインタフェース速度の向上を図ることを目的とする。パケット分割部は、パケットデータをセグメントに分割するセグメント分割と、パケット品質情報の検出処理とを行なう。メモリ管理部は、アドレス管理テーブルを有し、パケット品質情報毎に、パケットデータの格納状態を管理する。セグメント／リクエスト情報分割部は、セグメントを、複数のメモリに書き込み／読み出し可能なアクセス単位のデータに分割し、アクセス単位毎の書き込みリクエストおよび読み出しリクエストを生成する。メモリアクセス制御部は、生成された書き込みリクエストまたは読み出しリクエストの内、バンク制約が生じてアクセス禁止となったバンクを回避して、アクセス可能なバンクに対応する書き込みリクエストまたは読み出しリクエストを抽出して、複数のメモリに対して書き込み／読み出しアクセスを行なう。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００９−１５７６８０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上述のように、汎用ＤＲＡＭをパケットバッファメモリとして使用し、メモリ空間を複数のバンクで構成することにより、異なるバンクに対して同時にアクセスすることが可能になる。また、データのＷｒｉｔｅ要求とデータのＲｅａｄ要求とが同時に入力された場合でも、パケットバッファメモリのＷｒｉｔｅアドレスを制御することでバンクの衝突を回避することができる。たとえば、各バンク毎に空きアドレスを管理しておき、バンク衝突が発生したときに、Ｒｅａｄ要求が入っていないバンクのアドレスをＷｒｉｔｅアドレスとして使用するようにすればよい。
【００１２】
しかしながら、このような方法では、状況によってパケットバッファシステム自体が管理するアドレスを無駄に消費してしまうといった新たな問題が発生する。後で詳細に説明するが、パケットバッファメモリにおいては、バンクという概念とは別に、メモリ空間を、パケットバッファメモリに格納する必要がある最小データサイズ以上のセグメントと呼ばれる単位で分割しており、その各セグメントに対してアドレスが割り付けられている。
【００１３】
あるバンクに対してＷｒｉｔｅ要求があったデータの書き込みを行なっているときに、同じバンクに対するＲｅａｄ要求があると、バンク衝突を回避し、且つ、要求を滞りなく処理するためには、そのバンクに対するデータ書き込みを中断して、Ｒｅａｄを開始すると共に、並行して、別のバンクに残りのデータを書き込む必要がある。すなわち、本来であれば、１アドレス（１セグメント）にデータを書き込めた場合であっても、２アドレスを消費してしまい、アドレスを無駄に消費してしまうことになる。
【００１４】
本発明は、上記問題点を解決するためになされたものであり、その目的は、バンク衝突を回避しつつ、アドレスの無駄な消費を防止するようにパケットデータの書き込みおよび読み出しを制御することが可能な半導体装置およびそれを用いた通信装置を提供することである。
【課題を解決するための手段】
【００１５】
本発明の一実施例によれば、複数のバンクによって構成されるパケットバッファメモリに対するパケットデータの読み出しおよび書き込みを制御する半導体装置が提供される。ＢＡＮＫ回避部は、読み出し要求の対象アドレスを一定期間蓄積し、書き込み要求が発生したときにそのデータサイズと蓄積された対象アドレスとに基づいて、バンク衝突を回避可能なバンク候補を選択する。アドレス管理部は、パケットバッファメモリの空きアドレスをバンク毎に管理し、ＢＡＮＫ回避部によって選択されたバンク候補の中から選択したバンクの空きアドレスをＢＡＮＫ回避部に出力する。リンクドリスト部は、データを書き込んだときのパケットバッファメモリのアドレスを登録する。そして、ＢＡＮＫ回避部は、アドレス管理部から受けた空きアドレスにデータを書き込み、書き込んだアドレスをリンクドリスト部に登録する。
【発明の効果】
【００１６】
本発明の一実施例によれば、ＢＡＮＫ回避部が読み出し要求の対象アドレスを一定期間蓄積し、書き込み要求が発生したときにそのデータサイズと蓄積された対象アドレスとに基づいて、バンク衝突を回避可能なバンク候補を選択するので、アドレスの無駄な消費を防止するようにパケットデータの書き込みおよび読み出しを制御することが可能となる。
【図面の簡単な説明】
【００１７】
【図１】一般的な通信装置の構成およびＷｒｉｔｅ要求時における動作を説明するための図である。
【図２】一般的な通信装置のＲｅａｄ要求時における動作を説明するための図である。
【図３】汎用ＤＲＡＭをパケットバッファとして使用してメモリ空間を複数のバンクで構成したときの問題点を説明するための図である。
【図４】パケットバッファとして汎用ＤＲＡＭを使用してバンク衝突の問題を解決するための方法の一例を示す図である。
【図５】パケットバッファメモリ１４をバンク構成にしたときのメモリ空間を説明するための図である。
【図６】最小データサイズのデータのＲｅａｄ要求がある場合と、最大データサイズのデータのＷｒｉｔｅ要求がある場合とのバンクの占有時間を説明するための図である。
【図７】バンク０のデータのＲｅａｄ要求があった後に、バンク１のデータのＲｅａｄ要求がある場合のバンク衝突の回避を説明するための図である。
【図８】バンク衝突が複数回発生する場合を示す図である。
【図９】本発明の第１の実施の形態における通信装置の構成およびＲｅａｄ要求時における動作を説明するための図である。
【図１０】本発明の第１の実施の形態における通信装置のＷｒｉｔｅ要求時における動作を説明するための図である。
【図１１】ＢＡＮＫ回避部１５の内部構成を示すブロック図である。
【図１２】Ｂａｎｋ選抜ロジック３１の動作を説明するためのタイミングチャートである。
【図１３】Ｂａｎｋ選抜ロジック３１から出力されたバンク候補に空きアドレスがない場合を示す図である。
【図１４】本発明の第２の実施の形態におけるＢａｎｋ選抜ロジック３１の動作を説明するためのタイミングチャートである。
【図１５】本発明の第３の実施の形態におけるＢａｎｋ選抜ロジック３１の動作を説明するためのタイミングチャートである。
【発明を実施するための形態】
【００１８】
図１は、一般的な通信装置（パケットバッファシステム）の構成およびＷｒｉｔｅ要求時における動作を説明するための図である。この通信装置は、通信装置全体の制御を行なう制御部１１と、アドレス管理部１２と、リンクドリスト部１３と、パケットバッファメモリ１４とを含む。パケットバッファメモリ１４は、汎用ＤＲＡＭなどによって構成される。
【００１９】
まず、制御部１１がデータのＷｒｉｔｅ要求を受けると（１）、未使用の空きアドレスを管理するアドレス管理部１２に空きアドレスを要求する（２）。アドレス管理部１２は、空きアドレス要求を受けると、空きアドレスを検索して、空きアドレス（Ｘ）を返信する（３）。
【００２０】
制御部１１は、アドレス管理部１２から空きアドレス（Ｘ）を受けると、パケットバッファメモリ１４の空きアドレス（Ｘ）にデータを書き込み（４）、将来、そのデータが読み出されるのに備えて、リンクドリスト部１３に空きアドレス（Ｘ）を追加的に登録しておく（５）。
【００２１】
図２は、一般的な通信装置のＲｅａｄ要求時における動作を説明するための図である。まず、制御部１１がデータのＲｅａｄ要求を受けると（１）、過去にそのＲｅａｄ対象データを書き込んだときに登録したアドレスをリンクドリスト部１３に要求する（２）。
【００２２】
そして、制御部１１は、リンクドリスト部１３から対象アドレス（Ｘ）が返信されると（３）、対象アドレス（Ｘ）に対応するパケットバッファメモリ１４の領域からＲｅａｄ対象データを読み出す（４）。そのとき、制御部１１は、データ読み出しによってその対象アドレス（Ｘ）が開放されるので、以降の書き込みのために空きアドレスとしてアドレス管理部１２に返還する（５）。
【００２３】
パケットバッファシステムとして重要な点は、上述の図１〜図２に示す処理を繰り返すことで滞ることなく要求を処理してゆくことであり、その処理レートの高さがパケットバッファの性能を表わす大きな指標となっている。それは、処理が滞ることがネットワークを流れるパケットの破棄を意味するからである。
【００２４】
図３は、汎用ＤＲＡＭをパケットバッファとして使用してメモリ空間を複数のバンクで構成したときの問題点を説明するための図である。図３に示すように、汎用ＤＲＡＭを用いて８バンク構成とした場合、たとえばバンク０とバンク４とに同時にアクセスすることが可能となる。しかしながら、バンク０にアクセス中に、バンク０に同時にアクセスすることはできない。したがって、パケットバッファメモリとして汎用ＤＲＡＭを用いる場合、いかにしてＲｅａｄ要求があるバンクとＷｒｉｔｅ要求があるバンクとが衝突しないようにして、要求を滞りなく処理するかが重要となる。
【００２５】
図４は、パケットバッファとして汎用ＤＲＡＭを使用してバンク衝突の問題を解決するための方法の一例を示す図である。図４（ａ）は、アドレス管理部１２が空きアドレスをまとめて管理する場合を示している。この場合、制御部１１からの空きアドレス要求に対して空きアドレスを返信することになるが、Ｗｒｉｔｅ要求とＲｅａｄ要求との衝突を回避することはできない。
【００２６】
図４（ｂ）は、アドレス管理部１２が空きアドレスをバンク毎に管理する場合を示している。図２を用いて説明したように、パケットバッファメモリ１４からのデータ読み出しは、過去にリンクドリスト部１３に登録されたアドレスを使用しなければならない。
【００２７】
それに対して、パケットバッファメモリ１４へのデータ書き込みは、アドレス管理部１２にある空きアドレスをＷｒｉｔｅアドレスとして使用するため、アドレス管理部１２内で各バンク毎に空きアドレスを管理しておき、バンク衝突が発生したときにＲｅａｄ要求が入っていないバンクの空きアドレスをＷｒｉｔｅアドレスとして使用すれば、バンク衝突を回避することができる。
【００２８】
しかしながら、この方法は、別の問題点を生み出すことになる。図５〜図８は、パケットバッファメモリ１４をバンク構成にしたときに発生する問題点を説明するための図である。図５は、パケットバッファメモリ１４をバンク構成にしたときのメモリ空間を説明するための図である。
【００２９】
図５（ａ）に示すように、パケットバッファメモリ１４においては、バンクという概念とは別に、メモリ空間を、パケットバッファメモリ１４に格納する必要がある最小データサイズ以上のセグメントと呼ばれる単位で分割しており、その各セグメントに対してアドレスが割り付けられている。
【００３０】
また、図５（ｂ）に示すように、１セグメントを最小データサイズのデータが７個分だけ入るサイズとする。上述のように、Ｒｅａｄ要求およびＷｒｉｔｅ要求のそれぞれは、最小データサイズから、ある最大データサイズまでの範囲の、可変長のデータサイズのデータの処理を要求する。そのため、バンクの占有時間は、パケットバッファメモリ１４の入出力性能が固定であれば、その要求するデータサイズが相対的に小さければ短く、データサイズが大きければ長くなる。
【００３１】
図６は、最小データサイズのデータのＲｅａｄ要求がある場合と、最大データサイズのデータのＷｒｉｔｅ要求がある場合とのバンクの占有時間を説明するための図である。図６（ａ）に示すように、バンク０（Ｂ０）から最小データサイズのデータを読み出すときに、そのバンク０を占有している時間はＴとなる。また、バンク１（Ｂ１）に最大データサイズのデータを書き込むときに、そのバンク１を占有している時間は７×Ｔとなる。
【００３２】
図６（ｂ）に示すように、パケットバッファメモリ１４が８バンク構成の場合には、バンク０からのデータ読み出しと、バンク１へのデータ書き込みとを同時に行うことができる。
【００３３】
図７は、バンク０のデータのＲｅａｄ要求があった後に、バンク１のデータのＲｅａｄ要求がある場合のバンク衝突の回避を説明するための図である。Ｒｅａｄ要求およびＷｒｉｔｅ要求はランダムに入力されるので、図７（ａ）に示すように、最初のバンク０に対するＲｅａｄ要求がＴ時間で完了した後、次のＲｅａｄ要求が、たとえばデータ書き込み中のバンク１に対して行なわれる場合が考えられる。
【００３４】
このとき、一旦バンク１へのデータ書き込みを中断して、バンク１からのデータ読み出しのためにバンク１を開放すると共に、アドレス管理部１２から新たに別のバンクの空きアドレスを取得して残りのデータを書き込む必要がある（図７（ａ）においては、バンク２にデータが書き込まれる。）。このような場合には、図７（ｂ）に示すように、本来１アドレスに書き込むことが可能なサイズのデータを書き込むのに、２アドレスが必要となってしまう。
【００３５】
図８は、バンク衝突が複数回発生する場合を示す図である。図８（ａ）に示すように、最初のバンク０に対するＲｅａｄ要求がＴ時間で完了した後、次のＲｅａｄ要求がデータ書き込み中のバンク１に対して行なわれると、データ書き込みがバンク２に変更される。さらに、バンク１からのデータ読み出しが完了した後、バンク２に対するＲｅａｄ要求があると、データ書き込みがバンク３に変更される。そして、さらにその後、バンク３に対するＲｅａｄ要求があると、データ書き込みがバンク４に変更される。
【００３６】
このように、バンク衝突が繰り返されると、図８（ｂ）に示すように、本来１アドレスに書き込むことが可能なサイズのデータを書き込むのに、４つのアドレスが必要となってしまう。すなわち、いくつ無駄にアドレスが消費されるかは、場合によって異なることになる。
【００３７】
空きアドレスを管理するアドレス管理部１２やリンクドリスト部１３にもアドレスを記憶するといった機能を有しているため、メモリ構造を有している。そのため、アドレスが無駄に消費されると、その部分に多くのコストを支払う結果となってしまう。
【００３８】
本発明の実施の形態における通信装置は、このようなバンク衝突によって発生する無駄なアドレスの消費を防止するものであり、以下にその詳細を説明する。
【００３９】
（第１の実施の形態）
図９は、本発明の第１の実施の形態における通信装置の構成およびＲｅａｄ要求時における動作を説明するための図である。この通信装置は、通信装置全体の制御を行なう制御部１１と、未使用の空きアドレスを管理するアドレス管理部１２と、データを書き込んだときにそのアドレスを登録するリンクドリスト部１３と、パケットバッファメモリ１４と、ＢＡＮＫ回避部１５とを含む。
【００４０】
まず、制御部１１が図示しないネットワークプロセッサなどからデータのＲｅａｄ要求を受けると（１）、過去にそのＲｅａｄ対象データを書き込んだときに登録したアドレスをリンクドリスト部１３に要求する（２）。
【００４１】
そして、制御部１１は、リンクドリスト部１３から対象アドレス（Ｘ）が返信されると（３）、対象アドレス（Ｘ）をＢＡＮＫ回避部１５に出力する。なお、この対象アドレス（Ｘ）にはバンクに関する情報も含まれるものとする。
【００４２】
ＢＡＮＫ回避部１５は、制御部１１から入力された対象アドレス（Ｘ）を一定期間蓄積した後（４）、対象アドレス（Ｘ）に対応するパケットバッファメモリ１４の領域からＲｅａｄ対象データを読み出す（５）。
【００４３】
そして、ＢＡＮＫ回避部１５は、データ読み出しによってその対象アドレス（Ｘ）が開放されるので、以降の書き込みのために空きアドレスとしてアドレス管理部１２に返還する（６）。
【００４４】
図１０は、本発明の第１の実施の形態における通信装置のＷｒｉｔｅ要求時における動作を説明するための図である。まず、制御部１１が図示しないネットワークプロセッサなどからデータのＷｒｉｔｅ要求を受ける（１）。このとき、制御部１１は、Ｗｒｉｔｅ要求以外に、データサイズ情報とそれに対応するデータとを入力する。
【００４５】
そして、制御部１１は、データサイズ情報をＢＡＮＫ回避部１５に出力する。ＢＡＮＫ回避部１５は、制御部１１からデータサイズ情報を受けると、蓄積されているＲｅａｄアドレス情報とデータサイズ情報とから衝突の回避が可能なバンクを選択し（２）、空きアドレス要求と共にそのバンク候補をアドレス管理部１２に出力する（３）。
【００４６】
アドレス管理部１２は、ＢＡＮＫ回避部１５から空きアドレス要求を受けると、バンク候補の中から最適なバンクの空きアドレス（Ｘ）を選択して、空きアドレス（Ｘ）をＢＡＮＫ回避部１５に返信する（４）。
【００４７】
ＢＡＮＫ回避部１５は、アドレス管理部１２から空きアドレス（Ｘ）を受けると、パケットバッファメモリ１４の空きアドレス（Ｘ）にデータを書き込み（５）、将来、そのデータが読み出されるのに備えて、リンクドリスト部１３に空きアドレス（Ｘ）を追加的に登録しておく（６）。
【００４８】
図１１は、ＢＡＮＫ回避部１５の内部構成を示すブロック図である。このＢＡＮＫ回避部１５は、フリップフロップ（以下、ＦＦと呼ぶ。）２１〜３０と、ＢＡＮＫ選抜ロジック３１とを含む。
【００４９】
ＦＦ２１〜２８は、制御部１１から受けたＲｅａｄ対象アドレスを、パケットバッファメモリ１４が最小データサイズを処理できる一定時間間隔に同期して順次シフトする。ＦＦ２１〜２７の出力を、それぞれＳｔａｇｅ６〜０とする。ＦＦ２８の出力は、Ｒｅａｄ対象アドレスとしてパケットバッファメモリ１４に入力されると共に、対象アドレス（Ｘ）としてアドレス管理部１２に返還される。なお、図１１においては、Ｒｅａｄ対象アドレスをシフトするＦＦの段数を、バンク数と同じ８個としているが、これに限られるものではなく、バンク数よりも少なくてもよいし、バンク数よりも多くてもよい。要するに、Ｒｅａｄ対象アドレスを一定期間蓄積できればよい。
【００５０】
ＦＦ２９は、制御部１１から受けたＷｒｉｔｅ要求のデータサイズ情報を保持してＢａｎｋ選抜ロジック３１に出力する。また、ＦＦ３０は、アドレス管理部１２から受けた空きアドレス（Ｘ）を保持してパケットバッファメモリ１４にＷｒｉｔｅアクセスアドレスとして出力する。
【００５１】
図１２は、Ｂａｎｋ選抜ロジック３１の動作を説明するためのタイミングチャートである。Ｔ０〜Ｔ７において、ＦＦ２１〜ＦＦ２７は、Ｒｅａｄ要求があったバンクの情報を順次シフトする。図１２においては、Ｂ０，Ｂ１，Ｂ４，Ｂ２，Ｂ１，Ｂ２，Ｂ３の順にＲｅａｄ要求があるものとする。なお、図１２においては、最小データサイズのＲｅａｄ要求が連続して発生した場合を示しているが、データサイズが最小データサイズよりも大きい場合には、同じバンクに対して連続したＲｅａｄ要求が発生することになる。
【００５２】
Ｔ６において、Ｗｒｉｔｅ要求を受けると、Ｂａｎｋ選抜ロジック３１は、ＦＦ２９からＷｒｉｔｅデータサイズ情報“４”を受ける。そして、Ｔ７において、Ｗｒｉｔｅデータサイズ情報の“４”に対応して、Ｂａｎｋ選抜ロジック３１は、Ｓｔａｇｅ０〜３の４つのバンク情報（Ｂ０，Ｂ１，Ｂ４，Ｂ２）以外の４つバンク（Ｂ３，Ｂ５，Ｂ６，Ｂ７）を、バンク候補として選択する。そして、アドレス管理部１２に対して空きアドレス要求を出力すると共に、そのバンク候補を出力する。
【００５３】
Ｔ８において、ＢＡＮＫ回避部１５は、アドレス管理部１２から受けたバンク３の空きアドレスに対するデータ書き込みを開始する。たとえば、アドレス管理部１２は、空きアドレスが最も多いバンクを選択するようにしてもよいし、それ以外の方法でバンクを選択するようにしてもよい。
【００５４】
また、Ｔ８において、ＢＡＮＫ回避部１５に最初にＲｅａｄ要求があったバンク０からのデータ読み出しが行なわれ、それ以降のＲｅａｄ要求が順次処理される。
【００５５】
同様にして、Ｔ１１において、２番目のＷｒｉｔｅ要求のデータサイズ情報の“７”に対応して、Ｂａｎｋ選抜ロジック３１は、Ｓｔａｇｅ０〜６の７つのバンク情報（Ｂ１，Ｂ２，Ｂ３，Ｂ７，Ｂ６，Ｂ４，Ｂ０）以外のバンク５をバンク候補として選択する。そして、アドレス管理部１２に対して空きアドレス要求を出力すると共に、そのバンク候補を出力する。
【００５６】
Ｔ１２において、Ｂａｎｋ選抜部３１は、アドレス管理部１２から受けたバンク５の空きアドレスに対するデータ書き込みを開始する。
【００５７】
同様にして、Ｔ１８において、３番目のＷｒｉｔｅ要求のデータサイズ情報の“１”に対応して、Ｂａｎｋ選抜ロジック３１は、Ｓｔａｇｅ０のバンク情報（Ｂ３）以外のバンクをバンク候補として選択する。そして、アドレス管理部１２に対して空きアドレス要求を出力すると共に、そのバンク候補を出力する。
【００５８】
Ｔ１９において、Ｂａｎｋ選抜部３１は、アドレス管理部１２から受けたバンク２の空きアドレスに対するデータ書き込みを開始する。
【００５９】
以上説明したように、本実施の形態における通信装置によれば、ＢＡＮＫ回避部１５がＲｅａｄ対象アドレスを一定時間蓄積し、Ｗｒｉｔｅ要求のデータサイズ情報に応じた段数のＳｔａｇｅ情報に基づいてデータを書き込むバンクを選択するようにしたので、バンク衝突を回避することが可能となる。
【００６０】
また、パケットデータを同じセグメントに書き込むことができるので、アドレスを無駄に消費することを防止でき、早期のアドレスの枯渇を防止することが可能となる。
【００６１】
また、書き込むデータサイズが小さいほど、データを書き込むバンクの候補数が多くなるため、アドレス管理部１２によるデータを書き込むバンクの選択に柔軟性を持たせることが可能となる。
【００６２】
（第２の実施の形態）
本発明の第２の実施の形態における通信装置は、第１の実施の形態において説明した通信装置の全体のアドレスが枯渇する最終局面に関するものであるが、通信装置の構成およびＢＡＮＫ回避部１５の内部構成は、図９〜図１１に示す第１の実施の形態と同様であり、図１１に示すＢａｎｋ選抜ロジック３１にｄｉｓａｂｌｅ信号が入力される点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【００６３】
図１３は、Ｂａｎｋ選抜ロジック３１から出力されたバンク候補に空きアドレスがない場合を示す図である。アドレスが枯渇する最終局面においては、必ず最初に空きアドレスが枯渇するバンクが発生することになる。図１３は、アドレス管理部１２がＢａｎｋ選抜ロジック３１からバンク候補としてバンク５のみを受けたときに、最初にバンク５の空きアドレスが枯渇しており、他のバンクには空きアドレスがある場合を示している。
【００６４】
このとき、アドレス管理部１２は、ｄｉｓａｂｌｅ信号をＢａｎｋ選抜ロジック３１に出力し、Ｂａｎｋ選抜ロジック３１の機能を無効とする。
【００６５】
図１４は、本発明の第２の実施の形態におけるＢａｎｋ選抜ロジック３１の動作を説明するためのタイミングチャートである。Ｔ９において、あるバンクの空きアドレスが枯渇して、アドレス管理部１２からのｄｉｓａｂｌｅ信号がＢａｎｋ選抜ロジック３１に入力される。
【００６６】
Ｔ１０において、Ｂａｎｋ選抜ロジック３１がＷｒｉｔｅ要求およびデータサイズ情報“７”を受けるが、ｄｉｓａｂｌｅ信号が入力されているためこのデータサイズ情報を無効とし、Ｓｔａｇｅ０のバンク情報のみを参照する。そして、そのバンク以外のバンクをバンク候補として選択する。そして、アドレス管理部１２に対して空きアドレス要求を出力すると共に、そのバンク候補を出力する。
【００６７】
Ｔ１２においては、バンク１以外のバンク３の空きアドレスに対してデータ書き込みが行なわれる。また、Ｔ１３においては、バンク２以外のバンク４の空きアドレスに対してデータ書き込みが行なわれる。Ｔ１４〜Ｔ１８においても同様の処理が行なわれる。
【００６８】
以上説明したように、本実施の形態における通信装置によれば、ｄｉｓａｂｌｅ信号が入力されると、Ｂａｎｋ選抜ロジック３１がＳｔａｇｅ０のバンク情報のみを参照して、バンク候補を選択するようにしたので、アドレスが無駄に消費されるといった問題が復活するものの、Ｒｅａｄするバンク以外のバンクに空きアドレスがある限りＷｒｉｔｅ要求を継続して処理することが可能となる。
【００６９】
（第３の実施の形態）
第１の実施の形態においては、図示しないネットワークプロセッサなどからＷｒｉｔｅ要求と共にデータサイズ情報が入力される場合について説明した。本発明の第３の実施の形態における通信装置においては、ＢＡＮＫ回避部１５内においてデータサイズをカウントし、それに応じてバンク候補を選択するものである。
【００７０】
なお、本実施の形態における通信装置の構成およびＢＡＮＫ回避部１５の内部構成は、図９〜図１１に示す第１の実施の形態と同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【００７１】
図１５は、本発明の第３の実施の形態におけるＢａｎｋ選抜ロジック３１の動作を説明するためのタイミングチャートである。Ｔ６〜Ｔ９において、Ｗｒｉｔｅ要求と共にＷｒｉｔｅ対象データが入力される。また、Ｔ９において、Ｗｒｉｔｅデータサイズ情報として“４”が計算される。
【００７２】
Ｔ１３において、Ｗｒｉｔｅデータサイズ情報の“４”に対応して、Ｂａｎｋ選抜ロジック３１は、Ｓｔａｇｅ０〜３の４つのバンク情報（Ｂ３，Ｂ７，Ｂ６，Ｂ４）以外の４つバンク（Ｂ０，Ｂ１，Ｂ２，Ｂ５）を、バンク候補として選択する。そして、アドレス管理部１２に対して空きアドレス要求を出力すると共に、そのバンク候補を出力する。
【００７３】
Ｔ１４において、ＢＡＮＫ回避部１５は、アドレス管理部１２から受けたバンク２の空きアドレスに対するデータ書き込みを開始する。
【００７４】
同様にして、Ｔ１７において、２番目のＷｒｉｔｅ要求のデータサイズ情報の“７”に対応して、Ｂａｎｋ選抜ロジック３１は、Ｓｔａｇｅ０〜６の７つのバンク情報（Ｂ０，Ｂ３，Ｂ５，Ｂ２，Ｂ１，Ｂ７，Ｂ６）以外のバンク４をバンク候補として選択する。そして、アドレス管理部１２に対して空きアドレス要求を出力すると共に、そのバンク候補を出力する。
【００７５】
Ｔ１８において、Ｂａｎｋ選抜部３１は、アドレス管理部１２から受けたバンク４の空きアドレスに対するデータ書き込みを開始する。
【００７６】
同様にして、Ｔ２４において、３番目のＷｒｉｔｅ要求のデータサイズ情報の“１”に対応して、Ｂａｎｋ選抜ロジック３１は、Ｓｔａｇｅ０のバンク情報（Ｂ４）以外のバンクをバンク候補として選択する。そして、アドレス管理部１２に対して空きアドレス要求を出力すると共に、そのバンク候補を出力する。
【００７７】
Ｔ２５において、Ｂａｎｋ選抜部３１は、アドレス管理部１２から受けたバンク２の空きアドレスに対するデータ書き込みを開始する。
【００７８】
このように、衝突回避可能なバンク候補の選択タイミング、Ｗｒｉｔｅレーテンシを調整することで、データサイズ情報がどの位置に入ってもバンク衝突を回避することができる。具体的には、第１の実施の形態において説明したタイミングよりも、さらに６ステージ分だけ処理を遅らすことで対応可能となる。
【００７９】
以上説明したように、本実施の形態における通信装置によれば、ＢＡＮＫ回避部１５内でＷｒｉｔｅデータサイズ情報を生成し、そのデータサイズ情報に応じた段数のＳｔａｇｅ情報に基づいてデータを書き込むバンクを選択するようにしたので、第１の実施の形態において説明した効果と同様の効果を奏することが可能となる。
【００８０】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００８１】
１１  制御部、１２  アドレス管理部、１３  リンクドリスト部、１４  パケットバッファメモリ、１５  ＢＡＮＫ回避部、２１〜３０  ＦＦ、３１  ＢＡＮＫ選抜ロジック。
【図１】
0005499346.tif 000002
【図２】
0005499346.tif 000003
【図３】
0005499346.tif 000004
【図４】
0005499346.tif 000005
【図５】
0005499346.tif 000006
【図６】
0005499346.tif 000007
【図７】
0005499346.tif 000008
【図８】
0005499346.tif 000009
【図９】
0005499346.tif 000010
【図１０】
0005499346.tif 000011
【図１１】
0005499346.tif 000012
【図１２】
0005499346.tif 000013
【図１３】
0005499346.tif 000014
【図１４】
0005499346.tif 000015
【図１５】
0005499346.tif 000016