(57)【要約】【課題】無駄なトランザクションの発生を抑制し、バスのデータ転送効率を向上させるバス調停装置を提供する。【解決手段】バスを使用する複数の要求元から出力されるバス使用要求に対し、前記バスを使用する権限であるバス使用権の調停を実行するバス調停手段と、前記要求元から再度行われた前記バス使用要求であるリトライ要求を検出する検出手段と、前記検出手段によりリトライ要求が検出された前記要求元であり、前記バス調停手段により調停された前記要求元であるリトライ要求元に対し、前記バス使用要求の出力を遅延させるバス使用遅延手段と、を有する。【選択図】図３
2008186096.tif 000002
【特許請求の範囲】
【請求項１】
バスを使用する複数の要求元から出力されるバス使用要求に対し、前記バスを使用する権限であるバス使用権の調停を実行するバス調停手段と、
前記要求元から再度行われた前記バス使用要求であるリトライ要求を検出する検出手段と、
前記検出手段によりリトライ要求が検出された前記要求元であり、前記バス調停手段により調停された前記要求元であるリトライ要求元に対し、前記バス使用要求の出力を遅延させるバス使用遅延手段と、
を有するバス調停装置。
【請求項２】
前記バス使用遅延手段は、前記検出手段で検出されたリトライ要求の回数に応じ、前記リトライ要求元に対して所定時間だけ前記バス使用権を有することを示すバス使用許可を出力することで、前記リトライ要求元による前記バス使用要求の出力を前記所定時間に応じた時間だけ停止させることにより、前記バス使用要求の出力を遅延させる請求項１に記載のバス調停装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バス調停装置に関する。
【背景技術】
【０００２】
バスを複数のデバイスにより共有する装置において、バスの使用権を調停する技術が従来より数多く提案されている。例えば、特許文献１には、バスマスターとなるデバイスが、要求先にアクセスした際に、ビジー状態であるためにリトライすることになった場合、次にリトライを再送したデバイスのバスの取得順位を優先することでバス使用権を与え、リトライし続けることを防ぐ技術が開示されている。
【０００３】
また、特許文献２には、バスマスターとなるデバイスが、要求先にアクセスした際に、ビジー状態であるためにリトライすることになった場合、次の再送要求を一定時間マスクして、バスを使用させない技術が開示されている。
【特許文献１】特開２００２−３６６５１１号公報
【特許文献２】特開２０００−２０７３５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
バスを複数のデバイスにより共有する場合、要求先がビジー状態であれば、要求元デバイスはリクエストをリトライする処理を行うが、例えば図６に示されるように、要求元デバイスであるＮｏ２デバイスは、Ｎｏ１デバイスの転送が実行されている間にリトライ（網掛け部分）を何度も繰り返す状態が発生する。このようなリトライが繰り返される状態を、以下の説明ではデッドロックと称することとする。
【０００５】
図６に示した状態を、信号で表現したタイムチャートが図７に示されている。同図において、ＦＲＡＭＥ（Cycle Frame）は、転送の開始とデータ転送のフェーズを示す信号を示す。ＤＥＶＳＥＬ（Device Select）は、転送開始に対するスレーブの応答信号を示す。ＳＴＯＰは、スレーブが転送の停止をマスタに対して要求する信号を示す。ＲＥＱ（PCI Request）は、バスの使用を要求する要求信号を示す。ＧＮＴ（PCI Grant）は、ＲＥＱに対するバス使用許可信号を示す。
【０００６】
なお、ＲＥＱ１及びＧＮＴ１はＮｏ１デバイスに関する信号を示し、ＲＥＱ２及びＧＮＴ２はＮｏ２デバイスに関する信号を示している。
【０００７】
同図に示されるように、Ｎｏ２デバイスのリクエスト（ＲＥＱ２）が２回ほど出力されていることが示されている。これは、ＦＲＡＭＥ及びＲＥＱ１に示されるように、Ｎｏ１デバイスによる転送が実行されているためである。
【０００８】
このようなデッドロックに対し、特許文献１に開示された技術ではバスの優先順位を上げることでデッドロックを回避するとしているが、この技術ではリトライしたデバイスが次のアクセスで転送を完了させることはできずデバイスの競合によるデットロックを回避することは不可能である。
【０００９】
また、特許文献２に開示された技術では、リトライされた要求元デバイスのリクエストをマスクしているが、他のデバイスがマスク中にバスを獲得してしまい、再度リトライが発生してしまう不具合がおきてしまう。
【００１０】
このように従来の技術では、多くのリトライにより、無駄なトランザクションが発生することにより、バスのデータ転送効率が低下するという問題点があった。
【００１１】
本発明は上記問題点に鑑み、無駄なトランザクションの発生を抑制し、バスのデータ転送効率を向上させるバス調停装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、請求項１の発明は、バスを使用する複数の要求元から出力されるバス使用要求に対し、前記バスを使用する権限であるバス使用権の調停を実行するバス調停手段と、前記要求元から再度行われた前記バス使用要求であるリトライ要求を検出する検出手段と、前記検出手段によりリトライ要求が検出された前記要求元であり、前記バス調停手段により調停された前記要求元であるリトライ要求元に対し、前記バス使用要求の出力を遅延させるバス使用遅延手段と、を有する。
【００１３】
なお、本発明は、請求項２の発明のように前記バス使用遅延手段は、前記検出手段で検出されたリトライ要求の回数に応じ、前記リトライ要求元に対して所定時間だけ前記バス使用権を有することを示すバス使用許可を出力することで、前記リトライ要求元による前記バス使用要求の出力を前記所定時間に応じた時間だけ停止させることにより、前記バス使用要求の出力を遅延させるようにしても良い。
【発明の効果】
【００１４】
本発明によれば、無駄なトランザクションの発生を抑制し、バスのデータ転送効率を向上させるバス調停装置を提供することができるという効果が得られる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して、本発明の実施の形態について詳細に説明する。なお、本実施の形態では、バスとしてＰＣＩバスを用いた例を示している。
【００１６】
図１は、本実施の形態に係るバス調停装置及びその周辺部を示している。このバス調停装置１０は、複数のデバイス（図では３つ）のバス使用権の調停を、予め定められたバスアービトレーションアルゴリズムに従って実行するものである。また、同図に示されるように、バス調停装置１０は、Ｎｏ１デバイス１８、Ｎｏ２デバイス２０、Ｎｏ３デバイス２２、及び制御部１４と接続している。更に制御部１４は、メモリ１６及びＣＰＵ１２と接続している。また、バス調停装置１０、制御部１４、及び各デバイスは、それぞれＰＣＩバスに接続されている。
【００１７】
各デバイスは、バス調停装置１０に対し、ＰＣＩバスの使用を要求するバス使用要求ＲＥＱを出力する一方、そのＲＥＱに入力に応じて、バス使用許可であるＧＮＴがバス調停装置１０から入力され、更に他のデバイスがＰＣＩバスを使用していないことを確認すると、メモリ１６との間でデータ転送を開始する。
【００１８】
なお、図中のＲＥＱ０、ＲＥＱ１、ＲＥＱ２、ＲＥＱ３は、それぞれ制御部１４、Ｎｏ１デバイス１８、Ｎｏ２デバイス２０、Ｎｏ３デバイス２２が出力するＲＥＱを示している。同様に、ＧＮＴ０、ＧＮＴ１、ＧＮＴ２、ＧＮＴ３は、それぞれＲＥＱ０、ＲＥＱ１、ＲＥＱ２、ＲＥＱ３に応じて要求元デバイスに出力されるＧＮＴを示している。
【００１９】
制御部１４は、ＣＰＵ１２を介することなくデータ転送を実行するためのコントローラである。ＣＰＵ１２は、制御部１４にデータ転送に関する処理を実行するように指示をし、制御部１４は指示された処理が完了、またはエラーが発生すると、割り込み信号を用いてＣＰＵ１２にそのことを通知する。
【００２０】
次に、バス調停装置１０の構成の詳細を、図２を用いて説明する。バス調停装置１０は、リトライ検出回路３０と、バス調停回路３２と、ＧＮＴ出力回路３４とを含む。リトライ検出回路３０は、デバイスにより再度行われたバス使用要求であるリトライ要求が発生したか否かを検出すると共に、ＧＮＴ出力回路３４に対してＯＥを出力する。
【００２１】
このＯＥは、ＧＮＴ出力回路３４がＧＮＴを出力する際に用いられる出力制御信号であり、図中のＯＥ０、ＯＥ１、ＯＥ２、ＯＥ３は、それぞれ制御部１４、Ｎｏ１デバイス１８、Ｎｏ２デバイス２０、Ｎｏ３デバイス２２にＧＮＴを出力する際に用いられる信号である。
【００２２】
バス調停回路３２は、上述したバスアービトレーションアルゴリズムを実行するものであり、そのアルゴリズムの実行結果に応じてＧＮＴ出力回路３４にＰＲＥＧＮＴを出力する。このＰＲＥＧＮＴは、ＧＮＴ出力回路３４がＧＮＴを出力する際に用いられる信号であり、図中のＰＲＥＧＮＴ０、ＰＲＥＧＮＴ１、ＰＲＥＧＮＴ２、ＰＲＥＧＮＴ３は、それぞれ制御部１４、Ｎｏ１デバイス１８、Ｎｏ２デバイス２０、Ｎｏ３デバイス２２にＧＮＴを出力する際に用いられる信号である。
【００２３】
ＧＮＴ出力回路３４は、各デバイスにＧＮＴを出力するものである。また、ＧＮＴ出力回路３４は、上述したようにリトライ検出回路３０からＯＥが入力され、バス調停回路３２からＰＲＥＧＮＴが入力される。ＧＮＴ出力回路３４は、上記ＰＲＥＧＮＴが入力され、かつ１を示すＯＥが入力された場合に、ＧＮＴを出力する。
【００２４】
このバス調停装置１０で実行される処理を、図３のフローチャートを用いて説明する。図３に示されるフローチャートは、Ｎｏ２デバイス２０がＲＥＱを出力した場合を例にした処理を示すフローチャートである。
【００２５】
まず、ステップ１０１で、後述するカウンタなど、各レジスタの初期化や設定が行われる。次のステップ１０２で、Ｎｏ２デバイス２０からＲＥＱ２が入力される。ここで、最下位ビットから３ビット目が０となっているＲＥＱ［3..0］＝Ｘ０ＸＸは、ＲＥＱ２を意味する。次のステップ１０３で、バス調停回路３２は、上述したバスアービトレーションアルゴリズムにより調停を実行し、ＰＲＥＧＮＴ２をＧＮＴ出力回路３４に出力する。
【００２６】
次に、ＧＮＴ出力回路３４は、ステップ１０４で、Ｎｏ２デバイス２０に対応するＯＥ２が０か否か判断する。ここで、ＯＥ［3..0］＝１０１１の最下位ビットから３ビット目がＯＥ２を意味している。
【００２７】
ステップ１０４で、ＧＮＴ出力回路３４が肯定判断した場合、ステップ１０５でタイマをセットする。ここで、ｗａｉｔ＿ｎ[ＣＬＫ]は、ＣＬＫに示される回数分だけクロックがカウントされるまで待つことを示している。
【００２８】
上記ステップ１０５でセットしたタイマがタイムアウトすると、ステップ１０６で、ＯＥ［3..0］＝１１１１、すなわちＯＥ２に１がセットされ、再び上記ステップ１０４の処理が実行される。
【００２９】
一方、上記ステップ１０４で、ＧＮＴ出力回路３４が否定判断した場合、ステップ１０７で、ＧＮＴ出力回路３４は、Ｎｏ２デバイス２０にＧＮＴ（使用許可）を出力する。ここでのＧＮＴ［3..0］＝１０１１の最下位ビットから３ビット目がＧＮＴ２を意味している。
【００３０】
次のステップ１０８で、ＰＣＩバスでデバイスとメモリ１６との間でデータ転送が開始され、ステップ１０９で、転送が完了したか、あるいはリトライが発生したかが判断される。
【００３１】
ステップ１０９で、リトライが発生したと判断された場合、ステップ１１２で、リトライ要求の回数をカウントするカウンタＲＥＴ＿ＣＮＴ＃２が１だけ増分され、次のステップ１１３で、ＲＥＴ＿ＣＮＴ＃２が予め定められた規定回数を示すｉと等しいか否か判断される。この規定回数は、リトライの発生を抑制するためのもので、例えば各デバイスがＰＣＩバスで転送するデータサイズやＰＣＩバスの使用頻度により定まる値である。
【００３２】
このステップ１１３で肯定判断されると、ステップ１１４で、ＯＥ［3..0］＝１０１１、すなわちＯＥ２に０がセットされ、再び上記ステップ１０２の処理が実行される。また、ステップ１１３で否定判断された場合も上記ステップ１０２の処理が実行される。
【００３３】
一方、ステップ１０９で転送が完了したと判断されると、ステップ１１０で、ＲＥＴ＿ＣＮＴ＃２に０がセットされ、ステップ１１１で、ＯＥ［3..0］＝１１１１、すなわちＯＥ２に１がセットされ、再び上記ステップ１０２の処理が実行される。
【００３４】
以上説明したように、検出手段（リトライ検出回路３０）で検出されたリトライ要求の回数（ＲＥＴ＿ＣＮＴ＃２）に応じ、リトライ要求元（デバイス）に対して所定時間（ｗａｉｔ＿ｎ[ＣＬＫ]）だけ前記バス使用権を有することを示すバス使用許可を出力することで、リトライ要求元によるバス使用要求の出力を所定時間に応じた時間だけ停止させることにより、デバイスによるリトライ要求の出力を遅延させる結果、リトライ要求元による無駄なトランザクションの発生を抑制し、バスのデータ転送効率を向上させることができる。
【００３５】
なお、以上説明したフローチャートの処理の流れは一例であり、本発明の主旨を逸脱しない範囲内で処理順序を入れ替えたり、新たなステップを追加したり、不要なステップを削除したりすることができることは言うまでもない。
【００３６】
上述したフローチャートにより実行される処理を信号で表現したタイムチャートを図４に示す。このタイムチャートでは、上記規定回数を１としている。従って、同図に示されるように、Ｎｏ２デバイス２０のリトライが発生した際のＲＥＱ２のハイレベルへの立ち上がりに同期して、ＧＮＴ２はハイレベルとなるが、Ｎｏ１デバイス１８がＰＣＩバスを使用しているため、Ｎｏ２デバイス２０は、バスを使用することができず、リトライ回数は１回となる。
【００３７】
これにより、リトライ回数が規定回数に達するため、上記ステップ１１４で、ＯＥ２に０がセットされる結果、ＯＥ２がローレベルとなっている。ＯＥ２に０がセットされると、上記ステップ１０５で、タイマがセットされるため、Ｎｏ２デバイス２０へのＧＮＴはそのタイマが経過するまでハイレベルとなる。このタイマ計測中の後半にバスがアイドル状態となる。タイムアウトとなると、ステップ１０６で、ＯＥ２に１がセットされるので、同図に示されるように、ＯＥ２はハイレベルとなる。その後、ステップ１０７で、ＧＮＴ２に０がセットされるので、同図に示されるように、バスがアイドル状態となった後のＧＮＴ２はローレベルとなり、Ｎｏ２デバイス２０がＲＥＱ２を出力することで、アイドル状態であるバスをＮｏ２デバイス２０が使用可能なる。
【００３８】
以上説明した実施の形態において、図２に示したバス調停装置１０の構成の他に、図５に示すような構成であっても良い。具体的には、制御部１４にバス調停回路３２を設けるようにしても良い。この場合、リトライ検出回路３０とＧＮＴ出力回路３４は、バス調停回路３２との間で上述したＰＲＥＧＮＴ及びＲＥＱのやり取りが行われる。
【図面の簡単な説明】
【００３９】
【図１】本実施の形態に係るバス調停装置及びその周辺部を示す図である。
【図２】バス調停装置の構成を示す図である。
【図３】バス調停装置により実行される処理を示すフローチャートである。
【図４】バス調停装置の入出力信号を示すタイムチャートである。
【図５】バス調停装置の他の構成例を示す図である
【図６】従来技術においてリトライが発生した状態を示す模式図である。
【図７】従来技術においてリトライが発生した状態を示すタイムチャートである。
【符号の説明】
【００４０】
１０  バス調停装置
１２  ＣＰＵ
１４  制御部
１６  メモリ
１８  Ｎｏ１デバイス
２０  Ｎｏ２デバイス
２２  Ｎｏ３デバイス
３０  リトライ検出回路
３２  バス調停回路
３４  ＧＮＴ出力回路
【図１】
2008186096.tif 000003
【図２】
2008186096.tif 000004
【図３】
2008186096.tif 000005
【図４】
2008186096.tif 000006
【図５】
2008186096.tif 000007
【図６】
2008186096.tif 000008
【図７】
2008186096.tif 000009