(57)【特許請求の範囲】
【請求項１】
入力された第１のデータを保持して出力する第１の記憶回路と、
入力された第２のデータを保持して出力する第２の記憶回路と、
前記第１及び第２の記憶回路の出力に接続されるとともに、第１の選択信号に基づいて、前記第１又は第２のデータを選択して出力する第１の選択回路と、
前記第１の選択回路が前記第１のデータを選択して出力するまでの第１の期間情報を計数する第１の計数回路と、
前記第１の選択回路が前記第２のデータを選択して出力するまでの第２の期間情報を計数する第２の計数回路と、
前記第１及び第２の計数回路の出力に接続されるとともに、前記第１の選択信号に基づいて、前記第１又は第２の期間情報を選択して出力する第２の選択回路と、
前記第１及び第２の期間情報に基づいて、前記第１の選択信号を出力する第１の制御回路と、
前記第１の選択回路が選択して出力する前記第１又第２のデータのいずれかを保持して出力する第３の記憶回路と、
入力された第３のデータを保持して出力する第４の記憶回路と、
前記第３及び第４の記憶回路に接続されるとともに、第２の選択信号に基づいて、前記第１の選択回路が選択して出力する前記第１又は第２のデータのいずれか又は第３のデータを選択して出力する第３の選択回路と、
前記第３の選択回路が前記第１又は第２のデータのいずれかを選択して出力するまでの第３の期間情報を計数する第３の計数回路と、
前記第３の選択回路が前記第３のデータを選択して出力するまでの第４の期間情報を計数する第４の計数回路と、
前記第１の選択回路が前記第１のデータを選択し前記第２の選択回路が前記第１の期間情報を選択した場合、前記第１の期間情報に前記第３の期間情報を加算した期間情報を、前記第４の期間情報と比較し、前記第１又は第３のデータのうち期間情報が大きい方のデータを前記第３の選択回路に選択させる前記第２の選択信号を出力し、前記第１の選択回路が前記第２のデータを選択し前記第２の選択回路が前記第２の期間情報を選択した場合、前記第２の期間情報に前記第３の期間情報を加算した期間情報を、前記第４の期間情報と比較し、前記第２又は第３のデータのうち期間情報が大きい方のデータを前記第３の選択回路に選択させる前記第２の選択信号を出力する第２の制御回路を有することを特徴とする調停装置。
【請求項２】
前記第２の制御回路は、前記第１又は第２の期間情報のいずれかに前記第３の期間情報を加算した期間情報と前記第４の期間情報とが一致する場合、前記第１又は第２のデータ若しくは前記第３のデータのうち前回選択したデータと異なるデータを前記第３の選択回路に選択させる前記第２の選択信号を出力することを特徴とする請求項１記載の調停装置。
【請求項３】
前記第１の計数回路は、前記第１の選択回路が、前記第１のデータを選択した場合に、前記第１の期間情報を初期化し、
前記第２の計数回路は、前記第１の選択回路が、前記第２のデータを選択した場合に、前記第２の期間情報を初期化し、
前記第３の計数回路は、前記第１の選択回路が選択した前記第１又は第２のデータのいずれかを、前記第３の選択回路が選択した場合に、前記第３の期間情報を初期化し、
前記第４の計数回路は、前記第３の選択回路が、前記第３のデータを選択した場合に、前記第４の期間情報を初期化することを特徴とする請求項１又は２記載の調停装置。
【請求項４】
入力された第１のデータを保持して出力する第１の記憶回路と、
入力された第２のデータを保持して出力する第２の記憶回路と、
前記第１及び第２の記憶回路の出力に接続されるとともに、第１の選択信号に基づいて、前記第１又は第２のデータを選択して出力する第１の選択回路と、
前記第１の選択回路が前記第１のデータを選択して出力するまでの第１の期間情報を計数する第１の計数回路と、
前記第１の選択回路が前記第２のデータを選択して出力するまでの第２の期間情報を計数する第２の計数回路と、
前記第１及び第２の計数回路の出力に接続されるとともに、前記第１の選択信号に基づいて、前記第１又は第２の期間情報を選択して出力する第２の選択回路と、
前記第１及び第２の期間情報に基づいて、前記第１の選択信号を出力する第１の制御回路と、
前記第２の選択回路の出力に接続されるとともに、前記第１又は第２の期間情報に基づいて、前記第１又は第２のデータについての優先度情報を生成して出力する優先度付け回路と、
前記優先度付け回路が出力する前記優先度情報を保持して出力する優先度記憶回路と、
前記第１の選択回路が選択して出力する前記第１又第２のデータのいずれかを保持して出力する第３の記憶回路と、
入力された第３のデータを保持して出力する第４の記憶回路と、
前記第３及び第４の記憶回路に接続されるとともに、第２の選択信号に基づいて、前記第１の選択回路が選択して出力する前記第１又は第２のデータのいずれか又は第３のデータを選択して出力する第３の選択回路と、
前記第３の選択回路が前記第１又は第２のデータのいずれかを選択して出力するまでの第３の期間情報を計数する第３の計数回路と、
前記第３の選択回路が前記第３のデータを選択して出力するまでの第４の期間情報を計数する第４の計数回路と、
前記第１の選択回路が前記第１のデータを選択し前記第２の選択回路が前記第１の期間情報を選択した場合、前記優先度付け回路が前記第１の期間情報を第１の期間情報境界値と比較した結果に基づいて生成する前記第１のデータについての優先度情報と、前記第３のデータについてあらかじめ設定された優先度情報とに基づいて、前記第１又は第３のデータを前記第３の選択回路に選択させる前記第２の選択信号を出力し、前記第１の選択回路が前記第２のデータを選択し前記第２の選択回路が前記第２の期間情報を選択した場合、前記優先度付け回路が前記第２の期間情報を第２の期間情報境界値と比較した結果に基づいて生成する前記第２のデータについての優先度情報と、前記第３のデータについてあらかじめ設定された優先度情報とに基づいて、前記第２又は第３のデータを前記第３の選択回路に選択させる前記第２の選択信号を出力する第２の制御回路を有することを特徴とする調停装置。
【請求項５】
前記第２の制御回路は、前記優先度付け回路が出力する前記第１又は第２のデータについての優先度情報と、前記第３のデータについてあらかじめ設定された優先度情報とを比較し、比較により得られる第１の結果に基づいて、前記第１又は第２のデータのいずれか又は第３のデータを前記第３の選択回路に選択させる前記第２の選択信号を出力することを特徴とする請求項４記載の調停装置。
【請求項６】
前記第２の制御回路は、前記第１の結果からでは、前記第１又は第２のデータのいずれか又は第３のデータを選択することができない場合、前記第１又は第２のデータのいずれか又は第３のデータのうち、前回選択したデータと異なるデータを前記第３の選択回路に選択させる前記第２の選択信号を出力することを特徴とする請求項５記載の調停装置。
【請求項７】
データを保持して出力する第１の記憶回路に、第１のデータを保持して選択されると出力するステップと、
前記第１のデータが選択されて出力されるまでの第１の期間情報を計数するステップと、
データを保持して出力する第２の記憶回路に、第２のデータを保持して選択されると出力するステップと、
前記第２のデータが選択されて出力されるまでの第２の期間情報を計数するステップと、
前記第１及び第２の期間情報に基づいて、第１の選択信号を出力するステップと、
前記第１の選択信号に基づいて、前記第１又は第２のデータを選択して出力するステップと、
前記第１の選択信号に基づいて、前記第１又は第２の期間情報を選択して出力するステップと、
データを保持して出力する第３の記憶回路に、選択されて出力された前記第１又第２のデータのいずれかを保持して選択されると出力するステップと、
前記第１又は第２のデータのいずれかが選択されて出力されるまでの第３の期間情報を計数するステップと、
データを保持して出力する第４の記憶回路に、第３のデータを保持して選択されると出力するステップと、
前記第３のデータが選択されて出力されるまでの第４の期間情報を計数するステップと、
前記第１の選択信号に基づいて前記第１のデータと前記第１の期間情報とが選択された場合、前記第１の期間情報に前記第３の期間情報を加算した期間情報を、前記第４の期間情報と比較し、前記第１又は第３のデータのうち期間情報が大きい方のデータを選択させる第２の選択信号を出力し、前記第１の選択信号に基づいて前記第２のデータと前記第２の期間情報とが選択された場合、前記第２の期間情報に前記第３の期間情報を加算した期間情報を、前記第４の期間情報と比較し、前記第２又は第３のデータのうち期間情報が大きい方のデータを選択させる第２の選択信号を出力するステップと、
前記第１の選択信号に基づいて前記第１のデータと前記第１の期間情報とが選択された場合、前記第２の選択信号に基づいて、前記第１又は第３のデータのうち期間情報が大きい方のデータを選択して出力し、前記第１の選択信号に基づいて前記第２のデータと前記第２の期間情報とが選択された場合、前記第２の選択信号に基づいて、前記第２又は第３のデータのうち期間情報が大きい方のデータを選択して出力するステップと、
を実行する調停方法。
【請求項８】
データを保持して出力する第１の記憶回路に、第１のデータを保持して選択されると出力するステップと、
前記第１のデータを選択されて出力されるまでの第１の期間情報を計数するステップと、
データを保持して出力する第２の記憶回路に、第２のデータを保持して選択されると出力するステップと、
前記第２のデータが選択されて出力されるまでの第２の期間情報を計数するステップと、
前記第１及び第２の期間情報に基づいて、第１の選択信号を出力するステップと、
前記第１の選択信号に基づいて、前記第１又は第２のデータを選択して出力するステップと、
前記第１の選択信号に基づいて、前記第１又は第２の期間情報を選択して出力するステップと、
前記第１又は第２の期間情報に基づいて、前記第１又は第２のデータについての優先度情報を生成して出力するステップと、
データを保持して出力する優先度記憶回路に、前記優先度情報を保持して出力するステップと、
データを保持して出力する第３の記憶回路に、選択されて出力された前記第１又第２のデータのいずれかを保持して選択されると出力するステップと、
前記第１又は第２のデータのいずれかが選択されて出力されるまでの第３の期間情報を計数するステップと、
データを保持して出力する第４の記憶回路に、第３のデータを保持して選択されると出力するステップと、
前記第３のデータを選択されて出力されるまでの第４の期間情報を計数するステップと、
前記第１の選択信号に基づいて前記第１のデータと前記第１の期間情報とが選択された場合、前記第１の期間情報を第１の期間情報境界値と比較した結果に基づいて生成された前記第１のデータについての優先度情報と、前記第３のデータについてあらかじめ設定された優先度情報とに基づいて、前記第１又は第３のデータを選択させる第２の選択信号を出力し、前記第１の選択信号に基づいて前記第２のデータと前記第２の期間情報とが選択された場合、前記第２の期間情報を第２の期間情報境界値と比較した結果に基づいて生成された前記第２のデータについての優先度情報と、前記第３のデータについてあらかじめ設定された優先度情報とに基づいて、前記第２又は第３のデータを選択させる第２の選択信号を出力するステップと、
前記第１の選択信号に基づいて前記第１のデータと前記第１の期間情報とが選択された場合、前記第２の選択信号に基づいて、前記第１又は第３のデータを選択して出力し、前記第１の選択信号に基づいて前記第２のデータと前記第２の期間情報とが選択された場合、前記第２の選択信号に基づいて、前記第２又は第３のデータを選択して出力するステップと、
を実行する調停方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムや通信システムにおけるパケット転送などのデータ転送で生じる競合を調停する調停装置に関する。
【背景技術】
【０００２】
従来、コンピュータシステムや通信システムにおけるパケット転送処理などのデータ転送で生じる競合を調停する調停回路が知られている。以下、この調停回路を「アービタ」という。【０００３】
パケットがキューに到達してからの待ち時間を監視し、長時間待っているパケットの優先順位を高くして、パケットのキューへの滞留時間をなるべく短くしようとするなど、パケットがアービタを通過するために必要な時間を少なくする技術が考案されている。【０００４】
上記技術に関連して、パケット送信時に回線上におけるパケットの衝突により送信できなかったパケットの衝突回数が既定値以上のとき、そのパケットの優先度を上げることにより、リアルタイム応答性が良く、回線上でのすみやかな衝突制御が可能にする通信制御装置が知られている。【０００５】
図１２は、アービタを多段に構成した場合の従来例を説明する図である。
図１２に示すアービタ１２０１は、キュー＃０に格納されたパケットの待ち時間をカウントするタイマ１２０２のタイマ値と、キュー＃１に格納されたパケットの待ち時間をカウントするタイマ１２０３のタイマ値と、を比較する。そして、アービタ１２０１は、待ち時間の長い方のパケットを優先して出力するように、セレクタ１２０４を切替える。【０００６】
すると、キュー＃０またはキュー＃１に格納されたパケットは、セレクタ１２０４を介してキュー＃２に格納される。
アービタ１２１１は、キュー＃２に格納されたパケットの待ち時間をカウントするタイマ１２１２のタイマ値と、キュー＃３に格納されたパケットの待ち時間をカウントするタイマ１２１３のタイマ値と、を比較する。そして、アービタ１２１１は、待ち時間の長いパケットを優先して出力するように、セレクタ１２１４を切替える。【０００７】
すると、キュー＃２またはキュー＃３に格納されたパケットが、セレクタ１２１４を介して出力される。以下、図１２に示したように、アービタを多段に構成した回路を「多段アービタ」という。
【特許文献１】特開昭６３−２７８４３９号公報
【発明の開示】
【０００８】
上述したように、アービタを多段に構成する場合、後段に位置するアービタは、前段に位置するアービタを通過したパケットが前段に位置するアービタでどのくらいの時間待たされたか知ることができない。
【０００９】
そのため、後段に位置するアービタは、前段に位置するアービタでの待ち時間を考慮に入れてパケットの優先順位を決定することが難しかった。例えば、前段に位置するアービタでの待ち時間が長かったパケットの優先順位を、後段に位置するアービタにおいて高く設定するといった処理を行なうことが難しかった。
【００１０】
その結果、アービタを多段に構成した場合、この多段に構成されたアービタをパケットが通過するために必要な待ち時間を出来るだけ短くするように調停することが難しいという問題があった。
【００１１】
本発明は、上述した問題に鑑みてなされたものであり、その解決しようとする課題は、アービタを多段に構成した場合であっても、多段に構成されたアービタをパケットが通過するために必要な待ち時間を最小に抑える調停装置を提供することである。
【００１２】
上記課題を解決するために、本調停装置は、以下の構成要素を備える。
第１の記憶回路は、入力された第１のデータを保持して出力する。また、第２の記憶回路は、入力された第２のデータを保持して出力する。
【００１３】
第１の選択回路は、前記第１及び第２の記憶回路の出力に接続されるとともに、第１の選択信号に基づいて、前記第１又は第２のデータを選択して出力する。
第１の計数回路は、前記第１の選択回路が前記第１のデータを選択して出力するまでの第１の期間情報を計数する。
【００１４】
第２の計数回路は、前記第１の選択回路が前記第２のデータを選択して出力するまでの第２の期間情報を計数する。
第２の選択回路は、前記第１及び第２の計数回路の出力に接続されるとともに、第１の選択信号に基づいて、前記第１又は第２の期間情報を選択して出力する。
【００１５】
第１の制御回路は、前記第１及び第２の期間情報に基づいて、前記第１の選択信号を出力する。
第３の記憶回路は、前記第１の選択回路が選択して出力する前記第１又第２のデータのいずれかを保持して出力する。
【００１６】
第４の記憶回路は、入力された第３のデータを保持して出力する。
第３の選択回路は、前記第３及び第４の記憶回路に接続されるとともに、第２の選択信号に基づいて、前記第１の選択回路が選択して出力する前記第１又は第２のデータのいずれか又は第３のデータを選択して出力する。
【００１７】
第３の計数回路は、前記第３の選択回路が前記第１又は第２のデータのいずれかを選択して出力するまでの第３の期間情報を計数する。
第４の計数回路は、前記第３の選択回路が前記第３のデータを選択して出力するまでの第４の期間情報を計数する。
【００１８】
第２の制御回路は、前記選択された前記第１又は第２の期間情報のいずれかと前記第３の期間情報と前記第４の期間情報に基づいて、前記第２の選択信号を出力する。
以上の構成要素を備える本調停装置において、第２の制御回路は、第２の選択回路により選択された第１又は第２の期間情報のいずれかと第３の期間情報に基づいて、第２の選択信号を出力する。
【００１９】
そして、第３の選択回路は、第２の選択信号に基づいて、第１の選択回路が選択して出力する第１又は第２のデータのいずれか又は第３のデータを選択して出力する。
以上に説明したように、本調停装置によると、アービタを多段に構成した場合であっても、多段に構成されたアービタをパケットが通過するために必要な待ち時間を最小に抑える調停装置を提供することができる。
【図面の簡単な説明】
【００２０】
【図１】第１の実施例に係る多段アービタの概要を説明する図である。
【図２】第１の実施例および第２の実施例に係るキュー用タイマを説明する図である。
【図３】第１の実施例に係る多段アービタで使用するアービタの具体的な構成例を示す図である。
【図４】第１の実施例に係る多段アービタの変形例を説明する図である。
【図５】第２の実施例に係る多段アービタの概要を説明する図である。
【図６】第２の実施例に係るランク付け回路の具体的な構成例を示す図である。
【図７】第２の実施例に係る多段アービタで使用するアービタの具体的な構成例を示す図である。
【図８】第２の実施例に係る選別回路が使用する選別テーブルの例を示す図である。
【図９】第２の実施例に係る多段アービタの変形例を説明する図である。
【図１０】第１の実施例に係る多段アービタを適用したコンピュータシステムの主要部を示す図である。
【図１１】第２の実施例に係る多段アービタを適用したコンピュータシステムの主要部を示す図である。
【図１２】多段アービタの従来例を説明する図である。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施形態について、図１〜図１１に基づいて説明する。
図１は、第１の実施例に係る多段アービタ１００の概要を説明する図である。
図１に示す多段アービタ１００は、キュー＃０用タイマ１０２が出力するタイマ値とキュー＃１用タイマ１０３が出力するタイマ値とに応じて選択信号を生成するアービタ１０１を備える。以下、アービタ１０１が生成する選択信号を「第１の選択信号」という。【００２２】
また、多段アービタ１００は、パケットを保持し出力するキュー＃０と、パケットがキュー＃０に格納されてから出力されるまでの時間をカウントするキュー＃０用タイマ１０２と、を備える。【００２３】
また、多段アービタ１００は、パケットを保持し出力するキュー＃１と、パケットがキュー＃１に格納されてから出力されるまでの時間をカウントするキュー＃１用タイマ１０３と、を備える。【００２４】
また、多段アービタ１００は、アービタ１０１が出力する第１の選択信号に応じてキュー＃０が出力するパケットまたはキュー＃１が出力するパケットを選択するセレクタ１０４を備える。【００２５】
また、多段アービタ１００は、アービタ１０１が出力する第１の選択信号に応じてキュー＃０用タイマ１０２またはキュー＃１用タイマ１０３が出力するタイマ値を選択するセレクタ１０５を備える。【００２６】
また、多段アービタ１００は、加算回路１１５が出力するタイマ値とキュー＃２用タイマ１１２が出力するタイマ値とに応じて選択信号を生成するアービタ１１１を備える。以下、アービタ１１１が生成する選択信号を「第２の選択信号」という。【００２７】
また、多段アービタ１００は、セレクタ１０４が出力するパケットを保持し出力するキュー＃２と、セレクタ１０５が出力するタイマ値を保持し出力するタイマ値用キュー＃２と、パケットがキュー＃２に格納されてから出力されるまでの時間をカウントするキュー＃２用タイマ１１２と、を備える。【００２８】
また、多段アービタ１００は、パケットを保持し出力するキュー＃３と、パケットがキュー＃３に格納されてから出力されるまでの時間をカウントするキュー＃３用タイマ１１３と、を備える。【００２９】
また、多段アービタ１００は、アービタ１１１が出力する第２の選択信号に応じてキュー＃２が出力するパケットまたはキュー＃３が出力するパケットを選択するセレクタ１１４を備える。【００３０】
また、多段アービタ１００は、タイマ値用キュー＃２が出力するタイマ値とキュー＃２用タイマ１１２が出力するタイマ値とを加算する加算回路１１５と、を備える。
なお、図１に示すキュー＃０用タイマ１０２は、キュー＃０に保持された１のパケットに対するタイマであるが、例えば、キュー＃０に最大４つのパケットが保持できる場合、それぞれのパケットに対してキュー＃０用タイマ１０２を４つ備える。【００３１】
キュー＃１用タイマ１０３、キュー＃２用タイマ１１２、キュー＃３用タイマ１１３、後述するキュー＃４用タイマ４０２、キュー＃５用タイマ４０３、キュー＃４用タイマ９０２およびキュー＃５用タイマ９０３についても同様である。【００３２】
以下、必要に応じ、キュー＃０用タイマ１０２、キュー＃１用タイマ１０３、キュー＃２用タイマ１１２およびキュー＃３用タイマ１１３、キュー＃４用タイマ４０２、キュー＃５用タイマ４０３、キュー＃４用タイマ９０２およびキュー＃５用タイマ９０３を総じて「キュー用タイマ」という。【００３３】
ここで、キュー＃０の出力端とキュー＃１の出力端は、セレクタ１０４と接続されている。
キュー＃０用タイマ１０２の出力端は、アービタ１０１とセレクタ１０５とに接続されている。同様に、キュー＃１用タイマ１０３の出力端は、アービタ１０１とセレクタ１０５とに接続されている。【００３４】
アービタ１０１の出力端は、セレクタ１０４とセレクタ１０５とに接続されている。
セレクタ１０４の出力端は、キュー＃２と接続されている。また、セレクタ１０５の出力端は、タイマ値用キュー＃２と接続されている。【００３５】
キュー＃２の出力端とキュー＃３の出力端は、セレクタ１１４と接続されている。また、タイマ値用キュー＃２の出力端とキュー＃２用タイマ１１２の出力端は、加算回路１１５と接続されている。【００３６】
加算回路１１５の出力端とキュー＃３用タイマ１１３の出力端は、アービタ１１１に接続されている。アービタ１１１の出力端は、セレクタ１１４に接続されている。
以上の構成において、キュー＃０は、入力されるパケットを順次格納し、格納した順番にパケットをセレクタ１０４に出力する。なお、キュー＃０は、データの先入れ先出しＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）を実現する記憶手段である。後述するキュー＃１〜＃５も同様である。【００３７】
キュー＃０用タイマ１０２は、キュー＃０にパケットが格納されてから同パケットがセレクタ１０４に選択されて出力されるまでの時間をカウントし、カウントして得られるタイマ値をアービタ１０１およびセレクタ１０５に出力する。【００３８】
キュー＃１は、入力されるパケットを順次格納し、格納した順番にパケットをセレクタ１０４に出力する。
キュー＃１用タイマ１０３は、キュー＃１にパケットが格納されてから同パケットがセレクタ１０４に選択されて出力されるまでの時間をカウントし、カウントして得られるタイマ値をアービタ１０１およびセレクタ１０５に出力する。【００３９】
アービタ１０１は、キュー＃０用タイマ１０２が出力するタイマ値とキュー＃１用タイマ１０３が出力するタイマ値とを比較する。
そして、アービタ１０１は、セレクタ１０４がタイマ値の大きい方のキューの出力を選択する第１の選択信号、すなわち、セレクタ１０５がタイマ値の大きい方のキューのキュー用タイマの出力を選択する第１の選択信号を生成する。アービタ１０１は、第１の選択信号をセレクタ１０４およびセレクタ１０５に出力する。【００４０】
セレクタ１０４は、アービタ１０１が出力する第１の選択信号にしたがって、キュー＃０が出力するパケットまたはキュー＃１が出力するパケットをキュー＃２に出力する。
セレクタ１０５は、アービタ１０１が出力する第１の選択信号にしたがって、キュー＃０用タイマ１０２が出力するタイマ値またはキュー＃１用タイマ１０３が出力するタイマ値をタイマ値用キュー＃２に出力する。【００４１】
キュー＃２は、セレクタ１０４が出力するパケットを順次格納し、格納した順番にパケットをセレクタ１１４に出力する。
キュー＃２用タイマ１１２は、キュー＃２にパケットが格納されてから同パケットがセレクタ１１４に選択されて出力されるまでの時間をカウントし、カウントして得られるタイマ値を加算回路１１５に出力する。【００４２】
タイマ値用キュー＃２は、セレクタ１０５が出力するタイマ値を順次格納し、格納した順番にパケットを加算回路１１５に出力する。
キュー＃３は、入力されるパケットを順次格納し、格納した順番にパケットをセレクタ１１４に出力する。【００４３】
キュー＃３用タイマ１１３は、キュー＃３にパケットが格納されてから同パケットがセレクタ１１４に選択されて出力されるまでの時間をカウントし、カウントして得られるタイマ値をアービタ１１１に出力する。【００４４】
加算回路１１５は、タイマ値用キュー＃２が出力するタイマ値とキュー＃２用タイマ１１２が出力するタイマ値とを加算してアービタ１１１に出力する。
アービタ１１１は、加算回路１１５が出力するタイマ値とキュー＃３用タイマ１１３が出力するタイマ値とを比較する。【００４５】
そして、アービタ１１１は、タイマ値の大きいキューの出力をセレクタ１１４が選択する選択信号を生成する。
例えば、加算回路１１５が出力するタイマ値が、キュー＃３用タイマ１１３が出力するタイマ値より大きい場合、アービタ１１１は、セレクタ１１４がキュー＃２を選択する選択信号を生成する。【００４６】
また、キュー＃３用タイマ１１３が出力するタイマ値が、加算回路１１５が出力するタイマ値より大きい場合、アービタ１１１は、セレクタ１１４がキュー＃３を選択する選択信号を生成する。【００４７】
そして、アービタ１１１は、生成した選択信号をセレクタ１１４に出力する。以下、アービタ１１１が生成する選択信号を「第２の選択信号」という。
セレクタ１１４は、アービタ１１１が出力する第２の選択信号にしたがって、キュー＃２が出力するパケットまたはキュー＃３が出力するパケットを出力する。【００４８】
図２は、第１の実施例および第２の実施例に係るキュー用タイマを説明する図である。
キュー用タイマ２００は、タイマ値を保持し出力するラッチ回路２０１と、ラッチ回路２０１が出力するタイマ値に１を加算してセレクタ２０３に出力する加算回路２０２と、セレクタ２０３と、リセット２０４と、論理和回路２０５と、を備える。【００４９】
ラッチ回路２０１の出力端は、加算回路２０２と接続されている。加算回路２０２の出力端とリセット２０４の出力端は、セレクタ２０３と接続されている。セレクタ２０３の出力端は、ラッチ回路２０１と接続されている。論理和回路２０５の出力端は、セレクタ２０３と接続されている。【００５０】
なお、図２では、丸印「○」で記載された論理和回路２０５の出力端が、リセット２０４の出力端とセレクタ２０３とを結ぶ線と交差している。これは、丸印「○」で記載された出力端、すなわち、論理和回路２０５が「１」を出力した場合、セレクタ２０３は、リセット２０４が出力する出力信号を選択することを意味する。他の図面においても同様である。【００５１】
以上の構成において、ラッチ回路２０１は、セレクタ２０３が出力するタイマ値を保持し出力する。
加算回路２０２は、ラッチ回路２０１が出力するタイマ値を１だけ加算する。そして、加算回路２０２は、加算したタイマ値をセレクタ２０３に出力する。【００５２】
リセット２０４は、ラッチ回路２０１に保持されている値を初期化するために、タイマ値０を常時出力する。
セレクタ２０３は、加算回路２０２が出力するタイマ値、または、リセット２０４が出力するタイマ値０、を論理和回路２０５が出力する信号に応じて選択し、ラッチ回路２０１に出力する。【００５３】
本実施例では、論理和回路２０５から「１」が入力された場合、セレクタ２０３は、リセット２０４からの出力信号を選択する。そして、論理和回路２０５から「０」が入力された場合、セレクタ２０３は、加算回路２０２からの出力信号を選択する。【００５４】
ここで、論理和回路２０５には、キューにパケットが存在しない場合、または、パケットが存在する場合でアービタがキューを選択した時、にキューから「１」が入力される。
図３は、第１の実施例に係るアービタ１１１の具体的な構成例を示す図である。なお、図１に示したアービタ１０１とアービタ１１１は同様の構成なので、図３にはアービタ１１１を示して説明する。【００５５】
アービタ１１１は、加算回路１１５が出力するタイマ値とキュー＃３用タイマ１１３が出力するタイマ値の大小を比較するタイマ値比較回路３０１を備える。そして、タイマ値比較回路３０１は、比較回路３０１ａと比較回路３０１ｂとを備える。【００５６】
また、アービタ１１１は、タイマ値比較回路３０１からの信号に応じて、キュー＃２からのリクエスト信号やキュー＃３からのリクエスト信号をマスクするマスク回路３０２を備える。そして、マスク回路３０２は、論理積回路３０２ａと論理積回路３０２ｂとを備える。【００５７】
また、アービタ１１１は、マスク回路３０２を介して入力されるキュー＃２からのリクエスト信号とキュー＃３からのリクエスト信号とが競合する場合に、キューを順番に選択するラウンドロビン回路３０３を備える。【００５８】
なお、本実施例ではラウンドロビン回路３０３を使用するが、固定アービタやＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）などを使用してもよい。後述する図７についても同様である。【００５９】
また、アービタ１１１は、論理和回路３０４を備える。
また、アービタ１１１は、ラウンドロビン回路３０３が選択したパケット長だけカウントするパケット長カウント回路３０５を備える。そして、パケット長カウント回路３０５は、パケット長を保持するラッチ回路３０５ａと、減算回路３０５ｂと、所定の条件と一致している場合だけ検出信号を出力する検出回路３０５ｃと、セレクタ３０５ｄと、を備える。【００６０】
また、アービタ１１１は、キュー＃２が出力する先頭パケットからパケット長を検出してデコードするパケット長デコード回路３０６と、キュー＃３が出力する先頭パケットからパケット長を検出してデコードするパケット長デコード回路３０７と、を備える。【００６１】
また、アービタ１１１は、セレクタ３０８を備える。
また、アービタ１１１は、パケット長カウント回路３０５がカウントしている間第２の選択信号をセレクタ１１４に出力する選択信号出力回路３０９を備える。そして、選択信号出力回路３０９は、論理和回路３０９ａおよび３０９ｂと、論理積回路３０９ｃおよび３０９ｄと、ラッチ回路３０９ｅおよび３０９ｆと、セレクタ３０９ｇおよび３０９ｈと、を備える。【００６２】
また、アービタ１１１は、ラウンドロビン回路３０３が選択したキュー（キュー＃２またはキュー＃３）を示す情報を記憶するポインタ３１０を備える。
また、アービタ１１１は、ポインタ３１０にキュー＃２を示す情報をセットするポインタ設定回路３１１と、ポインタ３１０にキュー＃３を示す情報をセットするポインタ設定回路３１２と、を備える。【００６３】
ここで、加算回路１１５の出力端とキュー＃３用タイマ１１３の出力端は、タイマ値比較回路３０１の比較回路３０１ａと接続されている。同様に、加算回路１１５の出力端とキュー＃３用タイマ１１３の出力端は、タイマ値比較回路３０１の比較回路３０１ｂと接続されている。【００６４】
比較回路３０１ａの出力端は、マスク回路３０２の論理積回路３０２ａと反転回路を介して接続されている。また、キュー＃２の出力端も、マスク回路３０２の論理積回路３０２ａと接続されている。【００６５】
比較回路３０１ｂの出力端は、マスク回路３０２の論理積回路３０２ｂと反転回路を介して接続されている。また、キュー＃３の出力端も、マスク回路３０２の論理積回路３０２ｂと接続されている。【００６６】
論理積回路３０２ａの出力端および論理積回路３０２ｂの出力端は、ラウンドロビン回路３０３と接続されている。
ラウンドロビン回路３０３の一方の出力端は、論理和回路３０４、セレクタ３０８、選択信号出力回路３０９の論理和回路３０９ａおよびセレクタ３０９ｇ、ポインタ設定回路３１２、と接続されている。【００６７】
ラウンドロビン回路３０３の他方の出力端は、論理和回路３０４、セレクタ３０８、選択信号出力回路３０９の論理和回路３０９ｂおよびセレクタ３０９ｈ、ポインタ設定回路３１１、と接続されている。【００６８】
論理和回路３０４の出力端は、パケット長カウント回路３０５のセレクタ３０５ｄ、選択信号出力回路３０９のセレクタ３０９ｇおよび３０９ｈ、と接続されている。
一方、キュー＃２の出力端はパケット長デコード回路３０６と接続され、キュー＃３の出力端はパケット長デコード回路３０７と接続されている。そして、パケット長デコード回路３０６およびパケット長デコード回路３０７の出力端は、セレクタ３０８と接続されている。【００６９】
セレクタ３０８の出力端は、パケット長カウント回路３０５のセレクタ３０５ｄと接続されている。
ラッチ回路３０５ａの出力端は、減算回路３０５ｂおよび検出回路３０５ｃと接続されている。減算回路３０５ｂの出力端は、セレクタ３０５ｄと接続されている。検出回路３０５ｃの出力端は、セレクタ３０５ｄ、選択信号出力回路３０９の論理積回路３０９ｃおよび３０９ｄ、と接続されている。【００７０】
ラッチ回路３０９ｅの出力端は、論理積回路３０９ｃおよびセレクタ３０９ｇと接続されている。セレクタ３０９ｇの出力端は、ラッチ回路３０９ｅと接続されている。また、論理積回路３０９ｃの出力端は、論理和回路３０９ａと接続されている。【００７１】
ラッチ回路３０９ｆの出力端は、論理積回路３０９ｄおよびセレクタ３０９ｈと接続されている。セレクタ３０９ｈの出力端は、ラッチ回路３０９ｆと接続されている。また、論理積回路３０９ｄの出力端は、論理和回路３０９ｂと接続されている。【００７２】
論理和回路３０９ａおよび論理和回路３０９ｂの出力端は、セレクタ１１４と接続されている。
ポインタ設定回路３１１の出力端とポインタ設定回路３１２の出力端は、ポインタ３１０と接続されている。そして、ポインタ３１０の出力端は、ラウンドロビン回路３０３と接続されている。【００７３】
以上の構成において、比較回路３０１ａは、加算回路１１５が出力するタイマ値Ｔ２と、キュー＃３用タイマ１１３が出力するタイマ値Ｔ３と、を比較する。比較回路３０１ａは、Ｔ２＜Ｔ３の時に１を出力し、Ｔ２≧Ｔ３の時に０を出力する。【００７４】
比較回路３０１ｂは、加算回路１１５が出力するタイマ値Ｔ２と、キュー＃３用タイマ１１３が出力するタイマ値Ｔ３と、を比較する。そして、比較回路３０１ｂは、Ｔ２＞Ｔ３の時に１を出力し、Ｔ２≦Ｔ３の時に０を出力する。【００７５】
論理積回路３０２ａは、キュー＃２からのリクエスト信号と、比較回路３０１ａが出力する出力信号の反転信号と、の論理積を出力する。
例えば、Ｔ２＜Ｔ３の時、比較回路３０１ａは１を出力するので、比較回路３０１ａと反転回路を介して接続される論理積回路３０２ａには０が入力される。この時、論理積回路３０２ａは０を出力する。【００７６】
また、Ｔ２≧Ｔ３の時、比較回路３０１ａは０を出力するので、論理積回路３０２ａには１が入力される。この時、キュー＃２からリクエスト信号が入力されると、論理積回路３０２ａは、キュー＃２からのリクエスト信号を出力する。なお、キュー＃２は、リクエスト信号として１を出力するものとする。【００７７】
論理積回路３０２ｂは、キュー＃３からのリクエスト信号と、比較回路３０１ｂが出力する出力信号の反転信号と、の論理積を出力する。
例えば、Ｔ２＞Ｔ３の時、比較回路３０１ｂは１を出力するので、比較回路３０１ｂと反転回路を介して接続される論理積回路３０２ｂには０が入力される。この時、論理積回路３０２ｂは０を出力する。【００７８】
また、Ｔ２≦Ｔ３の時、比較回路３０１ｂは０を出力するので、論理積回路３０２ｂには１が入力される。この時、キュー＃３からリクエスト信号が入力されると、論理積回路３０２ｂは、キュー＃３からのリクエスト信号を出力する。なお、キュー＃３は、リクエスト信号として１を出力するものとする。【００７９】
ラウンドロビン回路３０３は、論理積回路３０２ａが出力する出力信号Ｑ２と論理積回路３０２ｂが出力する出力信号Ｑ３とを比較する。
（１）Ｑ２≠Ｑ３の場合、ラウンドロビン回路３０３は、マスク回路３０２が出力する出力信号にしたがって選択するキューを決定する。そして、ラウンドロビン回路３０３は、選択したキューを示す選択キュー決定信号Ｄ２およびＤ３を生成する。【００８０】
例えば、Ｑ２＝１かつＱ３＝０の場合、ラウンドロビン回路３０３は、キュー＃２を選択すると決定する。そして、ラウンドロビン回路３０３は、選択キュー決定信号Ｄ２＝１、Ｄ３＝０を生成する。【００８１】
また、Ｑ２＝０かつＱ３＝１の場合、ラウンドロビン回路３０３は、キュー＃３を選択すると決定する。そして、ラウンドロビン回路３０３は、選択キュー決定信号Ｄ２＝０、Ｄ３＝１を生成する。【００８２】
選択キュー決定信号を生成すると、ラウンドロビン回路３０３は、選択キュー決定信号Ｄ２を、論理和回路３０４、セレクタ３０８、選択信号出力回路３０９およびポインタ設定回路３１２に出力する。同様に、ラウンドロビン回路３０３は、選択キュー決定信号Ｄ３を、論理和回路３０４、セレクタ３０８およびポインタ設定回路３１１と、に出力する。【００８３】
（２）Ｑ２＝Ｑ３の場合、ラウンドロビン回路３０３は、ポインタ３１０に記憶されている情報が示すキューを特定する。以下、ポインタ３１０に記憶されているキューを特定する情報を「キュー特定情報」という。【００８４】
例えば、キュー特定情報は、２ビットの情報である。キュー特定情報が「１０（２進数）」の場合、キュー＃２を示す。また、キュー特定情報が「１１（２進数）」の場合、キュー＃３を示す。なお、キュー特定情報を２ビットの情報に限定する趣旨ではない。【００８５】
キューを特定すると、ラウンドロビン回路３０３は、特定したキューを選択するための選択キュー決定信号Ｄ２およびＤ３を生成する。
例えば、Ｑ２＝Ｑ３＝１かつポインタ３１０にキュー特定情報「１０（２進数）」が記憶されている場合、ラウンドロビン回路３０３は、キュー＃２を選択する選択キュー決定信号（Ｄ２＝１、Ｄ３＝０）を生成する。【００８６】
また、Ｑ２＝Ｑ３＝１かつポインタ３１０にキュー特定情報「１１（２進数）」が記憶されている場合、ラウンドロビン回路３０３は、キュー＃３を選択する選択キュー決定信号（Ｄ２＝０、Ｄ３＝１）を生成する。【００８７】
選択キュー決定信号を生成すると、ラウンドロビン回路３０３は、選択キュー決定信号Ｄ２を、論理和回路３０４、セレクタ３０８、選択信号出力回路３０９およびポインタ設定回路３１２に出力する。同様に、ラウンドロビン回路３０３は、選択キュー決定信号Ｄ３を、論理和回路３０４、セレクタ３０８およびポインタ設定回路３１１、に出力する。【００８８】
論理和回路３０４は、ラウンドロビン回路３０３が出力する選択キュー決定信号Ｄ２とＤ３の論理和をパケット長カウント回路３０５のセレクタ３０５ｄと選択信号出力回路３０９のセレクタ３０９ｇおよび３０９ｈに出力する。【００８９】
一方、セレクタ３０８は、ラウンドロビン回路３０３が出力する選択キュー決定信号Ｄ２およびＤ３にしたがって、パケット長デコード回路３０６の出力信号またはパケット長デコード回路３０７の出力信号を選択してセレクタ３０５ｄに出力する。【００９０】
例えば、ラウンドロビン回路３０３から入力される選択キュー決定信号がＤ２＝１かつＤ３＝０の場合、セレクタ３０８は、パケット長デコード回路３０６の出力信号を選択してセレクタ３０５ｄに出力する。【００９１】
また、ラウンドロビン回路３０３から入力される選択キュー決定信号がＤ２＝０かつＤ３＝１の場合、セレクタ３０８は、パケット長デコード回路３０７の出力信号を選択してセレクタ３０５ｄに出力する。【００９２】
セレクタ３０５ｄは、新たに論理和回路３０４から論理和「１」が入力されると、セレクタ３０８の出力信号を選択してラッチ回路３０５ａに出力する。すると、セレクタ３０８が出力するキュー＃２又はキュー＃３の先頭パケットのパケット長データが、ラッチ回路３０５ａにセットされる。【００９３】
減算回路３０５ｂは、ラッチ回路３０５ａが出力するパケット長データを１だけ減算する。そして、減算回路３０５ｂは、減算した値をセレクタ３０５ｄに出力する。
セレクタ３０５ｄは、論理和回路３０４から論理和「０」が入力されると、減算回路３０５ｂが出力する出力信号を選択してラッチ回路３０５ａに出力する。すると、ラッチ回路３０５ａは、減算回路３０５ｂが出力する値を保持する。すなわち、ラッチ回路３０５ａには、１だけ減算された値がセットされる。【００９４】
減算回路３０５ｂは、以上の動作を、ラッチ回路３０５ａの値が０になるまで繰り返す。
検出回路３０５ｃは、ラッチ回路３０５ａが保持する値が０か否かを判別する。そして、ラッチ回路３０５ａが保持する値が０でない場合、ラッチ回路３０５ａは、選択信号出力回路３０９の論理積回路３０９ｃおよび３０９ｄに「１」を出力する。【００９５】
セレクタ３０９ｇは、新たに論理和回路３０４から論理和「１」が入力されると、ラウンドロビン回路３０３が出力する選択キュー決定信号Ｄ２を選択してラッチ回路３０９ｅに出力する。すると、選択キュー決定信号Ｄ２が、ラッチ回路３０９ｅにセットされる。その後、セレクタ３０９ｇに論理和回路３０４から論理和「０」が入力されている間、ラッチ回路３０９ｅはセットされた値を保持する。【００９６】
セレクタ３０９ｈは、新たに論理和回路３０４から論理和「１」が入力されると、ラウンドロビン回路３０３が出力する選択キュー決定信号Ｄ３を選択してラッチ回路３０９ｆに出力する。すると、選択キュー決定信号Ｄ３が、ラッチ回路３０９ｆにセットされる。その後、セレクタ３０９ｈに論理和回路３０４から論理和「０」が入力されている間は、ラッチ回路３０９ｆはセットされた値を保持する。【００９７】
論理積回路３０９ｃは、検出回路３０５ｃおよびラッチ回路３０９ｅの出力が「１」の場合、論理和回路３０９ａに「１」を出力する。すなわち、論理積回路３０９ｃは、ラッチ回路３０５ａが保持する値が０でなく、かつラッチ回路３０９ｅが保持する値が１である時、論理和回路３０９ａに「１」を出力する。【００９８】
論理積回路３０９ｄは、検出回路３０５ｃおよびラッチ回路３０９ｆの出力が「１」の場合、論理和回路３０９ｂに「１」を出力する。すなわち、論理積回路３０９ｄは、ラッチ回路３０５ａが保持する値が０でなく、かつラッチ回路３０９ｆが保持する値が１である時、「１」を論理和回路３０９ｂに出力する。【００９９】
論理和回路３０９ａは、ラウンドロビン回路３０３が出力する選択キュー決定信号Ｄ２と、論理積回路３０９ｃが出力する出力信号と、の論理和Ｓ２をセレクタ１１４に出力する。また、論理和回路３０９ｂは、ラウンドロビン回路３０３が出力する選択キュー決定信号Ｄ３と、論理積回路３０９ｄが出力する出力信号と、の論理和Ｓ３をセレクタ１１４に出力する。【０１００】
この選択信号出力回路３０９が出力する出力信号Ｓ２およびＳ３が、第２の選択信号となる。
セレクタ１１４は、選択信号出力回路３０９が出力する第２の選択信号Ｓ２＝１の場合、キュー＃２が出力する出力信号、すなわち、キュー＃２が出力するパケットを選択して出力する。【０１０１】
また、セレクタ１１４は、選択信号出力回路３０９が出力する第２の選択信号Ｓ３＝１の場合、キュー＃３が出力する出力信号、すなわち、キュー＃３が出力するパケットを選択して出力する。【０１０２】
ポインタ設定回路３１１は、ラウンドロビン回路３０３から選択キュー決定信号Ｄ３＝１が入力されると、すなわち、ラウンドロビン回路３０３がキュー＃３を選択すると、ポインタ３１０にキュー＃２を示すキュー特定情報「１０（２進数）」を設定する。【０１０３】
ポインタ設定回路３１２は、ラウンドロビン回路３０３から選択キュー決定信号Ｄ２＝１が入力されると、すなわち、ラウンドロビン回路３０３がキュー＃２を選択すると、ポインタ３１０にキュー＃２を示すキュー特定情報「１１（２進数）」を設定する。【０１０４】
図４は、第１の実施例に係る多段アービタ１００の変形例を説明する図である。なお、図１に示した多段アービタ１００の構成と重複するものについての説明は省略する。
図４に示す多段アービタ４００は、図１に示した多段アービタ１００の構成に加えて、以下の構成要素を備える。【０１０５】
多段アービタ４００は、キュー＃４用タイマ４０２が出力するタイマ値とキュー＃５用タイマ４０３が出力するタイマ値とに応じて選択信号を生成するアービタ４０１を備える。以下、アービタ４０１が生成する選択信号を「第３の選択信号」という。【０１０６】
また、多段アービタ４００は、パケットを保持し出力するキュー＃４と、パケットがキュー＃４に格納されてから出力されるまでの時間をカウントするキュー＃４用タイマ４０２と、を備える。【０１０７】
また、多段アービタ４００は、パケットを保持し出力するキュー＃５と、パケットがキュー＃５に格納されてから出力されるまでの時間をカウントするキュー＃５用タイマ４０３と、を備える。【０１０８】
また、多段アービタ４００は、アービタ４０１が出力する第３の選択信号に応じてキュー＃４が出力するパケットまたはキュー＃５が出力するパケットを選択し出力するセレクタ４０４を備える。【０１０９】
また、多段アービタ４００は、アービタ４０１が出力する選択信号に応じてキュー＃４用タイマ４０２が出力するタイマ値またはキュー＃５用タイマ４０３が出力するタイマ値を選択するセレクタ４０５と、を備える。【０１１０】
また、多段アービタ４００は、セレクタ４０５が出力するタイマ値を保持し出力するタイマ値用キュー＃３と、タイマ値用キュー＃３が出力するタイマ値とキュー＃３用タイマ１１３が出力するタイマ値とを加算する加算回路４１２と、を備える。【０１１１】
また、多段アービタ４００は、加算回路１１５が出力するタイマ値と加算回路４１２が出力するタイマ値とに応じて第２の選択信号を生成するアービタ４１１を備える。
ここで、キュー＃４の出力端とキュー＃５の出力端は、セレクタ４０４と接続されている。【０１１２】
キュー＃４用タイマ４０２の出力端は、アービタ４０１とセレクタ４０５とに接続されている。同様に、キュー＃５用タイマ４０３の出力端は、アービタ４０１とセレクタ４０５とに接続されている。【０１１３】
アービタ４０１の出力端は、セレクタ４０４とセレクタ４０５とに接続されている。
セレクタ４０４の出力端は、キュー＃３と接続されている。また、セレクタ４０５の出力端は、タイマ値用キュー＃３と接続されている。【０１１４】
タイマ値用キュー＃３の出力端とキュー＃３用タイマ１１３の出力端は、加算回路４１２と接続されている。そして、加算回路４１２の出力端は、アービタ４１１に接続されている。アービタ４１１の出力端は、セレクタ１１４に接続されている。【０１１５】
以上の構成において、キュー＃４は、入力されるパケットを順次格納し、格納した順番にパケットをセレクタ４０４に出力する。
キュー＃４用タイマ４０２は、キュー＃４にパケットが格納されてから同パケットがセレクタ４０４に選択されて出力されるまでの時間をカウントし、カウントして得られるタイマ値をアービタ４０１およびセレクタ４０５に出力する。【０１１６】
キュー＃５は、入力されるパケットを順次格納し、格納した順番にパケットをセレクタ４０４に出力する。
キュー＃５用タイマ４０３は、キュー＃５にパケットが格納されてから同パケットがセレクタ４０４に選択されて出力されるまでの時間をカウントし、カウントして得られるタイマ値をアービタ４０１およびセレクタ４０５に出力する。【０１１７】
アービタ４０１は、キュー＃４用タイマ４０２が出力するタイマ値とキュー＃５用タイマ４０３が出力するタイマ値とを比較する。そして、アービタ４０１は、セレクタ４０４がタイマ値の大きい方のキューの出力を選択する第３の選択信号、すなわち、セレクタ４０４がタイマ値の大きい方のキューのキュー用タイマの出力を選択する第３の選択信号を生成する。アービタ４０１は、第３の選択信号をセレクタ４０４およびセレクタ４０５に出力する。【０１１８】
セレクタ４０４は、アービタ４０１が出力する第３の選択信号にしたがって、キュー＃４が出力するパケットまたはキュー＃５が出力するパケットをキュー＃３に出力する。
セレクタ４０５は、アービタ４０１が出力する第３の選択信号にしたがって、キュー＃４用タイマ４０２が出力するタイマ値またはキュー＃５用タイマ４０３が出力するタイマ値をタイマ値用キュー＃３に出力する。【０１１９】
タイマ値用キュー＃３は、セレクタ４０５が出力するタイマ値を順次格納し、格納した順番にパケットを加算回路４１２に出力する。
キュー＃３用タイマ１１３は、キュー＃３にパケットが格納されてから同パケットがセレクタ１１４に選択されて出力されるまでの時間をカウントし、カウントして得られるタイマ値を加算回路４１２に出力する。【０１２０】
加算回路４１２は、タイマ値用キュー＃３が出力するタイマ値とキュー＃３用タイマ１１３が出力するタイマ値とを加算しアービタ４１１に出力する。
アービタ４１１は、加算回路１１５が出力するタイマ値と加算回路４１２が出力するタイマ値とを比較する。【０１２１】
そして、アービタ４１１は、セレクタ１１４がタイマ値の大きい方のキューの出力を選択する第２の選択信号を生成する。
例えば、加算回路１１５が出力するタイマ値が、加算回路４１２が出力するタイマ値より大きい場合、アービタ４１１は、セレクタ１１４がキュー＃２を選択する第２の選択信号を生成する。【０１２２】
また、加算回路４１２が出力するタイマ値が、加算回路１１５が出力するタイマ値より大きい場合、アービタ４１１は、セレクタ１１４がキュー＃３を選択する第２の選択信号を生成する。【０１２３】
そして、アービタ４１１は、生成した第２の選択信号をセレクタ１１４に出力する。
セレクタ１１４は、アービタ４１１が出力する第２の選択信号にしたがって、キュー＃２が出力するパケットまたはキュー＃３が出力するパケットを出力する。【０１２４】
なお、図４に示したアービタ４０１の構成は、図３と同様なので、詳細な説明は省略する。
図５は、第２の実施例に係る多段アービタ５００の概要を説明する図である。なお、図１に示した多段アービタ１００の構成と重複するものについての説明は省略する。【０１２５】
多段アービタ５００は、セレクタ１０５が出力するタイマ値に応じてキュー＃２のランク付けを行なうランク付け回路５０１を備える。
また、多段アービタ５００は、ランク付け回路５０１が出力するランク付け情報を保持し出力するランク付け情報用キュー＃２を備える。【０１２６】
また、多段アービタ５００は、キュー＃３のランク付け情報をあらかじめ記憶するキュー＃３ランク付け情報設定レジスタ５１２と、キュー＃３ランク付け情報設定レジスタ５１２にランク付け情報を設定するＪＴＡＧ回路５１３と、を備える。【０１２７】
また、多段アービタ５００は、ランク付け情報用キュー＃２およびキュー＃３ランク付け情報設定レジスタ５１２が出力するランク付け情報と、キュー＃２用タイマ１１２およびキュー＃３用タイマ１１３が出力するタイマ値と、に応じて第２の選択信号を生成するアービタ５１１と、を備える。【０１２８】
また、多段アービタ５００は、アービタ５１１が出力する第２の選択信号に応じてキュー＃２またはキュー＃３に格納されたパケットを選択し出力するセレクタ１１４を備える。【０１２９】
ここで、セレクタ１０５の出力端は、ランク付け回路５０１と接続されている。そして、ランク付け回路５０１の出力端は、ランク付け情報用キュー＃２と接続されている。
ランク付け情報用キュー＃２の出力端、キュー＃２用タイマ１１２の出力端、キュー＃３ランク付け情報設定レジスタ５１２の出力端およびキュー＃３用タイマ１１３の出力端は、アービタ５１１と接続されている。【０１３０】
アービタ５１１の出力端は、セレクタ１１４に接続されている。
以上の構成において、セレクタ１０５は、アービタ１０１が出力する第１の選択信号にしたがって、キュー＃０用タイマ１０２が出力するタイマ値またはキュー＃１用タイマ１０３が出力するタイマ値をランク付け回路５０１に出力する。【０１３１】
ランク付け情報用キュー＃２は、ランク付け回路５０１が出力するランク付け情報を順次格納し、格納した順番にランク付け情報をアービタ５１１に出力する。
キュー＃２用タイマ１１２は、キュー＃２にパケットが格納されてから同パケットがセレクタ１１４に選択されて出力されるまでの時間をカウントし、カウントして得られるタイマ値をアービタ５１１に出力する。【０１３２】
キュー＃３用タイマ１１３は、キュー＃３にパケットが格納されてから同パケットがセレクタ１１４に選択されて出力されるまでの時間をカウントし、カウントして得られるタイマ値をアービタ５１１に出力する。【０１３３】
アービタ５１１は、キュー＃２からのリクエスト信号とキュー＃３からのリクエスト信号とが競合した場合、すなわち、キュー＃２および＃３から出力信号「１」が入力された場合、以下に示す（１）〜（５）の処理により第２の選択信号を生成する。【０１３４】
（１）アービタ５１１は、ランク付け情報用キュー＃２が出力するキュー＃２のランク付け情報Ｐ２と、キュー＃３ランク付け情報設定レジスタ５１２が出力するキュー＃３のランク付け情報Ｐ３と、を比較する。【０１３５】
（２）Ｐ２≠Ｐ３の場合、アービタ５１１は、セレクタ１１４がランクの高い方のキューを選択する第２の選択信号を生成する。
例えば、Ｐ２＞Ｐ３の場合、アービタ５１１は、セレクタ１１４がキュー＃２を選択する第２の選択信号を生成する。また、Ｐ２＜Ｐ３の場合、アービタ５１１は、セレクタ１１４がキュー＃３を選択する第２の選択信号を生成する。【０１３６】
（３）Ｐ２＝Ｐ３の場合、アービタ５１１は、キュー＃２用タイマ１１２が出力するタイマ値Ｔ２と、キュー＃３用タイマ１１３が出力するタイマ値Ｔ３と、を比較する。
（４）Ｐ２＝Ｐ３かつＴ２≠Ｔ３の場合、アービタ５１１は、セレクタ１１４がタイマ値の大きい方のキューを選択する第２の選択信号を生成する。【０１３７】
例えば、Ｔ２＞Ｔ３の場合、アービタ５１１は、セレクタ１１４がキュー＃２を選択する第２の選択信号を生成する。また、Ｔ２＜Ｔ３の場合、アービタ５１１は、セレクタ１１４がキュー＃３を選択する第２の選択信号を生成する。【０１３８】
（５）Ｐ２＝Ｐ３かつＴ２＝Ｔ３の場合、アービタ５１１は、セレクタ１１４がキュー＃２の出力を選択する第２の選択信号と、セレクタ１１４がキュー＃３の出力を選択する第２の選択信号と、を交互に生成する。【０１３９】
例えば、前回、セレクタ１１４がキュー＃２の出力を選択する選択信号を生成していた場合、アービタ５１１は、セレクタ１１４がキュー＃３の出力を選択する第２の選択信号を生成する。【０１４０】
また、前回、セレクタ１１４がキュー＃３の出力を選択する選択信号を生成していた場合、アービタ５１１は、セレクタ１１４がキュー＃２の出力を選択する第２の選択信号を生成する。【０１４１】
以上の処理によって第２の選択信号を生成すると、アービタ５１１は、第２の選択信号をセレクタ１１４に出力する。
セレクタ１１４は、アービタ５１１が出力する第２の選択信号にしたがって、キュー＃２またはキュー＃３が出力するパケットを出力する。【０１４２】
なお、本実施例では、キュー＃３ランク付け情報設定レジスタ５１２にランク付け情報を設定するためにＩＥＥＥ１１４９．１で規定されるＪｏｉｎｔ  Ｔｅｓｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｇｒｏｕｐ（以下、「ＪＴＡＧ」）回路５１３を使用したが、これに限定する趣旨ではない。必要に応じて、例えば、ＳＭＢｕｓ回路などを使用してキュー＃３ランク付け情報設定レジスタ５１２にランク付け情報を設定してもよい。【０１４３】
図６は、第２の実施例に係るランク付け回路５０１の具体的な構成例を示す図である。
ランク付け回路５０１は、ランク付け境界値設定レジスタ６０２および６０３にランク付け境界値を設定するＪＴＡＧ回路６０１を備える。【０１４４】
また、ランク付け回路５０１は、ランク付け境界値を記憶するランク付け境界値設定レジスタ６０２および６０３を備える。
ランク付け境界値設定レジスタ６０２に設定されるランク付け境界値Ｔｈ１と、ランク付け境界値設定レジスタ６０３に設定されるランク付け境界値Ｔｈ２と、はＴｈ１＞Ｔｈ２の関係にあるものとする。【０１４５】
また、ランク付け回路５０１は、ランク付け境界値設定レジスタ６０２に記憶されているランク付け境界値Ｔｈ１およびランク付け境界値設定レジスタ６０３に記憶されているランク付け境界値Ｔｈ２とセレクタ１０５が出力するタイマ値Ｔ１とを比較してランク付け情報を生成する比較回路６０４〜６０７と、論理積回路６０８と、を備える。【０１４６】
ここで、ＪＴＡＧ回路６０１の出力端は、ランク付け境界値設定レジスタ６０２とランク付け境界値設定レジスタ６０３とに接続されている。
ランク付け境界値設定レジスタ６０２の出力端は、比較回路６０４および６０５と接続され、ランク付け境界値設定レジスタ６０３の出力端は、比較回路６０６および６０７と接続されている。【０１４７】
セレクタ１０５の出力端は、比較回路６０４、６０５、６０６および６０７それぞれと接続されている。
比較回路６０５および６０６の出力端は、論理積回路６０８と接続されている。【０１４８】
以上の構成において、利用者が所定の操作を行って所望のレジスタ（ランク付け境界値設定レジスタ６０２または６０３）を指定し、所望のランク付け境界値を指定して所定の操作を行なうと、ＪＴＡＧ回路６０１は、指定されたランク付け境界値をスキャンシフトを行うことにより、指定されたレジスタに記憶させる。【０１４９】
ランク付け境界値設定レジスタ６０２は、優先順位を１位にランク付けする判断基準となるランク付け境界値を設定するレジスタである。
セレクタ１０５が出力するタイマ値Ｔ１が、ランク付け境界値設定レジスタ６０２に設定されたランク付け境界値Ｔｈ１以上の場合、キュー＃２は優先順位が１位にランク付けられる。【０１５０】
ランク付け境界値設定レジスタ６０３は、優先順位を２位にランク付けする判断基準となるランク付け境界値を設定するレジスタである。
セレクタ１０５が出力するタイマ値が、ランク付け境界値設定レジスタ６０２に設定されたランク付け境界値Ｔｈ１未満、かつ、ランク付け境界値設定レジスタ６０３に設定されたランク付け境界値Ｔｈ２以上の場合、キュー＃２は優先順位が２位にランク付けられる。【０１５１】
また、ランク付け境界値設定レジスタ６０３に設定されたランク付け境界値Ｔｈ２より小さい場合、キュー＃２は優先順位が３位にランク付けられる。
比較回路６０４および６０５は、ランク付け境界値設定レジスタ６０２に設定されたランク付け境界値Ｔｈ１と、セレクタ１０５が出力するタイマ値Ｔ１と、を比較する。【０１５２】
比較回路６０４は、セレクタ１０５が出力するタイマ値Ｔ１が、ランク付け境界値設定レジスタ６０２に設定されたランク付け境界値Ｔｈ１以上の場合、「１」を出力する。また、比較回路６０４は、セレクタ１０５が出力するタイマ値Ｔ１が、ランク付け境界値設定レジスタ６０２に設定されたランク付け境界値Ｔｈ１未満の場合、「０」を出力する。【０１５３】
比較回路６０５は、セレクタ１０５が出力するタイマ値Ｔ１が、ランク付け境界値設定レジスタ６０２に設定されたランク付け境界値Ｔｈ１未満の場合、「１」を出力する。また、比較回路６０５は、セレクタ１０５が出力するタイマ値Ｔ１が、ランク付け境界値設定レジスタ６０２に設定されたランク付け境界値Ｔｈ１以上の場合、「０」を出力する。【０１５４】
比較回路６０６および６０７は、ランク付け境界値設定レジスタ６０３に設定されたランク付け境界値Ｔｈ２と、セレクタ１０５が出力するタイマ値Ｔ１と、を比較する。
比較回路６０６は、セレクタ１０５が出力するタイマ値Ｔ１が、ランク付け境界値設定レジスタ６０３に設定されたランク付け境界値Ｔｈ２以上の場合、「１」を出力する。また、比較回路６０６は、セレクタ１０５が出力するタイマ値Ｔ１が、ランク付け境界値設定レジスタ６０３に設定されたランク付け境界値Ｔｈ２未満の場合、「０」を出力する。【０１５５】
比較回路６０７は、セレクタ１０５が出力するタイマ値Ｔ１が、ランク付け境界値設定レジスタ６０３に設定されたランク付け境界値Ｔｈ２未満の場合、「１」を出力する。また、比較回路６０７は、セレクタ１０５が出力するタイマ値Ｔ１が、ランク付け境界値設定レジスタ６０３に設定されたランク付け境界値Ｔｈ２以上の場合、「０」を出力する。【０１５６】
論理積回路６０８は、比較回路６０５の出力値と比較回路６０６の出力値の論理積を出力する。
したがって、論理積回路６０８は、セレクタ１０５が出力するタイマ値Ｔ１が、ランク付け境界値設定レジスタ６０２に設定されたランク付け境界値Ｔｈ１未満の場合、かつ、ランク付け境界値設定レジスタ６０３に設定されたランク付け境界値Ｔｈ２以上の場合、「１」を出力する。その他の場合、論理積回路６０８は、「０」を出力する。【０１５７】
なお、本実施例では、ランク付け境界値設定レジスタ６０２および６０３にランク付け境界値を設定するためにＪＴＡＧ回路６０１を使用したが、これに限定する趣旨ではない。必要に応じて、例えば、ＳＭＢｕｓ回路などを使用してランク付け境界値設定レジスタ６０２および６０３にランク付け境界値を設定してもよい。【０１５８】
以上の処理により、ランク付け情報（ｙａ，ｙｂ，ｙｃ）が得られる。
タイマ値Ｔ１がランク付け境界値Ｔｈ１以上の場合、すなわち、優先順位が１位とランク付けられる場合、ランク付け回路５０１が出力するランク付け情報（ｙａ，ｙｂ，ｙｃ）は、（１，０，０）となる。【０１５９】
また、タイマ値Ｔ１がランク付け境界値Ｔｈ１未満、かつ、タイマ値Ｔ１がランク付け境界値Ｔｈ２以上の場合、すなわち、優先順位が２位とランク付けられる場合、ランク付け情報（ｙａ，ｙｂ，ｙｃ）は、（０，１，０）となる。【０１６０】
また、タイマ値Ｔ１がランク付け境界値Ｔｈ２未満の場合、すなわち、優先順位が３位とランク付けられる場合、ランク付け情報（ｙａ，ｙｂ，ｙｃ）は、（０，０，１）となる。【０１６１】
なお、本実施例の場合、キュー＃３ランク付け情報設定レジスタ５１２には、上述のランク付け情報（ｙａ，ｙｂ，ｙｃ）が設定される。
図７は、第２の実施例に係るアービタ５１１の具体的な構成例を示す図である。なお、図３に示した多段アービタ１１１の構成と重複するものについては説明を省略する。【０１６２】
アービタ５１１は、ランク付け情報に応じてキュー＃２およびキュー＃３からのリクエスト信号を選別する選別回路７０１と、論理積回路７０２〜７０４と、を備える。
また、アービタ５１１は、タイマ値比較回路３０１からの信号に応じて、選別回路７０１が出力するキュー＃２のリクエスト信号Ｒ２またはキュー＃３のリクエスト信号Ｒ３をマスクするマスク回路３０２を備える。【０１６３】
ここで、キュー＃２およびキュー＃３の出力端、ランク付け情報用キュー＃２およびキュー＃３ランク付け情報設定レジスタ５１２の出力端は、選別回路７０１と接続されている。【０１６４】
キュー＃２のリクエスト信号Ｒ２を出力する選別回路７０１の出力端は、マスク回路３０２の論理積回路３０２ａと、論理積回路７０２と、に接続されている。また、キュー＃３のリクエスト信号Ｒ３を出力する選別回路７０１の出力端は、マスク回路３０２の論理積回路３０２ｂと、論理積回路７０２と、に接続されている。【０１６５】
論理積回路７０２の出力端は、論理積回路７０３および７０４に接続されている。タイマ値比較回路３０１の比較回路３０１ａの出力端は、論理積回路７０３に接続され、タイマ値比較回路３０１の比較回路３０１ｂの出力端は、論理積回路７０４に接続されている。【０１６６】
論理積回路７０３の出力端は、反転回路を介してマスク回路３０２の論理積回路３０２ａと接続されている。また、論理積回路７０４の出力端は、反転回路を介してマスク回路３０２の論理積回路３０２ｂと接続されている。【０１６７】
以上の構成において、選別回路７０１は、以下に示す（１）〜（３）の処理を行なう。
（１）選別回路７０１は、ランク付け情報用キュー＃２が出力するキュー＃２に関するランク付け情報Ｐ２と、キュー＃３ランク付け情報設定レジスタ５１２が出力するキュー＃３に関するランク付け情報Ｐ３と、を受信すると、図８に示す選別テーブル８００を参照する。【０１６８】
（２）選別回路７０１は、選別テーブル８００の「入力」を参照し、キュー＃２のランク付け情報Ｐ２およびキュー＃３のランク付け情報Ｐ３の組み合わせと一致する組み合わせを検索する。【０１６９】
（３）選別回路７０１は、キュー＃２のランク付け情報Ｐ２およびキュー＃３のランク付け情報Ｐ３の組み合わせと一致する組み合わせに対応する「動作」にしたがって、キュー＃２のリクエスト信号Ｒ２とキュー＃３のリクエスト信号Ｒ３をマスク回路３０２に出力する。【０１７０】
例えば、選別テーブル８００に「キュー＃２からのリクエスト信号」が「透過」であると定義されている場合、選別回路７０１がマスク回路３０２の論理積回路３０２ａに出力するキュー＃２のリクエスト信号Ｒ２は、「１」となる。【０１７１】
同様に、選別テーブル８００に「キュー＃３のリクエスト信号」が「透過」であると定義されている場合、選別回路７０１がマスク回路３０２の論理積回路３０２ｂに出力するキュー＃３のリクエスト信号Ｒ３は、「１」となる。【０１７２】
また、選別テーブル８００に「キュー＃２のリクエスト信号」が「抑止」であると定義されている場合、選別回路７０１は、キュー＃２からのリクエスト信号を抑止する。この場合、選別回路７０１は、マスク回路３０２の論理積回路３０２ａに「０」を出力する。【０１７３】
同様に、選別テーブル８００に「キュー＃３のリクエスト信号」が「抑止」であると定義されている場合、選別回路７０１は、キュー＃３のリクエスト信号を抑止する。この場合、選別回路７０１は、マスク回路３０２の論理積回路３０２ｂに「０」を出力する。【０１７４】
以上の処理により、選別回路７０１は、キュー＃２のランク付け情報Ｐ２とキュー＃３のランク付け情報Ｐ３とに応じて、キュー＃２からのリクエスト信号またはキュー＃３からのリクエスト信号を選別して、マスク回路３０２に出力する。【０１７５】
なお、キュー＃２からのリクエスト信号とキュー＃３からのリクエスト信号とが競合しない場合における選別回路７０１の動作は、上記（１）〜（３）の処理と異なる。
例えば、キュー＃２からのみリクエスト信号を受信すると、選別回路７０１は、Ｒ２＝１かつＲ３＝０を出力する。キュー＃３からのみリクエスト信号を受信すると、選別回路７０１は、Ｒ２＝０かつＲ３＝１を出力する。【０１７６】
論理積回路７０２は、選別回路７０１の出力信号Ｒ２とＲ３の論理積を論理積回路７０３および７０４に出力する。
論理積回路７０３は、論理積回路７０２の出力信号と、比較回路３０１ａの出力信号と、の論理積を出力する。また、論理積回路７０４は、論理積回路７０２の出力信号と、比較回路３０１ｂの出力信号と、の論理積を出力する。【０１７７】
論理積回路３０２ａは、選別回路７０１が出力する出力信号Ｒ２と、論理積回路７０３が出力する出力信号の反転信号と、の論理積を出力する。また、論理積回路３０２ｂは、選別回路７０１が出力する出力信号Ｒ３と、論理積回路７０４が出力する出力信号の反転信号と、の論理積を出力する。【０１７８】
以上の処理により、マスク回路３０２が出力する出力信号Ｑ２およびＱ３は、下記表１のようになる。
ただし、ランク付け情報用キュー＃２が出力するランク付け情報が示す優先順位をＰ２、キュー＃３ランク付け情報設定レジスタ５１２が出力するランク付け情報が示す優先順位をＰ３とする。【０１７９】
また、キュー＃２用タイマ１１２が出力するタイマ値をＴ２、キュー＃３用タイマ１１３が出力するタイマ値をＴ３とする。
そして、選別回路７０１が出力する出力信号をＲ２、Ｒ３、タイマ値比較回路３０１が出力する出力信号をＣ２、Ｃ３、マスク回路３０２の出力をＱ２、Ｑ３とする。【０１８０】
【表１】
0005382003.tif 000002
図８は、選別回路７０１が使用する選別テーブル８００の例を示す図である。
選別テーブル８００は、選別回路７０１に入力されるランク情報と、そのランク情報に応じた選別回路７０１の動作と、を規定したテーブルである。【０１８１】
選別回路７０１に入力されるランク情報は、ランク付け情報用キュー＃２から選別回路７０１に入力されるランク付け情報Ｐ２と、キュー＃３ランク付け情報設定レジスタ５１２から選別回路７０１に入力されるランク付け情報Ｐ３、である。【０１８２】
また、ランク情報に応じた選別回路７０１の動作として、「透過」と「抑止」が規定されている。
「透過」とは、選別回路７０１に入力されるキュー＃２またはキュー＃３のリクエスト信号を、マスク回路３０２および論理積回路７０２に出力する動作を示している。【０１８３】
例えば、キュー＃２のリクエスト信号を「透過」すると定義されている場合、選別回路７０１は、キュー＃２からのリクエスト信号Ｒ２、すなわち「１」を、論理積回路３０２ａおよび７０２に出力する。【０１８４】
同様に、キュー＃３のリクエスト信号を「透過」すると定義されている場合、選別回路７０１は、キュー＃３からのリクエスト信号Ｒ３、すなわち「１」を、論理積回路３０２ｂおよび７０２に出力する。【０１８５】
「抑止」とは、選別回路７０１に入力されるキュー＃２またはキュー＃３のリクエスト信号を、マスク回路３０２および論理積回路７０２に出力しない動作を示している。この場合、例えば、選別回路７０１は、キュー＃２またはキュー＃３からのリクエスト信号の有無に関わらずマスク回路３０２および論理積回路７０２に「０」を出力する。【０１８６】
図９は、第２の実施例に係る多段アービタ５００の変形例を説明する図である。なお、図５に示した多段アービタ５００の構成と重複するものについての説明は省略する。
図９に示す多段アービタ９００は、図５に示した多段アービタ５００の構成に加えて、以下の構成要素を備える。【０１８７】
多段アービタ９００は、キュー＃４用タイマ９０２が出力するタイマ値とキュー＃５用タイマ９０３が出力するタイマ値とに応じて第３の選択信号を生成するアービタ９０１を備える。【０１８８】
また、多段アービタ９００は、パケットを保持し出力するキュー＃４と、パケットがキュー＃４に格納されてから出力されるまでの時間をカウントするキュー＃４用タイマ９０２と、を備える。【０１８９】
また、多段アービタ９００は、パケットを保持し出力するキュー＃５と、パケットがキュー＃５に格納されてから出力されるまでの時間をカウントするキュー＃５用タイマ９０３と、を備える。【０１９０】
また、多段アービタ９００は、アービタ９０１が出力する第３の選択信号に応じてキュー＃４が出力するパケットまたはキュー＃５が出力するパケットを選択するセレクタ９０４を備える。【０１９１】
また、多段アービタ９００は、アービタ９０１が出力する第３の選択信号に応じてキュー＃４用タイマ９０２が出力するタイマ値またはキュー＃５用タイマ９０３が出力するタイマ値を選択するセレクタ９０５を備える。【０１９２】
また、多段アービタ９００は、セレクタ９０５が出力するタイマ値に応じてキュー＃３のランク付けを行なうランク付け回路９０６を備える。
また、多段アービタ９００は、ランク付け回路９０６が出力するランク付け情報を保持し出力するランク付け情報用キュー＃３を備える。【０１９３】
ここで、キュー＃４の出力端とキュー＃５の出力端は、セレクタ９０４と接続されている。キュー＃４用タイマ９０２の出力端とキュー＃５用タイマ９０３の出力端は、アービタ９０１とセレクタ９０５とに接続されている。【０１９４】
アービタ９０１の出力端は、セレクタ９０４とセレクタ９０５とに接続されている。
セレクタ９０４の出力端は、キュー＃３と接続され、セレクタ９０５の出力端は、ランク付け回路９０６と接続されている。ランク付け回路９０６の出力端は、ランク付け情報用キュー＃３と接続されている。【０１９５】
ランク付け情報用キュー＃３の出力端は、アービタ５１１と接続されている。
なお、アービタ９０１、キュー＃４、キュー＃４用タイマ９０２、キュー＃５、キュー＃５用タイマ９０３、セレクタ９０４、セレクタ９０５、ランク付け回路９０６およびランク付け情報用キュー＃３の動作は、それぞれ図５に示したアービタ１０１、キュー＃０、キュー＃０用タイマ１０２、キュー＃１、キュー＃１用タイマ１０３、セレクタ１０４、セレクタ１０５、ランク付け回路５０１およびランク付け情報用キュー＃２の動作と同様なので、詳細な説明は省略する。【０１９６】
図１０は、第１の実施例に係る多段アービタ１００を適用したコンピュータシステムの主要部を示す図である。
図１０に示すコンピュータシステム１０００は、ＳＢ（システムボード）＃０〜＃３と、ＩＯＢ（Ｉ／Ｏボード）＃０〜＃３と、データクロスバＬＳＩ１００１と、アドレスクロスバＬＳＩ１００２と、を備えている。【０１９７】
なお、図１０には、ＳＢ＃０〜＃３のうちＳＢ＃０のみが示してある。また、ＩＯＢ＃０〜＃３のうちＩＯＢ＃０のみが示してある。
ＳＢ＃０は、メモリ１０１２および１０１３と、メモリ１０１２および１０１３を制御するメモリ制御ＬＳＩ１０１１と、を備えている。また、ＳＢ＃０は、ＣＰＵ１０１４〜１０１７と、ＣＰＵ１０１４〜１０１７を制御するＣＰＵ制御ＬＳＩ１０１８と、ＦＷＨ（ファームウェアハブ）と、を備えている。ＳＢ＃１〜＃３についても同様である。【０１９８】
ＩＯＢ＃０は、ＩＯ制御ＬＳＩ１０２１と、ＰＣＩ制御ＬＳＩ１０２２および１０２３と、ＩＣＨ（Ｉ／Ｏ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ）１０２４および１０２５と、ＦＷＨ、ＶＧＡ（Ｖｉｄｅｏ  Ｇｒａｐｈｉｃｓ  Ａｒｒａｙ）端子、ＳＩＯ（Ｓｅｒｉａｌ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）端子、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）端子、ＢＭＣ（Ｂａｓｅｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）端子と、備えている。ＩＯＢ＃１〜＃３についても同様である。【０１９９】
なお、図１０に示すＳＢ＃０〜＃３およびＩＯＢ＃０〜＃３の構成は、単なる例示であって、図示する構成に限定する趣旨でないのは当然である。また、図１０に示すＳＢ＃０およびＩＯＢ＃０を構成する構成要素は、周知技術であるので説明は省略する。【０２００】
データクロスバＬＳＩ１００１の出力端子ＳＢ＃０は、ＳＢ＃０のメモリ制御ＬＳＩ１０１１の入力端と接続される。また、データクロスバＬＳＩ１００１の入力端子ＳＢ＃１、ＳＢ＃２およびＳＢ＃３には、それぞれＳＢ＃１、ＳＢ＃２、ＳＢ＃３のメモリ制御ＬＳＩ１０１１の出力端子が接続される。【０２０１】
また、データクロスバＬＳＩ１００１の入力端子ＩＯＢ＃０、ＩＯＢ＃１、ＩＯＢ＃２およびＩＯＢ＃３には、それぞれＩＯＢ＃０、ＩＯＢ＃１、ＩＯＢ＃２およびＩＯＢ＃３のＩＯ制御ＬＳＩの出力端子が接続される。【０２０２】
そして、入力端子ＩＯＢ＃０、ＩＯＢ＃１、ＩＯＢ＃２およびＩＯＢ＃３は、それぞれキュー＃Ｉ０、＃Ｉ１、＃Ｉ２、＃Ｉ３と接続される。また、入力端子ＳＢ＃１、ＳＢ＃２、ＳＢ＃３は、キュー＃Ｓ１、＃Ｓ２、＃Ｓ３と接続されている。【０２０３】
そして、データクロスバＬＳＩ１００１は、以下の構成要素を有する。
アービタ１００１ａは、図１に示したアービタ１０１に相当する動作を行なう。また、アービタ１００１ｂは、図１に示したアービタ１１１に相当する動作を行なう。また、セレクタ１００１ｃは、図１に示したセレクタ１０４に相当する動作を行なう。また、セレクタ１００１ｄは、図１に示したセレクタ１０５に相当する動作を行なう。【０２０４】
キュー＃Ｉ０〜＃Ｉ３は、図１に示したキュー＃０〜＃１に相当する動作を行なう。また、キュー＃ＩＯＢは、図１に示したキュー＃２に相当する動作を行なう。また、タイマ値用キュー＃ＩＯＢは、図１に示したタイマ値用キュー＃２に相当する動作を行なう。また、キュー＃Ｓ１〜＃Ｓ３は、図１に示したキュー＃３に相当する動作を行なう。また、各タイマは、図１に示したキュー用タイマに相当する動作を行なう。【０２０５】
このように、データクロスバＬＳＩ１００１に、アービタ１００１ａとアービタ１００１ｂとを多段に接続した多段アービタ１００を適用することができる。
なお、図１０では、ＩＯＢからＳＢにパケットを送信する場合について示しているが、ＳＢからＩＯＢにパケットを送信する場合も、データクロスバＬＳＩ１００１に多段アービタ１００を適用することができる。【０２０６】
また、アドレスクロスバＬＳＩ１００２についても、データクロスバＬＳＩ１００１と同様に、多段アービタ１００を適用することができる。
図１１は、第２の実施例に係る多段アービタ５００を適用したコンピュータシステムの主要部を示す図である。なお、ＳＢ＃０〜＃３とＩＯＢ＃０〜＃３の構成は、図１０に示した構成と同様なので説明は省略する。【０２０７】
アービタ１１０１ａは、図５に示したアービタ１０１に相当する動作を行なう。アービタ１１０１ｂは、図５に示したアービタ５１１に相当する動作を行なう。
セレクタ１１０１ｃは、図５に示したセレクタ１０４に相当する動作を行なう。また、セレクタ１１０１ｄは、図５に示したセレクタ１０５に相当する動作を行なう。【０２０８】
ランク付け回路１１０１ｅは、図５に示したランク付け回路５０１に相当する動作を行なう。また、ランク付け情報設定レジスタ１１０１ｆは、図５に示したキュー＃３ランク付け情報設定レジスタ５１２に相当する動作を行なう。【０２０９】
キュー＃Ｉ０〜Ｉ３は、図５に示したキュー＃０〜＃１に相当する動作を行なう。また、キュー＃ＩＯＢは、図５に示したキュー＃２に相当する動作を行なう。また、ランク付け情報用キュー＃ＩＯＢは、図５に示したランク付け情報用キュー＃２に相当する動作を行なう。また、キュー＃Ｓ１〜Ｓ３は、キュー＃３に相当する動作を行なう。【０２１０】
各タイマは、図５に示したキュー用タイマに相当する動作を行なう。
このように、データクロスバＬＳＩ１１０１に、アービタ１１０１ａとアービタ１１０１ｂとを多段に接続した多段アービタ５００を適用することができる。【０２１１】
なお、図１１では、ＩＯＢからＳＢにパケットを送信する場合について示しているが、ＳＢからＩＯＢにパケットを送信する場合も、データクロスバＬＳＩ１１０１に多段アービタ５００を適用することができる。【０２１２】
また、アドレスクロスバＬＳＩ１１０２についても、データクロスバＬＳＩ１１０１と同様に、多段アービタ５００を適用することができる。
以上に説明したように、第１の実施例に係る多段アービタ１００において、前段のアービタ１０１が選択したパケットのタイマ値は、タイマ値用キュー＃２に格納される。すると、後段のアービタ１１１は、タイマ値用キュー＃２が出力するタイマ値にキュー＃２用タイマ１１２が出力するタイマ値を加算したタイマ値と、キュー＃３用タイマ１１３が出力するタイマ値と、を比較する。【０２１３】
後段のアービタ１１１は、キュー＃０または＃１でのタイマ値が加算されたキュー＃２のタイマ値と、キュー＃３のタイマ値と、のうちいずれか大きいタイマ値のキューからのパケットを選択する第２の選択信号を生成する。【０２１４】
その結果、後段のアービタ１１１は、前段の待ち時間、すなわち、パケットがキュー＃０または＃１に格納されてからアービタ１０１がそのパケットを選択してキュー＃２に出力するまでの時間を考慮して、キュー＃２のパケットとキュー＃３のパケットを調停する。【０２１５】
したがって、多段アービタ１００は、多段アービタ１００を通過するために必要な待ち時間を最小限に抑えることが可能となる。
また、第１の実施例の変形例に係る多段アービタ４００において、前段のアービタ１０１が選択したパケットのタイマ値は、タイマ値用キュー＃２に格納され、前段のアービタ４０１が選択したパケットのタイマ値は、タイマ値用キュー＃３に格納される。【０２１６】
後段のアービタ４１１は、タイマ値用キュー＃２が出力するタイマ値をキュー＃２用タイマ１１２が出力するタイマ値に加算したタイマ値と、タイマ値用キュー＃３が出力するタイマ値をキュー＃３用タイマ１１３が出力するタイマ値に加算したタイマ値と、を比較する。【０２１７】
アービタ４１１は、キュー＃０または＃１でのタイマ値が加算されたキュー＃２のタイマ値と、キュー＃４または＃５でのタイマ値が加算されたキュー＃３のタイマ値と、のうちいずれか大きい方のキューが出力するパケットを選択する第２の選択信号を生成する。【０２１８】
その結果、後段のアービタ４１１は、前段の待ち時間、すなわち、パケットがキュー＃０または＃１に格納されてからアービタ１０１がそのパケットを選択してキュー＃２に出力するまでの時間を考慮して、キュー＃２のパケットとキュー＃３のパケットを調停する。【０２１９】
同時に、後段のアービタ４１１は、前段の待ち時間、すなわち、パケットがキュー＃４または＃５に格納されてからアービタ４０１がそのパケットを選択してキュー＃３に出力するまでの時間を考慮して、キュー＃２のパケットとキュー＃３のパケットを調停する。【０２２０】
したがって、多段アービタ４００は、１のアービタに対して複数のアービタを多段に備える多段アービタ４００を通過するために必要な待ち時間を最小限に抑えることが可能となる。【０２２１】
また、第２の実施例に係る多段アービタ５００において、ランク付け回路５０１は、前段のアービタ１０１が選択したパケットのタイマ値に応じて、タイマ値が大きいものほど優先順位を高くなるようにランク付け情報を生成する。ランク付け情報は、キュー＃２に格納されるパケットと対応する順番でランク付け情報用キュー＃２に格納される。【０２２２】
後段のアービタ５１１は、ランク付け情報用キュー＃２が出力するランク付け情報と、キュー＃３ランク付け情報設定レジスタ５１２が出力するランク付け情報と、を比較する。そして、アービタ５１１は、比較の結果、優先順位が高い方のキューが出力するパケットを選択する第２の選択信号を生成する。【０２２３】
その結果、後段のアービタ５１１は、前段の待ち時間、すなわち、パケットがキュー＃０または＃１に格納されてからアービタ１０１がそのパケットを選択してキュー＃２に出力するまでの時間を考慮して、キュー＃２のパケットとキュー＃３のパケットを調停する。【０２２４】
したがって、多段アービタ５００は、多段アービタ５００を通過するために必要な待ち時間を最小限に抑えることが可能となる。
さらに、優先度が同じ場合、アービタ５１１は、キュー＃２用タイマ１１２が出力するタイマ値と、キュー＃３用タイマ１１３が出力するタイマ値と、を比較する。そして、比較の結果、タイマ値が大きい方のキューが出力するパケットを選択する第２の選択信号を生成する。【０２２５】
その結果、多段アービタ５００は、優先順位が同じ場合であっても、キュー＃２用タイマ１１２またはキュー＃３用タイマ１１３が出力するタイマ値に応じてキュー＃２またはキュー＃３が出力するパケットの調停を行なうことが可能となる。【０２２６】
さらに、タイマ値が同じ場合、アービタ５１１は、キュー＃２が出力するパケットとキュー＃３が出力するパケットとを交互に選択する第２の選択信号を生成する。
その結果、多段アービタ５００は、優先順位が同じ、かつ、タイマ値が同じ場合であっても、キュー＃２またはキュー＃３が出力するパケットの調停を行なうことが可能となる。【０２２７】
また、第２の実施例の変形例に係る多段アービタ９００において、ランク付け回路５０１は、前段のアービタ１０１が選択したパケットのタイマ値に応じて、タイマ値が大きいものほど優先順位を高くなるようにランク付け情報を生成する。ランク付け情報は、キュー＃２に格納されるパケットと対応する順番でランク付け情報用キュー＃２に格納される。【０２２８】
同様に、ランク付け回路９０６は、前段のアービタ９０１が選択したパケットのタイマ値に応じて、タイマ値が大きいものほど優先順位を高くなるようにランク付け情報を生成する。ランク付け情報は、キュー＃３に格納されるパケットと対応する順番でランク付け情報用キュー＃３に格納される。【０２２９】
後段のアービタ５１１は、ランク付け情報用キュー＃２が出力するランク付け情報と、ランク付け情報用キュー＃３が出力するランク付け情報と、を比較する。そして、アービタ５１１は、比較の結果、優先順位が高い方のキューが出力するパケットを選択する第２の選択信号を生成する。【０２３０】
その結果、後段のアービタ５１１は、前段の待ち時間、すなわち、パケットがキュー＃０または＃１に格納されてからアービタ１０１がそのパケットを選択してキュー＃２に出力するまでの時間を考慮して、キュー＃２のパケットとキュー＃３のパケットを調停する。【０２３１】
同時に、後段のアービタ５１１は、前段の待ち時間、すなわち、パケットがキュー＃４または＃５に格納されてからアービタ９０１がそのパケットを選択してキュー＃３に出力するまでの時間を考慮して、キュー＃２のパケットとキュー＃３のパケットを調停する。【０２３２】
したがって、多段アービタ９００は、１のアービタに対して複数のアービタを多段に備える多段アービタ９００を通過するために必要な待ち時間を最小限に抑えることが可能となる。
【図１】
0005382003.tif 000003
【図２】
0005382003.tif 000004
【図３】
0005382003.tif 000005
【図４】
0005382003.tif 000006
【図５】
0005382003.tif 000007
【図６】
0005382003.tif 000008
【図７】
0005382003.tif 000009
【図８】
0005382003.tif 000010
【図９】
0005382003.tif 000011
【図１０】
0005382003.tif 000012
【図１１】
0005382003.tif 000013
【図１２】
0005382003.tif 000014