(57)【要約】【課題】優先度の低いバスマスタが優先度の高いバスマスタよりも先にバス転送要求を発行するような場合であっても、所望の優先順位に応じたバス調停を行うことができるようにする。【解決手段】複数のバスマスタと、複数のメモリコントローラと、システムバスを介してメモリコントローラにアクセスする際にアクセスの競合を調停するバスアービタとを備えるバス調停システムであって、前記複数のバスマスタのバス転送要求を格納するキュー状態を前記バスアービタに通知し、前記通知されたキューの状態を予め設定した条件と比較して判定する。そして、判定結果に基づいてアクセスの競合を調停するタイミングを決定する。【選択図】図１
2010039632.tif 000002
【特許請求の範囲】
【請求項１】
複数のバスマスタと、複数のメモリコントローラと、前記複数のバスマスタが前記複数のバスマスタと前記複数のメモリコントローラとを接続するシステムバスを介して前記メモリコントローラにアクセスする際にアクセスの競合を調停するバスアービタとを備えるバス調停システムであって、
前記複数のバスマスタのバス転送要求を格納するキュー状態を前記バスアービタに通知するキュー状態通知手段と、
前記キュー状態通知手段によって通知されたキューの状態を予め設定した条件と比較して判定する判定手段と、
前記判定手段の結果に基づいてアクセスの競合を調停するタイミングを決定する調停タイミング制御手段とを備えることを特徴とするバス調停システム。
【請求項２】
前記判定手段は、キューの空き数が予め設定した値になったかどうかを判定し、
前記調停タイミング制御手段は、前記判定手段による前記キューの空き数の判定の結果に応じてバス調停を行うかどうかを決定することを特徴とする請求項１記載のバス調停システム。
【請求項３】
前記判定手段は、キューに格納されている全てのバス転送要求の属性の組み合わせを予め設定した条件と比較して判定し、
前記調停タイミング制御手段は、前記判定手段による前記属性の組み合わせの判定の結果に応じてバス調停を行うタイミングを動的に変化させることを特徴とする請求項１記載のバス調停システム。
【請求項４】
前記調停タイミング制御手段は、キューの空き数を検知してバス調停を行う際に、キューの空き数分のバスアクセス権の割り当てを連続して行うことを特徴とする請求項１〜３のいずれか１項に記載のバス調停システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、少なくとも１つ以上のバスマスタとメモリコントローラとがシステムバスで接続され、バスマスタのバス転送を調停するバスアービタを備えるバス調停システムに関する。
【背景技術】
【０００２】
従来のメモリコントローラへのアクセス競合調停手段としては、バスアービタがシステムバス上の転送のみを監視し、各バスマスタのバス転送が終了する都度、その時点におけるバス転送要求を発行しているバスマスタ間で調停を行う。そして、その時点での優先順位の高いバスマスタにメモリコントローラへのアクセス権を与える方法が一般的に知られている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながらこの従来の調停方法では、各バスマスタが転送要求を発行するタイミングはそれぞれ異なるため、優先度を高く設定したバスマスタの転送要求が必ずしも優先度の低いバスマスタの転送要求よりも先にアクセス権を得るとは限らなかった。
【０００４】
図８は、複数のバスマスタが各々のタイミングでバス転送要求を発行する際に従来の調停方法でバス調停を行う場合の一例を示す図である。
図８に示すように、優先度の低いバスマスタから順にバス転送要求が発行され、優先度の高いバスマスタのバス転送要求が低頻度でしか発行されないような組み込みシステムがある。この場合、バス転送が終了して次のアービトレーションを行う時点で、優先度の高い他のバスマスタがまだ転送要求を発行していない。このため、優先度の低いバスマスタが先にアクセス権を割り当てられてバス転送を行い、メモリコントローラのキューに格納されるという状況が発生する。したがって、予め各バスマスタの優先度を設定しても、各バスマスタのバス転送要求タイミングによってその優先順位とは異なる順序でメモリコントローラのキューにバス転送要求が格納されていく。これにより、所望の優先順位に応じたバス調停を行うことができない。
【０００５】
そこで、この問題を解決するために、一旦メモリコントローラのキューに格納された複数のバス転送要求をキューの内部で順番を入れ替えることによって優先順位の高いバス転送要求を先に行わせるリオーダリングの技術がある。また、各バスマスタ専用のキューをメモリコントローラ内部に持たせ、優先度の高いバスマスタのキューから先にメモリアクセス処理を行わせるといった技術も知られている。
【０００６】
しかしながら、キューの内部でリオーダリングを行う方法では、バス調停によってキューに格納されたバス転送要求をもう一度所望の順序に並べ替えるという比較的複雑な制御回路を必要とする。また、専用キューを持つ方法では、優先させたいバスマスタの数だけキューを用意する必要があり回路規模を大きくしてしまう。さらには、前記両方法とも、根本的な課題である所望の優先順位に応じたバス調停を行えないという問題の解決策にはなっていない。
【０００７】
本発明は前述の問題点に鑑み、優先度の低いバスマスタが優先度の高いバスマスタよりも先にバス転送要求を発行するような場合であっても、所望の優先順位に応じたバス調停を行うことができるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
本発明のバス調停システムは、複数のバスマスタと、複数のメモリコントローラと、前記複数のバスマスタが前記複数のバスマスタと前記複数のメモリコントローラとを接続するシステムバスを介して前記メモリコントローラにアクセスする際にアクセスの競合を調停するバスアービタとを備えるバス調停システムであって、前記複数のバスマスタのバス転送要求を格納するキュー状態を前記バスアービタに通知するキュー状態通知手段と、前記キュー状態通知手段によって通知されたキューの状態を予め設定した条件と比較して判定する判定手段と、前記判定手段の結果に基づいてアクセスの競合を調停するタイミングを決定する調停タイミング制御手段とを備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、従来よりもバス調停のタイミングを長く取ることができるため、所望の優先順位に応じたバス調停を行うことが可能となる。
【発明を実施するための最良の形態】
【００１０】
（第１の実施形態）
以下、図１〜４を参照して本発明の実施形態について説明する。本実施形態では、バス調停のタイミングを、メモリコントローラのキューの空き数が２つ以上である場合に調停を行う構成とする。また、調停を行う競合するバスマスタの数は４つであるものとする。
【００１１】
図１は、本実施形態に係るバス調停システムの一例を示す図である。
図１において、本実施形態では、システムバス１０６に接続された４つのマスタデバイス１０１〜１０４が、システムバス１０６に接続されたメモリコントローラ１０５に対してバス転送を行う場合のバス転送競合をバスアービタ１０７で調停する。
【００１２】
さらに本実施形態のメモリコントローラ１０５は、内部に各バスマスタのバス転送要求を前もって複数個格納させておく。そして、このためのキューを有している。バスアービタ１０７は、メモリコントローラ１０５から通知されるキューの空き数を検知して監視することによりバス調停を行うタイミングを制御する構成となっている。
【００１３】
図２は、本実施形態に係るバス調停システムの詳細な構成例を示すブロック図である。
図２において、バスアービタ２００は、調停判定部２０１、調停タイミング制御部２０２、調停部２０３、およびバス調停システムの初期設定を行う調停タイミング設定部２０４を有する。また、メモリコントローラ２２０は、キュー状態通知部２２１を有する。
【００１４】
調停判定部２０１は、メモリコントローラ２２０からキュー状態通知信号２５０を受け取り、予め設定した調停条件と比較して条件を満たしているか否かを判定するブロックである。バス調停を行うための条件を満たしたかどうかを判定して、その結果を示す判定フラグを生成し、これに基づいて調停をするか否かを決定する。本実施形態の場合は、キュー状態通知信号２５０によって通知されるメモリコントローラ２２０のキューの空き数が２つ以上である場合にバス調停の条件を満たし、判定フラグを１にセットする。
【００１５】
調停タイミング制御部２０２は、調停判定部２０１から判定フラグを受け取り、判定フラグ、キューの空き数およびバス転送要求を発行しているバスマスタの数に基づき各バスマスタのバス転送要求を制御するブロックである。判定フラグが０である間は各バスマスタのバス転送要求を全て０にマスクし、調停部２０３でのバス調停を停止させる。
【００１６】
一方、判定フラグが１になり、調停判定部２０１においてバス調停を行うための条件を満たした場合には、その時点でのキューの空き数の数だけ各バスマスタのバス転送要求のマスクを解除して空き数分のバス転送要求を連続して調停する。この時、バス転送要求を発行しているバスマスタの数がキューの空き数に満たない場合には、バス転送要求を発行しているバスマスタの数だけ連続してマスクを解除し続け、該バスマスタのバス転送要求を調停する。
【００１７】
なお、キューの空き数分の転送、あるいはバス転送要求を発行していたバスマスタの数分のバス調停が完了するまでの間は判定フラグを考慮しない。所定の回数分のバス調停が完了し次第、再び判定フラグを監視し、次の調停タイミングを待つ。本実施形態の場合は、メモリコントローラ２２０のキューの空き数が１つ以下の場合は各バスマスタのバス転送要求を０にマスクし、バス調停を停止させておく。
【００１８】
キューの空き数が２つになって判定フラグが１にセットされた時に、バス転送要求を発行しているバスマスタの数が２つ以上であった場合には２回分のバス調停が行われるまで各バスマスタのバス転送要求のマスクを解除し、バス調停を連続で行わせる。バス転送要求を発行しているバスマスタの数が１つであった場合には該バスマスタのバス調停が行われるまでバス転送要求のマスクを解除する。そして、２回ないしは１回のバス調停が完了し次第、再び判定フラグの状態を監視し、次の調停タイミングまでは各バスマスタのバス転送要求をマスクする。
【００１９】
図３は、判定フラグが１にセットされた時にバス転送要求を発行しているバスマスタの数が２つ以上あった場合の状態を示す図である。ここで、詳細は後述するが、Que＿Vacの値には、本実施形態のバス調停を行う際の閾値である２を設定してあり、キュー状態通知信号２５０はメモリコントローラ２２０内のキューの空き数を示している。
【００２０】
gnt信号は、調停部２０３がバス調停を行って何れかのバスマスタにアクセス権を与えるための信号である。キュー状態通知信号２５０の値が２となり、予め設定したバス調停を行う条件を満たした時に条件フラグflgが１にセットされる。flgが１にセットされると各バスマスタのバス転送要求のマスクが解除され、バス調停が行われる。
【００２１】
調停部２０３にてバス調停が行われ、何れかのバスマスタにバスアクセス権が与えられる（gnt=1）とバス転送が行われる。そして、メモリコントローラ２２０のキューに該バス転送要求が格納されてキュー状態通知信号２５０で通知されるキューの空き数が１つ減る。flgが１にセットされた時点でバス転送要求を発行していたバスマスタが２つ以上あるため、調停タイミング制御部２０２は、連続してマスクを解除し続け、次のバス調停を行わせる。２回バス調停が終了した時点で再びflg信号を監視し、再度flg信号が１にセットされるまで全てのバスマスタのバス転送要求を０にマスクしてバス調停を停止させる。
【００２２】
調停部２０３は、従来の調停手段と同様のものであり、固定プライオリティ方式やラウンドロビン等の方式でバス調停を行って、何れかのバスマスタにアクセス権割り当てを連続して変化させるブロックである。調停タイミング設定部２０４は、本実施形態のバス調停システムの動作設定を行うレジスタ群であり、ＣＰＵ等が設定する。
【００２３】
また、２１０は、メモリコントローラ２２０のキューの空き数がいくつ以上になったらバス調停を行うかの閾値を設定するキュー空き数設定レジスタであり、その出力Que＿Vacは調停判定部２０１に接続する。
【００２４】
図４は、キュー空き数設定レジスタの仕様を示す図である。
図４において、Bitsはビット構成を示し、Nameはレジスタ名を示す。また、Accessはレジスタ属性であり、Ｒはリードを示し、Ｗはライトを示す。また、Functionはレジスタ機能を示す。なお、Que＿Vacは４ビット構成としているが、ビット幅はメモリコントローラ２２０が持つキューの総数に応じて増減させてもよい。
【００２５】
キュー状態通知部２２１は、メモリコントローラ２２０の内部にあるキューの状態をキュー状態通知信号２５０でバスアービタ２００へと通知するブロックである。本実施形態の場合は、キューの空き数をカウントして、通知する。
【００２６】
次に、本実施形態の動作について、図５のフローチャートを参照しながら説明する。
まず、ＣＰＵ等がキュー空き数設定レジスタ４１０にバス調停を行う条件であるキューの空き数０ｘ２を設定する（ステップＳ１）。ここで、キューの空き数が２以上の際にはバス調停を行うという設定がなされる。
【００２７】
初期設定がなされると、バスアービタ２００はメモリコントローラ２２０から通知されるキュー状態通知信号２５０の監視を始める（ステップＳ２）。次に、キュー状態通知信号２５０の値が２以上であるか否かを判定する（ステップＳ３）。この判定の結果、１以下である場合は、ステップＳ２に戻る。一方、ステップＳ３の判定の結果、２以上である場合は、ステップＳ４に進み、バス調停を開始する。そして、バス転送要求を発行しているバスマスタの数がキューの空き数よりも多いか否かを判定する（ステップＳ４）。
【００２８】
この判定の結果、キューの空き数よりも多い場合は、キューの空き数分のバス調停を行って各バスマスタにアクセス権を割り当てる（ステップＳ５）。一方、ステップＳ４の判定の結果、バス転送要求を発行しているバスマスタの数がキューの空き数以下である場合には、転送要求を発行しているバスマスタの数分のバス調停を行って各バスマスタにアクセス権を割り当てる（ステップＳ６）。そして、所定の回数のバス調停が完了すると、再びキュー状態通知信号の値の監視を始める（ステップＳ２）。
【００２９】
以上のように本実施形態によれば、従来よりもバス調停のタイミングを長く取ることができるため、所望の優先順位に応じたバス調停を行うことを可能とする。
【００３０】
図９は、キューの空き数が２つ以上になった場合にバス調停を行うように設定した場合を示す図である。図９は、図８で示した例と全く同じタイミング、間隔で各バスマスタがバス転送要求を発行する場合に本実施形態のバス調停システムを適用した際のバス調停動作を示している。
【００３１】
図９に示すように、本実施形態のバス調停システムを用いることにより、バス調停時にバス転送要求を発行しているバスマスタの数を増やすことができる。これにより、所望の優先順位に応じた順序でメモリコントローラのキューに各バスマスタのバス転送要求を格納できる。また、従来のように一度バス調停を行ったバス転送要求を再度優先順位に応じてメモリコントローラで調整する必要がなくなるため、容易な回路構成で所望の優先順位に応じたメモリアクセスを行うことを可能とする。
【００３２】
（第２の実施形態）
第１の実施形態では、バス調停を行う条件をキューの空き数の閾値で設定したが、この場合キューに格納されている各バス転送要求の内容に関しては全く考慮に入っていないため、必ずしも最適なバス調停タイミングを実現できるとは限らなかった。
【００３３】
例えば、４段のキューを有するメモリコントローラにおいて、２段以上キューが空いた時点でバス調停を開始するように設定する場合がある。この場合、まだキューに格納されている２つのバス転送要求が８ビート転送の要求２つである場合と、４ビート転送の要求２つである場合とでは、それらの転送要求のメモリアクセスが完了するまでに要するレイテンシは全く異なってくる。
【００３４】
通常、メモリコントローラは、現在行っているメモリアクセスの次のメモリアクセスの準備を行うために少なくとも１つのバス転送要求がキューに格納されていれば、余分なレイテンシを要さずに次のメモリアクセスを行うことが可能である。従って、もし４ビート転送の要求２つで合計８ビート分の転送量がキューに残っていて次のバス調停を開始させた場合に、新しいバス転送要求を格納することができるのであれば、転送要求が２つ格納されている状態でバス調停を開始させる必要はない。もう１つバス転送要求がキューから抜けてキューの空き数が３つになった後にバス調停を開始させることが可能である。そのほうがバス調停を開始させるタイミングを余分に多く取れるため、より効果的なバス調停を行うことが可能となる。
【００３５】
このように、いくつキューが空いた状態で次のバス調停を行うのが適切であるのかは一律の値ではなく、メモリコントローラのキューに格納されているバス転送要求の総転送量に応じて動的に変動する。そこで、上記問題に鑑み、本実施形態では、キューに格納されている各バス転送要求の総転送量の閾値を設定することにより、キューの空き数を一律で固定させずに、総転送量に応じて調停を行うタイミングを動的に変動させる。これにより、より効果的なバス調停を行うことが可能となる。
【００３６】
図６は、本実施形態に係るバス調停システムの詳細な構成例を示すブロック図である。本実施形態では、キューに格納されている各バス転送要求の総転送量でバス調停を行う条件を設定する。なお、図６に示す構成は、図２で示した第１の実施形態の構成とほぼ同じであるが、本実施形態では、調停タイミング設定部６０４で設定する内容及びメモリコントローラ６２０内のキュー状態通知部６２１で通知する内容が異なる。
【００３７】
６１０は、調停タイミング設定部６０４で設定するレジスタであり、メモリコントローラ６２０のキューに格納されているバス転送要求の総転送量が何バイト以下になったらバス調停を行うかの閾値を設定するキュー総転送量設定レジスタである。その出力Que＿Amoは調停判定部６０１に接続する。
【００３８】
図７は、キュー総転送量設定レジスタ７１０の仕様を示す図である。図７において、Que＿Amoは４ビット構成としているが、ビット幅は設定したい総転送量の値に応じて増減させてもよい。本実施形態では、キュー状態通知部６２１は、キューの空き数に加えて、キューに格納されているバス転送要求の総転送量もキュー状態通知信号６５０を用いてバスアービタ６００へ通知する。
【００３９】
調停判定部６０１は、キュー総転送量設定レジスタ６１０で設定された値とキュー状態通知信号６５０で通知された総転送量情報とを比較し、バス調停を開始するタイミングを判定する。キュー状態通知信号６５０は総転送量情報に加えてキューの空き数も通知することにより、バス調停時に何回連続でバス調停を行うかを制御する。
【００４０】
図１０は、本実施形態の動作タイミングを示す図である。本実施形態では、キューに格納されている各バス転送要求の総転送量が４バイト以下になった場合にバス調停を開始させるものとする。
【００４１】
なお、メモリコントローラ６２０は４段のキューを有しているものとし、そのキューには既に８バイト、１バイト、１バイト、４バイトの順でバス転送要求が格納されているものとする。この場合、Que＿Amoの値にはバス調停の閾値である４を設定してあり、キューの空き数およびキューに格納されている総転送量がキュー状態通知信号６５０により通知されている。gnt信号は、調停部６０３がバス調停を行って何れかのバスマスタにアクセス権を与えるための信号である。
【００４２】
キューには最初は計１４バイトの転送量が格納されており、３つのバス転送要求がキューから抜けた時点でキューの内部の総転送量がバス調停を開始させる条件となる４バイトとなるので、flgが１にセットされ、バス調停が開始される。なお、本実施形態は、バス調停を行う条件を、キューの空き数やキューの総転送量に限定するものではない。さらに、リード／ライトの属性や、ページヒット／ミスといった状態をも考慮に入れることにより、より効果的なバス調停システムを容易に拡張可能である。
【００４３】
以上のように本実施形態によれば、従来よりもバス調停のタイミングを長く取ることができるため、所望の優先順位に応じたバス調停を行うことが可能となる。
【００４４】
（本発明に係る他の実施形態）
前述した本発明の実施形態におけるバス調停システムを構成する各手段、並びにバス調停方法の各工程は、コンピュータのＲＡＭやＲＯＭなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
【００４５】
また、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【００４６】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム（実施形態では図５に示すフローチャートに対応したプログラム）を、システムまたは装置に直接、または遠隔から供給する場合も含む。そして、そのシステムまたは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【００４７】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【００４８】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【００４９】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスクなどがある。さらに、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ）などもある。
【００５０】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する方法がある。そして、前記ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【００５１】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【００５２】
また、その他の方法として、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記録媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００５３】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【００５４】
さらに、その他の方法として、まず記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。そして、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００５５】
【図１】本発明の第１の実施形態に係るバス調停システムの一例を示す図である。
【図２】本発明の第１の実施形態に係るバス調停システムの詳細な構成例を示すブロック図である。
【図３】判定フラグが１にセットされた時にバス転送要求を発行しているバスマスタの数が２つ以上あった場合の状態を示す図である。
【図４】本発明の第１の実施形態におけるキュー空き数設定レジスタの仕様を示す図である。
【図５】本発明の第１の実施形態における動作手順の一例を示すフローチャートである。
【図６】本発明の第２の実施形態に係るバス調停システムの詳細な構成例を示すブロック図である。
【図７】本発明の第２の実施形態におけるキュー総転送量設定レジスタの仕様を示す図である。
【図８】従来の調停方式における調停例を示す図である。
【図９】本発明の第１の実施形態における調停方式を用いた場合の調停例を示す図である。
【図１０】本発明の第２の実施形態の動作タイミングを示す図である。
【符号の説明】
【００５６】
２００  バスアービタ
２０１  調停判定部
２０２  調停タイミング制御部
２０３  調停部
２０４  調停タイミング設定部
２２０  メモリコントローラ
２２１  キュー状態通知部
２５０  キュー状態通知信号
【図１】
2010039632.tif 000003
【図２】
2010039632.tif 000004
【図３】
2010039632.tif 000005
【図４】
2010039632.tif 000006
【図５】
2010039632.tif 000007
【図６】
2010039632.tif 000008
【図７】
2010039632.tif 000009
【図８】
2010039632.tif 000010
【図９】
2010039632.tif 000011
【図１０】
2010039632.tif 000012