(57)【要約】【課題】複数のバッファを用いた調停回路において、オーバーフローの蓋然性が高い複数のバッファが存在する場合でも調停回路全体でバッファオーバーフローの発生を低減できる調停回路を提供する。【解決手段】バッファ９１は、上位装置から入力された入力情報を保持する。入力情報量検知手段９２は、入力情報が入力されたときに、バッファ９１内に保持された入力情報量を検知する。優先度決定手段９３は、入力情報検知手段９２が検知したバッファ９１ごとの入力情報量を比較して、入力情報を出力させるバッファ９１の優先度である出力優先度を決定する。出力指示手段９４は、出力優先度の高いバッファに保持された入力情報を出力させる。【選択図】図１５
2010239434.tif 000002
【特許請求の範囲】
【請求項１】
上位装置から入力された入力情報を保持するバッファと、
前記入力情報が入力されたときに、前記バッファ内に保持された入力情報量を検知する入力情報量検知手段と、
前記入力情報検知手段が検知した前記バッファごとの入力情報量を比較して、前記入力情報を出力させるバッファの優先度である出力優先度を決定する優先度決定手段と、
前記出力優先度の高いバッファに保持された入力情報を出力させる出力指示手段とを備えた
ことを特徴とする調停回路。
【請求項２】
入力情報量検知手段は、上位装置から入力情報が入力されたときに、バッファの入力情報量を示す値である入力カウンタ値をカウントアップし、
優先度決定手段は、前記入力カウンタ値が大きいバッファの出力優先度を高く決定する
請求項１記載の調停回路。
【請求項３】
バッファ内に保持された入力情報量が予め定められた閾値である入力情報量閾値を超えた状態であることを示す情報である入力状態情報を生成する入力状態情報生成手段を備え、
前記入力状態情報生成手段は、入力情報量検知手段が検知した入力情報量をもとに前記入力状態情報を生成し、
優先度決定手段は、前記入力状態情報が示す入力情報量が大きいバッファの出力優先度を高く決定する
請求項１または請求項２に記載の調停回路。
【請求項４】
バッファのオーバーフローを検知するオーバーフロー検知手段と、
予め定められた時間内に前記オーバーフロー検知手段がバッファのオーバーフローを検知したか否か判断するオーバーフロー発生判断手段と、
前記オーバーフロー検知手段がバッファのオーバーフローを検知したときに、バッファを優先的に選択させることを示す値である優先値をカウントアップし、前記オーバーフロー発生判断手段が予め定められた時間内に前記オーバーフロー検知手段によるオーバーフローの検知がなかったと判断したときに、前記優先値をカウントダウンする優先値カウント手段とを備え、
優先度決定手段は、前記優先値の大きいバッファの出力優先度を高く決定する
請求項３記載の調停回路。
【請求項５】
バッファのオーバーフローを事前に検知するオーバーフロー事前検知手段と、
予め定められた時間内に前記オーバーフロー事前検知手段がバッファのオーバーフローを事前に検知したか否か判断するオーバーフロー発生事前判断手段と、
前記オーバーフロー事前検知手段がバッファのオーバーフローを事前に検知したときに、バッファを優先的に選択させることを示す値である優先値をカウントアップし、前記オーバーフロー発生判断手段が予め定められた時間内に前記オーバーフロー事前検知手段によるオーバーフローの検知がなかったと判断したときに、前記優先値をカウントダウンする優先値カウント手段とを備え、
優先度決定手段は、前記優先値の大きいバッファの出力優先度を高く決定する
請求項３記載の調停回路。
【請求項６】
優先度決定手段は、優先値が予め定められた閾値である優先閾値を超えたときに、優先値の大きいバッファの出力優先度を高く決定する
請求項４または請求項５に記載の調停回路。
【請求項７】
優先度決定手段は、優先値が優先閾値を超えたときに、出力優先度を変化させる割合を示す値として予め定められた値である出力優先度変化割合をもとに出力優先度を決定する
請求項６に記載の調停回路。
【請求項８】
上位装置から入力情報が入力されたときに、入力情報を保持するバッファ内に保持された入力情報量を検知する入力情報量検知ステップと、
前記入力情報検知ステップで検知した前記バッファごとの入力情報量を比較して、前記入力情報を出力させるバッファの優先度である出力優先度を決定する優先度決定ステップと、
前記出力優先度の高いバッファに保持された入力情報を出力させる出力指示ステップとを含む
ことを特徴とするオーバーフロー制御方法。
【請求項９】
入力情報量検知ステップで、上位装置から入力情報が入力されたときに、バッファの入力情報量を示す値である入力カウンタ値をカウントアップし、
優先度決定ステップで、前記入力カウンタ値が大きいバッファの出力優先度を高く決定する
請求項８記載のオーバーフロー制御方法。
【請求項１０】
上位装置から入力された入力情報を保持するバッファを備えたコンピュータに適用されるオーバーフロー制御プログラムであって、
前記コンピュータに、
前記入力情報が入力されたときに、前記バッファ内に保持された入力情報量を検知する入力情報量検知処理、
前記入力情報検知処理で検知した前記バッファごとの入力情報量を比較して、前記入力情報を出力させるバッファの優先度である出力優先度を決定する優先度決定処理、及び、
前記出力優先度の高いバッファに保持された入力情報を出力させる出力指示処理
を実行させるためのオーバーフロー制御プログラム。
【請求項１１】
コンピュータに、
入力情報量検知処理で、上位装置から入力情報が入力されたときに、バッファの入力情報量を示す値である入力カウンタ値をカウントアップさせ、
優先度決定処理で、前記入力カウンタ値が大きいバッファの出力優先度を高く決定させる
請求項１０記載のオーバーフロー制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のバッファを用いた調停回路で発生するバッファオーバーフローを低減させる調停回路及びその調停回路に適用されるオーバーフロー制御方法及びオーバーフロー制御プログラムに関する
【背景技術】
【０００２】
一般的な調停回路において、複数のＦＩＦＯ（First-In First-Out）方式によるバッファ（以下、ＦＩＦＯと記す。）から出力選択を行う場合、それぞれのＦＩＦＯに対して静的な重みを設定することで優先順位を明確にし、オーバーフロー発生を軽減する方法がとられている。
【０００３】
一方、それぞれのＦＩＦＯに対して動的な重み（優先度）を設定する技術が各種提案されている。例えば、特許文献１には、簡単な構成で、バースト的なセル排出を回避した優先制御が可能なＡＴＭ（Asynchronous Transfer Mode）通信装置が記載されている。特許文献１に記載されたＡＴＭ通信装置は、予め定められた通信品質クラス間の優先順位と、最低閾値への到達の有無と、セル排出権の有無とを条件とする所定の選択論理に基づいて、セル排出すべき通信品質クラスを選択する。各通信品質クラスのセル排出権は、所定期間分のタイムスロットからなるラウンドロビンテーブル上に時系列的に分散して割り当てられる。このように、上記ＡＴＭ通信装置は、排出するセルを選択するための優先順位を見直して動的な重み値を設定することによりセル排出間隔を均等に近づける。
【０００４】
特許文献２には、上位制御回路にハードキューへのデータ積み込み状況を通知して、ハードキューをオーバーフローさせずにデータ通信を可能にするデータ通信装置が記載されている。特許文献２に記載されたデータ通信装置は、ハードキューに積み込まれているデータの積み込み数を算出し、その積み込み状況を上位制御回路に通知する。上位制御回路は、その状況を把握してデータ通信装置に入力するデータ積み込み回数を調節する。
【０００５】
特許文献３には、入力バッファのオーバーフローに起因するパケットの廃棄を減少できる競合パケット調整装置が記載されている。特許文献３に記載された競合パケット調整装置は、すべての入力バッファにセルの出力機会を均等に与えるため、入力バッファごとにサイクリックに変更される優先度Ｐに基づいて、出線要求バッファの調停を行う。また、自バッファが輻輳状態にある（以下、輻輳バッファと記す。）か否かを判定し、輻輳状態にあれば輻輳表示フラグを設定する。輻輳バッファがある場合は、この輻輳バッファの中で、最も優先度Ｐが高いバッファに勝ち報告ＷＩＮ（自バッファが調停に勝ち残ったことを示す報告）を返信し、輻輳バッファがない場合は、出線要求バッファの中で、最も優先度Ｐの高いバッファに勝ち報告ＷＩＮを返信する。
【０００６】
特許文献４には、データ伝送のための優先順位選択手段が記載されている。特許文献４に記載された優先順位選択手段では、乱数発生器を用いて選択したルックアップテーブルの優先順位シンボルをもとに、複数のバッファの中からデータを出力させるバッファを選択する。そして、いずれかのバッファのデータ量がオーバーフロー閾知レベルＴｄを超えた場合、バッファを選択するための優先順位シンボルを変更し、５０％の割合でそのバッファからデータを出力させる。また、いずれかのバッファのデータ量がオーバーライド閾知レベルＴｓを超えた場合、強制的にそのバッファからデータを出力させる。
【０００７】
特許文献５には、パケットスイッチを通るデータセルの流れを制御するパケットスイッチの流れ制御システムが記載されている。特許文献５に記載された制御システムでは、出力バッファの満杯レベルを監視し、出力バッファに対してデータセルを伝送してよいか否かを表す信号を発生させる。出力バッファのどれかが過度に満杯になって、その出力バッファに関連するリンクにアドレスされたセルを受け入れることができずにデータセルを失う恐れが生じた場合、上記信号を入力バッファに送って、過度に満杯になっている出力バッファ向けのセルを持つデータの伝送を遅らせる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００２−９４５１９号公報（段落００２５，００３２、図７）
【特許文献２】特開昭６２−４９４６２号公報（Ｐ２左下，右下、図１）
【特許文献３】特開平６−２３２９０９号公報（段落００４２，００４３，００７６，００９１）
【特許文献４】特表２００１−５１７０２６号公報（段落００１１、００１２、図１）
【特許文献５】特表平８−５０４５５４号公報（Ｐ１６〜１７、図５）
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ＦＩＦＯ内のエントリ数は状況に応じて変化するため、優先順位として静的に設定された重みが常に最適値であるとは言えない。そのため、セル排出可能なセルがあってもキュー（ＦＩＦＯ）から排出できないケースや、最優先に出力すべきデータがＦＩＦＯ内に待たされ続ける状況の発生が原因で、ＦＩＦＯがオーバーフローになり易い恐れがあった。
【００１０】
特許文献１に記載されたＡＴＭ通信装置では、動的な重み値を設定できるが、その重み値は最低通信品質を確保することを目的としている。すなわち、上記ＡＴＭ通信装置では、ラウンドロビンにより決定される各通信品質クラスのセル排出権と、予め定められた通信品質クラス間の優先順位をもとに、セル排出すべき特定の通信品質クラスを選択する。そのため、予め定められた優先順位が低い通信品質クラスでは、受信したセルがオーバーフローする蓋然性が高くなってしまうという課題がある。
【００１１】
また、特許文献２に記載されたデータ通信装置では、ハードウェアキューの積み込み数を上位制御回路に通知し、入力データを調整する。しかし、入力データの調整は上位制御回路に依存するため、上記データ通信装置では、上位制御回路からデータが入力されてしまった後は、オーバーフローの制御をすることができない。そのため、上位制御回路からのデータがデータ通信装置に入力された後であってもフロー制御できる事が望ましい。
【００１２】
特許文献３に記載された競合パケット調整装置では、輻輳バッファの時の状態をそれ以外の（輻輳していない）バッファの時の状態よりも優先度を高くする。しかし、輻輳バッファが複数存在する場合、上記競合パケット調整装置は、処理を順番に割り振る（いわゆるラウンドロビン）方法を用いてバッファを選択するため、より早く処理すべきバッファを判断できないという課題がある。
【００１３】
また、特許文献４に記載された優先順位選択手段では、乱数発生器を用いてバッファの優先度を決定し、さらに超えた閾値のレベル（Ｔｓ，Ｔｄ）ごとに優先度を高くする。しかし、上記優先順位選択手段では、バッファ選択のための乱数発生器が必要であり、また、優先度の高いバッファが複数存在する場合、それらの中から優先的に処理すべきバッファを判断できないという課題がある。
【００１４】
また、特許文献５に記載された制御システムでは、出力バッファへの入力データを一時的に抑制することで、その出力バッファのデータ量を所定の閾値よりも減らすことができる。しかし、その出力バッファのデータ量は依然として高く、再度入力データを受け取った場合、すぐに閾値を超える恐れがある。また、これらの処理が繰り返されることにより、制御コストが増大する恐れもある。
【００１５】
そこで、本発明は、複数のバッファを用いた調停回路において、オーバーフローの蓋然性が高い複数のバッファが存在する場合でも調停回路全体でバッファオーバーフローの発生を低減できる調停回路及びその調停回路に適用されるオーバーフロー制御回路及びオーバーフロー制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明による調停回路は、上位装置から入力された入力情報を保持するバッファと、入力情報が入力されたときに、バッファ内に保持された入力情報量を検知する入力情報量検知手段と、入力情報検知手段が検知したバッファごとの入力情報量を比較して、入力情報を出力させるバッファの優先度である出力優先度を決定する優先度決定手段と、出力優先度の高いバッファに保持された入力情報を出力させる出力指示手段とを備えたことを特徴とする。
【００１７】
本発明によるオーバーフロー制御方法は、上位装置から入力情報が入力されたときに、入力情報を保持するバッファ内に保持された入力情報量を検知する入力情報量検知ステップと、入力情報検知ステップで検知したバッファごとの入力情報量を比較して、入力情報を出力させるバッファの優先度である出力優先度を決定する優先度決定ステップと、出力優先度の高いバッファに保持された入力情報を出力させる出力指示ステップとを含むことを特徴とする。
【００１８】
本発明によるオーバーフロー制御プログラムは、上位装置から入力された入力情報を保持するバッファを備えたコンピュータに適用されるオーバーフロー制御プログラムであって、コンピュータに、入力情報が入力されたときに、バッファ内に保持された入力情報量を検知する入力情報量検知処理、入力情報検知処理で検知したバッファごとの入力情報量を比較して、入力情報を出力させるバッファの優先度である出力優先度を決定する優先度決定処理、及び、出力優先度の高いバッファに保持された入力情報を出力させる出力指示処理を実行させることを特徴とする。
【発明の効果】
【００１９】
本発明によれば、複数のバッファを用いた調停回路において、オーバーフローの蓋然性が高い複数のバッファが存在する場合でも調停回路全体でバッファオーバーフローの発生を低減できる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１の実施形態における調停回路の例を示すブロック図である
【図２】優先順位調停部３０の構成例を示すブロック図である。
【図３】ＬＤＺ３１の真理値表の例を示す説明図である。
【図４】ＬＤＺ３２の真理値表の例を示す説明図である。
【図５】カウンタ値Ａ〜Ｄの例を示す説明図である。
【図６】本発明の第２の実施形態における調停回路の例を示すブロック図である。
【図７】ＦＩＦＯステータス保持手段５０が保持する値の例を示す説明図である。
【図８】優先順位調停部３０’の構成例を示すブロック図である。
【図９】ＬＤＺ３５の真理値表の例を示す説明図である。
【図１０】本発明の第３の実施形態における調停回路の例の一部を示すブロック図である。
【図１１】オーバーフローカウンタの値が推移する例を説明するタイミングチャートの図である。
【図１２】ＦＩＦＯステータス保持手段５０が保持する情報量判断結果の例を示す説明図である。
【図１３】ＦＩＦＯステータス保持手段５０が保持する情報量判断結果の例を示す説明図である。
【図１４】オーバーフロー回数の差分を判断する場合の例を示す説明図である。
【図１５】本発明における調停回路の最小構成を示すブロック図である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態を図面を参照して説明する。
【００２２】
実施形態１．
図１は、本発明の第１の実施形態における調停回路の例を示すブロック図である。本実施形態における調停回路は、ＦＩＦＯ１０Ａ，１０Ｂ，１０Ｃ，１０Ｄ（以下、これらをまとめて、ＦＩＦＯ１０と記すこともある。）と、ＦＩＦＯエントリカウンタ２０Ａ，２０Ｂ，２０Ｃ，２０Ｄ（以下、これらをまとめてＦＩＦＯエントリカウンタ２０と記すこともある。）と、優先順位調停部３０と、セレクタ回路４０とを備えている。
【００２３】
ＦＩＦＯ１０は、上位装置が出力した入力情報Ａ〜Ｄをそれぞれ受け取り、出力情報Ａ〜Ｄとしてそれぞれ出力するバッファである。ＦＩＦＯ１０Ａ，１０Ｂ，１０Ｃ及び１０Ｄは、入力情報Ａ〜Ｄをそれぞれ受信すると、その入力情報をそれぞれの内部に格納し、古い情報から順に出力情報Ａ〜Ｄとしてそれぞれ出力する。以下の説明では、上位装置からの入力情報を受信するＦＩＦＯ１０が４個の場合について説明する。また、ＦＩＦＯ１０が受信する入力情報の単位を１Ｗｏｒｄとし、ＦＩＦＯ１０が入力情報として保持できる最大量を１０２３（Ｗｏｒｄ）として説明する。なお、ＦＩＦＯの数は４個に限定されず、最大量や単位も上記内容に限定されない。図１に示す例では、ＦＩＦＯ１０Ａ，１０Ｂ，１０Ｃ及び１０Ｄは、入力情報量として、それぞれ６３９，１０２２，０，５１１（Ｗｏｒｄ）の入力情報を格納していることを示す。
【００２４】
ＦＩＦＯエントリカウンタ２０は、上位装置から出力された入力情報Ａ〜Ｄをそれぞれ受け取り、その入力情報Ａ〜Ｄを受信する度にＦＩＦＯエントリカウンタ値（以下、カウンタ値と記す。）Ａ〜Ｄをカウントアップする。そして、ＦＩＦＯエントリカウンタ２０は、そのカウンタ値Ａ〜Ｄを、後述の優先順位調停部３０へ通知する。すなわち、ＦＩＦＯエントリカウンタ２０は、ＦＩＦＯ１０内のデータ量を検知する手段であると言える。
【００２５】
優先順位調停部３０は、ＦＩＦＯエントリカウンタ２０から受信したカウンタ値Ａ〜Ｄを比較して、データを出力させるＦＩＦＯ１０を選択する。優先順位調停部３０は、受信したカウンタ値Ａ〜Ｄの比較を行い、最もカウンタ値の大きいＦＩＦＯ１０の優先度を高く決定する。優先順位調停部３０は、その優先度（すなわち、カウンタ比較結果）をセレクト信号として、後述のセレクタ回路４０へ通知する。
【００２６】
図２は、優先順位調停部３０の構成例を示すブロック図である。図２に示す例では、優先順位調停部３０は、リーディングゼロ回路（以下、ＬＤＺと記す。）３１０〜３１９（以下、これらをまとめて、ＬＤＺ３１と記すこともある。）と、ＬＤＺ３２と、セレクタ回路３３とを備えている。
【００２７】
ＬＤＺ３１は、ビット単位でカウンタ値の大小判定を行う回路である。ＬＤＺ３１０は、最上位ビット同士の比較を行い、以下、ＬＤＺ３１１〜ＬＤＺ３１９は、最上位ビットから１ビットずつ下位のビットに対応させて比較を行う。本実施形態では、ＦＩＦＯ１０が格納できる入力情報が１０２３であり、カウンタ値が１０ビットで表現できるため、ＬＤＺ３１を１０個備えている場合について説明するが、ＬＤＺ３１の個数は１０個に限定されない。優先順位調停部３０が備えるＬＤＺ３１の個数は、カウンタ値の範囲によって決定すればよい。
【００２８】
ＬＤＺ３２は、ＬＤＺ３１１〜ＬＤＺ３１９の中から、比較結果を採用するＬＤＺ回路を選択する回路である。ＬＤＺ３２は、ＬＤＺ３１０〜３１９による比較結果を「ＬＤＺ３１０＞ＬＤＺ３１１＞ＬＤＺ３１２＞ＬＤＺ３１３＞ＬＤＺ３１４＞ＬＤＺ３１５＞ＬＤＺ３１６＞ＬＤＺ３１７＞ＬＤＺ３１８＞ＬＤＺ３１９」の優先順位に基づいて選択する。セレクタ回路３３は、ＬＤＺ３２が選択したＬＤＺの比較結果をもとに、出力情報を出力させるＦＩＦＯ１０を選択し、結果をセレクト信号として、後述のセレクタ回路４０へ通知する。以下の説明では、優先順位調停部３０がＬＤＺ３１を１０個備えている場合について説明するが、ＬＤＺ３１の数は１０個に限定されない。
【００２９】
優先順位調停部３０の処理について、以下に詳述する。ＦＩＦＯエントリカウンタ２０がカウントしたカウンタ値の大小判定は、まず、ＬＤＺ１３０が、ビット０（最上位ビット）同士を比較する。比較したビットの中で１が立っているものが１つだけあれば以降の下位ビットの比較は不要となり、最も空き容量の少ないＦＩＦＯ１０が特定できることになる。もし１が立っているビットが存在しなければ、ＬＤＺ１３１が、ビット０の下位のビット１同士で同様に比較を行う。比較したビットの中で１が立っているものが１つだけあれば以降の下位ビットの比較は不要となり、最も空き容量の少ないＦＩＦＯ１０が特定できる。以下、ＬＤＺ１３２〜ＬＤＺ１３９は、ビット１の下位のビット２〜最下位ビットまでの比較を同様に行う。
【００３０】
上述のように、ＬＤＺ回路を２段用いた論理回路で優先順位調停部３０を構成する場合、ＬＤＺ３１（すなわち、ＬＤＺ３１１〜ＬＤＺ３１９）は、各ビット同士の大小を比較する。また、ＬＤＺ３２は、ＬＤＺ３１の結果の中からどの結果を採用するかを判断する。
【００３１】
上記説明では、比較したビットの中で１が立っているものが１つだけある場合について説明した。なお、比較したビットに複数の１が立っている場合を考慮する場合、大小判定は比較したビットよりも１ビット下位のビット同士の比較結果を用いて行えばよい。図３は、ＬＤＺ３１が比較のために使用する真理値表の例を示す説明図である。図３に示す例では、１が立っているビットが複数あった場合に、ＦＩＦＯ１０Ａ，１０Ｂ，１０Ｃ，１０Ｄの順に優先順位を定めていることを示す。また、図４は、ＬＤＺ３２の真理値表の例を示す説明図である。図４に示す例では、ＬＤＺ３２は、最上位ビットの比較結果を優先していることを示す。
【００３２】
セレクタ回路４０は、出力情報Ａ〜Ｄの中からどの出力情報を出力するか選択する。セレクタ回路４０は、ＦＩＦＯ１０からの出力情報Ａ〜Ｄと、優先順位調停部３０からのセレクト信号（カウンタ比較結果と記すこともある。）を検知する。セレクタ回路４０は、優先順位調停部３０から送られるセレクト信号をもとに、ＦＩＦＯ１０から出力された出力情報Ａ〜Ｄの中から１つを選択して調停結果として出力する。例えば、セレクタ回路４０は、最も大きいカウンタ値に対応するＦＩＦＯ１０から出力される出力情報を選択する。そして、セレクタ回路４０は、選択した出力情報を調停結果として出力する。なお、セレクタ回路４０は、出力情報を選択したときに、ＦＩＦＯエントリカウンタ２０のカウンタ値を１カウントダウンする。
【００３３】
ＦＩＦＯエントリカウンタ２０と、優先順位調停部３０と、セレクタ回路４０とは、例えば、プログラム（オーバーフロー制御プログラム）に従って動作するコンピュータのＣＰＵによってソフトウェア上で実現されてもよい。例えば、プログラムは、調停回路が備える記憶部（図示せず）に記憶され、ＣＰＵは、そのプログラムを読み込み、プログラムに従って、ＦＩＦＯエントリカウンタ２０、優先順位調停部３０及びセレクタ回路４０として動作してもよい。また、ＦＩＦＯエントリカウンタ２０、優先順位調停部３０、セレクタ回路４０がそれぞれ専用の回路で実現されていてもよい。
【００３４】
次に、動作について説明する。本実施形態における調停装置は、上位装置から出力された入力情報Ａ〜Ｄをそれぞれ受け取ると、ＦＩＦＯ１０が、その入力情報をそれぞれの内部に保持する。また、ＦＩＦＯエントリカウンタ２０は、カウンタ値Ａ〜Ｄをカウントアップし、そのカウンタ値Ａ〜Ｄを優先順位調停部３０へ通知する。優先順位調停部３０は、ＦＩＦＯエントリカウンタ２０から通知されるカウンタ値を検知すると、回路（比較器回路と記すこともある。）を用いて各カウンタ値を直接比較する。
【００３５】
図５は、カウンタ値Ａ〜Ｄの例を示す説明図である。例えば、各カウンタ値が、図５（ａ）に例示する値である場合、ＦＩＦＯ１０Ｂのカウンタ値Ｂが最も大きいため、優先順位調停部３０は、ＦＩＦＯ１０Ｂからの出力を最も優先度が高いと決定する（図５（ｂ））。カウンタ値が最も大きいＦＩＦＯ１０を特定することは、空き容量が最も少ないＦＩＦＯを特定することである言える。そこで、優先順位調停部３０は、比較結果としてＦＩＦＯ１０Ｂを示すセレクト信号をセレクタ回路４０へ通知する。
【００３６】
セレクタ回路４０は、セレクト信号を検知すると、その信号に応じて出力情報Ａ〜Ｄの中から１つを選択して調停結果として出力する。このように、ＦＩＦＯ１０間のカウンタ値を比較して出力させるＦＩＦＯ１０を決定することにより、ＦＩＦＯ１０全体においてオーバーフローする頻度を低減させることができる。
【００３７】
本発明によれば、ＦＩＦＯエントリカウンタ２０が、上位装置から入力情報が入力されたときに、入力情報を保持するＦＩＦＯ１０内に保持されたカウンタ値をカウントアップし、優先順位調停部３０が、ＦＩＦＯ１０ごとの入力情報量を比較して、カウンタ値が大きいＦＩＦＯ１０の出力優先度を高く決定する。そして、セレクタ回路４０が、カウンタ値の大きい（出力優先度の高い）ＦＩＦＯ１０に保持された入力情報を出力する。そのため、複数のＦＩＦＯ１０を用いた調停回路において、オーバーフローの蓋然性が高い複数のＦＩＦＯ１０が存在する場合でも調停回路全体でバッファオーバーフローの発生を低減できる。
【００３８】
すなわち、本実施形態では、動的に変化する空き容量に着目し、ＦＩＦＯ１０ごとの容量を比較して、この空き容量が最も少ないＦＩＦＯ１０を調停回路の出力対象として選択することでオーバーフロー発生率を低減させることができる。また、オーバーフロー発生率が低減することにより、結果として回路全体の性能低下を抑えることができる。
【００３９】
また、本発明によれば、入力情報の量をもとに出力対象を一意に選択できるため、出力対象を決定するための他の装置（例えば、乱数発生器など）を備える必要がなく、調停回路の規模を抑えることもできる。
【００４０】
実施形態２．
図６は、本発明の第２の実施形態における調停回路の例を示すブロック図である。なお、第１の実施形態と同様の構成については、図１と同一の符号を付し、説明を省略する。本実施形態における調停回路は、ＦＩＦＯ１０と、ＦＩＦＯエントリカウンタ２０と、優先順位調停部３０’と、セレクタ回路４０に加え、ＦＩＦＯステータス保持手段５０Ａ，５０Ｂ，５０Ｃ，５０Ｄ（以下、これらをまとめて、ＦＩＦＯステータス保持手段５０と記すこともある。）を備えている。
【００４１】
第２の実施形態では、ＦＩＦＯエントリカウンタ２０と優先順位調停部３０’の間にＦＩＦＯステータス保持手段５０が配置され、ＦＩＦＯエントリカウンタ２０は、ＦＩＦＯステータス保持手段５０に対してカウンタ値を通知する。それ以外のＦＩＦＯ１０、ＦＩＦＯエントリカウンタ２０及びセレクタ回路４０の構成については、第１の実施形態と同様であるため、説明を省略する。
【００４２】
ＦＩＦＯステータス保持手段５０は、入力情報の量を示すカウンタ値が予め定められた閾値（以下、入力情報量閾値と記す。）以上か否か判断し、その入力情報量閾値ごとの判断結果（以下、情報量判断結果と記す。）を生成して、その結果を保持する。また、ＦＩＦＯステータス保持手段５０は、その情報量判断結果を優先順位調停部３０’へ通知する。ＦＩＦＯステータス保持手段５０は、例えば、フリップフロップ（以下、ＦＦと記す。）などにより情報量判断結果を保持する。
【００４３】
ＦＩＦＯステータス保持手段５０は、その内部に、Ｆｕｌｌ＿Ａ、Ｆｕｌｌ＿Ｂ、Ｆｕｌｌ＿Ｃ、Ｆｕｌｌ＿Ｄの計４ｂｉｔのＦＦと、Ｆｕｌｌ−１＿Ａ、Ｆｕｌｌ−１＿Ｂ、Ｆｕｌｌ−１＿Ｃ、Ｆｕｌｌ−１＿Ｄの計４ｂｉｔのＦＦと、Ｆｕｌｌ−２＿Ａ、Ｆｕｌｌ−２＿Ｂ、Ｆｕｌｌ−２＿Ｃ、Ｆｕｌｌ−２＿Ｄの計４ｂｉｔのＦＦと、Ｆｕｌｌ−３＿Ａ、Ｆｕｌｌ−３＿Ｂ、Ｆｕｌｌ−３＿Ｃ、Ｆｕｌｌ−３＿Ｄの計４ｂｉｔのＦＦと、３／４＿Ａ、３／４＿Ｂ、Ｃ−３／４＿Ｃ、Ｄ−３／４＿Ｄの計４ｂｉｔのＦＦと、１／２＿Ａ、１／２＿Ｂ、Ｃ−１／２＿Ｃ、Ｄ−１／２＿Ｄの計４ｂｉｔのＦＦの計２４ｂｉｔのＦＦを備えている。なお、＿Ａ，＿Ｂ，＿Ｃ及び＿Ｄと名づけたＦＦは、それぞれＦＩＦＯ１０Ａ，１０Ｂ，１０Ｃ，１０Ｄにそれぞれ対応しているものとする。
【００４４】
ＦＩＦＯステータス保持手段５０は、ＦＩＦＯエントリカウンタ２０Ａ〜Ｄからそれぞれのカウンタ値を受け取ると、ＦＩＦＯ１０のそれぞれのエントリ数が全体容量の半分以上であれば１／２＿Ａ〜１／２＿ＤのＦＦをそれぞれセットし、半分未満であればそれぞれリセットする。また、ＦＩＦＯステータス保持手段５０は、ＦＩＦＯ１０のそれぞれのエントリ数が全体容量の４分の３以上であれば３／４＿Ａ〜３／４＿ＤのＦＦをそれぞれセットし、４分の３未満であればそれぞれリセットする。また、ＦＩＦＯステータス保持手段５０は、ＦＩＦＯ１０のそれぞれのエントリ数が（全体容量−３エントリ）以上であればＦｕｌｌ−３＿Ａ〜Ｆｕｌｌ−３＿ＤのＦＦをそれぞれセットし、（全体容量−３エントリ）未満であればそれぞれリセットする。
【００４５】
以下同様に、ＦＩＦＯステータス保持手段５０は、ＦＩＦＯ１０のそれぞれのエントリ数が（全体容量−２エントリ）以上であればＦｕｌｌ−２＿Ａ〜Ｆｕｌｌ−２＿ＤのＦＦをそれぞれセットし、（全体容量−２エントリ）未満であればそれぞれリセットする。また、ＦＩＦＯステータス保持手段５０は、ＦＩＦＯ１０のそれぞれのエントリ数が（全体容量−１エントリ）以上であればＦｕｌｌ−１＿Ａ〜Ｆｕｌｌ−１＿ＤのＦＦをそれぞれセットし、（全体容量−１エントリ）未満であればそれぞれリセットする。また、ＦＩＦＯステータス保持手段５０は、ＦＩＦＯ１０のそれぞれのエントリ数が全体容量であればＦｕｌｌ＿Ａ〜Ｆｕｌｌ＿ＤのＦＦをそれぞれセットし、全体容量未満であればそれぞれリセットする。
【００４６】
例えば、ＦＩＦＯ１０Ａの４分の３が有効データで占められていた場合、ＦＩＦＯステータス保持手段５０は、ＦＩＦＯ１０Ａに対応する１／２＿Ａ及び３／４＿ＡのＦＦそれぞれに１をセットする。ＦＩＦＯステータス保持手段５０は、例えば、ＦＩＦＯ１０が入力情報として保持できる最大量と、ＦＩＦＯエントリカウンタ２０から受け取ったカウンタ値とを比較して、入力情報量閾値を超えているか否か判断してもよい。以下の説明では、入力情報量閾値の種類が６種類の場合について説明するが、入力情報量閾値の種類は６種類に限定されない。
【００４７】
図７は、ＦＩＦＯステータス保持手段５０が保持する値の例を示す説明図である。図７に示す例では、例えば、ＦＩＦＯ１０Ａのエントリ数が、全体容量の４分の３以上であるために３／４＿ＡのＦＦに１がセットされ、（全体容量−３エントリ）未満であるためにＦｕｌｌ−３＿Ａが０にリセットされていることを示す。なお、Ｆｕｌｌと名づけられた４ｂｉｔのＦＦはｂｉｔ０〜３がＦＩＦＯ１０Ａ，１０Ｂ，１０Ｃ，１０Ｄにそれぞれ対応している。以下、図７の例に示す表を、マトリックスと呼ぶこともある。
【００４８】
優先順位調停部３０’は、ＦＩＦＯステータス保持手段５０が保持した値（ＦＦの値、すなわち情報量判断結果）を受け取り、その情報量判断結果をもとにＦＩＦＯ１０の入力情報量を比較して、最も優先度の高いＦＩＦＯ１０を決定する。そして、優先順位調停部３０’は、その比較結果をセレクト信号としてセレクタ回路４０へ通知する。図８は、優先順位調停部３０’の構成例を示すブロック図である。図８に示す例では、優先順位調停部３０’は、ＬＤＺ−Ｆｕｌｌと、ＬＤＺ−Ｆｕｌｌ−１と、ＬＤＺ−Ｆｕｌｌ−２と、ＬＤＺ−Ｆｕｌｌ−３と、ＬＤＺ−３／４と、ＬＤＺ−１／２（以下、これらをまとめてＬＤＺ３４と記すこともある。）と、ＬＤＺ３５と、セレクタ回路３６とを備えている。
【００４９】
ＬＤＺ３４は、情報量判断結果を比較して大小判定を行う回路である。具体的には、ＬＤＺ−Ｆｕｌｌは、Ｆｕｌｌ＿Ａ〜Ｆｕｌｌ＿Ｄの計４ｂｉｔのＦＦを比較するＬＤＺ回路である。また、ＬＤＺ−Ｆｕｌｌ−１は、Ｆｕｌｌ−１＿Ａ〜Ｆｕｌｌ−１＿Ｄの計４ｂｉｔのＦＦを比較するＬＤＺ回路である。以下同様に、ＬＤＺ−Ｆｕｌｌ−２、ＬＤＺ−Ｆｕｌｌ−３、ＬＤＺ−３／４及びＬＤＺ−１／２は、それぞれＦｕｌｌ−２＿Ａ〜Ｆｕｌｌ−２＿Ｄ、Ｆｕｌｌ−３＿Ａ〜Ｆｕｌｌ−３＿Ｄ、３／４＿Ａ〜３／４＿Ｄ及び１／２＿Ａ〜１／２＿Ｄのそれぞれ計４ｂｉｔのＦＦを比較するＬＤＺ回路である。ＬＤＺ３４は、まず、ＬＤＺ−Ｆｕｌｌが、入力情報が最も多い場合を表わすＦｕｌｌ＿Ａ〜Ｆｕｌｌ＿Ｄのｂｉｔ同士の比較を行い、以下、ＬＤＺ−Ｆｕｌｌ−１，ＬＤＺ−Ｆｕｌｌ−２，ＬＤＺ−Ｆｕｌｌ−３，ＬＤＺ−３／４，ＬＤＺ−１／２の順に比較を行う。なお、ＬＤＺ３４が大小判定を行う方法は、第１の実施形態におけるＬＤＺ３１が大小判定を行う方法と同様のため、詳細な説明を省略する。
【００５０】
本実施形態では、入力情報量閾値の種類が６種類のため、６種類のＬＤＺ３４を備えている場合について説明するが、ＬＤＺ３４の種類は６種類に限定されない。優先順位調停部３０’が備えるＬＤＺ３４の種類は、入力情報量閾値の種類によって決定すればよい。
【００５１】
ＬＤＺ３５は、６種類のＬＤＺ回路を含むＬＤＺ３４の中から、比較結果を採用するＬＤＺ回路を選択する回路である。ＬＤＺ３５は、各ＬＤＺ３４の比較結果を「ＬＤＺ−Ｆｕｌｌ＞ＬＤＺ−Ｆｕｌｌ−１＞ＬＤＺ−Ｆｕｌｌ−２＞ＬＤＺ−Ｆｕｌｌ−３＞ＬＤＺ−３／４＞ＬＤＺ−１／２」の優先順位に基づいて選択する。ＬＤＺ３５が、この優先順位に基づいてＬＤＺ３４を比較する場合の真理値表の例を、図９に示す。セレクタ回路３６は、ＬＤＺ３５が選択したＬＤＺの比較結果をもとに、出力情報を出力させるＦＩＦＯ１０を選択し、結果をセレクト信号としてセレクタ回路４０へ通知する。
【００５２】
優先順位調停部３０’は、図７の例に示すマトリックスを参照することで（言い換えればＦＦをリードすることで）、空きが最も少ないＦＩＦＯ１０Ａがどれかを特定し、優先度を判断することができるといえる。
【００５３】
ＦＩＦＯエントリカウンタ２０と、優先順位調停部３０’と、セレクタ回路４０と、ＦＩＦＯステータス保持手段５０とは、例えば、プログラム（オーバーフロー制御プログラム）に従って動作するコンピュータのＣＰＵによってソフトウェア上で実現されてもよい。例えば、プログラムは、調停回路が備える記憶部（図示せず）に記憶され、ＣＰＵは、そのプログラムを読み込み、プログラムに従って、ＦＩＦＯエントリカウンタ２０、優先順位調停部３０’、セレクタ回路４０及びＦＩＦＯステータス保持手段５０として動作してもよい。また、ＦＩＦＯエントリカウンタ２０、優先順位調停部３０’、セレクタ回路４０、ＦＩＦＯステータス保持手段５０がそれぞれ専用の回路で実現されていてもよい。
【００５４】
次に、動作について説明する。上位装置から出力された入力情報Ａ〜Ｄをそれぞれ受け取ると、ＦＩＦＯ１０は、その入力情報をそれぞれの内部に格納する。また、ＦＩＦＯエントリカウンタ２０は、カウンタ値Ａ〜Ｄをカウントアップし、そのカウンタ値Ａ〜ＤをＦＩＦＯステータス保持手段５０へ通知する。ＦＩＦＯステータス保持手段５０は、受信したカウンタ値が入力情報量閾値以上か否か判断し、その入力情報量閾値ごとの情報量判断結果を保持する。また、ＦＩＦＯステータス保持手段５０は、その情報量判断結果を優先順位調停部３０’へ通知する。優先順位調停部３０’は、情報量判断結果を受け取り、その情報量判断結果をもとにＦＩＦＯ１０の入力情報量を比較して、優先度を決定する。優先順位調停部３０’は、その比較結果をセレクト信号としてセレクタ回路４０へ通知する。
【００５５】
本発明によれば、第１の実施形態に加え、ＦＩＦＯステータス保持手段５０が、ＦＩＦＯエントリカウンタ２０が検知した入力情報量をもとに、入力情報量閾値を超えた状態であることを示す情報量判断結果を生成する。そして、優先度決定手段３０’が、情報量判断結果が示す入力情報量が大きいバッファの出力優先度を高く決定する。よって、第１の実施形態の効果に加え、回路規模の増大を抑えることができる。
【００５６】
すなわち、第１の実施形態では、ビット同士の比較時に１が立っているビットが複数あった場合、比較するビットの数だけ比較器を用意する必要があった。第２の実施形態では、ＦＩＦＯステータス保持手段５０にＦＩＦＯ１０の使用状況を簡単に把握できるマトリックスを論理回路の中にＦＦとして用意しているため、第１の実施形態よりも回路規模を小さくすることができる。
【００５７】
例えば、第１の実施形態で示した例では、入力情報量を示す１０ビットを比較するため、図２に示すＬＤＺ３１はＬＤＺ回路が１０個必要であったが、第２の実施形態で示した例では、６種類の入力情報量閾値の情報量判断結果を比較するため、図８に示すＬＤＺ３４はＬＤＺ回路が６個に抑えられる。また、第１の実施形態で示した例では、１０ビットの比較結果から採用するＬＤＺ回路を選択するため、図２に示すＬＤＺ３２に１０ビット入力のＬＤＺ回路を使用する必要があった。第２の実施形態で示した例では、６ビット入力のＬＤＺ回路で済むため、図８に示すＬＤＺ３５の規模を小さくすることができる。同様に、第１の実施形態で示した例では、１０ビット入力のセレクタ回路３３であるのに対し、第２の実施形態で示した例では、６ビット入力のセレクタ回路３６を使用すればよく、セレクタ回路の規模も小さくすることができる。このように、ＦＩＦＯステータス保持手段５０が、比較する情報量を抑えるため、第１の実施形態の効果に加え、ハードウェア量の削減や回路遅延を小さくすることができる。特に、比較するＦＩＦＯ１０の数が増える程、この効果は顕著に現れる。また、情報量判断結果をもとに出力対象を一意に選択できるため、出力対象を決定するための他の装置（例えば、乱数発生器など）を備える必要がなく、調停回路の規模を抑えることもできる。
【００５８】
実施形態３．
本実施形態における調停回路は、ＦＩＦＯ１０と、ＦＩＦＯエントリカウンタ２０Ａ’，２０Ｂ’，２０Ｃ’，２０Ｄ’（以下、これらをまとめてＦＩＦＯエントリカウンタ２０’と記すこともある。）と、優先順位調停部３０’’と、セレクタ回路４０と、ＦＩＦＯステータス保持手段５０に加え、Δｔタイマ６０Ａ，６０Ｂ，６０Ｃ，６０Ｄ（以下、これらをまとめて、Δｔタイマ６０と記すこともある。）と、ＦＩＦＯオーバーフローカウンタ７０Ａ，７０Ｂ，７０Ｃ，７０Ｄ（以下、これらをまとめて、ＦＩＦＯオーバーフローカウンタ７０と記すこともある。）とを備えている。
【００５９】
図１０は、本発明の第３の実施形態における調停回路の例の一部を示すブロック図である。なお、第２の実施形態と同様の構成については、図６と同一の符号を付し、説明を省略する。第３の実施形態では、調停回路は、ＦＩＦＯエントリカウンタ２０’と優先順位調停部３０’’の間にＦＩＦＯステータス保持手段５０を備え、さらに、Δｔタイマ６０とＦＩＦＯオーバーフローカウンタ７０とを備えている。それ以外のＦＩＦＯ１０、セレクタ回路４０及びＦＩＦＯステータス保持手段５０の構成については、第２の実施形態と同様であるため、説明を省略する。
【００６０】
ＦＩＦＯエントリカウンタ２０’は、ＦＩＦＯステータス保持手段５０に加え、Δｔタイマ６０に対してもカウンタ値を通知する。また、ＦＩＦＯエントリカウンタ２０’は、カウンタ値のカウントアップに加え、ＦＩＦＯ１０のオーバーフローを検知する。たとえば、ＦＩＦＯエントリカウンタ２０’は、入力情報として格納できる最大量よりも大きいカウントになった場合に、オーバーフローになったことを検知してもよいが、オーバーフローを検知する方法は、上記方法に限定されない。ＦＩＦＯエントリカウンタ２０’は、ＦＩＦＯ１０がオーバーフローをしたことを示す信号（以下、オーバーフロー信号と記す。）を、ＦＩＦＯ１０ごとにそれぞれΔｔタイマ６０及びＦＩＦＯオーバーフローカウンタ７０へ通知する。
【００６１】
Δｔタイマ６０は、クロック信号を元に経過時刻を示すカウンタ（以下、時刻カウンタと記す。）の値をカウントアップする。Δｔタイマ６０は、予め定められた時間間隔であるΔｔ時間が経過し、時刻カウンタが予め定めた値に達すると、後述のＦＩＦＯオーバーフローカウンタ７０がカウントするオーバーフローの回数をカウントダウンさせるための信号（以下、オーバーフローカウントダウン信号と記す。）をＦＩＦＯオーバーフローカウンタ７０に通知する。また、Δｔタイマ６０は、Δｔ時間が経過した場合又はオーバーフロー信号を受信した場合に時刻カウンタの値をリセットする。リセット後は再びクロック信号を元に時刻カウンタの値をカウントアップする。Δｔタイマ６０は、これらの動作を繰り返す。
【００６２】
ＦＩＦＯオーバーフローカウンタ７０は、ＦＩＦＯエントリカウンタ２０’からオーバーフロー信号を受信すると、ＦＩＦＯ１０がオーバーフローした回数を示すカウンタ（以下、オーバーフローカウンタと記す。）の値をカウントアップする。また、ＦＩＦＯオーバーフローカウンタ７０は、Δｔタイマ６０からのオーバーフローカウントダウン信号を検知したときに、オーバーフローカウンタの値をカウントダウンする。すなわち、ＦＩＦＯオーバーフローカウンタ７０は、ＦＩＦＯ１０がオーバーフローするとカウントアップし、また、最後にカウントアップしてからは、ある一定時間（Δｔ時間）が経過する度にカウントダウンを行う。そして、ＦＩＦＯオーバーフローカウンタ７０は、オーバーフローカウンタの値を優先順位調停部３０’’に通知する。
【００６３】
図１１は、オーバーフローカウンタの値が推移する例を説明するタイミングチャートの図である。ＦＩＦＯオーバーフローカウンタ７０は、オーバーフロー信号を３回検知すると、オーバーフローカウンタの値を３カウントアップする。その後、Δｔ時間経過すると、Δｔタイマ６０からオーバーフローカウントダウン信号が送信されるため、ＦＩＦＯオーバーフローカウンタ７０は、オーバーフローカウンタの値を１カウントダウンする。その後、ＦＩＦＯオーバーフローカウンタ７０は、オーバーフロー信号を検知してオーバーフローカウンタの値を１カウントアップする。その後、２×Δｔ時間経過し、Δｔタイマ６０からオーバーフローカウントダウン信号が２回送信されたため、ＦＩＦＯオーバーフローカウンタ７０は、オーバーフローカウンタの値を２カウントダウンする。結果、オーバーフローカウンタの値は１になる。
【００６４】
優先順位調停部３０’’は、ハンディキャップ値保持手段３７と、オーバーフロー閾値保持手段３８とを備えている。ハンディキャップ値保持手段３７は、優先度を上げる割合を示す値（以下、ハンディキャップ値と記す。）を記憶する記憶装置である。オーバーフロー閾値保持手段３８は、優先順位調停部３０’’がＦＩＦＯ１０を優先的に選択する場合のオーバーフローカウンタの値の閾値（以下、オーバーフロー閾値）を記憶する記憶装置である。ハンディキャップ値及びオーバーフロー閾値は、例えば、システム設計者により定められ、ハンディキャップ値保持手段３７及びオーバーフロー閾値保持手段３８に予め記憶される。また、オーバーフロー閾値は、ＦＩＦＯ１０ごとに定めてもよい。
【００６５】
例えば、あるＦＩＦＯ１０のみオーバーフローする傾向が高い場合、予め設定するオーバーフロー閾値を低めに設定し、ハンディキャップ値を多めに設定してもよい。なお、ハンディキャップ値やオーバーフロー閾値、Δｔ時間などの値は、システムの運用形態などにより異なるため、その運用形態に応じて値を設定すればよい。
【００６６】
優先順位調停部３０’’は、ＦＩＦＯステータス保持手段５０からの情報量判断結果を検知し、さらに、ＦＩＦＯオーバーフローカウンタ７０からのオーバーフローカウンタの値Ａ〜Ｄを検知する。優先順位調停部３０’’は、その情報量判断結果、オーバーフローカウンタの値及びオーバーフロー閾値の値をもとに出力情報を出力させるＦＩＦＯ１０の優先度を決定する。そして、優先順位調停部３０’’は、その選択結果をセレクト信号としてセレクタ回路４０へ通知する。
【００６７】
例えば、優先順位調停部３０’’は、ＦＩＦＯステータス保持手段５０から受信した各ＦＦの値（すなわち、情報量判断結果）を、オーバーフローカウンタの値とオーバーフロー閾値保持手段の値により必要に応じてビットシフトしてから比較器を用いた比較を行い、最も値の大きいＦＩＦＯ１０を優先度の高いＦＩＦＯ１０として選択する。そして、優先順位調停部３０’’は、その結果をセレクト信号としてセレクタ回路４０へ出力する。
【００６８】
優先順位調停部３０’’が、出力情報を出力させるＦＩＦＯ１０を選択する方法について、具体例を用いて説明する。図１２，１３は、ＦＩＦＯステータス保持手段５０が保持する情報量判断結果の例を示す説明図である。図１２に示す例では、ＦＩＦＯ１０Ａ，１０Ｂ，１０Ｃ，１０Ｄのオーバーフロー回数がそれぞれ０回、３回、０回、０回であるものとする。また、オーバーフロー閾値は「２回」であり、ハンディキャップ値は１であるものとする。
【００６９】
この場合、ＦＩＦＯ１０Ｂのオーバーフローカウンタの値は「３回」であり、オーバーフロー閾値「２回」を越えている。そのため、優先順位調停部３０’’は、ＦＩＦＯ１０Ｂに関する情報量判断結果を読み込む際、ハンディキャップ値「１」だけ優先順位を格上げする意味でビットシフトする（図１３）。その結果、ＦＩＦＯ１０Ｂは残り２Ｗｏｒｄの状態であるにも関わらず、残り１Ｗｏｒｄの状態として扱われるため、優先順位調停部３０’’は、ＦＩＦＯ１０ＡよりもＦＩＦＯ１０Ｂの方を高優先順位と判定し、ＦＩＦＯ１０Ｂを選択する旨のセレクト信号をセレクタ回路４０へ通知する。このように、オーバーフローカウンタの値によって、優先度（選択の重み）を変更することにより、オーバーフロー頻度が高いＦＩＦＯ１０からの出力を優先的に選択できるため、以降のオーバーフロー頻度を低く抑えることができる。
【００７０】
例えば、第２の実施形態では、ＦＩＦＯ１０ＡとＦＩＦＯ１０Ｂの優先順位は同等であったが、本実施形態では、オーバーフロー頻度が高いＦＩＦＯ１０Ｂからの出力を優先的に選択できるため、以降のオーバーフロー頻度を低く抑えることができる。
【００７１】
上記説明では、ＦＩＦＯ１０のオーバーフローカウンタの値がオーバーフロー閾値を超えた場合に、優先順位調停部３０’’が優先的にそのＦＩＦＯを選択する場合ついて説明した。他にも、ＦＩＦＯ１０のオーバーフローカウンタの値が、オーバーフロー閾値を下回った場合に、優先順位調停部３０’’がそのＦＩＦＯの優先順位を下げてもよい。例えば、過去ΔＴ時間遡ってオーバーフロー回数が閾値より下回った場合にハンディキャップ数だけ優先順位を格下げする意味で逆方向に（低優先順位方向に）ビットシフトしてもよい。このように、オーバーフロー頻度が低いＦＩＦＯ１０からの出力を選択しにくくすることで、システム全体としてのオーバーフローを低く抑えることができる。
【００７２】
なお、過去ΔＴ時間遡ってオーバーフロー回数をカウントする方法の例を以下に示す。例えば、調停回路がリング構造のバッファ（図示せず）を備える場合について説明する。このバッファは、書き込みアドレスがクロック信号を元にカウントアップするバッファであり、書き込みアドレスが１周したときにΔＴ時間経過したことを示すものである。ＦＩＦＯ１０がオーバーフローした場合、例えば、ＦＩＦＯエントリカウンタ２０’はバッファに１を書き込み、オーバーフローしなかった場合に０を書き込む。そして、或る時点でバッファ全体を読み出して、１が書かれている個数をカウントすることにより、過去ΔＴ時間遡ったオーバーフロー回数をカウントすることができる。
【００７３】
また、この場合、リング構造のバッファ全体を読み出すサイクルを少なく抑えるため、バッファ内の書き込み位置の値（すなわち、上書きする予定の元の値）を予め読み出しておいてもよい。図１４は、元の値と書き込む値の関係からオーバーフロー回数の差分を判断する場合の例を示す説明図である。このように差分を判断することで、元の値と書き込む値の関係から、オーバーフロー回数の差分が判断できる。よって、（オーバーフロー回数）＋（オーバーフロー回数の差分）が、新しいオーバーフロー回数と分かるため、これをレジスタ等（図示せず）で保持することにより、リング構造のバッファ全体を読み出すことが不要になる。
【００７４】
ＦＩＦＯエントリカウンタ２０’と、優先順位調停部３０’’と、セレクタ回路４０と、ＦＩＦＯステータス保持手段５０と、Δｔタイマ６０と、ＦＩＦＯオーバーフローカウンタ７０とは、例えば、プログラム（オーバーフロー制御プログラム）に従って動作するコンピュータのＣＰＵによってソフトウェア上で実現されてもよい。例えば、プログラムは、調停回路が備える記憶部（図示せず）に記憶され、ＣＰＵは、そのプログラムを読み込み、プログラムに従って、ＦＩＦＯエントリカウンタ２０’、優先順位調停部３０’’、セレクタ回路４０、ＦＩＦＯステータス保持手段５０、Δｔタイマ６０及びＦＩＦＯオーバーフローカウンタ７０として動作してもよい。また、ＦＩＦＯエントリカウンタ２０’、優先順位調停部３０’’、セレクタ回路４０、ＦＩＦＯステータス保持手段５０、Δｔタイマ６０、ＦＩＦＯオーバーフローカウンタ７０がそれぞれ専用の回路で実現されていてもよい。
【００７５】
次に、動作について説明する。上位装置から出力された入力情報Ａ〜Ｄを、ＦＩＦＯ１０が内部に格納し、また、ＦＩＦＯエントリカウンタ２０’がカウントしたカウンタ値をもとに、ＦＩＦＯステータス保持手段５０が判断した情報量判断結果を優先順位調停部３０’’へ通知するまでの動作は、第２の実施形態と同様である。優先順位調停部３０’’は、ＦＩＦＯステータス保持手段５０からの情報量判断結果を検知し、さらに、ＦＩＦＯオーバーフローカウンタ７０からのオーバーフローカウンタの値Ａ〜Ｄを検知すると、オーバーフロー閾値の値をもとに出力情報を出力させるＦＩＦＯ１０の優先度を決定する。そして、優先順位調停部３０’’は、その結果をセレクト信号としてセレクタ回路４０へ通知する。
【００７６】
上記説明では、ＦＩＦＯエントリカウンタ２０’が、ＦＩＦＯ１０のオーバーフローを検知して、オーバーフローの発生したＦＩＦＯ１０に対応するΔｔタイマ６０及びＦＩＦＯオーバーフローカウンタ７０へオーバーフロー信号を通知する場合について説明した。なお、ＦＩＦＯエントリカウンタ２０’が検知する情報は、オーバーフローしたことを通知する情報に限られない。例えば、ＦＩＦＯエントリカウンタ２０’は、オーバーフローする手前（例えば、あともう数エントリでオーバーフロー）の状態を検知し、その状態を示す信号（以下、ビジー信号と記す。）をΔｔタイマ６０及びＦＩＦＯオーバーフローカウンタ７０へ通知してもよい。また、Δｔタイマ６０が、ＦＩＦＯエントリカウンタ２０’からビジー信号をΔｔ時間検知しなかったときに、ビジー信号をカウントするカウンタの値をカウントダウンさせるための信号をＦＩＦＯオーバーフローカウンタ７０へ通知してもよい。このように、オーバーフローが発生する前にビジー信号を送信することで、オーバーフローを事前に検知できるため、オーバーフロー頻度をより低く抑えることができる。
【００７７】
本発明によれば、第２の実施形態に加え、ＦＩＦＯエントリカウンタ２０’が、ＦＩＦＯ１０のオーバーフローを検知し、Δｔタイマ６０がΔｔ時間内にオーバーフローが発生したか判断する。また、ＦＩＦＯオーバーフローカウンタ７０は、オーバーフロー信号を検知したときに、オーバーフローカウンタの値をカウントアップし、オーバーフローカウントダウン信号を検知したときに、オーバーフローカウンタの値をカウントダウンする。そして、優先順位調停部３０’’は、オーバーフローカウンタの値の大きいＦＩＦＯ１０の優先度を高く決定する。そのため、第２の実施形態の効果に加え、ＦＩＦＯのオーバーフロー発生状況を学習して優先度を動的に変更することで、より最適な優先度を設定することができる。また、第２の実施形態と同様に、情報量判断結果をもとに出力対象を一意に選択できるため、出力対象を決定するための他の装置（例えば、乱数発生器など）を備える必要がなく、調停回路の規模を抑えることもできる。
【００７８】
図１５は、本発明における調停回路の最小構成を示すブロック図である。本発明による調停回路は、上位装置から入力された入力情報（例えば、入力情報Ａ〜Ｄ）を保持するバッファ９１（例えば、ＦＩＦＯ１０）と、入力情報が入力されたときに、バッファ９１内に保持された入力情報量を検知する入力情報量検知手段９２（例えば、ＦＩＦＯエントリカウンタ２０）と、入力情報検知手段９２が検知したバッファ９１ごとの入力情報量を比較して、入力情報を出力させるバッファ９１の優先度である出力優先度（例えば、カウンタ値、情報量判断結果など）を決定する優先度決定手段９３（例えば、優先順位調停部３０）と、出力優先度の高いバッファ９１に保持された入力情報を出力させる出力指示手段９４（例えば、セレクタ回路４０）とを備えている。
【００７９】
そのような構成により、複数のバッファを用いた調停回路において、オーバーフローの蓋然性が高い複数のバッファが存在する場合でも調停回路全体でバッファオーバーフローの発生を低減できる。
【００８０】
すなわち、各バッファ９１内の入力情報量を比較し、バッファ９１内の空き容量が最も少ないバッファ９１を調停回路の出力対象として選択することでオーバーフロー発生率を低減させることができる。また、オーバーフロー発生率が低減することにより、結果として回路全体の性能低下を抑えることができる。
【００８１】
また、入力情報量検知手段９２が、上位装置から入力情報が入力されたときに、バッファ９１の入力情報量を示す値である入力カウンタ値（例えば、ＦＩＦＯエントリカウンタ値）をカウントアップし、優先度決定手段９３が、入力カウンタ値が大きいバッファ９１の出力優先度を高く決定してもよい。
【００８２】
また、上記実施形態には、バッファ９１内に保持された入力情報量が予め定められた閾値である入力情報量閾値を超えた状態であることを示す情報である入力状態情報（例えば、情報量判断結果）を生成する入力状態情報生成手段（例えば、ＦＩＦＯステータス保持手段５０）を備え、入力状態情報生成手段が、入力情報量検知手段９２が検知した入力情報量をもとに入力状態情報を生成し、優先度決定手段９３（例えば、優先順位調停部３０’）が、入力状態情報が示す入力情報量が大きいバッファ９１の出力優先度を高く決定する構成が開示されている。
【００８３】
このような構成により、ハードウェア量の削減や回路遅延を小さくすることができる。すなわち、入力状態情報生成手段が、比較する情報量を抑えるため、回路規模を小さくできる。
【００８４】
また、上記実施形態には、バッファ９１のオーバーフローを検知するオーバーフロー検知手段（例えば、ＦＩＦＯエントリカウンタ２０’）と、予め定められた時間（例えば、Δｔ時間）内にオーバーフロー検知手段がバッファ９１のオーバーフローを検知したか否か判断するオーバーフロー発生判断手段（例えば、Δｔタイマ６０）と、オーバーフロー検知手段がバッファ９１のオーバーフローを検知したときに、バッファ９１を優先的に選択させることを示す値である優先値（例えば、オーバーフローカウンタ７０の値）をカウントアップし、オーバーフロー発生判断手段が予め定められた時間内にオーバーフロー検知手段によるオーバーフローの検知がなかったと判断したとき（例えば、オーバーフローカウントダウン信号を検知したとき）に、優先値をカウントダウンする優先値カウント手段（例えば、ＦＩＦＯオーバーフローカウンタ７０）とを備え、優先度決定手段９３（例えば、優先順位調停部３０’’）が、優先値の大きいバッファ９１の出力優先度を高く決定する構成が開示されている。
【００８５】
このような構成により、バッファ９１のオーバーフロー発生状況を学習して優先度を動的に変更することで、より最適な優先度を設定することができる。
【００８６】
また、バッファ９１のオーバーフローを事前に（例えば、あともう数エントリでオーバーフローであること）検知するオーバーフロー事前検知手段（例えば、ＦＩＦＯエントリカウンタ２０’）と、予め定められた時間（例えば、Δｔ時間）内にオーバーフロー事前検知手段がバッファ９１のオーバーフローを事前に検知したか否か判断するオーバーフロー発生事前判断手段（例えば、Δｔタイマ６０）と、オーバーフロー事前検知手段がバッファ９１のオーバーフローを事前に検知したとき（例えば、あともう数エントリでオーバーフローになることを検知したとき）に、バッファ９１を優先的に選択させることを示す値である優先値（例えば、オーバーフローカウンタ７０の値）をカウントアップし、オーバーフロー発生判断手段が予め定められた時間内にオーバーフロー事前検知手段によるオーバーフローの検知がなかったと判断したとき（例えば、オーバーフローカウントダウン信号を検知したとき）に、優先値をカウントダウンする優先値カウント手段（例えば、ＦＩＦＯオーバーフローカウンタ７０）とを備え、優先度決定手段９３（例えば、優先順位調停部３０’’）が、優先値の大きいバッファ９１の出力優先度を高く決定してもよい。このように、オーバーフローが発生する前の状態をもとに出力優先度を決定することで、オーバーフロー前に対応できるため、オーバーフロー頻度をより低く抑えることができる。
【００８７】
また、優先度決定手段９３が、優先値が予め定められた閾値である優先閾値（例えば、オーバーフロー閾値）を超えたときに、優先値の大きいバッファ９１の出力優先度を高く決定してもよい。また、優先度決定手段９３が、優先値が優先閾値を超えたときに、出力優先度を変化させる割合を示す値として予め定められた値である出力優先度変化割合（例えば、ハンディキャップ値）をもとに出力優先度を決定してもよい。
【産業上の利用可能性】
【００８８】
本発明は、複数のバッファを用いた調停回路で発生するバッファオーバーフローを低減させる調停回路に好適に適用される。
【符号の説明】
【００８９】
１０Ａ，１０Ｂ，１０Ｃ，１０Ｄ  ＦＩＦＯ
２０Ａ，２０Ｂ，２０Ｃ，２０Ｄ，２０Ａ’，２０Ｂ’，２０Ｃ’，２０Ｄ’  ＦＩＦＯエントリカウンタ
３０，３０’，３０’’  優先順位調停部
３１，３２，３４，３５  ＬＤＺ回路
３３，３６  セレクタ回路
３７  ハンディキャップ値保持手段
３８  オーバーフロー閾値保持手段
４０  セレクタ回路
５０Ａ，５０Ｂ，５０Ｃ，５０Ｄ  ＦＩＦＯステータス保持手段
６０Ａ，６０Ｂ，６０Ｃ，６０Ｄ  Δｔタイマ
７０Ａ，７０Ｂ，７０Ｃ，７０Ｄ  ＦＩＦＯオーバーフローカウンタ
９９  ＯＲ回路
【図１】
2010239434.tif 000003
【図２】
2010239434.tif 000004
【図３】
2010239434.tif 000005
【図４】
2010239434.tif 000006
【図５】
2010239434.tif 000007
【図６】
2010239434.tif 000008
【図７】
2010239434.tif 000009
【図８】
2010239434.tif 000010
【図９】
2010239434.tif 000011
【図１０】
2010239434.tif 000012
【図１１】
2010239434.tif 000013
【図１２】
2010239434.tif 000014
【図１３】
2010239434.tif 000015
【図１４】
2010239434.tif 000016
【図１５】
2010239434.tif 000017