(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024087323
(43)【公開日】2024-07-01
(54)【発明の名称】バッファリング装置、方法、及びプログラム
(51)【国際特許分類】
H04L 12/28 20060101AFI20240624BHJP
【FI】
H04L12/28 200D
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2022202083
(22)【出願日】2022-12-19
(71)【出願人】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】工藤 幹太
(72)【発明者】
【氏名】佐野 啓一郎
【テーマコード(参考)】
5K033
【Fターム(参考)】
5K033CB17
5K033DB13
(57)【要約】
【課題】データユニットを保持するバッファの容量を低減できるバッファリング装置を提供する。
【解決手段】バッファリング装置10にて保持部11は、複数のグルーピング基準のそれぞれについて、書き込みの番号の値、及び、読み出しの番号の値を保持する。グルーピング基準は、データユニットの優先度を1つのグルーピングパラメータとして含む。保持部12は、複数の送信命令を保持する。この複数の送信命令は、複数のグルーピング基準のいずれかに対応する。制御部13は、書き込み対象の送信命令に対応するグルーピング基準についての書き込みの番号の値に基づいて、保持部12に書き込み対象の送信命令を保持させる「保持アドレス」を形成する。制御部13は、読み出し対象の送信命令に対応するグルーピング基準についての読み出しの番号の値情報に基づいて、読み出し対象の送信命令が保持されている保持部12の「出力アドレス」を形成する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
データユニットのバッファリング装置であって、
各グルーピング基準が前記データユニットの優先度を1つのグルーピングパラメータとして含む、複数のグルーピング基準のそれぞれについて、書き込みの番号に関する情報及び読み出しの番号に関する情報を保持する第1保持部と、
各データユニットが前記複数のグルーピング基準のいずれかに対応する少なくとも1つのデータユニットを保持する第2保持部と、
書き込み対象のデータユニットに対応するグルーピング基準についての前記書き込みの番号に関する情報に基づいて、前記第2保持部に前記書き込み対象のデータユニットを保持させる保持アドレスを形成し、読み出し対象のデータユニットに対応するグルーピング基準についての読み出しの番号に関する情報に基づいて、前記読み出し対象のデータユニットが保持されている前記第2保持部の出力アドレスを形成する、制御部と、
を具備する、バッファリング装置。
【請求項2】
各データユニットが保持されている前記第2保持部のアドレスと各データユニットの優先度及び番号の値とを対応づける対応関係情報を保持する第3保持部を具備し、
前記制御部は、
前記書き込み対象のデータユニットを前記第2保持部に保持させるときに、
前記書き込み対象のデータユニットについての、前記第2保持部のアドレス、優先度、及び、番号の値を対応づけたエントリを、前記対応関係情報に追加し、
前記第1保持部の前記書き込み対象のデータユニットについての優先度に対応する書き込みの番号に関する情報をインクリメントし、
前記読み出し対象のデータユニットを前記第2保持部に出力させるときに、
前記読み出し対象のデータユニットについての優先度及び番号の値に対応する前記対応関係情報のエントリにおける前記第2保持部のアドレスを、前記出力アドレスとして特定し、
前記第1保持部の前記読み出し対象のデータユニットについての優先度に対応する読み出しの番号に関する情報をインクリメントする、
請求項1記載のバッファリング装置。
【請求項3】
前記グルーピング基準は、前記データユニットの優先度及び宛先ポートを含み、
前記バッファリング装置は、各データユニットが保持されている前記第2保持部のアドレスと各データユニットについての優先度、宛先ポート、及び番号の値とを対応づける対応関係情報を保持する第3保持部を具備し、
前記制御部は、
前記書き込み対象のデータユニットを前記第2保持部に保持させるときに、
前記書き込み対象のデータユニットについての、前記第2保持部のアドレス、優先度、宛先ポート、及び、番号の値を対応づけたエントリを、前記対応関係情報に追加し、
前記第1保持部の前記書き込み対象のデータユニットについての優先度及び宛先ポートに対応する書き込みの番号に関する情報をインクリメントし、
前記読み出し対象のデータユニットを前記第2保持部に出力させるときに、
前記読み出し対象のデータユニットについての優先度、宛先ポート、及び番号の値に対応する前記対応関係情報のエントリにおける前記第2保持部のアドレスを、前記出力アドレスとして特定し、
前記第1保持部の前記読み出し対象のデータユニットについての優先度及び宛先ポートに対応する読み出しの番号に関する情報をインクリメントする、
請求項1記載のバッファリング装置。
【請求項4】
前記制御部は、
前記書き込み対象のデータユニットを前記第2保持部に保持させるときに、
前記書き込み対象のデータユニットについての、優先度、及び番号の値に基づいて、ハッシュ値を、前記保持アドレスとして算出し、
前記第1保持部の前記書き込み対象のデータユニットについての優先度及び宛先ポートに対応する書き込みの番号に関する情報をインクリメントし、
前記読み出し対象のデータユニットを前記第2保持部に出力させるときに、
前記読み出し対象のデータユニットについての、優先度、及び番号の値に基づいて、ハッシュ値を、前記出力アドレスとして算出し、
前記第1保持部の前記読み出し対象のデータユニットについての優先度及び宛先ポートに対応する読み出しの番号に関する情報をインクリメントする、
請求項1記載のバッファリング装置。
【請求項5】
前記グルーピング基準は、前記データユニットの優先度及び宛先ポートを含み、
前記制御部は、
前記書き込み対象のデータユニットを前記第2保持部に保持させるときに、
前記書き込み対象のデータユニットについての、優先度、宛先ポート、及び番号の値に基づいて、ハッシュ値を、前記保持アドレスとして算出し、
前記第1保持部の前記書き込み対象のデータユニットについての優先度及び宛先ポートに対応する書き込みの番号に関する情報をインクリメントし、
前記読み出し対象のデータユニットを前記第2保持部に出力させるときに、
前記読み出し対象のデータユニットについての、優先度、宛先ポート、及び番号の値に基づいて、ハッシュ値を、前記出力アドレスとして算出し、
前記第1保持部の前記読み出し対象のデータユニットについての優先度及び宛先ポートに対応する読み出しの番号に関する情報をインクリメントする、
請求項1記載のバッファリング装置。
【請求項6】
各エントリが、前記第2保持部のアドレスと、前記第2保持部のアドレスにデータユニットが保持されているか又は予約が入っているか否かを示す占有情報と、前記第2保持部のアドレスに保持されるデータユニットの優先度について該データユニットの次にデータユニットが保持される前記第2保持部のアドレスである次アドレスとを対応づけた、少なくとも1つのエントリを含む対応関係情報を保持する第3保持部を具備し、
前記制御部は、
前記書き込み対象のデータユニットを前記第2保持部に保持させるときに、
前記書き込み対象のデータユニットの優先度に対応する前記書き込みの番号に関する情報に基づく前記第2保持部のアドレスに、前記書き込み対象のデータユニットを保持させ、
いずれのデータユニットも保持しておらず且つ予約もされていない前記第2保持部の未使用アドレスを前記対応関係情報から取得し、
前記書き込み対象のデータユニットが保持された前記第2保持部のアドレスに対応する前記対応関係情報のエントリにおける前記次アドレスに、前記取得された未使用アドレスを入力し、
前記取得された未使用アドレスに対応する前記対応関係情報のエントリにおける前記占有情報を、データユニットが保持されているか又は予約が入っていることを示す値に更新し、
前記第1保持部の前記読み出し対象のデータユニットについての優先度に対応する読み出しの番号に関する情報を、前記取得された未使用アドレスによって更新し、
前記読み出し対象のデータユニットを前記第2保持部に出力させるときに、
前記第2保持部に、前記読み出しの番号に関する情報に基づく前記第2保持部のアドレスから前記読み出し対象のデータユニットを出力させ、
前記出力された読み出し対象のデータユニットの前記第2保持部のアドレスに対応する前記対応関係情報のエントリにおける前記次アドレスによって、前記読み出し対象のデータユニットの優先度に対応する前記読み出しの番号に関する情報を更新する、
請求項1記載のバッファリング装置。
【請求項7】
前記グルーピング基準は、前記データユニットの優先度及び宛先ポートを含み、
前記バッファリング装置は、各エントリが、前記第2保持部のアドレスと、前記第2保持部のアドレスにデータユニットが保持されているか又は予約が入っているか否かを示す占有情報と、前記第2保持部のアドレスに保持されるデータユニットの優先度について該データユニットの次にデータユニットが保持される前記第2保持部のアドレスである次アドレスとを対応づけた、少なくとも1つのエントリを含む対応関係情報を保持する第3保持部を具備し、
前記制御部は、
前記書き込み対象のデータユニットを前記第2保持部に保持させるときに、
前記書き込み対象のデータユニットの優先度及び宛先ポートに対応する前記書き込みの番号に関する情報に基づく前記第2保持部のアドレスに、前記書き込み対象のデータユニットを保持させ、
いずれのデータユニットも保持しておらず且つ予約もされていない前記第2保持部の未使用アドレスを前記対応関係情報から取得し、
前記書き込み対象のデータユニットが保持された前記第2保持部のアドレスに対応する前記対応関係情報のエントリにおける前記次アドレスに、前記取得された未使用アドレスを入力し、
前記取得された未使用アドレスに対応する前記対応関係情報のエントリにおける前記占有情報を、データユニットが保持されているか又は予約が入っていることを示す値に更新し、
前記第1保持部の前記読み出し対象のデータユニットについての優先度及び宛先ポートに対応する読み出しの番号に関する情報を、前記取得された未使用アドレスによって更新し、
前記読み出し対象のデータユニットを前記第2保持部に出力させるときに、
前記第2保持部に、前記読み出し対象のデータユニットの優先度及び宛先ポートに対応する前記読み出しの番号に関する情報に基づく前記第2保持部のアドレスから前記読み出し対象のデータユニットを出力させ、
前記出力された読み出し対象のデータユニットの前記第2保持部のアドレスに対応する前記対応関係情報のエントリにおける前記次アドレスによって、前記読み出し対象のデータユニットの優先度及び宛先ポートに対応する前記読み出しの番号に関する情報を更新する、
請求項1記載のバッファリング装置。
【請求項8】
複数の先入先出部を具備し、
各先入先出部は、データユニットの優先度に対応し、
前記制御部は、
前記書き込み対象のデータユニットを前記第2保持部に保持させるときに、
前記書き込み対象のデータユニットについての優先度に対応する先入先出部の、前記書き込みの番号に関する情報が示す位置に、前記書き込み対象のデータユニットが保持される前記第2保持部のアドレスを保持させ、
前記第1保持部の前記書き込み対象のデータユニットについての優先度に対応する書き込みの番号に関する情報をインクリメントし、
前記読み出し対象のデータユニットを前記第2保持部に出力させるときに、
前記読み出し対象のデータユニットについての優先度に対応する先入先出部の、前記読み出しの番号に関する情報が示す位置に保持されている前記第2保持部のアドレスから、前記第2保持部に、前記読み出し対象のデータユニットを出力させ、
前記第1保持部の前記読み出し対象のデータユニットについての優先度に対応する読み出しの番号に関する情報をインクリメントする、
請求項1記載のバッファリング装置。
【請求項9】
複数の先入先出部を具備し、
各先入先出部は、データユニットの優先度及び宛先ポートに対応し、
前記グルーピング基準は、前記データユニットの優先度及び宛先ポートを含み、
前記制御部は、
前記書き込み対象のデータユニットを前記第2保持部に保持させるときに、
前記書き込み対象のデータユニットについての優先度及び宛先ポートに対応する先入先出部の、前記書き込みの番号に関する情報が示す位置に、前記書き込み対象のデータユニットが保持される前記第2保持部のアドレスを保持させ、
前記第1保持部の前記書き込み対象のデータユニットについての優先度及び宛先ポートに対応する書き込みの番号に関する情報をインクリメントし、
前記読み出し対象のデータユニットを前記第2保持部に出力させるときに、
前記読み出し対象のデータユニットについての優先度及び宛先ポートに対応する先入先出部の、前記読み出しの番号に関する情報が示す位置に保持されている前記第2保持部のアドレスから、前記第2保持部に、前記読み出し対象のデータユニットを出力させ、
前記第1保持部の前記読み出し対象のデータユニットについての優先度及び宛先ポートに対応する読み出しの番号に関する情報をインクリメントする、
請求項1記載のバッファリング装置。
【請求項10】
前記第2保持部は、各エントリが、データユニットと、前記データユニットの優先度及び番号の値とを対応づける、少なくとも1つのエントリを含むテーブルを保持し、
前記制御部は、
前記書き込み対象のデータユニットを前記テーブルに保持させるときに、
前記書き込み対象のデータユニットと、前記書き込み対象のデータユニットについての優先度及び番号の値とを対応づけたエントリを、前記テーブルに追加し、
前記第1保持部の前記書き込み対象のデータユニットについての優先度に対応する書き込みの番号に関する情報をインクリメントし、
前記読み出し対象のデータユニットを前記第2保持部に出力させるときに、
前記テーブルにおいて前記読み出し対象のデータユニットについての優先度及び番号の値と対応づけられたデータユニットを、前記第2保持部に出力させ、
前記第1保持部の前記書き込み対象のデータユニットについての優先度に対応する読み出しの番号に関する情報をインクリメントする、
請求項1記載のバッファリング装置。
【請求項11】
前記グルーピング基準は、前記データユニットの優先度及び宛先ポートを含み、
前記第2保持部は、各エントリが、データユニットと、前記データユニットの優先度、宛先ポート、及び番号の値とを対応づける、少なくとも1つのエントリを含むテーブルを保持し、
前記制御部は、
前記書き込み対象のデータユニットを前記テーブルに保持させるときに、
前記書き込み対象のデータユニットと、前記書き込み対象のデータユニットについての優先度、宛先ポート、及び番号の値とを対応づけたエントリを、前記テーブルに追加し、
前記第1保持部の前記書き込み対象のデータユニットについての優先度及び宛先ポートに対応する書き込みの番号に関する情報をインクリメントし、
前記読み出し対象のデータユニットを前記第2保持部に出力させるときに、
前記テーブルにおいて前記読み出し対象のデータユニットについての優先度、宛先ポート、及び番号の値と対応づけられたデータユニットを、前記第2保持部に出力させ、
前記第1保持部の前記書き込み対象のデータユニットについての優先度及び宛先ポートに対応する読み出しの番号に関する情報をインクリメントする、
請求項1記載のバッファリング装置。
【請求項12】
各エントリが、前記第2保持部のアドレスと、前記第2保持部のアドレスにデータユニットが保持されているか否かを示す占有情報と、前記第2保持部のアドレスに保持されるデータユニットの優先度及び番号の値とを対応づける、少なくとも1つのエントリを含む対応関係情報を保持する第3保持部を具備し、
前記制御部は、
前記書き込み対象のデータユニットを前記第2保持部に保持させるときに、
前記対応関係情報から、データユニットの不保持を示す前記占有情報に対応づけられている前記第2保持部の1つのアドレスを取得し、
前記第2保持部に、前記書き込み対象のデータユニットを前記取得した1つのアドレスに保持させ、
前記取得した1つのアドレスに対応するエントリに、前記書き込み対象のデータユニットについての優先度及び番号の値を入力し、
前記取得した1つのアドレスに対応するエントリの前記占有情報を、データユニットの保持を示す値に更新し、
前記第1保持部の前記書き込み対象のデータユニットについての優先度に対応する書き込みの番号に関する情報をインクリメントし、
前記読み出し対象のデータユニットを前記第2保持部に出力させるときに、
前記読み出し対象のデータユニットについての優先度及び番号の値に対応する前記対応関係情報のエントリにおける前記第2保持部のアドレスから、前記第2保持部に、前記読み出し対象のデータユニットを出力させ、
前記読み出し対象のデータユニットについての優先度及び番号の値に対応する前記対応関係情報のエントリの前記占有情報をデータユニットの不保持を示す値に更新し、
前記第1保持部の前記読み出し対象のデータユニットについての優先度及び宛先ポートに対応する読み出しの番号に関する情報をインクリメントする、
請求項1記載のバッファリング装置。
【請求項13】
前記第3保持部は、CAM(Content Addressable Memory)によって実現される、
請求項2記載のバッファリング装置。
【請求項14】
前記第2保持部は、CAMによって実現される、
請求項10記載のバッファリング装置。
【請求項15】
データユニットのバッファリング装置によって実行される方法であって、
各グルーピング基準が前記データユニットの優先度を1つのグルーピングパラメータとして含む、複数のグルーピング基準のそれぞれについて、書き込みの番号に関する情報及び読み出しの番号に関する情報を、第1保持部に保持することと、
各データユニットが前記複数のグルーピング基準のいずれかに対応する少なくとも1つのデータユニットを、第2保持部に保持すると、
書き込み対象のデータユニットに対応するグルーピング基準についての前記書き込みの番号に関する情報に基づいて、前記第2保持部に前記書き込み対象のデータユニットを保持させる保持アドレスを形成することと、
読み出し対象のデータユニットに対応するグルーピング基準についての読み出しの番号に関する情報に基づいて、前記読み出し対象のデータユニットが保持されている前記第2保持部の出力アドレスを形成することと、
を含む方法。
【請求項16】
前記方法は、
各データユニットが保持されている前記第2保持部のアドレスと各データユニットの優先度及び番号の値とを対応づける対応関係情報を、第3保持部に保持することと、
前記書き込み対象のデータユニットを前記第2保持部に保持させるときに、前記書き込み対象のデータユニットについての、前記第2保持部のアドレス、優先度、及び、番号の値を対応づけたエントリを、前記対応関係情報に追加することと、
前記第1保持部の前記書き込み対象のデータユニットについての優先度に対応する書き込みの番号に関する情報をインクリメントすることと、
前記読み出し対象のデータユニットを前記第2保持部に出力させるときに、前記読み出し対象のデータユニットについての優先度及び番号の値に対応する前記対応関係情報のエントリにおける前記第2保持部のアドレスを、前記出力アドレスとして特定することと、
前記第1保持部の前記読み出し対象のデータユニットについての優先度に対応する読み出しの番号に関する情報をインクリメントすることと、
を含む、請求項15記載の方法。
【請求項17】
前記グルーピング基準は、前記データユニットの優先度及び宛先ポートを含み、
前記方法は、
各データユニットが保持されている前記第2保持部のアドレスと各データユニットについての優先度、宛先ポート、及び番号の値とを対応づける対応関係情報を、第3保持部に保持することと、
前記書き込み対象のデータユニットを前記第2保持部に保持させるときに、前記書き込み対象のデータユニットについての、前記第2保持部のアドレス、優先度、宛先ポート、及び、番号の値を対応づけたエントリを、前記対応関係情報に追加することと、
前記第1保持部の前記書き込み対象のデータユニットについての優先度及び宛先ポートに対応する書き込みの番号に関する情報をインクリメントすることと、
前記読み出し対象のデータユニットを前記第2保持部に出力させるときに、前記読み出し対象のデータユニットについての優先度、宛先ポート、及び番号の値に対応する前記対応関係情報のエントリにおける前記第2保持部のアドレスを、前記出力アドレスとして特定することと、
前記第1保持部の前記読み出し対象のデータユニットについての優先度及び宛先ポートに対応する読み出しの番号に関する情報をインクリメントすることと、
を含む、請求項15記載の方法。
【請求項18】
データユニットのバッファリング装置に、
各グルーピング基準が前記データユニットの優先度を1つのグルーピングパラメータとして含む、複数のグルーピング基準のそれぞれについて、書き込みの番号に関する情報及び読み出しの番号に関する情報を、第1保持部に保持することと、
各データユニットが前記複数のグルーピング基準のいずれかに対応する少なくとも1つのデータユニットを、第2保持部に保持すると、
書き込み対象のデータユニットに対応するグルーピング基準についての前記書き込みの番号に関する情報に基づいて、前記第2保持部に前記書き込み対象のデータユニットを保持させる保持アドレスを形成することと、
読み出し対象のデータユニットに対応するグルーピング基準についての読み出しの番号に関する情報に基づいて、前記読み出し対象のデータユニットが保持されている前記第2保持部の出力アドレスを形成することと、
を含む、処理を実行させるプログラム。
【請求項19】
前記処理は、
各データユニットが保持されている前記第2保持部のアドレスと各データユニットの優先度及び番号の値とを対応づける対応関係情報を、第3保持部に保持することと、
前記書き込み対象のデータユニットを前記第2保持部に保持させるときに、前記書き込み対象のデータユニットについての、前記第2保持部のアドレス、優先度、及び、番号の値を対応づけたエントリを、前記対応関係情報に追加することと、
前記第1保持部の前記書き込み対象のデータユニットについての優先度に対応する書き込みの番号に関する情報をインクリメントすることと、
前記読み出し対象のデータユニットを前記第2保持部に出力させるときに、前記読み出し対象のデータユニットについての優先度及び番号の値に対応する前記対応関係情報のエントリにおける前記第2保持部のアドレスを、前記出力アドレスとして特定することと、
前記第1保持部の前記読み出し対象のデータユニットについての優先度に対応する読み出しの番号に関する情報をインクリメントすることと、
を含む、請求項18記載のプログラム。
【請求項20】
前記グルーピング基準は、前記データユニットの優先度及び宛先ポートを含み、
前記処理は、
各データユニットが保持されている前記第2保持部のアドレスと各データユニットについての優先度、宛先ポート、及び番号の値とを対応づける対応関係情報を、第3保持部に保持することと、
前記書き込み対象のデータユニットを前記第2保持部に保持させるときに、前記書き込み対象のデータユニットについての、前記第2保持部のアドレス、優先度、宛先ポート、及び、番号の値を対応づけたエントリを、前記対応関係情報に追加することと、
前記第1保持部の前記書き込み対象のデータユニットについての優先度及び宛先ポートに対応する書き込みの番号に関する情報をインクリメントすることと、
前記読み出し対象のデータユニットを前記第2保持部に出力させるときに、前記読み出し対象のデータユニットについての優先度、宛先ポート、及び番号の値に対応する前記対応関係情報のエントリにおける前記第2保持部のアドレスを、前記出力アドレスとして特定することと、
前記第1保持部の前記読み出し対象のデータユニットについての優先度及び宛先ポートに対応する読み出しの番号に関する情報をインクリメントすることと、
を含む、請求項18記載のプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、バッファリング装置、方法、及びプログラムに関する。
【背景技術】
【0002】
非特許文献1は、例えば複数のネットワークの間におけるフレームの転送に関わる技術標準を規定している。例えば、非特許文献1の技術が適用されるバッファリング装置(例えば、スイッチ)は、第1ネットワークから受け取ったフレームをフレームバッファに一時的に保持する。そして、バッファリング装置は、フレームバッファに保持したフレームに対応する送信命令を発行し、該フレームの宛先ポートに対応するキューバッファに該送信命令を保持する。そして、バッファリング装置は、実行すべき順番が来た送信命令に対応するフレームを転送する。
【先行技術文献】
【非特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明者は、非特許文献に開示されている技術ではバッファリング装置においてデータユニット(例えば、送信命令)を保持するバッファの容量が過度に大きくなる可能性があることを見出した。非特許文献1では、フレームに付与される優先度が規定されている。そして、最大で8段階の優先度が利用され得る。このため、非特許文献1の技術が適用されるバッファリング装置は、各宛先ポートについて8個のキューバッファを有する必要がある。例えば、フレームバッファに8000個のフレームを保持することが可能である場合、可能性として8000個のフレームが同じ1つの宛先ポートに対応し且つ同じ1つの優先度に対応するケースがあるので、各キューバッファは、8000個の送信命令を保持する容量を有する必要がある。このため、例えば、宛先ポートが4つであり、1つの送信命令が16バイトである場合、4096キロバイト(=4(ポート数)×8000×16×8(優先度の数))となる。このように送信命令を保持するバッファの容量が大きくなってしまう。
【0005】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0006】
一実施の形態によれば、バッファリング装置は、各グルーピング基準がデータユニットの優先度を1つのグルーピングパラメータとして含む、複数のグルーピング基準のそれぞれについて、書き込みの番号に関する情報及び読み出しの番号に関する情報を管理する。また、バッファリング装置は、いずれのグルーピング基準に対応するデータユニットであっても該データユニットを共通の保持部に保持する。そして、バッファリング装置は、書き込みの番号に関する情報に基づいて、保持部に書き込み対象のデータユニットを保持させる保持アドレスを形成する。また、バッファリング装置は、読み出しの番号に関する情報に基づいて、読み出し対象のデータユニットが保持されている保持部の出力アドレスを形成する。
【発明の効果】
【0007】
上記の一実施の形態によれば、バッファリング装置においてデータユニットを保持するバッファの容量を低減できる。
【図面の簡単な説明】
【0008】
【
図1】
図1は、本開示のバッファリング装置の基本構成例を示すブロック図である。
【
図2】
図2は、第1実施形態におけるバッファリング装置の一例を示すブロック図である。
【
図3】
図3は、第1実施形態におけるバッファリング装置の送信命令の書き込み処理を示すフローチャートである。
【
図4】
図4は、第1実施形態におけるバッファリング装置の送信命令の書き込み処理の説明に供する図である。
【
図5】
図5は、第1実施形態におけるバッファリング装置の送信命令の読み出し処理を示すフローチャートである。
【
図6】
図6は、第1実施形態におけるバッファリング装置の送信命令の読み出し処理の説明に供する図である。
【
図7】
図7は、第1実施形態の変形例におけるバッファリング装置の一例を示すブロック図である。
【
図8】
図8は、第2実施形態におけるバッファリング装置の一例を示すブロック図である。
【
図9】
図9は、第2実施形態の変形例におけるバッファリング装置の一例を示すブロック図である。
【
図10】
図10は、第3実施形態におけるバッファリング装置の送信命令の書き込み処理を示すフローチャートである。
【
図11】
図11は、第3実施形態におけるバッファリング装置の送信命令の書き込み処理の説明に供する図である。
【
図12】
図12は、第3実施形態におけるバッファリング装置の送信命令の読み出し処理を示すフローチャートである。
【
図13】
図13は、第3実施形態におけるバッファリング装置の送信命令の読み出し処理の説明に供する図である。
【
図14】
図14は、第3実施形態の変形例におけるバッファリング装置の一例を示すブロック図である。
【
図15】
図15は、第4実施形態におけるバッファリング装置の一例を示すブロック図である。
【
図16】
図16は、第4実施形態におけるバッファリング装置の送信命令の書き込み処理を示すフローチャートである。
【
図17】
図17は、第4実施形態におけるバッファリング装置の送信命令の書き込み処理の説明に供する図である。
【
図18】
図18は、第4実施形態におけるバッファリング装置の送信命令の読み出し処理を示すフローチャートである。
【
図19】
図19は、第4実施形態におけるバッファリング装置の送信命令の読み出し処理の説明に供する図である。
【
図20】
図20は、第4実施形態の変形例におけるバッファリング装置の一例を示すブロック図である。
【
図21】
図21は、第5実施形態における第1保持部及び第2保持部の構成の説明に供する図である。
【
図22】
図22は、第5実施形態の変形例におけるバッファリング装置の一例を示すブロック図である。
【発明を実施するための形態】
【0009】
以下、図面を参照しつつ、実施形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【0010】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD(Compact Disc)-ROM(Read Only Memory)、CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0011】
<本開示のバッファリング装置の基本構成例>
図1は、本開示のバッファリング装置の基本構成例を示すブロック図である。
図1においてバッファリング装置10は、保持部(第1保持部)11と、保持部(第2保持部)12と、制御部13とを有している。
【0012】
保持部(第1保持部)11は、複数の「グルーピング基準」のそれぞれについて、書き込みの番号に関する情報、及び、読み出しの番号に関する情報を保持する。「グルーピング基準」は、データユニットの優先度を1つのグルーピングパラメータとして含む。データユニットは、例えば、上記の「送信命令」である。以下では、データユニットが送信命令であるものとして説明を行う。
【0013】
すなわち、書き込みの番号に関する情報、及び、読み出しの番号に関する情報は、グルーピング基準ごとに管理されている。
【0014】
保持部(第2保持部)12は、複数の送信命令を保持する。この複数の送信命令は、複数のグルーピング基準のいずれかに対応する。すなわち、送信命令は、いずれのグルーピング基準に対応していても、保持部12に保持される。このため、保持部12には、すべてのグルーピング基準の送信命令が混在し得る。
【0015】
ここで、上記の通り、各送信命令は、フレームバッファ(不図示)に一時的に保持される各フレームに対応する。上記の通り、いずれのグルーピング基準に対応する送信命令であっても保持部12が保持するため、保持部12に保持可能な送信命令の数はフレームバッファ(不図示)に保持され得るフレームの数に等しければよい。このため、送信命令を保持する保持部12の容量を低減できる。
【0016】
制御部13は、書き込み対象の送信命令に対応するグルーピング基準についての書き込みの番号に関する情報に基づいて、保持部12に書き込み対象の送信命令を保持させる「保持アドレス」を形成する。そして、制御部13は、保持部12が書き込み対象の送信命令を保持アドレスの位置に保持するように、保持部12を制御する。
【0017】
また、制御部13は、読み出し対象の送信命令に対応するグルーピング基準についての読み出しの番号に関する情報に基づいて、読み出し対象の送信命令が保持されている保持部12の「出力アドレス」を形成する。そして、制御部13は、保持部12が出力アドレスに保持されている読み出し対象の送信命令を出力するように、保持部12を制御する。
【0018】
そして、制御部13は、保持部12から出力された送信命令に対応し且つフレームバッファ(不図示)に保持されているフレームを転送する制御を実行する。
【0019】
<第1実施形態>
<バッファリング装置の構成例>
図2は、第1実施形態におけるバッファリング装置の一例を示すブロック図である。
図2において第1実施形態のバッファリング装置10は、バッファリング処理部21-1~21-4と、制御部13とを有している。以下では、バッファリング処理部21-1~21-4を区別しない場合、単にバッファリング処理部21と呼ぶことがある。各バッファリング処理部21は、「宛先ポート」に対応する。すなわち、ここでは、一例として、宛先ポートの数が4つのケースを説明している。なお、当然のことながら、バッファリング装置10が有する宛先ポートの数(つまり、バッファリング処理部21の数)は、4つに限定されるものではなく、1以上の整数個のいずれであってもよい。
【0020】
各バッファリング処理部21は、保持部11と、保持部12と、保持部(第3保持部)14とを有している。バッファリング処理部21-1~21-4は、それぞれ、宛先ポート#1~#4に対応する。
【0021】
例えばバッファリング処理部21-1は、宛先情報に宛先ポート#1を含むフレームに対応する送信命令を処理する。バッファリング処理部21-1において保持部11は、複数の優先度のそれぞれについて、書き込みの番号の値、及び、読み出しの番号の値を保持する。すなわち、第1実施形態において「グルーピング基準」は優先度である。
【0022】
また、バッファリング処理部21-1において保持部12は、優先度に関わりなく、宛先情報に宛先ポート#1を含むフレームに対応する送信命令のすべてを保持する。このため、保持部12に保持可能な送信命令の数はフレームバッファ(不図示)に保持され得るフレームの数に等しければよい。このため、送信命令を保持する保持部12の容量を低減できる。
【0023】
バッファリング処理部21-1において保持部14は、「対応関係情報(対応関係テーブル)」を保持する。「対応関係情報」は、複数のエントリを含む。各エントリは、送信命令が保持される保持部12のアドレスと、その送信命令の「優先度」及び「番号(格納番号)の値」とを対応づけている。ここで、「番号(格納番号)」は、優先度ごとに送信命令が保持(格納)される度に、順番に付される番号である。そして、「番号(格納番号)」は、同じ優先度の複数の送信命令において送信命令の読み出される順番を規定する。また、各エントリは、「占有情報」を有していてもよい。エントリの「占有情報」は、該エントリの保持部12のアドレスに送信命令が格納されているか否かを示す情報である。すなわち、エントリの「占有情報」は、そのエントリが有効であるか否かを示しているとも理解できるので、「有効情報(valid)」と呼ばれてもよい。例えば、エントリの「占有情報」の値が「1」であれば、そのエントリの保持部12のアドレスに送信命令が格納されていることを示す。また、エントリの「占有情報」の値が「0」であれば、そのエントリの保持部12のアドレスに送信命令が格納されていないことを示す。このため、保持部12の複数のアドレスをそれぞれ複数のエントリに予め入力しておけば、制御部13は、エントリの占有情報を確認することによって、そのエントリの保持部12のアドレスが空であるか否かを判定することができる。
【0024】
第1実施形態の制御部13は、書き込み対象の送信命令を受け取ると、この送信命令の宛先ポート(つまり、送信命令に対応するフレームの宛先ポート)に対応するバッファリング処理部21についての処理を行う。また、制御部13は、読み出し対象の送信命令の宛先ポート(つまり、送信命令に対応するフレームの宛先ポート)に対応するバッファリング処理部21についての処理を行う。
【0025】
例えば、制御部13は、宛先ポート#1の書き込み対象の送信命令を受け取ると、バッファリング処理部21-1についての処理を行う。例えば、制御部13は、書き込み対象の送信命令を保持部12に保持させるときに、読み出し対象の送信命令についての優先度に対応する保持部11の書き込みの番号の値を参照する。そして、制御部13は、書き込み対象の送信命令についての、保持部12のアドレス、優先度、及び、番号の値を対応づけたエントリを、保持部14の対応関係情報に追加する。このとき、制御部13は、追加したエントリの「占有情報」の値を「0」から「1」に変更してもよい。また、制御部13は、保持部11における書き込み対象の送信命令の優先度に対応する書き込みの番号の値をインクリメントする。
【0026】
また、例えば、制御部13は、宛先ポート#1の読み出しリクエストを受け取ると、バッファリング処理部21-1についての処理を行う。例えば、制御部13は、読み出し対象の送信命令を保持部12に出力させるときに、読み出し対象の送信命令についての優先度に対応する保持部11の読み出しの番号の値を参照する。そして、制御部13は、読み出し対象の送信命令についての優先度及び番号の値に対応する対応関係情報のエントリにおける保持部12のアドレスを、上記の「出力アドレス」として特定する。そして、制御部13は、保持部12が出力アドレスに保持されている読み出し対象の送信命令を出力するように、保持部12を制御する。そして、制御部13は、読み出し対象の送信命令の優先度及び番号の値に対応する保持部14の対応関係情報のエントリの情報をクリアし、そのエントリの「占有情報」を「1」から「0」に変更する。また、制御部13は、保持部12の「出力アドレス」に保持されていた送信命令をクリアする。そして、制御部13は、保持部11における読み出し対象の送信命令の優先度に対応する読み出しの番号の値をインクリメントする。
【0027】
<バッファリング装置の動作例>
以上の構成を有する第1実施形態におけるバッファリング装置10の処理動作の一例について説明する。
【0028】
(送信命令の書き込み処理)
図3は、第1実施形態におけるバッファリング装置の送信命令の書き込み処理を示すフローチャートである。
図4は、第1実施形態におけるバッファリング装置の送信命令の書き込み処理の説明に供する図である。なお、制御部13は、
図3の処理フローを宛先ポートごとに実行する。また、
図4の例では、保持部11がカウンタであり、保持部12がRAMであり、保持部14がCAM(Content Addressable Memory)またはCAMと同等の機能を有する回路である。
【0029】
制御部13は、処理対象の宛先ポートに対応する送信命令を受け取るまで待つ(ステップS11NO)。処理対象の宛先ポートに対応する送信命令を受け取ると(ステップS11YES)、制御部13は、処理対象の宛先ポートに対応するバッファリング処理部21の保持部14の対応関係情報を参照し、空きの保持部12のアドレスを特定する(ステップS12)。例えば、制御部13は、処理対象の宛先ポートに対応するバッファリング処理部21の保持部14の対応関係情報を参照し、保持部14の空アドレスを特定する。そして、制御部13は、特定された保持部14の空アドレスを、保持部12に書き込みを行うアドレスに決定する。なお、保持部14の空きのアドレスが無い場合、制御部13は、その送信命令を破棄してもよい。
【0030】
制御部13は、送信命令の優先度を取得する(ステップS13)。なお、送信命令の優先度の情報は、送信命令に含まれていてもよい。
【0031】
制御部13は、取得された送信命令の優先度に対応する書き込みの番号の値(Write Count)を、保持部11から取得する(ステップS14)。ここでは、いずれの優先度の送信命令も保持されていないので、書き込みの番号の値は「0」となっている。
【0032】
制御部13は、特定された空きの保持部12のアドレスと、取得された送信命令の優先度と、取得された書き込みの番号の値とを対応づけるエントリを、保持部14の対応関係情報に追加する(ステップS15)。
【0033】
制御部13は、追加したエントリの「占有情報」の値を「0」から「1」に変更する(ステップS16)。
【0034】
制御部13は、保持部12が特定されたアドレスに送信命令を保持するように、保持部12を制御する(ステップS17)。
【0035】
制御部13は、取得された送信命令の優先度に対応する書き込みの番号の値をインクリメントする(ステップS18)。例えば、書き込みの番号の値「0」に「+1」が加算されて書き込みの番号の値が「1」に更新される。
【0036】
(送信命令の読み出し処理)
図5は、第1実施形態におけるバッファリング装置の送信命令の読み出し処理を示すフローチャートである。
図6は、第1実施形態におけるバッファリング装置の送信命令の読み出し処理の説明に供する図である。なお、制御部13は、
図5の処理フローを宛先ポートごとに実行する。また、
図6の例では、保持部11がカウンタであり、保持部12がRAMであり、保持部14がCAM(Content Addressable Memory)またはCAMと同等の機能を有する回路である。である。
【0037】
制御部13は、処理対象の宛先ポートに対応する読み出しリクエストを受け取るまで待つ(ステップS21NO)。処理対象の宛先ポートに対応する読み出しリクエストを受け取ると(ステップS21YES)、制御部13は、読み出しリクエストによってリクエストされた優先度を取得する(ステップS22)。なお、読み出しリクエストによってリクエストされた優先度の情報は、読み出しリクエストに含まれてもよい。
【0038】
制御部13は、読み出しリクエストによってリクエストされた優先度に対応する読み出しの番号の値(Read Count)を、保持部11から取得する(ステップS23)。
【0039】
制御部13は、取得された優先度及び取得された読み出しの番号の値に対応する保持部14の対応関係情報のエントリにおける、保持部12のアドレスを、「出力アドレス」として特定する(ステップS24)。
【0040】
制御部13は、保持部12が出力アドレスに保持されている読み出し対象の送信命令を出力するように、保持部12を制御する(ステップS25)。
【0041】
制御部13は、取得された優先度に対応する読み出しの番号の値をインクリメントする(ステップS26)。例えば、読み出しの番号の値「0」に「+1」が加算されて読み出しの番号の値が「1」に更新される。
【0042】
制御部13は、取得された優先度及び取得された読み出しの番号の値に対応する保持部14の対応関係情報のエントリの情報をクリアし、そのエントリの「占有情報」を「1」から「0」に変更する(ステップS27)。また、制御部13は、「出力アドレス」に保持されていた送信命令をクリアする(ステップS28)。なお、ここでは、制御部13が「出力アドレス」に保持されていた送信命令をクリアするものとして説明したが、本開示はこれに限定されない。制御部13は「出力アドレス」に保持されていた送信命令をクリアせずに、そのアドレスに別の送信命令を保持するべきときにその別の送信命令によって上書きを行ってもよい。
【0043】
<第1実施形態の変形例>
以上で説明した第1実施形態において「グルーピング基準」は優先度である。これに対しては、第1実施形態の変形例において「グルーピング基準」は優先度及び宛先ポートである。
【0044】
図7は、第1実施形態の変形例におけるバッファリング装置の一例を示すブロック図である。
図7においてバッファリング装置10は、保持部11と、保持部12と、保持部14と、制御部13とを有している。
【0045】
保持部11は、優先度及び宛先ポートの複数の組み合わせのそれぞれについて、書き込みの番号の値、及び、読み出しの番号の値を保持する。すなわち、第1実施形態の変形例において「グルーピング基準」は優先度及び宛先ポートである。
【0046】
保持部12は、優先度及び宛先ポートの組み合わせに関わりなく、フレームに対応する送信命令のすべてを保持する。
【0047】
保持部14は、「対応関係情報(対応関係テーブル)」を保持する。「対応関係情報」は、複数のエントリを含む。各エントリは、送信命令が保持される保持部12のアドレスと、その送信命令についての「優先度」、「宛先ポート」、及び「番号(格納番号)の値」とを対応づけている。ここで、「番号(格納番号)」は、優先度及び宛先ポートの組み合わせごとに送信命令が保持(格納)される度に、順番に付される番号である。そして、「番号(格納番号)」は、同じ優先度及び宛先ポートの組み合わせの複数の送信命令において送信命令の読み出される順番を規定する。また、各エントリは、「占有情報」を有していてもよい。
【0048】
制御部13は、書き込み対象の送信命令を保持部12に保持させるときに、読み出し対象の送信命令についての優先度及び宛先ポートに対応する保持部11の書き込みの番号の値を参照する。そして、制御部13は、書き込み対象の送信命令についての、保持部12のアドレス、優先度、宛先ポート、及び、番号の値を対応づけたエントリを、保持部14の対応関係情報に追加する。このとき、制御部13は、追加したエントリの「占有情報」の値を「0」から「1」に変更してもよい。また、制御部13は、保持部11における書き込み対象の送信命令の優先度及び宛先ポートに対応する書き込みの番号の値をインクリメントする。
【0049】
また、制御部13は、読み出し対象の送信命令を保持部12に出力させるときに、読み出し対象の送信命令についての優先度及び宛先ポートに対応する保持部11の読み出しの番号の値を参照する。そして、制御部13は、読み出し対象の送信命令についての優先度、宛先ポート、及び番号の値に対応する対応関係情報のエントリにおける保持部12のアドレスを、「出力アドレス」として特定する。そして、制御部13は、保持部12が出力アドレスに保持されている読み出し対象の送信命令を出力するように、保持部12を制御する。そして、制御部13は、読み出し対象の送信命令の優先度、宛先ポート、及び読み出しの番号の値に対応する保持部14の対応関係情報のエントリの情報をクリアし、そのエントリの「占有情報」を「1」から「0」に変更する。また、制御部13は、保持部12の「出力アドレス」に保持されていた送信命令をクリアする。そして、制御部13は、保持部11における読み出し対象の送信命令の優先度及び宛先ポートに対応する読み出しの番号の値をインクリメントする。なお、ここでは、制御部13が「出力アドレス」に保持されていた送信命令をクリアするものとして説明したが、本開示はこれに限定されない。制御部13は「出力アドレス」に保持されていた送信命令をクリアせずに、そのアドレスに別の送信命令を保持するべきときにその別の送信命令によって上書きを行ってもよい。
【0050】
<第2実施形態>
第2実施形態は、ハッシュ方式を用いる実施形態に関する。
【0051】
図8は、第2実施形態におけるバッファリング装置の一例を示すブロック図である。
図8において第2実施形態のバッファリング装置10は、バッファリング処理部22-1~22-4と、制御部13とを有している。以下では、バッファリング処理部22-1~22-4を区別しない場合、単にバッファリング処理部22と呼ぶことがある。各バッファリング処理部22は、「宛先ポート」に対応する。すなわち、ここでは、一例として、宛先ポートの数が4つのケースを説明している。なお、当然のことながら、バッファリング装置10が有する宛先ポートの数(つまり、バッファリング処理部22の数)は、4つに限定されるものではなく、1以上の整数個のいずれであってもよい。
【0052】
各バッファリング処理部22は、保持部11と、保持部12とを有している。バッファリング処理部22-1~22-4は、それぞれ、宛先ポート#1~#4に対応する。
【0053】
第2実施形態の保持部11,12は、第1実施形態の保持部11,12と同じであるので、その説明は省略される。
【0054】
第2実施形態の制御部13は、書き込み対象の送信命令を受け取ると、この送信命令の宛先ポート(つまり、送信命令に対応するフレームの宛先ポート)に対応するバッファリング処理部22についての処理を行う。また、制御部13は、読み出し対象の送信命令の宛先ポート(つまり、送信命令に対応するフレームの宛先ポート)に対応するバッファリング処理部22についての処理を行う。
【0055】
例えば、制御部13は、宛先ポート#1の書き込み対象の送信命令を受け取ると、バッファリング処理部22-1についての処理を行う。例えば、制御部13は、書き込み対象の送信命令を保持部12に保持させるときに、読み出し対象の送信命令についての優先度に対応する保持部11の書き込みの番号の値を参照する。そして、制御部13は、書き込み対象の送信命令についての、優先度、及び番号の値に基づいて、ハッシュ値を、「保持アドレス」として算出する。そして、制御部13は、保持部12が書き込み対象の送信命令を保持アドレスの位置に保持するように、保持部12を制御する。また、制御部13は、保持部11における書き込み対象の送信命令の優先度に対応する書き込みの番号の値をインクリメントする。
【0056】
また、例えば、制御部13は、宛先ポート#1の読み出しリクエストを受け取ると、バッファリング処理部21-1についての処理を行う。例えば、第2実施形態の制御部13は、読み出し対象の送信命令を保持部12に出力させるときに、読み出し対象の送信命令についての優先度に対応する保持部11の読み出しの番号の値を参照する。そして、制御部13は、読み出し対象の送信命令についての、優先度、及び番号の値に基づいて、ハッシュ値を、「出力アドレス」として算出する。そして、制御部13は、保持部12が出力アドレスに保持されている読み出し対象の送信命令を出力するように、保持部12を制御する。そして、制御部13は、保持部11における読み出し対象の送信命令の優先度に対応する読み出しの番号の値をインクリメントする。そして、制御部13は、保持部12の「出力アドレス」に保持されていた送信命令をクリアする。なお、ここでは、制御部13が「出力アドレス」に保持されていた送信命令をクリアするものとして説明したが、本開示はこれに限定されない。制御部13は「出力アドレス」に保持されていた送信命令をクリアせずに、そのアドレスに別の送信命令を保持するべきときにその別の送信命令によって上書きを行ってもよい。
【0057】
ここで、制御部13は、読み出し対象の送信命令についての優先度及び番号の値に、特定のアルゴリズムまたは関数を適用することにより、ハッシュ値を生成する。ハッシュ値を生成するためのアルゴリズムまたは関数としては、CRC、ZIP、またはSHA等の既知の技術を用いることができる。
【0058】
<第2実施形態の変形例>
以上で説明した第2実施形態において「グルーピング基準」は優先度である。これに対しては、第2実施形態の変形例において「グルーピング基準」は優先度及び宛先ポートである。
【0059】
図9は、第2実施形態の変形例におけるバッファリング装置の一例を示すブロック図である。
図9においてバッファリング装置10は、保持部11と、保持部12と、制御部13とを有している。
【0060】
第2実施形態の変形例の保持部11は、第1実施形態の変形例と同様に、優先度及び宛先ポートの複数の組み合わせのそれぞれについて、書き込みの番号の値、及び、読み出しの番号の値を保持する。また、第2実施形態の変形例の保持部12は、優先度及び宛先ポートの組み合わせに関わりなく、フレームに対応する送信命令のすべてを保持する。
【0061】
第2実施形態の変形例の制御部13は、書き込み対象の送信命令を保持部12に保持させるときに、読み出し対象の送信命令についての優先度及び宛先ポートに対応する保持部11の書き込みの番号の値を参照する。そして、制御部13は、書き込み対象の送信命令についての、優先度、宛先ポート、及び番号の値に基づいて、ハッシュ値を、「保持アドレス」として算出する。そして、制御部13は、保持部12が書き込み対象の送信命令を保持アドレスの位置に保持するように、保持部12を制御する。また、制御部13は、保持部11における書き込み対象の送信命令の優先度及び宛先ポートに対応する書き込みの番号の値をインクリメントする。
【0062】
また、第2実施形態の変形例の制御部13は、読み出し対象の送信命令を保持部12に出力させるときに、読み出し対象の送信命令についての優先度及び宛先ポートに対応する保持部11の読み出しの番号の値を参照する。そして、制御部13は、読み出し対象の送信命令についての優先度、宛先ポート、及び番号の値に基づいて、ハッシュ値を、「出力アドレス」として算出する。そして、制御部13は、保持部12が出力アドレスに保持されている読み出し対象の送信命令を出力するように、保持部12を制御する。そして、制御部13は、保持部11における読み出し対象の送信命令の優先度及び宛先ポートに対応する読み出しの番号の値をインクリメントする。そして、制御部13は、保持部12の「出力アドレス」に保持されていた送信命令をクリアする。
【0063】
<第3実施形態>
第3実施形態は、リンク構造を用いる実施形態に関する。なお、第3実施形態のバッファリング装置の構成は、第1実施形態のバッファリング装置10と同じなので、
図2を参照する。
【0064】
<バッファリング装置の構成例>
第3実施形態の各バッファリング処理部21の保持部11及び保持部12は、第1実施形態の保持部11及び保持部12と同様である。ただし、第3実施形態の保持部11において、書き込みの番号の値及び読み出しの番号の値のそれぞれには、保持部12のアドレスそのものが用いられる。
【0065】
第3実施形態の各バッファリング処理部21の保持部14は、「対応関係情報(対応関係テーブル)」を保持する。「対応関係情報」は、複数のエントリを含む。各エントリは、送信命令が保持される保持部12のアドレスと、「占有情報(格納状況情報)」と、「次アドレス(リンク情報)」とを対応づけている。「占有情報(格納状況情報)」は、保持部12のアドレスに送信命令が保持されているか又は予約が入っているか否かを示す。例えば、エントリの「占有情報」の値が「1」であれば、そのエントリの保持部12のアドレスに送信命令が格納されているか又は予約されていることを示す。また、エントリの「占有情報」の値が「0」であれば、そのエントリの保持部12のアドレスに送信命令が格納されていない又は予約もされていないことを示す。このため、保持部12の複数のアドレスをそれぞれ複数のエントリに予め入力しておけば、制御部13は、エントリの占有情報を確認することによって、そのエントリの保持部12のアドレスが空(未使用)であるか否かを判定することができる。また、「次アドレス」は、保持部12のアドレスに保持される送信命令の優先度について該送信命令の次に送信命令が保持される保持部12のアドレスである。
【0066】
第3実施形態の制御部13は、書き込み対象の送信命令を受け取ると、この送信命令の宛先ポート(つまり、送信命令に対応するフレームの宛先ポート)に対応するバッファリング処理部21についての処理を行う。また、制御部13は、読み出し対象の送信命令の宛先ポート(つまり、送信命令に対応するフレームの宛先ポート)に対応するバッファリング処理部21についての処理を行う。
【0067】
例えば、制御部13は、宛先ポート#1の書き込み対象の送信命令を受け取ると、バッファリング処理部21-1についての処理を行う。例えば、制御部13は、書き込み対象の送信命令を保持部12に保持させるときに、読み出し対象の送信命令についての優先度に対応する保持部11の書き込みの番号の値を参照する。そして、制御部13は、書き込み対象の送信命令の優先度に対応する書き込みの番号の値に基づく保持部12のアドレスに、書き込み対象の送信命令を保持させる。そして、制御部13は、いずれの送信命令も保持しておらず且つ予約もされていない保持部12の未使用アドレスを対応関係情報から取得する。ここで、未使用アドレスは、例えば、占有情報の値が「0」であるエントリの保持部12のアドレスである。
【0068】
そして、制御部13は、書き込み対象の送信命令が保持された保持部12のアドレスに対応する対応関係情報のエントリにおける「次アドレス」に、取得された未使用アドレスを入力する。そして、制御部13は、保持部11における書き込み対象の送信命令の優先度に対応する書き込みの番号の値を、取得された未使用アドレスによって上書きする。そして、制御部13は、取得された未使用アドレスに対応する対応関係情報のエントリにおける占有情報を、送信命令が保持されているか又は予約が入っていることを示す値に更新する。
【0069】
また、例えば、制御部13は、宛先ポート#1の読み出しリクエストを受け取ると、バッファリング処理部21-1についての処理を行う。例えば、制御部13は、読み出し対象の送信命令を保持部12に出力させるときに、読み出し対象の送信命令についての優先度に対応する保持部11の読み出しの番号の値を参照する。そして、制御部13は、読み出し対象の送信命令の優先度に対応する読み出し番号の値に基づく保持部12のアドレスから読み出し対象の送信命令を保持部12が出力するように、保持部12を制御する。そして、制御部13は、出力された読み出し対象の送信命令の保持部12のアドレスに対応する対応関係情報のエントリにおける「次アドレス」によって、保持部11における読み出し対象の送信命令の優先度に対応する読み出しの番号の値を更新する。そして、制御部13は、出力された読み出し対象の送信命令の保持部12のアドレスに対応する対応関係情報のエントリにおける占有情報を、空(未使用)を示す値に更新する。また、制御部13は、保持部12において出力された送信命令をクリアする。なお、ここでは、制御部13が保持部12において出力された送信命令をクリアするものとして説明したが、本開示はこれに限定されない。制御部13は保持部12において出力された送信命令をクリアせずに、そのアドレスに別の送信命令を保持するべきときにその別の送信命令によって上書きを行ってもよい。
【0070】
<バッファリング装置の動作例>
以上の構成を有する第3実施形態におけるバッファリング装置10の処理動作の一例について説明する。
【0071】
(送信命令の書き込み処理)
図10は、第3実施形態におけるバッファリング装置の送信命令の書き込み処理を示すフローチャートである。
図11は、第3実施形態におけるバッファリング装置の送信命令の書き込み処理の説明に供する図である。なお、制御部13は、
図10の処理フローを宛先ポートごとに実行する。また、
図11の例では、保持部11がカウンタであり、保持部12がRAMであり、保持部14がテーブルを保持している。
【0072】
まず、
図10の処理フローを開始する前に、制御部13は、8つの優先度のそれぞれのために、1つの保持部12のアドレスを予約する。そして、制御部13は、保持部11における8つの優先度のそれぞれの書き込みの番号の値、及び、読み出しの番号の値を、予約したアドレスによって更新する。例えば、
図11に示すように、制御部13は、優先度0-7のそれぞれのために、保持部12のアドレス「0x000」-「0x007」を予約する。
【0073】
制御部13は、処理対象の宛先ポートに対応する送信命令を受け取るまで待つ(ステップS31NO)。処理対象の宛先ポートに対応する送信命令を受け取ると(ステップS31YES)、制御部13は、送信命令の優先度を取得する(ステップS32)。なお、送信命令の優先度の情報は、送信命令に含まれていてもよい。
【0074】
制御部13は、取得された送信命令の優先度に対応する書き込みの番号の値(保持アドレス)を、保持部11から取得する(ステップS33)。
【0075】
制御部13は、保持部12を制御して、取得された「保持アドレス」に、書き込み対象の送信命令を保持させる(ステップS34)。
【0076】
制御部13は、いずれの送信命令も保持しておらず且つ予約もされていない保持部12の未使用アドレスを対応関係情報から取得する(ステップS35)。
【0077】
制御部13は、書き込み対象の送信命令が保持された保持部12のアドレスに対応する対応関係情報のエントリにおける「次アドレス」に、取得された未使用アドレスを入力する(ステップS36)。
【0078】
制御部13は、保持部11における書き込み対象の送信命令の優先度に対応する書き込みの番号の値を、取得された未使用アドレスによって上書きする(ステップS37)。
【0079】
制御部13は、取得された未使用アドレスに対応する対応関係情報のエントリにおける占有情報を、送信命令が保持されているか又は予約が入っていることを示す値に更新する(ステップS38)。
【0080】
(送信命令の読み出し処理)
図12は、第3実施形態におけるバッファリング装置の送信命令の読み出し処理を示すフローチャートである。
図13は、第3実施形態におけるバッファリング装置の送信命令の読み出し処理の説明に供する図である。なお、制御部13は、
図12の処理フローを宛先ポートごとに実行する。また、
図13の例では、保持部11がカウンタであり、保持部12がRAMを保持しており、保持部14がテーブルである。
【0081】
制御部13は、処理対象の宛先ポートに対応する読み出しリクエストを受け取るまで待つ(ステップS41NO)。処理対象の宛先ポートに対応する読み出しリクエストを受け取ると(ステップS41YES)、制御部13は、読み出しリクエストによってリクエストされた優先度を取得する(ステップS42)。なお、読み出しリクエストによってリクエストされた優先度の情報は、読み出しリクエストに含まれてもよい。
【0082】
制御部13は、読み出しリクエストによってリクエストされた優先度に対応する読み出しの番号の値(出力アドレス)を、保持部11から取得する(ステップS43)。
【0083】
制御部13は、保持部12が出力アドレスに保持されている読み出し対象の送信命令を出力するように、保持部12を制御する(ステップS44)。
【0084】
制御部13は、出力された読み出し対象の送信命令の保持部12のアドレスに対応する対応関係情報のエントリにおける「次アドレス」によって、保持部11における読み出し対象の送信命令の優先度に対応する読み出しの番号の値を更新する(ステップS45)。
【0085】
制御部13は、出力された読み出し対象の送信命令の保持部12のアドレスに対応する対応関係情報のエントリにおける占有情報を、空(未使用)を示す値に更新する(ステップS46)。
【0086】
制御部13は、保持部12において出力された送信命令をクリアする(ステップS47)。なお、ここでは、制御部13が保持部12において出力された送信命令をクリアするものとして説明したが、本開示はこれに限定されない。制御部13は保持部12において出力された送信命令をクリアせずに、そのアドレスに別の送信命令を保持するべきときにその別の送信命令によって上書きを行ってもよい。
【0087】
<第3実施形態の変形例>
以上で説明した第3実施形態において「グルーピング基準」は優先度である。これに対しては、第3実施形態の変形例において「グルーピング基準」は優先度及び宛先ポートである。
【0088】
図14は、第3実施形態の変形例におけるバッファリング装置の一例を示すブロック図である。
図14においてバッファリング装置10は、保持部11と、保持部12と、保持部14と、制御部13とを有している。
【0089】
保持部11は、優先度及び宛先ポートの複数の組み合わせのそれぞれについて、書き込みの番号の値、及び、読み出しの番号の値を保持する。すなわち、第3実施形態の変形例において「グルーピング基準」は優先度及び宛先ポートである。また、第3実施形態の変形例において、書き込みの番号の値及び読み出しの番号の値のそれぞれには、保持部12のアドレスそのものが用いられる。
【0090】
保持部12は、優先度及び宛先ポートの組み合わせに関わりなく、フレームに対応する送信命令のすべてを保持する。
【0091】
保持部14は、「対応関係情報(対応関係テーブル)」を保持する。「対応関係情報」は、複数のエントリを含む。各エントリは、送信命令が保持される保持部12のアドレスと、「占有情報(格納状況情報)」と、「次アドレス(リンク情報)」とを対応づけている。「次アドレス」は、保持部12のアドレスに保持される送信命令の優先度及び宛先ポートの組み合わせについて該送信命令の次に送信命令が保持される保持部12のアドレスである。
【0092】
制御部13は、書き込み対象の送信命令を保持部12に保持させるときに、読み出し対象の送信命令についての優先度及び宛先ポートの組み合わせに対応する保持部11の書き込みの番号の値を参照する。そして、制御部13は、書き込み対象の送信命令の優先度及び宛先ポートの組み合わせに対応する書き込みの番号の値に基づく保持部12のアドレスに、書き込み対象の送信命令を保持させる。そして、制御部13は、いずれの送信命令も保持しておらず且つ予約もされていない保持部12の未使用アドレスを対応関係情報から取得する。
【0093】
そして、制御部13は、書き込み対象の送信命令が保持された保持部12のアドレスに対応する対応関係情報のエントリにおける「次アドレス」に、取得された未使用アドレスを入力する。そして、制御部13は、保持部11における書き込み対象の送信命令の優先度及び宛先ポートの組み合わせに対応する書き込みの番号の値を、取得された未使用アドレスによって上書きする。そして、制御部13は、取得された未使用アドレスに対応する対応関係情報のエントリにおける占有情報を、送信命令が保持されているか又は予約が入っていることを示す値に更新する。
【0094】
また、制御部13は、読み出し対象の送信命令を保持部12に出力させるときに、読み出し対象の送信命令についての優先度及び宛先ポートの組み合わせに対応する保持部11の読み出しの番号の値を参照する。そして、制御部13は、読み出し対象の送信命令の優先度及び宛先ポートの組み合わせに対応する読み出し番号の値に基づく保持部12のアドレスから読み出し対象の送信命令を保持部12が出力するように、保持部12を制御する。そして、制御部13は、出力された読み出し対象の送信命令の保持部12のアドレスに対応する対応関係情報のエントリにおける「次アドレス」によって、保持部11における読み出し対象の送信命令の優先度及び宛先ポートの組み合わせに対応する読み出しの番号の値を更新する。そして、制御部13は、出力された読み出し対象の送信命令の保持部12のアドレスに対応する対応関係情報のエントリにおける占有情報を、空(未使用)を示す値に更新する。また、制御部13は、保持部12において出力された送信命令をクリアする。
【0095】
<第4実施形態>
第4実施形態は、先入先出部(FIFO)を用いる実施形態に関する。
【0096】
<バッファリング装置の構成例>
図15は、第4実施形態におけるバッファリング装置の一例を示すブロック図である。
図15において第4実施形態のバッファリング装置10は、バッファリング処理部23-1~23-4と、制御部13とを有している。以下では、バッファリング処理部23-1~23-4を区別しない場合、単にバッファリング処理部23と呼ぶことがある。各バッファリング処理部23は、「宛先ポート」に対応する。すなわち、ここでは、一例として、宛先ポートの数が4つのケースを説明している。なお、当然のことながら、バッファリング装置10が有する宛先ポートの数(つまり、バッファリング処理部23の数)は、4つに限定されるものではなく、1以上の整数個のいずれであってもよい。
【0097】
各バッファリング処理部23は、保持部11と、保持部12と、先入先出部15-1~15-8とを有している。バッファリング処理部23-1~23-4は、それぞれ、宛先ポート#1~#4に対応する。また、先入先出部15-1~15-8は、それぞれ、優先度0-7に対応している。
【0098】
第4実施形態の各バッファリング処理部21の保持部11及び保持部12は、第1実施形態の保持部11及び保持部12と同様である。ただし、第4実施形態の保持部11において、或る優先度についての書き込みの番号の値及び読み出しの番号の値のそれぞれには、例えば、その優先度に対応する先入先出部15内のアドレスそのものが用いられる。
【0099】
第4実施形態の制御部13は、書き込み対象の送信命令を受け取ると、この送信命令の宛先ポート(つまり、送信命令に対応するフレームの宛先ポート)に対応するバッファリング処理部23についての処理を行う。また、制御部13は、読み出し対象の送信命令の宛先ポート(つまり、送信命令に対応するフレームの宛先ポート)に対応するバッファリング処理部23についての処理を行う。
【0100】
例えば、制御部13は、宛先ポート#1の書き込み対象の送信命令を受け取ると、バッファリング処理部23-1についての処理を行う。例えば、制御部13は、書き込み対象の送信命令を保持部12に保持させるときに、保持部11における書き込み対象の送信命令についての優先度に対応する書き込みの番号の値を取得する。そして、制御部13は、書き込み対象の送信命令を保持部12の空きアドレスに保持させ、そして、この保持アドレスを取得する。そして、制御部13は、書き込み対象の送信命令についての優先度に対応する先入先出部15の、取得された書き込みの番号の値が示す位置(アドレス)に、取得された保持部12のアドレスを保持させる。そして、制御部13は、保持部11における書き込み対象の送信命令についての優先度に対応する書き込みの番号の値をインクリメントする。
【0101】
また、例えば、制御部13は、宛先ポート#1の読み出しリクエストを受け取ると、バッファリング処理部21-1についての処理を行う。例えば、制御部13は、読み出し対象の送信命令を保持部12に出力させるときに、保持部11における読み出し対象の送信命令についての優先度に対応する読み出しの番号の値を取得する。そして、制御部13は、読み出し対象の送信命令についての優先度に対応する先入先出部15の、取得された読み出しの番号の値が示す位置に保持されている、保持部12のアドレスを取得する。そして、制御部13は、取得された保持部12のアドレスに保持されている読み出し対象の送信命令を出力するように、保持部12を制御する。そして、制御部13は、出力された送信命令を保持部12からクリアする。そして、制御部13は、保持部11における読み出し対象の送信命令の優先度に対応する読み出しの番号の値をインクリメントする。
【0102】
<バッファリング装置の動作例>
以上の構成を有する第4実施形態におけるバッファリング装置10の処理動作の一例について説明する。
【0103】
(送信命令の書き込み処理)
図16は、第4実施形態におけるバッファリング装置の送信命令の書き込み処理を示すフローチャートである。
図17は、第4実施形態におけるバッファリング装置の送信命令の書き込み処理の説明に供する図である。なお、制御部13は、
図16の処理フローを宛先ポートごとに実行する。また、
図17の例では、保持部11がカウンタであり、保持部12がRAMである。
【0104】
制御部13は、処理対象の宛先ポートに対応する送信命令を受け取るまで待つ(ステップS51NO)。処理対象の宛先ポートに対応する送信命令を受け取ると(ステップS51YES)、制御部13は、送信命令の優先度を取得する(ステップS52)。なお、送信命令の優先度の情報は、送信命令に含まれていてもよい。
図17の例では、送信命令の優先度7が取得される。
【0105】
制御部13は、取得された送信命令の優先度に対応する書き込みの番号の値(Write Count)を、保持部11から取得する(ステップS53)。ここでは、いずれの優先度の送信命令も保持されていないので、書き込みの番号の値は「0x0000」となっている。
【0106】
制御部13は、書き込み対象の送信命令を保持部12の空きアドレスに保持させ、そして、この保持アドレスを取得する(ステップS54)。
図17の例では、保持部12のアドレス「0x000」が取得される。
【0107】
制御部13は、書き込み対象の送信命令についての優先度に対応する先入先出部15の、取得された書き込みの番号の値が示す位置(アドレス)に、取得された保持部12のアドレスを保持させる(ステップS55)。
図17の例では、優先度7に対応する先入先出部15-8のアドレス「0x0000」に、保持部12のアドレス「0x000」が保持される。
【0108】
制御部13は、保持部11における書き込み対象の送信命令についての優先度に対応する書き込みの番号の値をインクリメントする(ステップS56)。
図17の例では、優先度7に対応するWrite Countの値がインクリメントされることにより、「0x0000」から「0x0001」に更新される。
【0109】
(送信命令の読み出し処理)
図18は、第4実施形態におけるバッファリング装置の送信命令の読み出し処理を示すフローチャートである。
図19は、第4実施形態におけるバッファリング装置の送信命令の読み出し処理の説明に供する図である。なお、制御部13は、
図18の処理フローを宛先ポートごとに実行する。また、
図19の例では、保持部11がカウンタであり、保持部12がRAMである。
【0110】
制御部13は、処理対象の宛先ポートに対応する読み出しリクエストを受け取るまで待つ(ステップS61NO)。処理対象の宛先ポートに対応する読み出しリクエストを受け取ると(ステップS61YES)、制御部13は、読み出しリクエストによってリクエストされた優先度を取得する(ステップS62)。なお、読み出しリクエストによってリクエストされた優先度の情報は、読み出しリクエストに含まれてもよい。
【0111】
制御部13は、読み出しリクエストによってリクエストされた優先度に対応する読み出しの番号の値(Read Count)を、保持部11から取得する(ステップS63)。
【0112】
制御部13は、読み出しリクエストによってリクエストされた優先度に対応する先入先出部15の、取得された読み出しの番号の値が示す位置に保持されている、保持部12のアドレスを取得する(ステップS64)。
【0113】
制御部13は、取得された保持部12のアドレスに保持されている読み出し対象の送信命令を出力するように、保持部12を制御する(ステップS65)。
【0114】
制御部13は、出力された送信命令を保持部12からクリアする(ステップS66)。
【0115】
制御部13は、保持部11にける読み出し対象の送信命令の優先度に対応する読み出しの番号の値をインクリメントする(ステップS67)。
【0116】
<第4実施形態の変形例>
以上で説明した第1実施形態において「グルーピング基準」は優先度である。これに対しては、第1実施形態の変形例において「グルーピング基準」は優先度及び宛先ポートである。
【0117】
図20は、第4実施形態の変形例におけるバッファリング装置の一例を示すブロック図である。
図20においてバッファリング装置10は、保持部11と、保持部12と、先入先出部15-1-1~15-8-1,15-1-2~15-8-2,15-1-3~15-8-3,15-1-4~15-8-4とを有している。先入先出部15-1-1~15-8-1は、宛先ポート1の優先度0-7にそれぞれ対応している。また、先入先出部15-1-2~15-8-2は、宛先ポート2の優先度0-7にそれぞれ対応している。また、先入先出部15-1-3~15-8-3は、宛先ポート3の優先度0-7にそれぞれ対応している。また、先入先出部15-1-4~15-8-4は、宛先ポート4の優先度0-7にそれぞれ対応している。
【0118】
保持部11は、優先度及び宛先ポートの複数の組み合わせのそれぞれについて、書き込みの番号の値、及び、読み出しの番号の値を保持する。第4実施形態の変形例の保持部11において、或る優先度及び宛先ポートの組み合わせについての書き込みの番号の値及び読み出しの番号の値のそれぞれには、例えば、その優先度及び宛先ポートに対応する先入先出部15内のアドレスそのものが用いられる。
【0119】
保持部12は、優先度及び宛先ポートの組み合わせに関わりなく、フレームに対応する送信命令のすべてを保持する。
【0120】
制御部13は、書き込み対象の送信命令を保持部12に保持させるときに、保持部11における書き込み対象の送信命令についての優先度及び宛先ポートに対応する書き込みの番号の値を取得する。そして、制御部13は、書き込み対象の送信命令を保持部12の空きアドレスに保持させ、そして、この保持アドレスを取得する。そして、制御部13は、書き込み対象の送信命令についての優先度及び宛先ポートに対応する先入先出部15の、取得された書き込みの番号の値が示す位置(アドレス)に、取得された保持部12のアドレスを保持させる。そして、制御部13は、保持部11における書き込み対象の送信命令についての優先度及び宛先ポートに対応する書き込みの番号の値をインクリメントする。
【0121】
また、制御部13は、読み出し対象の送信命令を保持部12に出力させるときに、保持部11における読み出し対象の送信命令についての優先度及び宛先ポートに対応する読み出しの番号の値を取得する。そして、制御部13は、読み出し対象の送信命令についての優先度及び宛先ポートに対応する先入先出部15の、取得された読み出しの番号の値が示す位置に保持されている、保持部12のアドレスを取得する。そして、制御部13は、取得された保持部12のアドレスに保持されている読み出し対象の送信命令を出力するように、保持部12を制御する。そして、制御部13は、出力された送信命令を保持部12からクリアする。そして、制御部13は、保持部11における読み出し対象の送信命令の優先度及び宛先ポートに対応する読み出しの番号の値をインクリメントする。
【0122】
<第5実施形態>
第5実施形態は、テーブルの各エントリにおいて送信命令と該送信命令の優先度及び番号の値とを対応づけて、送信命令を管理する実施形態に関する。なお、第5実施形態におけるバッファリング装置の基本構成は、第2実施形態におけるバッファリング装置10の基本構成と同じなので、
図8を参照する。
【0123】
図21は、第5実施形態における第1保持部及び第2保持部の構成の説明に供する図である。
図21に示すように、第5実施形態の保持部11は、第2実施形態の保持部11と同じである。
【0124】
第5実施形態の保持部12は、複数のエントリを含むテーブルを保持している。各エントリは、送信命令と該送信命令の優先度及び番号(格納番号)の値とを対応づけて保持する。また、各エントリは、「占有情報(空情報)」を有していてもよい。
【0125】
第5実施形態の制御部13は、書き込み対象の送信命令を受け取ると、この送信命令の宛先ポート(つまり、送信命令に対応するフレームの宛先ポート)に対応するバッファリング処理部21についての処理を行う。また、制御部13は、読み出し対象の送信命令の宛先ポート(つまり、送信命令に対応するフレームの宛先ポート)に対応するバッファリング処理部21についての処理を行う。
【0126】
例えば、制御部13は、宛先ポート#1の書き込み対象の送信命令を受け取ると、バッファリング処理部21-1についての処理を行う。例えば、制御部13は、書き込み対象の送信命令を受け取ると、書き込み対象の送信命令の優先度を取得する。そして、制御部13は、取得された送信命令の優先度に対応する書き込みの番号の値を、保持部11から取得する。そして、制御部13は、書き込み対象の送信命令と、該送信命令についての優先度及び番号の値とを対応づけたエントリを、保持部12のテーブルに追加する。また、制御部13は、そのエントリの占有情報の値を「0」から「1」に変更してもよい。そして、制御部13は、保持部11における送信命令の優先度に対応する書き込みの番号の値をインクリメントする。
【0127】
また、例えば、制御部13は、宛先ポート#1の読み出しリクエストを受け取ると、バッファリング処理部21-1についての処理を行う。例えば、制御部13は、読み出し対象の送信命令を保持部12に出力させるときに、読み出し対象の送信命令についての優先度を取得する。そして、制御部13は、読み出し対象の送信命令についての優先度に対応する読み出しの番号の値を、保持部11から取得する。そして、制御部13は、読み出し対象の送信命令についての優先度及び番号の値に対応するエントリの送信命令を保持部12が出力するように、保持部12を制御する。また、制御部13は、そのエントリの占有情報の値を「1」から「0」に変更してもよい。そして、制御部13は、保持部11における送信命令の優先度に対応する読み出しの番号の値をインクリメントする。
【0128】
<第5実施形態の変形例>
以上で説明した第5実施形態において「グルーピング基準」は優先度である。これに対しては、第5実施形態の変形例において「グルーピング基準」は優先度及び宛先ポートである。
【0129】
図22は、第5実施形態の変形例におけるバッファリング装置の一例を示すブロック図である。
図22においてバッファリング装置10は、保持部11と、保持部12と、制御部13とを有している。
【0130】
第5実施形態の変形例の保持部11は、第2実施形態の変形例と同様に、優先度及び宛先ポートの複数の組み合わせのそれぞれについて、書き込みの番号の値、及び、読み出しの番号の値を保持する。
【0131】
第5実施形態の変形例の保持部12は、複数のエントリを含むテーブルを保持している。各エントリは、送信命令と該送信命令の優先度、宛先ポート、及び番号(格納番号)の値とを対応づけて保持する。また、各エントリは、「占有情報(空情報)」を有していてもよい。
【0132】
制御部13は、書き込み対象の送信命令を受け取ると、書き込み対象の送信命令の優先度及び宛先ポートを取得する。そして、制御部13は、取得された送信命令の優先度及び宛先ポートに対応する書き込みの番号の値を、保持部11から取得する。そして、制御部13は、書き込み対象の送信命令と、該送信命令についての優先度、宛先ポート、及び番号の値とを対応づけたエントリを、保持部12のテーブルに追加する。また、制御部13は、そのエントリの占有情報の値を「0」から「1」に変更してもよい。そして、制御部13は、保持部11における送信命令の優先度に対応する書き込みの番号の値をインクリメントする。
【0133】
また、制御部13は、読み出し対象の送信命令を保持部12に出力させるときに、読み出し対象の送信命令についての優先度及び宛先ポートを取得する。そして、制御部13は、読み出し対象の送信命令についての優先度及び宛先ポートに対応する読み出しの番号の値を、保持部11から取得する。そして、制御部13は、読み出し対象の送信命令についての優先度、宛先ポート、及び番号の値に対応するエントリの送信命令を保持部12が出力するように、保持部12を制御する。また、制御部13は、そのエントリの占有情報の値を「1」から「0」に変更してもよい。そして、制御部13は、保持部11における送信命令の優先度及び宛先ポートに対応する読み出しの番号の値をインクリメントする。
【0134】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【0135】
10 バッファリング装置
11 保持部(第1保持部)
12 保持部(第2保持部)
13 制御部
14 保持部(第3保持部)
15 先入先出部
21 バッファリング処理部
22 バッファリング処理部
23 バッファリング処理部