(57)【要約】【課題】複数のキューのうちの１個のキューにのみ格納されているデータを高速に読み出すことができるバス制御回路を提供することを課題とする。【解決手段】バス制御回路は、複数のエントリ（３０１〜３０４）と、第１のリードポインタ（ＲＰ１）と、第１のリードポインタが示すエントリと同じエントリを示すように設定されるチェックポインタ（ＣＰ）を有するとともに、先入れ先出しでデータをそれぞれ格納する複数のキュー（２０１）と、複数のキューから受け付けた複数の調停参加信号の調停をそれぞれ行い、複数の調停参加信号のうち１個の調停参加信号をそれぞれ出力する複数の第１の調停回路（２１１）と、複数の第１の調停回路がそれぞれ出力する調停参加信号を先入れ先出しでそれぞれ格納する複数のバッファ（２１７）と、複数のバッファがそれぞれ出力する調停参加信号の調停を行う第２の調停回路（２１３）を有する。【選択図】図４
2018124817.tif 000002
【特許請求の範囲】
【請求項１】
各々がデータを格納するための複数のエントリと、第１のリードポインタと、前記第１のリードポインタが示すエントリと同じエントリを示すように設定されるチェックポインタとを有するとともに、先入れ先出しでデータをそれぞれ格納する複数のキューと、
前記複数のキューからの調停参加信号を分割して受け付け、各々が、受け付けた前記複数の調停参加信号の調停をそれぞれ行い、前記複数の調停参加信号のうち１個の調停参加信号をそれぞれ出力する複数の第１の調停回路と、
前記複数の第１の調停回路がそれぞれ出力する調停参加信号を先入れ先出しでそれぞれ格納する複数のバッファと、
前記複数のバッファがそれぞれ出力する調停参加信号の調停を行い、前記複数のキューのうちの１個のキューに対応する調停結果信号を出力する第２の調停回路とを有するバス制御回路。
【請求項２】
前記複数のキューのうちの第１のキューは、前記チェックポインタが示すエントリにデータが格納されている場合には、第１の調停参加信号を前記第１の調停回路に出力し、
前記第１の調停回路は、前記第１の調停参加信号を入力し、前記第１の調停参加信号を前記バッファに出力し、
前記バッファは、前記第１の調停回路が出力する前記第１の調停参加信号を格納し、前記格納した前記第１の調停参加信号を前記第２の調停回路に出力し、
前記第１のキューは、前記第１の調停回路が前記第１の調停参加信号を出力した場合には、前記チェックポインタを更新し、前記更新したチェックポインタが示すエントリにデータが格納されている場合には、第２の調停参加信号を前記第１の調停回路に出力し、
前記第２の調停回路は、前記第１の調停参加信号を入力し、前記第１の調停参加信号に対応する前記第１のキューを示す調停結果信号を出力し、
前記第１の調停回路は、前記第２の調停参加信号を入力し、前記第２の調停参加信号を前記バッファに出力し、
前記バッファは、前記第１の調停回路が出力する前記第２の調停参加信号を格納し、前記格納した前記第２の調停参加信号を前記第２の調停回路に出力し、
前記第１のキューは、前記第２の調停回路が前記第１の調停参加信号に対応する前記第１のキューを示す調停結果信号を出力した場合には、前記第１のリードポインタが示すエントリのデータをバスに読み出し、前記第１のリードポインタを更新し、前記第１の調停回路が前記第２の調停参加信号を出力した場合には、前記チェックポインタを更新し、前記更新したチェックポインタが示すエントリにデータが格納されている場合には、第３の調停参加信号を前記第１の調停回路に出力する請求項１に記載のバス制御回路。
【請求項３】
前記複数のキューの各々は、第１のライトポインタを有し、
前記第１のキューは、前記チェックポインタが示すエントリと前記第１のライトポインタが示すエントリとが異なる場合には、前記チェックポインタが示すエントリにデータが格納されていると判断し、前記チェックポインタが示すエントリと前記第１のライトポインタが示すエントリとが同じ場合には、前記チェックポインタが示すエントリにデータが格納されていないと判断する請求項１又は２に記載のバス制御回路。
【請求項４】
前記複数のキューの各々は、データを入力した場合には、前記入力したデータを前記第１のライトポインタが示すエントリに格納し、前記第１のライトポインタを更新する請求項３に記載のバス制御回路。
【請求項５】
前記バッファは、複数のエントリと、第２のライトポインタと、第２のリードポインタとを有し、前記第２のライトポインタが示すエントリと同じエントリを示すように前記第２のリードポインタを設定し、前記第１の調停参加信号を前記第２のライトポインタが示すエントリに格納し、前記第２のライトポインタを更新し、前記第２のリードポインタが示すエントリに格納されている前記第１の調停参加信号を前記第２の調停回路に出力し、前記第２の調停回路が前記第１の調停参加信号に対応する前記第１のキューを示す調停結果信号を出力した場合には、前記第２のリードポインタを更新する請求項１乃至４のいずれか１項に記載のバス制御回路。
【請求項６】
前記第１のキューは、前記第２の調停回路が前記第１の調停参加信号に対応する前記第１のキューを示す調停結果信号を出力する前に、前記第２の調停参加信号を出力する請求項１乃至５のいずれか１項に記載のバス制御回路。
【請求項７】
前記第２の調停回路は、前記第２の調停参加信号を入力し、前記第２の調停参加信号に対応する前記第１のキューを示す調停結果信号を出力し、
前記第１の調停回路は、前記第３の調停参加信号を入力し、前記第３の調停参加信号を前記バッファに出力し、
前記バッファは、前記第１の調停回路が出力する前記第３の調停参加信号を格納し、前記格納した前記第３の調停参加信号を前記第２の調停回路に出力し、
前記第１のキューは、前記第２の調停回路が前記第２の調停参加信号に対応する前記第１のキューを示す調停結果信号を出力した場合には、前記第１のリードポインタが示すエントリのデータを前記バスに読み出し、前記第１のリードポインタを更新する請求項１乃至６のいずれか１項に記載のバス制御回路。
【請求項８】
前記第２の調停回路は、前記第３の調停参加信号を入力し、前記第３の調停参加信号に対応する前記第１のキューを示す調停結果信号を出力し、
前記第１のキューは、前記第２の調停回路が前記第３の調停参加信号に対応する前記第１のキューを示す調停結果信号を出力した場合には、前記第１のリードポインタが示すエントリのデータを前記バスに読み出し、前記第１のリードポインタを更新する請求項７に記載のバス制御回路。
【請求項９】
前記第１の調停回路は、前記第１の調停参加信号を入力し、他の調停参加信号を入力しない場合には、前記第１の調停参加信号を前記バッファに出力し、
前記第２の調停回路は、前記第１の調停参加信号を入力し、他の調停参加信号を入力しない場合には、前記第１の調停参加信号に対応する前記第１のキューを示す調停結果信号を出力する請求項１乃至８のいずれか１項に記載のバス制御回路。
【請求項１０】
前記第１の調停回路及び前記第２の調停回路は、ＬＲＵ（Least Recently Used）方式の調停を行う請求項１乃至９のいずれか１項に記載のバス制御回路。
【請求項１１】
バスと、
前記バスを介して接続される複数の演算処理装置とを有し、
前記複数の演算処理装置の各々は、バス制御回路を有し、
前記バス制御回路は、
各々がデータを格納するための複数のエントリと、第１のリードポインタと、前記第１のリードポインタが示すエントリと同じエントリを示すように設定されるチェックポインタとを有するとともに、先入れ先出しでデータをそれぞれ格納する複数のキューと、
前記複数のキューからの調停参加信号を分割して受け付け、各々が、受け付けた前記複数の調停参加信号の調停を行い、前記複数の調停参加信号のうち１個の調停参加信号をそれぞれ出力する複数の第１の調停回路と、
前記複数の第１の調停回路がそれぞれ出力する調停参加信号を先入れ先出しでそれぞれ格納する複数のバッファと、
前記複数のバッファがそれぞれ出力する調停参加信号の調停を行い、前記複数のキューのうちの１個のキューに対応する調停結果信号を出力する第２の調停回路とを有する情報処理装置。
【請求項１２】
バス制御回路の制御方法において、
各々がデータを格納するための複数のエントリと、第１のリードポインタと、前記第１のリードポインタが示すエントリと同じエントリを示すように設定されるチェックポインタとを有する、前記バス制御回路が有する複数のキューが、先入れ先出しでデータをそれぞれ格納し、
前記バス制御回路が有する複数の第１の調停回路が、前記複数のキューからの調停参加信号を分割して受け付け、各々が、受け付けた前記複数の調停参加信号の調停をそれぞれ行い、前記複数の調停参加信号のうち１個の調停参加信号をそれぞれ出力し、
前記バス制御回路が有する複数のバッファが、前記複数の第１の調停回路がそれぞれ出力する調停参加信号を先入れ先出しでそれぞれ格納し、
前記バス制御回路が有する第２の調停回路が、前記複数のバッファがそれぞれ出力する調停参加信号の調停を行い、前記複数のキューのうちの１個のキューに対応する調停結果信号を出力するバス制御回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バス制御回路、情報処理装置及びバス制御回路の制御方法に関する。
【背景技術】
【０００２】
複数の入力回線から到着するパケットを一つの出力回線に出力する出力調停手段を備えたパケット出力調停装置が知られている（特許文献１参照）。出力調停手段は、縦続に多段接続された複数のパケットスケジュール回路を備える。その一つのパケットスケジュール回路は、複数の入力回線または前段のパケットスケジュール回路の複数方路からそれぞれ読み出された複数のパケットをそれぞれ蓄積する複数のバッファを備える。この複数のバッファは、二以上のバッファを含む複数のグループに分類される。この複数のバッファは、それぞれ、初期値がゼロのカウンタと、計算手段と、選択手段と、加算手段と、読み出し手段と、リセット手段とを有する。計算手段は、バッファの先頭パケット長とカウンタ値との差を複数のバッファの個々についてそれぞれ計算する。選択手段は、計算手段の計算結果が最小値となるバッファを選択する。加算手段は、この最小値を上記の計算結果が最小値となるバッファ以外のバッファのカウンタ値にそれぞれ加算する。読み出し手段は、上記の計算結果が最小値となるバッファから当該バッファに格納された先頭パケットを出力回線または後段のパケットスケジュール回路に読み出す。リセット手段は、先頭パケットが読み出されたバッファのカウンタ値をゼロにリセットする。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−２５２６２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のバス制御回路は、それぞれキューが接続された複数の入力回線のうちの１個の入力回線に接続されたキューにのみパケットが存在する場合に最適化されておらず、このような場合には出力回線から出力されるパケットの速度が遅くなる。
【０００５】
１つの側面では、本発明の目的は、複数のキューのうちの１個のキューにのみデータが格納されている場合に、当該キューに格納されているデータを高速に読み出すことができるバス制御回路、情報処理装置及びバス制御回路の制御方法を提供することである。
【課題を解決するための手段】
【０００６】
バス制御回路は、各々がデータを格納するための複数のエントリと、第１のリードポインタと、前記第１のリードポインタが示すエントリと同じエントリを示すように設定されるチェックポインタとを有するとともに、先入れ先出しでデータをそれぞれ格納する複数のキューと、前記複数のキューからの調停参加信号を分割して受け付け、各々が、受け付けた前記複数の調停参加信号の調停をそれぞれ行い、前記複数の調停参加信号のうち１個の調停参加信号をそれぞれ出力する複数の第１の調停回路と、前記複数の第１の調停回路がそれぞれ出力する調停参加信号を先入れ先出しでそれぞれ格納する複数のバッファと、前記複数のバッファがそれぞれ出力する調停参加信号の調停を行い、前記複数のキューのうちの１個のキューに対応する調停結果信号を出力する第２の調停回路とを有する。
【発明の効果】
【０００７】
１つの側面では、複数のキューのうちの第１のキューにのみデータが格納されている場合に、第１のキューに格納されているデータを高速に読み出すことができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施形態による情報処理装置の構成例を示す図である。
【図２】図２は、図１のバス制御回路の構成例を示す図である。
【図３】図３（Ａ）は本実施形態による第１のキューの構成例を示す図であり、図３（Ｂ）は本実施形態によるバッファの構成例を示す図である。
【図４】図４（Ａ）及び（Ｂ）は、本実施形態によるバス制御回路の動作を説明するための図である。
【図５】図５（Ａ）及び（Ｂ）は、本実施形態によるバス制御回路の動作を説明するための図である。
【図６】図６は、本実施形態によるバス制御回路の動作を示すタイムチャートである。
【図７】図７（Ａ）は比較例による第１のキューの構成例を示す図であり、図７（Ｂ）は比較例によるバッファの構成例を示す図である。
【図８】図８（Ａ）及び（Ｂ）は、比較例によるバス制御回路の動作を説明するための図である。
【図９】図９（Ａ）及び（Ｂ）は、比較例によるバス制御回路の動作を説明するための図である。
【図１０】図１０は、比較例によるバス制御回路の動作を示すタイムチャートである。
【発明を実施するための形態】
【０００９】
図１は、本実施形態による情報処理装置１００の構成例を示す図である。情報処理装置１００は、例えば大規模集積回路（ＬＳＩ）であり、複数の演算処理装置１０１と、バス１０５とを有する。複数の演算処理装置１０１は、バス１０５を介して接続され、相互にパケットデータを入出力することができる。複数の演算処理装置１０１の各々は、プロセッサ１０２と、キャッシュ１０３と、バス制御回路１０４とを有する。プロセッサ１０２は、キャッシュ１０３に記憶されているパケットデータを読み出し、バス制御回路１０４を介して、その読み出したパケットデータをバス１０５に出力する。また、複数の演算処理装置１０１は、キャッシュ１０３のキャッシュコヒーレンシを担保するため、バス１０５を介して、相互にパケットデータを転送する。
【００１０】
図２は、図１のバス制御回路１０４の構成例を示す図である。バス制御回路１０４は、複数のキュー２０１〜２０ｎと、複数の第１の調停回路２１１，２１２と、複数のバッファ２１７，２１８と、第２の調停回路２１３とを有する。
【００１１】
プロセッサ１０２は、第１の仮想チャネルＶＣ１〜第ｎの仮想チャネルＶＣｎのパケットデータをそれぞれｎ個のキュー２０１〜２０ｎに格納する。ｎ個のキュー２０１〜２０ｎの各々は、先入れ先出し（ＦＩＦＯ：ファーストインファーストアウト）でパケットデータを格納する。例えば、第１のキュー２０１は、第１の仮想チャネルＶＣ１のパケットデータを格納する。第２のキュー２０２は、第２の仮想チャネルＶＣ２のパケットデータを格納する。第ｎのキュー２０ｎは、第ｎの仮想チャネルＶＣｎのパケットデータを格納する。複数のキュー２０１〜２０ｎは、それぞれ、パケットデータを格納している場合には、自己の仮想チャネル番号を含む調停参加信号Ａ１〜Ａｎを出力する。
【００１２】
複数の第１の調停回路２１１及び２１２は、複数のキュー２０１〜２０ｎからの調停参加信号Ａ１〜Ａｎを分割して受け付ける。複数の第１の調停回路２１１及び２１２の各々は、その受け付けた複数の調停参加信号の調停を行い、その受け付けた複数の調停参加信号のうちの１個の調停参加信号を出力する。
【００１３】
例えば、第１の調停回路２１１は、調停参加信号Ａ１〜Ａｍ（ｍ＝ｎ／２）の調停を行い、その受け付けた複数の調停参加信号Ａ１〜Ａｍのうちの１個の調停参加信号Ｂ１をバッファ２１７に出力する。具体的には、第１の調停回路２１１は、ＬＲＵ（Least Recently Used）フラグ２１４を用いて、ＬＲＵ方式の調停を行う。ＬＲＵフラグ２１４は、調停参加信号Ａ１〜Ａｍのうちの最も古い調停参加信号を表すためのフラグである。第１の調停回路２１１は、ＬＲＵフラグ２１４を用いて、複数の調停参加信号Ａ１〜Ａｍのうちの最も古い調停参加信号Ｂ１をバッファ２１７に出力する。
【００１４】
第１の調停回路２１２は、調停参加信号Ａｍ＋１〜Ａｎの調停を行い、その受け付けた複数の調停参加信号Ａｍ＋１〜Ａｎのうちの１個の調停参加信号Ｂ２をバッファ２１８に出力する。具体的には、第１の調停回路２１２は、ＬＲＵフラグ２１５を用いて、ＬＲＵ方式の調停を行う。ＬＲＵフラグ２１５は、調停参加信号Ａｍ＋１〜Ａｎのうちの最も古い調停参加信号を表すためのフラグである。第１の調停回路２１２は、ＬＲＵフラグ２１５を用いて、複数の調停参加信号Ａｍ＋１〜Ａｎのうちの最も古い調停参加信号Ｂ２をバッファ２１８に出力する。なお、第１の調停回路２１１及び２１２は、２個に限定されず、３個以上でもよい。
【００１５】
複数のバッファ２１７及び２１８は、複数の第１の調停回路２１１及び２１２が出力する調停参加信号Ｂ１及びＢ２をそれぞれ先入れ先出しで格納する。バッファ２１７は、第１の調停回路２１１が出力する調停参加信号Ｂ１を先入れ先出しで格納し、その格納した調停参加信号を調停参加信号Ｃ１として第２の調停回路２１３に出力する。バッファ２１８は、第１の調停回路２１２が出力する調停参加信号Ｂ２を先入れ先出しで格納し、その格納した調停参加信号を調停参加信号Ｃ２として第２の調停回路２１３に出力する。なお、バッファ２１７及び２１８は、第１の調停回路２１１及び２１２と同様に、２個に限定されず、３個以上でもよい。
【００１６】
第２の調停回路２１３は、複数のバッファ２１７及び２１８が出力する調停参加信号Ｃ１及びＣ２の調停を行うことにより、複数のキュー２０１〜２０ｎのうちの１個のキューを示す調停結果信号Ｄ１を出力する。例えば、第２の調停回路２１３は、ＬＲＵフラグ２１６を用いて、ＬＲＵ方式の調停を行う。ＬＲＵフラグ２１６は、調停参加信号Ａ１〜Ａｎのうちの最も古い調停参加信号を表すためのフラグである。第２の調停回路２１３は、ＬＲＵフラグ２１６を用いて、複数の調停参加信号Ｃ１及びＣ２のうちの最も古い調停参加信号に含まれる仮想チャネル番号のキューを示す調停結果信号Ｄ１を出力する。複数のキュー２０１〜２０ｎのうちで、調停結果信号Ｄ１が示すキューは、バス１０５の使用権を獲得し、格納しているパケットデータをバス１０５に読み出す。
【００１７】
また、第２の調停回路２１３が調停結果信号Ｄ１を出力した場合には、再び、複数のキュー２０１〜２０ｎは、それぞれ、パケットデータを格納している場合には、自己の仮想チャネル番号を含む調停参加信号Ａ１〜Ａｎを出力し、上記の処理を繰り返す。
【００１８】
仮に、ｎ個の仮想チャネルＶＣ１〜ＶＣｎに対応し、ｎ本のバス１０５を設けた場合には、バス１０５の数が多くなり、実装及び配線が困難になる。本実施形態では、調停回路２１１〜２１３を設けることにより、物理的に１本の共通のバス１０５で、複数の仮想チャネルＶＣ１〜ＶＣｎのパケットデータを転送することができる利点がある。また、バス制御回路１０４は、調停回路２１１〜２１３がＬＲＵ方式で調停を行うことにより、複数の仮想チャネルＶＣ１〜ＶＣｎに対して偏りなしで均等にパケットデータを転送することができる。
【００１９】
図３（Ａ）は、本実施形態による第１のキュー２０１の構成例を示す図である。他のキュー２０２〜２０ｎも第１のキュー２０１と同様の構成を有する。第１のキュー２０１は、パケットデータを格納するための複数のエントリ３０１〜３０４と、制御回路３０５と、第１のライトポインタＷＰ１と、第１のリードポインタＲＰ１と、チェックポインタＣＰとを有する。初期時、制御回路３０５は、同じエントリ３０１を示すように第１のライトポインタＷＰ１及び第１のリードポインタＲＰ１を設定し、第１のリードポインタＲＰ１が示すエントリ３０１と同じエントリを示すようにチェックポインタＣＰを設定する。すなわち、第１のライトポインタＷＰ１、第１のリードポインタＲＰ１及びチェックポインタＣＰは、同じエントリ３０１を示す。
【００２０】
第１のキュー２０１がプロセッサ１０２からパケットデータＤＡＴＡ１を入力すると、制御回路３０５は、第１のライトポインタＷＰ１が示すエントリ３０１にパケットデータＤＡＴＡ１を格納する。そして、制御回路３０５は、第１のライトポインタＷＰ１が次のエントリ３０２を示すように、第１のライトポインタＷＰ１を更新する。
【００２１】
次に、第１のキュー２０１がプロセッサ１０２からパケットデータＤＡＴＡ２を入力すると、制御回路３０５は、第２のライトポインタＷＰ１が示すエントリ３０２にパケットデータＤＡＴＡ２を格納する。そして、制御回路３０５は、第１のライトポインタＷＰ１が次のエントリ３０３を示すように、第１のライトポインタＷＰ１を更新する。
【００２２】
次に、第１のキュー２０１がプロセッサ１０２からパケットデータＤＡＴＡ３を入力すると、制御回路３０５は、第２のライトポインタＷＰ１が示すエントリ３０３にパケットデータＤＡＴＡ３を格納する。そして、制御回路３０５は、第１のライトポインタＷＰ１が次のエントリ３０４を示すように、第１のライトポインタＷＰ１を更新する。
【００２３】
図３（Ｂ）は、本実施形態によるバッファ２１７の構成例を示す図である。他のバッファ２１８もバッファ２１７と同様の構成を有する。バッファ２１７は、調停参加信号Ｂ１を格納するための複数のエントリ３１１，３１２と、制御回路３１３と、第２のライトポインタＷＰ２と、第２のリードポインタＲＰ２とを有し、先入れ先出しで調停参加信号Ｂ１を格納する。初期時、制御回路３１３は、第２のライトポインタＷＰ２及び第２のリードポインタＲＰ２が同じエントリ３１１を示すように、第２のライトポインタＷＰ２及び第２のリードポインタＲＰ２を設定する。すなわち、制御回路３１３は、第２のライトポインタＷＰ２が示すエントリ３１１と同じエントリを示すように第２のリードポインタＲＰ２を設定する。
【００２４】
次に、図４（Ａ）〜図６を参照しながら、本実施形態によるバス制御回路１０４の制御方法を説明する。図４（Ａ）、（Ｂ）及び図５（Ａ）、（Ｂ）は、本実施形態によるバス制御回路１０４の動作を説明するための図である。図６は、本実施形態によるバス制御回路１０４の動作を示すタイムチャートである。
【００２５】
図４（Ａ）に示すように、第１のキュー２０１は、３個のパケットデータＤＡＴＡ１〜ＤＡＴＡ３を格納し、他のキュー２０２〜２０ｎは、パケットデータを格納していない場合を説明する。このように、１個のキュー２０１にのみパケットデータが格納されている場合にも、第１のキュー２０１は、パケットデータＤＡＴＡ１〜ＤＡＴＡ３を高速に読み出すことができる例を以下に説明する。
【００２６】
サイクルｔ１では、制御回路３０５は、チェックポインタＣＰが示すエントリ３０１にパケットデータが格納されているか否かを判断する。具体的には、制御回路３０５は、チェックポインタＣＰが示すエントリと第１のライトポインタＷＰ１が示すエントリとが異なる場合には、チェックポインタＣＰが示すエントリにパケットデータが格納されていると判断する。これに対し、制御回路３０５は、チェックポインタＣＰが示すエントリと第１のライトポインタＷＰ１が示すエントリとが同じ場合には、チェックポインタＣＰが示すエントリにパケットデータが格納されていないと判断する。
【００２７】
図４（Ａ）に示すように、制御回路３０５は、チェックポインタＣＰが示すエントリ３０１と第１のライトポインタＷＰ１が示すエントリ３０４とが異なるので、チェックポインタＣＰが示すエントリ３０１にパケットデータＤＡＴＡ１が格納されていると判断する。その場合、制御回路３０５は、第１の仮想チャネルＶＣ１のチャネル番号を含む第１の調停参加信号ｄｔ１を第１の調停回路２１１に出力する。なお、キュー２０２〜２０ｎは、パケットデータを格納していないため、調停参加信号Ａ２〜Ａｎを出力しない。
【００２８】
第１の調停回路２１１は、第１の調停参加信号ｄｔ１を入力し、他の調停参加信号Ａ２〜Ａｎを入力しないので、第１の調停参加信号ｄｔ１をバッファ２１７に出力する。
【００２９】
制御回路３１３は、第２のライトポインタＷＰ２が示すエントリ３１１に、第１の調停回路２１１が出力する第１の調停参加信号ｄｔ１を格納し、図４（Ｂ）に示すように、第２のライトポインタＷＰ２が次のエントリ３１２を示すように第２のライトポインタＷＰ２を更新する。また、制御回路３０５は、図４（Ａ）に示すように、第１の調停回路２１１が第１の調停参加信号ｄｔ１を出力した場合には、図４（Ｂ）に示すように、チェックポインタＣＰが次のエントリ３０２を示すようにチェックポインタＣＰを更新する。
【００３０】
サイクルｔ２では、制御回路３０５は、チェックポインタＣＰが示すエントリ３０２にパケットデータが格納されているか否かを判断する。制御回路３０５は、チェックポインタＣＰが示すエントリ３０２と第１のライトポインタＷＰ１が示すエントリ３０４とが異なるので、チェックポインタＣＰが示すエントリ３０２にパケットデータＤＡＴＡ２が格納されていると判断する。その場合、制御回路３０５は、第１の仮想チャネルＶＣ１のチャネル番号を含む第２の調停参加信号ｄｔ２を第１の調停回路２１１に出力する。なお、キュー２０２〜２０ｎは、パケットデータを格納していないため、調停参加信号Ａ２〜Ａｎを出力しない。
【００３１】
第１の調停回路２１１は、第２の調停参加信号ｄｔ２を入力し、他の調停参加信号Ａ２〜Ａｎを入力しないので、第２の調停参加信号ｄｔ２をバッファ２１７に出力する。
【００３２】
制御回路３１３は、第２のリードポインタＲＰ２が示すエントリ３１１に調停参加信号が格納されているか否かを判断する。具体的には、制御回路３１３は、第２のリードポインタＲＰ２が示すエントリと第２のライトポインタＷＰ２が示すエントリとが異なる場合には、第２のリードポインタＲＰ２が示すエントリに調停参加信号が格納されていると判断する。これに対し、制御回路３１３は、第２のリードポインタＲＰ２が示すエントリと第２のライトポインタＷＰ２が示すエントリとが同じ場合には、第２のリードポインタＲＰ２が示すエントリに調停参加信号が格納されていないと判断する。
【００３３】
図４（Ｂ）に示すように、制御回路３１３は、第２のリードポインタＲＰ２が示すエントリ３１１と第２のライトポインタＷＰ２が示すエントリ３１２とが異なるので、第２のリードポインタＲＰ２が示すエントリ３１１に第１の調停参加信号ｄｔ１が格納されていると判断する。その場合、制御回路３１３は、第２のリードポインタＲＰ２が示すエントリ３１１に格納されている第１の調停参加信号ｄｔ１を読み出し、その読み出した第１の調停参加信号ｄｔ１を第２の調停回路２１３に出力する。なお、バッファ２１８は、調停参加信号を格納していないため、調停参加信号Ｃ２を出力しない。
【００３４】
第２の調停回路２１３は、第１の調停参加信号ｄｔ１を入力し、他の調停参加信号Ｃ２を入力しないので、第１の調停参加信号ｄｔ１に対応する第１のキュー２０１（第１の仮想チャネルＶＣ１）を示す調停結果信号を出力する。
【００３５】
第２の調停回路２１３は、第２の調停回路２１３が第１の調停参加信号ｄｔ１に対応する第１のキュー２０１を示す調停結果信号を出力した場合には、第１のキュー２０１の調停参加信号が最新を示すように、ＬＲＵフラグ２１６を更新する。同様に、第１の調停回路２１１は、第２の調停回路２１３が第１の調停参加信号ｄｔ１に対応する第１のキュー２０１を示す調停結果信号を出力した場合には、第１のキュー２０１の調停参加信号が最新を示すように、ＬＲＵフラグ２１４を更新する。
【００３６】
制御回路３１３は、第２の調停回路２１３が第１の調停参加信号ｄｔ１に対応する第１のキュー２０１を示す調停結果信号を出力した場合には、図５（Ａ）に示すように、第２のリードポインタＲＰ２が次のエントリ３１２を示すように第２のリードポインタＲＰ２を更新する。
【００３７】
第１のキュー２０１の制御回路３０５は、図４（Ｂ）に示すように、第２の調停回路２１３が第１の調停参加信号ｄｔ１に対応する第１のキュー２０１を示す調停結果信号を出力した場合には、バス１０５の使用権を獲得し、第１のリードポインタＲＰ１が示すエントリ３０１のパケットデータＤＡＴＡ１をバス１０５に読み出す。そして、制御回路３０５は、図５（Ａ）に示すように、第１のリードポインタＲＰ１が次のエントリ３０２を示すように第１のリードポインタＲＰ１を更新する。
【００３８】
制御回路３１３は、図４（Ｂ）及び図５（Ａ）に示すように、第１の調停回路２１１が出力する第２の調停参加信号ｄｔ２を、第２のライトポインタＷＰ２が示すエントリ３１２に格納し、第２のライトポインタＷＰ２が次のエントリ３１１を示すように第２のライトポインタＷＰ２を更新する。また、制御回路３０５は、図４（Ｂ）に示すように、第１の調停回路２１１が第２の調停参加信号ｄｔ２を出力した場合には、図５（Ａ）に示すように、チェックポインタＣＰが次のエントリ３０３を示すようにチェックポインタＣＰを更新する。
【００３９】
サイクルｔ３では、図５（Ａ）に示すように、制御回路３０５は、チェックポインタＣＰが示すエントリ３０３にパケットデータが格納されているか否かを判断する。制御回路３０５は、チェックポインタＣＰが示すエントリ３０３と第１のライトポインタＷＰ１が示すエントリ３０４とが異なるので、チェックポインタＣＰが示すエントリ３０３にパケットデータＤＡＴＡ３が格納されていると判断する。その場合、制御回路３０５は、第１の仮想チャネルＶＣ１のチャネル番号を含む第３の調停参加信号ｄｔ３を第１の調停回路２１１に出力する。なお、キュー２０２〜２０ｎは、パケットデータを格納していないため、調停参加信号Ａ２〜Ａｎを出力しない。
【００４０】
第１の調停回路２１１は、第３の調停参加信号ｄｔ３を入力し、他の調停参加信号Ａ２〜Ａｎを入力しないので、第３の調停参加信号ｄｔ３をバッファ２１７に出力する。
【００４１】
制御回路３１３は、第２のリードポインタＲＰ２が示すエントリ３１２に調停参加信号が格納されているか否かを判断する。制御回路３１３は、第２のリードポインタＲＰ２が示すエントリ３１２と第２のライトポインタＷＰ２が示すエントリ３１１とが異なるので、第２のリードポインタＲＰ２が示すエントリ３１２に第２の調停参加信号ｄｔ２が格納されていると判断する。その場合、制御回路３１３は、第２のリードポインタＲＰ２が示すエントリ３１２に格納されている第２の調停参加信号ｄｔ２を読み出し、その読み出した第２の調停参加信号ｄｔ２を第２の調停回路２１３に出力する。なお、バッファ２１８は、調停参加信号を格納していないため、調停参加信号Ｃ２を出力しない。
【００４２】
第２の調停回路２１３は、第２の調停参加信号ｄｔ２を入力し、他の調停参加信号Ｃ２を入力しないので、第２の調停参加信号ｄｔ２に対応する第１のキュー２０１（第１の仮想チャネルＶＣ１）を示す調停結果信号を出力する。
【００４３】
第２の調停回路２１３は、第２の調停回路２１３が第２の調停参加信号ｄｔ２に対応する第１のキュー２０１を示す調停結果信号を出力した場合には、第１のキュー２０１の調停参加信号が最新を示すように、ＬＲＵフラグ２１６を更新する。同様に、第１の調停回路２１１は、第２の調停回路２１３が第２の調停参加信号ｄｔ２に対応する第１のキュー２０１を示す調停結果信号を出力した場合には、第１のキュー２０１の調停参加信号が最新を示すように、ＬＲＵフラグ２１４を更新する。
【００４４】
制御回路３１３は、第２の調停回路２１３が第２の調停参加信号ｄｔ２に対応する第１のキュー２０１を示す調停結果信号を出力した場合には、図５（Ｂ）に示すように、第２のリードポインタＲＰ２が次のエントリ３１１を示すように第２のリードポインタＲＰ２を更新する。
【００４５】
第１のキュー２０１の制御回路３０５は、図５（Ａ）に示すように、第２の調停回路２１３が第２の調停参加信号ｄｔ２に対応する第１のキュー２０１を示す調停結果信号を出力した場合には、バス１０５の使用権を獲得し、第１のリードポインタＲＰ１が示すエントリ３０２のパケットデータＤＡＴＡ２をバス１０５に読み出す。そして、制御回路３０５は、図５（Ｂ）に示すように、第１のリードポインタＲＰ１が次のエントリ３０３を示すように第１のリードポインタＲＰ１を更新する。
【００４６】
制御回路３１３は、図５（Ａ）及び（Ｂ）に示すように、第１の調停回路２１１が出力する第３の調停参加信号ｄｔ３を、第２のライトポインタＷＰ２が示すエントリ３１１に格納し、第２のライトポインタＷＰ２が次のエントリ３１２を示すように第２のライトポインタＷＰ２を更新する。また、制御回路３０５は、図５（Ａ）に示すように、第１の調停回路２１１が第３の調停参加信号ｄｔ３を出力した場合には、図５（Ｂ）に示すように、チェックポインタＣＰが次のエントリ３０４を示すようにチェックポインタＣＰを更新する。
【００４７】
サイクルｔ４では、図５（Ｂ）に示すように、制御回路３０５は、チェックポインタＣＰが示すエントリ３０４にパケットデータが格納されているか否かを判断する。制御回路３０５は、チェックポインタＣＰが示すエントリ３０４と第１のライトポインタＷＰ１が示すエントリ３０４とが同じであるので、チェックポインタＣＰが示すエントリ３０４にパケットデータが格納されていないと判断する。その場合、制御回路３０５は、調停参加信号を出力しない。
【００４８】
制御回路３１３は、第２のリードポインタＲＰ２が示すエントリ３１１に調停参加信号が格納されているか否かを判断する。制御回路３１３は、第２のリードポインタＲＰ２が示すエントリ３１１と第２のライトポインタＷＰ２が示すエントリ３１２とが異なるので、第２のリードポインタＲＰ２が示すエントリ３１１に第３の調停参加信号ｄｔ３が格納されていると判断する。その場合、制御回路３１３は、第２のリードポインタＲＰ２が示すエントリ３１１に格納されている第３の調停参加信号ｄｔ３を読み出し、その読み出した第３の調停参加信号ｄｔ３を第２の調停回路２１３に出力する。なお、バッファ２１８は、調停参加信号を格納していないため、調停参加信号Ｃ２を出力しない。
【００４９】
第２の調停回路２１３は、第３の調停参加信号ｄｔ３を入力し、他の調停参加信号Ｃ２を入力しないので、第３の調停参加信号ｄｔ３に対応する第１のキュー２０１（第１の仮想チャネルＶＣ１）を示す調停結果信号を出力する。
【００５０】
第２の調停回路２１３は、第２の調停回路２１３が第３の調停参加信号ｄｔ３に対応する第１のキュー２０１を示す調停結果信号を出力した場合には、第１のキュー２０１の調停参加信号が最新を示すように、ＬＲＵフラグ２１６を更新する。同様に、第１の調停回路２１１は、第２の調停回路２１３が第３の調停参加信号ｄｔ３に対応する第１のキュー２０１を示す調停結果信号を出力した場合には、第１のキュー２０１の調停参加信号が最新を示すように、ＬＲＵフラグ２１４を更新する。
【００５１】
制御回路３１３は、第２の調停回路２１３が第３の調停参加信号ｄｔ３に対応する第１のキュー２０１を示す調停結果信号を出力した場合には、第２のリードポインタＲＰ２が次のエントリ３１２を示すように第２のリードポインタＲＰ２を更新する。
【００５２】
第１のキュー２０１の制御回路３０５は、図５（Ｂ）に示すように、第２の調停回路２１３が第３の調停参加信号ｄｔ３に対応する第１のキュー２０１を示す調停結果信号を出力した場合には、バス１０５の使用権を獲得し、第１のリードポインタＲＰ１が示すエントリ３０３のパケットデータＤＡＴＡ３をバス１０５に読み出す。そして、制御回路３０５は、第１のリードポインタＲＰ１が次のエントリ３０４を示すように第１のリードポインタＲＰ１を更新する。
【００５３】
図６に示すように、サイクルｔ２では、第２の調停回路２１３は、第１の調停参加信号ｄｔ１に対応する調停結果信号を出力し、制御回路３０５は、その調停結果信号を入力し、エントリ３０１のパケットデータＤＡＴＡ１をバス１０５に読み出す。サイクルｔ３では、第２の調停回路２１３は、第２の調停参加信号ｄｔ２に対応する調停結果信号を出力し、制御回路３０５は、その調停結果信号を入力し、エントリ３０２のパケットデータＤＡＴＡ２をバス１０５に読み出す。サイクルｔ４では、第２の調停回路２１３は、第３の調停参加信号ｄｔ３に対応する調停結果信号を出力し、制御回路３０５は、その調停結果信号を入力し、エントリ３０３のパケットデータＤＡＴＡ３をバス１０５に読み出す。
【００５４】
制御回路３０５は、第２の調停回路２１３が第１の調停参加信号ｄｔ１に対応する第１のキュー２０１を示す調停結果信号を出力する前に、第２の調停参加信号ｄｔ２を出力する。同様に、制御回路３０５は、第２の調停回路２１３が第２の調停参加信号ｄｔ２に対応する第１のキュー２０１を示す調停結果信号を出力する前に、第３の調停参加信号ｄｔ３を出力する。
【００５５】
上記のように、制御回路３０５は、３個のパケットデータＤＡＴＡ１〜ＤＡＴＡ３を３サイクルｔ２〜ｔ４でバス１０５に読み出す。すなわち、制御回路３０５は、１サイクル毎にパケットデータをバス１０５に読み出すことができる。バス制御回路１０４は、チェックポインタＣＰを設けることにより、パケットデータＤＡＴＡ１〜ＤＡＴＡ３を連続してバス１０５に読み出すことができる。以下、バス制御回路１０４がチェックポインタＣＰを設けることの効果を、図７（Ａ）〜図１０の比較例のバス制御回路１０４と比較しながら、説明する。
【００５６】
図７（Ａ）は、比較例による第１のキュー２０１の構成例を示す図である。図７（Ａ）の第１のキュー２０１は、図３（Ａ）の第１のキュー２０１に対して、チェックポインタＣＰが削除されている。
【００５７】
図７（Ｂ）は、比較例によるバッファ２１７の構成例を示す図である。図７（Ｂ）のバッファ２１７は、図３（Ｂ）のバッファ２１７に対して、エントリ３１２と第２のライトポインタＷＰ２と第２のリードポインタＲＰ２が削除されている。
【００５８】
次に、図８（Ａ）〜図１０を参照しながら、比較例によるバス制御回路１０４の制御方法を説明する。図８（Ａ）、（Ｂ）及び図９（Ａ）、（Ｂ）は、比較例によるバス制御回路１０４の動作を説明するための図である。図１０は、比較例によるバス制御回路１０４の動作を示すタイムチャートである。
【００５９】
図８（Ａ）に示すように、サイクルｔ１では、制御回路３０５は、第１のリードポインタＲＰ１が示すエントリ３０１にパケットデータＤＡＴＡ１が格納されているので、第１の調停参加信号ｄｔ１を第１の調停回路２１１に出力する。第１の調停回路２１１は、第１の調停参加信号ｄｔ１を入力し、他の調停参加信号Ａ２〜Ａｎを入力しないので、第１の調停参加信号ｄｔ１をバッファ２１７に出力する。制御回路３１３は、図８（Ａ）及び（Ｂ）に示すように、第１の調停回路２１１が出力する第１の調停参加信号ｄｔ１をエントリ３１１に格納する。
【００６０】
サイクルｔ２では、図８（Ｂ）に示すように、制御回路３１３は、エントリ３１１に格納されている第１の調停参加信号ｄｔ１を読み出し、その読み出した第１の調停参加信号ｄｔ１を第２の調停回路２１３に出力する。
【００６１】
第２の調停回路２１３は、第１の調停参加信号ｄｔ１を入力し、他の調停参加信号Ｃ２を入力しないので、第１の調停参加信号ｄｔ１に対応する第１のキュー２０１（第１の仮想チャネルＶＣ１）を示す調停結果信号を出力する。
【００６２】
第１のキュー２０１の制御回路３０５は、第２の調停回路２１３が第１の調停参加信号ｄｔ１に対応する第１のキュー２０１を示す調停結果信号を出力した場合には、第１のリードポインタＲＰ１が示すエントリ３０１のパケットデータＤＡＴＡ１をバス１０５に読み出す。そして、制御回路３０５は、図９（Ａ）に示すように、第１のリードポインタＲＰ１が次のエントリ３０２を示すように第１のリードポインタＲＰ１を更新する。
【００６３】
サイクルｔ３では、制御回路３０５は、第１のリードポインタＲＰ１が示すエントリ３０２にパケットデータＤＡＴＡ２が格納されているので、第２の調停参加信号ｄｔ２を第１の調停回路２１１に出力する。第１の調停回路２１１は、第２の調停参加信号ｄｔ２を入力し、他の調停参加信号Ａ２〜Ａｎを入力しないので、第２の調停参加信号ｄｔ２をバッファ２１７に出力する。制御回路３１３は、図９（Ａ）及び（Ｂ）に示すように、第１の調停回路２１１が出力する第２の調停参加信号ｄｔ２をエントリ３１１に格納する。
【００６４】
サイクルｔ４では、図９（Ｂ）に示すように、制御回路３１３は、エントリ３１１に格納されている第２の調停参加信号ｄｔ２を読み出し、その読み出した第２の調停参加信号ｄｔ２を第２の調停回路２１３に出力する。
【００６５】
第２の調停回路２１３は、第２の調停参加信号ｄｔ２を入力し、他の調停参加信号Ｃ２を入力しないので、第２の調停参加信号ｄｔ２に対応する第１のキュー２０１（第１の仮想チャネルＶＣ１）を示す調停結果信号を出力する。
【００６６】
第１のキュー２０１の制御回路３０５は、第２の調停回路２１３が第２の調停参加信号ｄｔ２に対応する第１のキュー２０１を示す調停結果信号を出力した場合には、第１のリードポインタＲＰ１が示すエントリ３０２のパケットデータＤＡＴＡ２をバス１０５に読み出す。
【００６７】
図１０に示すように、サイクルｔ２では、第２の調停回路２１３は、第１の調停参加信号ｄｔ１に対応する調停結果信号を出力し、制御回路３０５は、その調停結果信号を入力し、エントリ３０１のパケットデータＤＡＴＡ１をバス１０５に読み出す。サイクルｔ４では、第２の調停回路２１３は、第２の調停参加信号ｄｔ２に対応する調停結果信号を出力し、制御回路３０５は、その調停結果信号を入力し、エントリ３０２のパケットデータＤＡＴＡ２をバス１０５に読み出す。制御回路３０５は、第２の調停回路２１３が第１の調停参加信号ｄｔ１に対応する第１のキュー２０１を示す調停結果信号を出力した後に、第２の調停参加信号ｄｔ２を出力する。上記のように、比較例による制御回路３０５は、２サイクル毎に、パケットデータをバス１０５に読み出す。
【００６８】
これに対し、図７に示すように、本実施形態による制御回路３０５は、１サイクル毎にパケットデータをバス１０５に読み出すことができる。図７の制御回路３０５は、図１０の制御回路３０５に対して、２倍の速度でパケットデータをバス１０５に読み出すことができ、スループットが２倍になる。本実施形態のバス制御回路１０４は、複数のキュー２０１〜２０ｎのうちの第１のキュー２０１にのみデータが格納されている場合に、第１のキュー２０１に格納されているパケットデータを高速に読み出すことができる。
【００６９】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００７０】
１００  情報処理装置
１０１  演算処理装置
１０２  プロセッサ
１０３  キャッシュ
１０４  バス制御回路
１０５  バス
２０１〜２０ｎ  キュー
２１１，２１２  第１の調停回路
２１３  第２の調停回路
２１４〜２１６  ＬＲＵフラグ
２１７，２１８  バッファ
３０１〜３０４  エントリ
３０５  制御回路
３１１，３１２  エントリ
３１３  制御回路
ＣＰ  チェックポインタ
ＷＰ１  第１のライトポインタ
ＲＰ１  第１のリードポインタ
ＷＰ２  第２のライトポインタ
ＲＰ２  第２のリードポインタ
【図１】
2018124817.tif 000003
【図２】
2018124817.tif 000004
【図３】
2018124817.tif 000005
【図４】
2018124817.tif 000006
【図５】
2018124817.tif 000007
【図６】
2018124817.tif 000008
【図７】
2018124817.tif 000009
【図８】
2018124817.tif 000010
【図９】
2018124817.tif 000011
【図１０】
2018124817.tif 000012