説明

バス調停システム

【課題】優先度の低いバスマスタが優先度の高いバスマスタよりも先にバス転送要求を発行するような場合であっても、所望の優先順位に応じたバス調停を行うことができるようにする。
【解決手段】複数のバスマスタと、複数のメモリコントローラと、システムバスを介してメモリコントローラにアクセスする際にアクセスの競合を調停するバスアービタとを備えるバス調停システムであって、前記複数のバスマスタのバス転送要求を格納するキュー状態を前記バスアービタに通知し、前記通知されたキューの状態を予め設定した条件と比較して判定する。そして、判定結果に基づいてアクセスの競合を調停するタイミングを決定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、少なくとも1つ以上のバスマスタとメモリコントローラとがシステムバスで接続され、バスマスタのバス転送を調停するバスアービタを備えるバス調停システムに関する。
【背景技術】
【0002】
従来のメモリコントローラへのアクセス競合調停手段としては、バスアービタがシステムバス上の転送のみを監視し、各バスマスタのバス転送が終了する都度、その時点におけるバス転送要求を発行しているバスマスタ間で調停を行う。そして、その時点での優先順位の高いバスマスタにメモリコントローラへのアクセス権を与える方法が一般的に知られている。
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながらこの従来の調停方法では、各バスマスタが転送要求を発行するタイミングはそれぞれ異なるため、優先度を高く設定したバスマスタの転送要求が必ずしも優先度の低いバスマスタの転送要求よりも先にアクセス権を得るとは限らなかった。
【0004】
図8は、複数のバスマスタが各々のタイミングでバス転送要求を発行する際に従来の調停方法でバス調停を行う場合の一例を示す図である。
図8に示すように、優先度の低いバスマスタから順にバス転送要求が発行され、優先度の高いバスマスタのバス転送要求が低頻度でしか発行されないような組み込みシステムがある。この場合、バス転送が終了して次のアービトレーションを行う時点で、優先度の高い他のバスマスタがまだ転送要求を発行していない。このため、優先度の低いバスマスタが先にアクセス権を割り当てられてバス転送を行い、メモリコントローラのキューに格納されるという状況が発生する。したがって、予め各バスマスタの優先度を設定しても、各バスマスタのバス転送要求タイミングによってその優先順位とは異なる順序でメモリコントローラのキューにバス転送要求が格納されていく。これにより、所望の優先順位に応じたバス調停を行うことができない。
【0005】
そこで、この問題を解決するために、一旦メモリコントローラのキューに格納された複数のバス転送要求をキューの内部で順番を入れ替えることによって優先順位の高いバス転送要求を先に行わせるリオーダリングの技術がある。また、各バスマスタ専用のキューをメモリコントローラ内部に持たせ、優先度の高いバスマスタのキューから先にメモリアクセス処理を行わせるといった技術も知られている。
【0006】
しかしながら、キューの内部でリオーダリングを行う方法では、バス調停によってキューに格納されたバス転送要求をもう一度所望の順序に並べ替えるという比較的複雑な制御回路を必要とする。また、専用キューを持つ方法では、優先させたいバスマスタの数だけキューを用意する必要があり回路規模を大きくしてしまう。さらには、前記両方法とも、根本的な課題である所望の優先順位に応じたバス調停を行えないという問題の解決策にはなっていない。
【0007】
本発明は前述の問題点に鑑み、優先度の低いバスマスタが優先度の高いバスマスタよりも先にバス転送要求を発行するような場合であっても、所望の優先順位に応じたバス調停を行うことができるようにすることを目的とする。
【課題を解決するための手段】
【0008】
本発明のバス調停システムは、複数のバスマスタと、複数のメモリコントローラと、前記複数のバスマスタが前記複数のバスマスタと前記複数のメモリコントローラとを接続するシステムバスを介して前記メモリコントローラにアクセスする際にアクセスの競合を調停するバスアービタとを備えるバス調停システムであって、前記複数のバスマスタのバス転送要求を格納するキュー状態を前記バスアービタに通知するキュー状態通知手段と、前記キュー状態通知手段によって通知されたキューの状態を予め設定した条件と比較して判定する判定手段と、前記判定手段の結果に基づいてアクセスの競合を調停するタイミングを決定する調停タイミング制御手段とを備えることを特徴とする。
【発明の効果】
【0009】
本発明によれば、従来よりもバス調停のタイミングを長く取ることができるため、所望の優先順位に応じたバス調停を行うことが可能となる。
【発明を実施するための最良の形態】
【0010】
(第1の実施形態)
以下、図1〜4を参照して本発明の実施形態について説明する。本実施形態では、バス調停のタイミングを、メモリコントローラのキューの空き数が2つ以上である場合に調停を行う構成とする。また、調停を行う競合するバスマスタの数は4つであるものとする。
【0011】
図1は、本実施形態に係るバス調停システムの一例を示す図である。
図1において、本実施形態では、システムバス106に接続された4つのマスタデバイス101〜104が、システムバス106に接続されたメモリコントローラ105に対してバス転送を行う場合のバス転送競合をバスアービタ107で調停する。
【0012】
さらに本実施形態のメモリコントローラ105は、内部に各バスマスタのバス転送要求を前もって複数個格納させておく。そして、このためのキューを有している。バスアービタ107は、メモリコントローラ105から通知されるキューの空き数を検知して監視することによりバス調停を行うタイミングを制御する構成となっている。
【0013】
図2は、本実施形態に係るバス調停システムの詳細な構成例を示すブロック図である。
図2において、バスアービタ200は、調停判定部201、調停タイミング制御部202、調停部203、およびバス調停システムの初期設定を行う調停タイミング設定部204を有する。また、メモリコントローラ220は、キュー状態通知部221を有する。
【0014】
調停判定部201は、メモリコントローラ220からキュー状態通知信号250を受け取り、予め設定した調停条件と比較して条件を満たしているか否かを判定するブロックである。バス調停を行うための条件を満たしたかどうかを判定して、その結果を示す判定フラグを生成し、これに基づいて調停をするか否かを決定する。本実施形態の場合は、キュー状態通知信号250によって通知されるメモリコントローラ220のキューの空き数が2つ以上である場合にバス調停の条件を満たし、判定フラグを1にセットする。
【0015】
調停タイミング制御部202は、調停判定部201から判定フラグを受け取り、判定フラグ、キューの空き数およびバス転送要求を発行しているバスマスタの数に基づき各バスマスタのバス転送要求を制御するブロックである。判定フラグが0である間は各バスマスタのバス転送要求を全て0にマスクし、調停部203でのバス調停を停止させる。
【0016】
一方、判定フラグが1になり、調停判定部201においてバス調停を行うための条件を満たした場合には、その時点でのキューの空き数の数だけ各バスマスタのバス転送要求のマスクを解除して空き数分のバス転送要求を連続して調停する。この時、バス転送要求を発行しているバスマスタの数がキューの空き数に満たない場合には、バス転送要求を発行しているバスマスタの数だけ連続してマスクを解除し続け、該バスマスタのバス転送要求を調停する。
【0017】
なお、キューの空き数分の転送、あるいはバス転送要求を発行していたバスマスタの数分のバス調停が完了するまでの間は判定フラグを考慮しない。所定の回数分のバス調停が完了し次第、再び判定フラグを監視し、次の調停タイミングを待つ。本実施形態の場合は、メモリコントローラ220のキューの空き数が1つ以下の場合は各バスマスタのバス転送要求を0にマスクし、バス調停を停止させておく。
【0018】
キューの空き数が2つになって判定フラグが1にセットされた時に、バス転送要求を発行しているバスマスタの数が2つ以上であった場合には2回分のバス調停が行われるまで各バスマスタのバス転送要求のマスクを解除し、バス調停を連続で行わせる。バス転送要求を発行しているバスマスタの数が1つであった場合には該バスマスタのバス調停が行われるまでバス転送要求のマスクを解除する。そして、2回ないしは1回のバス調停が完了し次第、再び判定フラグの状態を監視し、次の調停タイミングまでは各バスマスタのバス転送要求をマスクする。
【0019】
図3は、判定フラグが1にセットされた時にバス転送要求を発行しているバスマスタの数が2つ以上あった場合の状態を示す図である。ここで、詳細は後述するが、Que_Vacの値には、本実施形態のバス調停を行う際の閾値である2を設定してあり、キュー状態通知信号250はメモリコントローラ220内のキューの空き数を示している。
【0020】
gnt信号は、調停部203がバス調停を行って何れかのバスマスタにアクセス権を与えるための信号である。キュー状態通知信号250の値が2となり、予め設定したバス調停を行う条件を満たした時に条件フラグflgが1にセットされる。flgが1にセットされると各バスマスタのバス転送要求のマスクが解除され、バス調停が行われる。
【0021】
調停部203にてバス調停が行われ、何れかのバスマスタにバスアクセス権が与えられる(gnt=1)とバス転送が行われる。そして、メモリコントローラ220のキューに該バス転送要求が格納されてキュー状態通知信号250で通知されるキューの空き数が1つ減る。flgが1にセットされた時点でバス転送要求を発行していたバスマスタが2つ以上あるため、調停タイミング制御部202は、連続してマスクを解除し続け、次のバス調停を行わせる。2回バス調停が終了した時点で再びflg信号を監視し、再度flg信号が1にセットされるまで全てのバスマスタのバス転送要求を0にマスクしてバス調停を停止させる。
【0022】
調停部203は、従来の調停手段と同様のものであり、固定プライオリティ方式やラウンドロビン等の方式でバス調停を行って、何れかのバスマスタにアクセス権割り当てを連続して変化させるブロックである。調停タイミング設定部204は、本実施形態のバス調停システムの動作設定を行うレジスタ群であり、CPU等が設定する。
【0023】
また、210は、メモリコントローラ220のキューの空き数がいくつ以上になったらバス調停を行うかの閾値を設定するキュー空き数設定レジスタであり、その出力Que_Vacは調停判定部201に接続する。
【0024】
図4は、キュー空き数設定レジスタの仕様を示す図である。
図4において、Bitsはビット構成を示し、Nameはレジスタ名を示す。また、Accessはレジスタ属性であり、Rはリードを示し、Wはライトを示す。また、Functionはレジスタ機能を示す。なお、Que_Vacは4ビット構成としているが、ビット幅はメモリコントローラ220が持つキューの総数に応じて増減させてもよい。
【0025】
キュー状態通知部221は、メモリコントローラ220の内部にあるキューの状態をキュー状態通知信号250でバスアービタ200へと通知するブロックである。本実施形態の場合は、キューの空き数をカウントして、通知する。
【0026】
次に、本実施形態の動作について、図5のフローチャートを参照しながら説明する。
まず、CPU等がキュー空き数設定レジスタ410にバス調停を行う条件であるキューの空き数0x2を設定する(ステップS1)。ここで、キューの空き数が2以上の際にはバス調停を行うという設定がなされる。
【0027】
初期設定がなされると、バスアービタ200はメモリコントローラ220から通知されるキュー状態通知信号250の監視を始める(ステップS2)。次に、キュー状態通知信号250の値が2以上であるか否かを判定する(ステップS3)。この判定の結果、1以下である場合は、ステップS2に戻る。一方、ステップS3の判定の結果、2以上である場合は、ステップS4に進み、バス調停を開始する。そして、バス転送要求を発行しているバスマスタの数がキューの空き数よりも多いか否かを判定する(ステップS4)。
【0028】
この判定の結果、キューの空き数よりも多い場合は、キューの空き数分のバス調停を行って各バスマスタにアクセス権を割り当てる(ステップS5)。一方、ステップS4の判定の結果、バス転送要求を発行しているバスマスタの数がキューの空き数以下である場合には、転送要求を発行しているバスマスタの数分のバス調停を行って各バスマスタにアクセス権を割り当てる(ステップS6)。そして、所定の回数のバス調停が完了すると、再びキュー状態通知信号の値の監視を始める(ステップS2)。
【0029】
以上のように本実施形態によれば、従来よりもバス調停のタイミングを長く取ることができるため、所望の優先順位に応じたバス調停を行うことを可能とする。
【0030】
図9は、キューの空き数が2つ以上になった場合にバス調停を行うように設定した場合を示す図である。図9は、図8で示した例と全く同じタイミング、間隔で各バスマスタがバス転送要求を発行する場合に本実施形態のバス調停システムを適用した際のバス調停動作を示している。
【0031】
図9に示すように、本実施形態のバス調停システムを用いることにより、バス調停時にバス転送要求を発行しているバスマスタの数を増やすことができる。これにより、所望の優先順位に応じた順序でメモリコントローラのキューに各バスマスタのバス転送要求を格納できる。また、従来のように一度バス調停を行ったバス転送要求を再度優先順位に応じてメモリコントローラで調整する必要がなくなるため、容易な回路構成で所望の優先順位に応じたメモリアクセスを行うことを可能とする。
【0032】
(第2の実施形態)
第1の実施形態では、バス調停を行う条件をキューの空き数の閾値で設定したが、この場合キューに格納されている各バス転送要求の内容に関しては全く考慮に入っていないため、必ずしも最適なバス調停タイミングを実現できるとは限らなかった。
【0033】
例えば、4段のキューを有するメモリコントローラにおいて、2段以上キューが空いた時点でバス調停を開始するように設定する場合がある。この場合、まだキューに格納されている2つのバス転送要求が8ビート転送の要求2つである場合と、4ビート転送の要求2つである場合とでは、それらの転送要求のメモリアクセスが完了するまでに要するレイテンシは全く異なってくる。
【0034】
通常、メモリコントローラは、現在行っているメモリアクセスの次のメモリアクセスの準備を行うために少なくとも1つのバス転送要求がキューに格納されていれば、余分なレイテンシを要さずに次のメモリアクセスを行うことが可能である。従って、もし4ビート転送の要求2つで合計8ビート分の転送量がキューに残っていて次のバス調停を開始させた場合に、新しいバス転送要求を格納することができるのであれば、転送要求が2つ格納されている状態でバス調停を開始させる必要はない。もう1つバス転送要求がキューから抜けてキューの空き数が3つになった後にバス調停を開始させることが可能である。そのほうがバス調停を開始させるタイミングを余分に多く取れるため、より効果的なバス調停を行うことが可能となる。
【0035】
このように、いくつキューが空いた状態で次のバス調停を行うのが適切であるのかは一律の値ではなく、メモリコントローラのキューに格納されているバス転送要求の総転送量に応じて動的に変動する。そこで、上記問題に鑑み、本実施形態では、キューに格納されている各バス転送要求の総転送量の閾値を設定することにより、キューの空き数を一律で固定させずに、総転送量に応じて調停を行うタイミングを動的に変動させる。これにより、より効果的なバス調停を行うことが可能となる。
【0036】
図6は、本実施形態に係るバス調停システムの詳細な構成例を示すブロック図である。本実施形態では、キューに格納されている各バス転送要求の総転送量でバス調停を行う条件を設定する。なお、図6に示す構成は、図2で示した第1の実施形態の構成とほぼ同じであるが、本実施形態では、調停タイミング設定部604で設定する内容及びメモリコントローラ620内のキュー状態通知部621で通知する内容が異なる。
【0037】
610は、調停タイミング設定部604で設定するレジスタであり、メモリコントローラ620のキューに格納されているバス転送要求の総転送量が何バイト以下になったらバス調停を行うかの閾値を設定するキュー総転送量設定レジスタである。その出力Que_Amoは調停判定部601に接続する。
【0038】
図7は、キュー総転送量設定レジスタ710の仕様を示す図である。図7において、Que_Amoは4ビット構成としているが、ビット幅は設定したい総転送量の値に応じて増減させてもよい。本実施形態では、キュー状態通知部621は、キューの空き数に加えて、キューに格納されているバス転送要求の総転送量もキュー状態通知信号650を用いてバスアービタ600へ通知する。
【0039】
調停判定部601は、キュー総転送量設定レジスタ610で設定された値とキュー状態通知信号650で通知された総転送量情報とを比較し、バス調停を開始するタイミングを判定する。キュー状態通知信号650は総転送量情報に加えてキューの空き数も通知することにより、バス調停時に何回連続でバス調停を行うかを制御する。
【0040】
図10は、本実施形態の動作タイミングを示す図である。本実施形態では、キューに格納されている各バス転送要求の総転送量が4バイト以下になった場合にバス調停を開始させるものとする。
【0041】
なお、メモリコントローラ620は4段のキューを有しているものとし、そのキューには既に8バイト、1バイト、1バイト、4バイトの順でバス転送要求が格納されているものとする。この場合、Que_Amoの値にはバス調停の閾値である4を設定してあり、キューの空き数およびキューに格納されている総転送量がキュー状態通知信号650により通知されている。gnt信号は、調停部603がバス調停を行って何れかのバスマスタにアクセス権を与えるための信号である。
【0042】
キューには最初は計14バイトの転送量が格納されており、3つのバス転送要求がキューから抜けた時点でキューの内部の総転送量がバス調停を開始させる条件となる4バイトとなるので、flgが1にセットされ、バス調停が開始される。なお、本実施形態は、バス調停を行う条件を、キューの空き数やキューの総転送量に限定するものではない。さらに、リード/ライトの属性や、ページヒット/ミスといった状態をも考慮に入れることにより、より効果的なバス調停システムを容易に拡張可能である。
【0043】
以上のように本実施形態によれば、従来よりもバス調停のタイミングを長く取ることができるため、所望の優先順位に応じたバス調停を行うことが可能となる。
【0044】
(本発明に係る他の実施形態)
前述した本発明の実施形態におけるバス調停システムを構成する各手段、並びにバス調停方法の各工程は、コンピュータのRAMやROMなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
【0045】
また、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【0046】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム(実施形態では図5に示すフローチャートに対応したプログラム)を、システムまたは装置に直接、または遠隔から供給する場合も含む。そして、そのシステムまたは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【0047】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【0048】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
【0049】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスクなどがある。さらに、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM、DVD−R)などもある。
【0050】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する方法がある。そして、前記ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【0051】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
【0052】
また、その他の方法として、本発明のプログラムを暗号化してCD−ROM等の記録媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【0053】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【0054】
さらに、その他の方法として、まず記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。そして、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【0055】
【図1】本発明の第1の実施形態に係るバス調停システムの一例を示す図である。
【図2】本発明の第1の実施形態に係るバス調停システムの詳細な構成例を示すブロック図である。
【図3】判定フラグが1にセットされた時にバス転送要求を発行しているバスマスタの数が2つ以上あった場合の状態を示す図である。
【図4】本発明の第1の実施形態におけるキュー空き数設定レジスタの仕様を示す図である。
【図5】本発明の第1の実施形態における動作手順の一例を示すフローチャートである。
【図6】本発明の第2の実施形態に係るバス調停システムの詳細な構成例を示すブロック図である。
【図7】本発明の第2の実施形態におけるキュー総転送量設定レジスタの仕様を示す図である。
【図8】従来の調停方式における調停例を示す図である。
【図9】本発明の第1の実施形態における調停方式を用いた場合の調停例を示す図である。
【図10】本発明の第2の実施形態の動作タイミングを示す図である。
【符号の説明】
【0056】
200 バスアービタ
201 調停判定部
202 調停タイミング制御部
203 調停部
204 調停タイミング設定部
220 メモリコントローラ
221 キュー状態通知部
250 キュー状態通知信号

【特許請求の範囲】
【請求項1】
複数のバスマスタと、複数のメモリコントローラと、前記複数のバスマスタが前記複数のバスマスタと前記複数のメモリコントローラとを接続するシステムバスを介して前記メモリコントローラにアクセスする際にアクセスの競合を調停するバスアービタとを備えるバス調停システムであって、
前記複数のバスマスタのバス転送要求を格納するキュー状態を前記バスアービタに通知するキュー状態通知手段と、
前記キュー状態通知手段によって通知されたキューの状態を予め設定した条件と比較して判定する判定手段と、
前記判定手段の結果に基づいてアクセスの競合を調停するタイミングを決定する調停タイミング制御手段とを備えることを特徴とするバス調停システム。
【請求項2】
前記判定手段は、キューの空き数が予め設定した値になったかどうかを判定し、
前記調停タイミング制御手段は、前記判定手段による前記キューの空き数の判定の結果に応じてバス調停を行うかどうかを決定することを特徴とする請求項1記載のバス調停システム。
【請求項3】
前記判定手段は、キューに格納されている全てのバス転送要求の属性の組み合わせを予め設定した条件と比較して判定し、
前記調停タイミング制御手段は、前記判定手段による前記属性の組み合わせの判定の結果に応じてバス調停を行うタイミングを動的に変化させることを特徴とする請求項1記載のバス調停システム。
【請求項4】
前記調停タイミング制御手段は、キューの空き数を検知してバス調停を行う際に、キューの空き数分のバスアクセス権の割り当てを連続して行うことを特徴とする請求項1〜3のいずれか1項に記載のバス調停システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate