(57)【要約】【課題】  実時間性の要求される処理を実行するデバイスが複数存在する場合においても、それらの全てのデバイスについて、バス使用要求が発生してから制限時間内にバスを使用した処理を実行させる。【解決手段】  第１カウンタ３１および第２カウンタ３２は、単位処理時間を繰り返し計時する。制御部５０は、バス使用要求ＲＱｋの発生元のバスマスタにバスの使用許可ＧＲｋを与える手段であり、複数のバスマスタ＃ｋのうち高優先度バスマスタについては、各単位処理時間において、各高優先度バスマスタのバス使用時間が各高優先度バスマスタについて予め定められたバス使用時間上限値を越えないことを限度として、優先的にバスの使用を許可する。【選択図】図１
2007094695.tif 000002
【特許請求の範囲】
【請求項１】
単位処理時間を繰り返し計時する計時手段と、
バスを共有する複数のバスマスタが発生するバス使用要求を調停し、バス使用要求の発生元のバスマスタにバスの使用許可を与える手段であって、前記複数のバスマスタのうち所定レベル以上の優先度を有する高優先度バスマスタについては、各単位処理時間において、各高優先度バスマスタのバス使用時間が各高優先度バスマスタについて予め定められたバス使用時間上限値を越えないことを限度として、優先的にバスの使用を許可する制御手段と
を具備することを特徴とするバス調停回路。
【請求項２】
前記単位処理時間は、全ての高優先度バスマスタのバス使用時間上限値の総和の２倍より長い時間に定められており、
前記計時手段は、前記単位処理時間を２分割した前半時間および後半時間を交互に計時するものであることを特徴とする請求項１に記載のバス調停回路。
【請求項３】
前記制御手段は、１または複数のバス使用要求が発生している場合に、バス使用要求の発生元であるバスマスタのうち、前記計時手段が前記前半時間または後半時間の計時を終えるまでの残り時間内にバス使用時間上限値が収まる高優先度バスマスタに優先的にバスの使用を許可することを特徴とする請求項２に記載のバス調停回路。
【請求項４】
前記制御手段は、高優先度バスマスタでないバスマスタにバスの使用許可を与えているときに、高優先度バスマスタからのバス使用要求が発生した場合、前記計時手段が前記前半時間または後半時間の計時を終えるまでの残り時間内に前記高優先度バスマスタのバス使用時間上限値が収まる場合には前記高優先度バスマスタでないバスマスタに対するバスの使用許可を解除して前記高優先度バスマスタにバスの使用許可を与え、前記残り時間内に前記バス使用時間上限値が収まらない場合には前記高優先度バスマスタにバスの使用許可を与えることなく前記高優先度バスマスタでないバスマスタへのバスの使用許可を維持することを特徴とする請求項２または３に記載のバス調停回路。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、バスを共有する複数のデバイスが発生するバス使用要求の調停を行うバス調停回路に関する。
【背景技術】
【０００２】
ＣＰＵ、ＤＳＰなどの複数のデバイスがバスを共有するシステムでは、複数のデバイスのバス使用要求が競合することがありうる。そこで、この種のシステムには、各デバイスのバス使用要求を調停するバス調停回路が設けられる。従来、この種のバス調停回路として、バスの使用に関して各デバイスに優先順位を設け、必要があれば各デバイスの優先順位を制御し、優先順位に従ってバス使用要求を受け付けるものがあった。なお、バス調停回路は例えば特許文献１に開示されている。
【特許文献１】特開平７−２９５８７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、複数のデバイスがバスを共有するシステムにおいて、そのうちの特定のデバイスが実時間性の要求される処理を実行するデバイスであり、バス使用要求が発生してから制限時間内にバスを使用した処理を実行しなければならない場合がある。このような特定のデバイスに実時間性の要求される処理を実行させるために、例えばこのデバイスの優先度を最も高くし、このデバイスからバス使用要求が発生した場合には、たとえ他のデバイスがバスを使用していたとしても、直ちにこのデバイスにバスの使用権を与える、という方法も考えられる。しかし、この方法は、他のデバイスが頻繁にバスの使用を妨げられる結果を招く欠点がある。また、システム内に実時間性の要求される処理を実行するデバイスが複数ある場合には、どのように優先度を定めたとしても、それらの全てのデバイスについて、バス使用要求が発生してから制限時間内にバスを使用した処理を実行させることを保証することはできない。
【０００４】
この発明は、以上説明した事情に鑑みてなされたものであり、実時間性の要求される処理を実行するデバイスが複数存在する場合においても、それらの全てのデバイスについて、バス使用要求が発生してから制限時間内にバスを使用した処理を実行させることができるバス調停回路を提供することを目的とする。
【課題を解決するための手段】
【０００５】
この発明は、単位処理時間を繰り返し計時する計時手段と、バスを共有する複数のバスマスタが発生するバス使用要求を調停し、バス使用要求の発生元のバスマスタにバスの使用許可を与える手段であって、前記複数のバスマスタのうち所定レベル以上の優先度を有する高優先度バスマスタについては、各単位処理時間において、各高優先度バスマスタのバス使用時間が各高優先度バスマスタについて予め定められたバス使用時間上限値を越えないことを限度として、優先的にバスの使用を許可する制御手段とを具備することを特徴とするバス調停回路を提供する。
かかる発明によれば、高優先度バスマスタは、単位処理時間内に、バス使用時間上限値を限度として、バスの使用が優先的に許可される。従って、高優先度バスマスタについては、バス使用要求の発生後、単位処理時間内にバスを使用した処理を実行させることができる。
【発明を実施するための最良の形態】
【０００６】
以下、図面を参照し、この発明の実施の形態を説明する。
図１はこの発明の一実施形態であるバス調停回路１００を用いた実時間バス共有システムの構成を示すブロック図である。この実時間バス共有システムでは、例えばＣＰＵ、ＤＳＰ、ＤＭＡコントローラといったｍ個のデバイスがバスＢを共有しており、それらのデバイスはバスマスタ＃ｋ（ｋ＝１〜ｍ）となってバス使用要求ＲＱｋ（ｋ＝１〜ｍ）を発生する。
【０００７】
バス調停回路１００は、各バスマスタ＃ｋからバス使用要求ＲＱｋを受け取ってその調停を行い、バスの使用を許可するバスマスタ＃ｋにグラント（使用許可）ＧＲｋを与える。ｍ個のバスマスタ＃ｋ（ｋ＝１〜ｍ）には、優先度が各々与えられている。各バスマスタ＃ｋは、各々に与えられた優先度の値が大きいほど、バスＢの使用に関して優先的な待遇を受ける。優先度１以上のバスマスタは、実時間性の要求される処理を実行しており、バス使用要求ＲＱｋを発生してから予め決められた単位処理時間が経過するまでの間にグラントＧＲｋを得られることが保証された高優先度バスマスタである。優先度０のバスマスタには、そのような保証はない。
【０００８】
本実施形態では、実時間バス共有システムの設計時に、バスマスタ＃ｋ（ｋ＝１〜ｍ）毎に、単位処理時間内において許可可能なバスＢの使用時間の上限であるバス使用時間上限値が定められる。また、単位処理時間は、全ての高優先度バスマスタのバス使用時間上限値の総和の２倍より長くなるように、その長さが定められる。本実施形態では、所定周波数のクロックに同期してバスＢの使用権をバスマスタ＃ｋに与える制御が行われる。このため、バス使用時間上限値および単位処理時間は、このクロックの何クロック分に相当するかの数値により表される。
【０００９】
次にバス調停回路１００の内部の構成について説明する。バスマスタ管理レジスタ１０−ｋ（ｋ＝１〜ｍ）は、バスマスタ＃ｋ（ｋ＝１〜ｍ）に関するバスマスタ管理データを各々記憶するレジスタである。各バスマスタ＃ｋに関するバスマスタ管理データは、ｎ＋ｑビットのデータであり、上位ｎビットはバスマスタ＃ｋに与えられている優先度、下位ｑビットはバスマスタ＃ｋのバス使用時間上限値を表している。グラント数カウンタ２０−ｋ（ｋ＝１〜ｍ）は、バスマスタ＃ｋ毎にグラントＧＲｋが与えられている時間をカウントするカウンタである。さらに詳述すると、あるバスマスタ＃ｋにグラントＧＲｋが与えられた場合、以後、グラントＧＲｋが解除されるまで、グラント数カウンタ２０−ｋは、クロックのカウントを行う。本実施形態ではこのグラント数カウンタ２０−ｋのカウント値をグラント数と呼ぶ。グラント数カウンタ２０−ｋ（ｋ＝１〜ｍ）が保持しているグラント数は、単位処理時間が経過する都度、０にクリアされる。
【００１０】
Ｔ保持レジスタ３０は、単位処理時間を２Ｔとした場合にその１／２である時間Ｔを記憶するレジスタである。第１カウンタ３１および第２カウンタ３２は、時間Ｔの計時を順次行い、両者合わせて単位処理時間２Ｔの計時を行うカウンタである。さらに詳述すると、単位処理時間２Ｔの開始タイミングにおいて、Ｔ保持レジスタ３０に記憶された時間Ｔが第１カウンタ３１および第２カウンタ３２に設定され、まず、第１カウンタ３１が、クロックに従い、ダウンカウントを行う。そして、第１カウンタ３１のカウント値Ｔ１が０になると、第１カウンタ３１はカウント動作を停止する一方、第２カウンタ３２は、クロックに従い、ダウンカウントを行う。そして、第２カウンタ３２のカウント値Ｔ２が０になり、単位処理時間２Ｔの計時が終了すると、再び第１カウンタ３１および第２カウンタ３２にカウント値Ｔが設定され、同様な動作が繰り返されるのである。
【００１１】
バス使用要求保持レジスタ４０は、ｍビットのバス使用要求データを記憶するレジスタである。このバス使用要求データの各ビットは、現時点においてバスマスタ＃ｋ（ｋ＝１〜ｍ）からのバス使用要求ＲＱｋ（ｋ＝１〜ｍ）が発生しているか否かを示すフラグとなっている。すなわち、あるバスマスタ＃ｋからのバス使用要求ＲＱｋが発生すると、バス使用要求データのｋ番目のビットは“１”とされ、その後、バスマスタ＃ｋにグラントＧＲｋが与えられ、グラント数カウンタ２０−ｋのカウントが開始されると、ｋ番目のビットは“０”に戻される。
【００１２】
制御部５０は、バスマスタ＃ｋからバス使用要求ＲＱｋが発生した場合に、そのバスマスタ＃ｋに対してバスＢの使用を許可してよいか否かを判断し、許可可能な場合にグラントＧＲｋを与える装置である。さらに詳述すると、制御部５０は、バス使用要求保持レジスタ４０内のバス使用要求データを常時監視しており、何らかのバス使用要求ＲＱｋが発生していることを検知したときには、その発生元であるバスマスタ＃ｋのバスマスタ管理データをバスマスタ管理レジスタ１０−ｋから読み出し、バスマスタ＃ｋの優先度とバス使用時間上限値を求め、これとバス使用要求ＲＱｋの発生時におけるバスＢの使用状況や他のバス使用要求の発生状況に基づき、バスＢの使用を許可するか否かを判断する。この判断の内容を場合分けして説明すると次の通りである。
【００１３】
＜バス使用要求ＲＱｋの発生元であるバスマスタ＃ｋが高優先度バスマスタである場合＞
ａ．バス使用要求ＲＱｋの発生時、バスＢが空いている場合
ａ−１．バス使用要求ＲＱｋの発生時、他のバスマスタからバス使用要求が発生していない場合
すなわち、バスＢが空いている状態において、１個の高優先度バスマスタ＃ｋからのバス使用要求ＲＱｋのみが発生した場合である。
この場合、制御部５０は、第１カウンタ３１または第２カウンタ３２のうちダウンカウントを現在行っている方のカウンタのカウント値（時間Ｔをカウントし終えるまでの残りカウント数）と、バスマスタ＃ｋのバス使用時間上限値とを比較し、下記式（１）が成立する場合には、バスＢの使用を許可し、グラントＧＲｋを発生する。
カウント値＞バス使用時間上限値        ……（１）
一方、下記式（２）が成立する場合には、現時点ではバスＢの使用を許可せず、その後、第１カウンタ３１または第２カウンタ３２のうちダウンカウントを行っているもののカウント値が０となり、他方のカウンタがダウンカウントを行う期間に、バスマスタ＃ｋに対してバスＢの使用を許可する。
カウント値≦バス使用時間上限値        ……（２）
【００１４】
ａ−２．バス使用要求ＲＱｋの発生時、他のバスマスタからもバス使用要求が発生している場合
すなわち、バス使用要求ＲＱｋの発生時、バス使用要求保持レジスタ４０内のバス使用要求保持データにおいて、ｋ番目のビットを含む複数のビットが“１”となっている場合である。
この場合、制御部５０は、バス使用要求を発生している各バスマスタのバスマスタ管理データを参照して、各バスマスタの優先度とバス使用時間上限値を調べる。そして、優先度の高いバスマスタから順に上記式（１）または（２）のいずれが成立するかを判断し、上記式（１）が成立するバスマスタが見つかった場合にはそのバスマスタにバスＢの使用を許可する。いずれのバスマスタについても上記式（２）が成立する場合には、現時点ではバスＢの使用は許可せず、その後、第１カウンタ３１または第２カウンタ３２のうちダウンカウントを行っているもののカウント値が０となり、他方のカウンタがダウンカウントを開始するまで待機する。他方のカウンタがダウンカウントを開始したときには、バスＢの使用が許可されず残っているバスマスタのバス使用要求について、優先度の高いものから順に、上記式（１）または（２）のいずれが成立するかを判断し、上記式（１）が成立するバスマスタにバスＢの使用を許可する。この場合、高優先度バスマスタのバス使用時間上限値の総和は、上記他のカウンタによるダウンカウントが行われる期間の時間Ｔよりも短いので、そのダウンカウントが行われる期間内に、バス使用要求を発生している全ての高優先度バスマスタに必ずバスＢの使用の許可が与えられる。
【００１５】
ｂ．バス使用要求ＲＱｋの発生時、バスＢが他のバスマスタによって使用されている場合
ｂ−１．バスＢを使用しているのが優先度０のバスマスタである場合
この場合、制御部５０は、上記ａ−１．の場合と同様、第１カウンタ３１または第２カウンタ３２のうちダウンカウントを現在行っている方のカウンタのカウント値と、バスマスタ＃ｋのバス使用時間上限値とを比較する。そして、上記式（１）が成立する場合には、優先度０のバスマスタへのバスＢの使用許可を解除し（すなわち、バスＢの使用を停止させ）、バス使用要求ＲＱｋを発生している高優先度バスマスタ＃ｋにバスＢの使用を許可する。一方、上記式（２）が成立する場合には、高優先度バスマスタ＃ｋにはバスＢの使用を許可せず、優先度０のバスマスタに対するバスＢの使用の許可を継続する。
【００１６】
ｂ−２．バスＢを使用しているのが高優先度バスマスタである場合
この場合、制御部５０は、現在、バスＢを使用している高優先度バスマスタがバスＢの使用を終えるのを待つ。その際の最大待ち時間は、バスＢを使用している高優先度バスマスタのバス使用時間上限値となる。当該高優先度バスマスタによるバスの使用が終了した場合、制御部５０は、その時点においてバス使用要求を発生しているバスマスタのグラント数と優先度とバス使用時間上限値を調べる。そして、グラント数が０であるバスマスタについて優先度の高いものから順に上記式（１）または（２）のいずれが成立するかを判断し、上記式（１）が成立するバスマスタが見つかった場合にはそのバスマスタにバスＢの使用を許可する。いずれのバスマスタについても上記式（２）が成立する場合には、現時点ではバスＢの使用は許可せず、その後、第１カウンタ３１または第２カウンタ３２のうちダウンカウントを行っているもののカウント値が０となり、他方のカウンタがダウンカウントを開始するまで待機する。
【００１７】
＜バス使用要求ＲＱｋの発生元であるバスマスタ＃ｋが優先度０のバスマスタである場合＞
ｃ．バス使用要求ＲＱｋの発生時、バスＢが空いている場合
ｃ−１．バス使用要求ＲＱｋの発生時、他のバスマスタからバス使用要求が発生していない場合
この場合、制御部５０は、バス使用要求ＲＱｋの発生元である優先度０のバスマスタ＃ｋにバスＢの使用を許可する。
【００１８】
ｃ−２．バス使用要求ＲＱｋの発生時、他のバスマスタからもバス使用要求が発生している場合
この場合の処理内容は、バス使用要求を発生している他のバスマスタの優先度により、次のように異なったものとなる。
ｃ−２−１．バス使用要求を発生している他のバスマスタが優先度０のバスマスタである場合
この場合、バスマスタの番号ｋの若いものから順にバスＢの使用を許可する。
ｃ−２−２．バス使用要求を発生している他のバスマスタが高優先度バスマスタである場合
この場合、バス使用要求を発生している複数のバスマスタのうち優先度の高いものから順にバスＢの使用を許可するか否かの判断を行う。この場合の判断方法は、上記ａ−２．において説明した通りである。そして、上記式（１）の成立する高優先度バスマスタがあれば、そのバスマスタにバスＢの使用を許可する。一方、高優先度バスマスタにバスＢの使用を許可することができない場合（バス使用要求を発生している全ての高優先度バスマスタについて式（２）が成立する場合）、バス使用要求ＲＱｋの発生元である優先度０のバスマスタ＃ｋにバスＢの使用を許可する。
【００１９】
ｄ．バス使用要求ＲＱｋの発生時、バスＢが他のバスマスタによって使用されている場合
この場合、他のバスマスタによるバスＢの使用が終了するまで、優先度０のバスマスタ＃ｋに対してバスＢの使用は許可しない。
【００２０】
以上のようなバス使用要求ＲＱｋの処理によりバスＢの使用が許可され、グラントＧＲｋが発生されると、グラントＧＲｋを受け取ったバスマスタ＃ｋは、バスＢを使用した処理を開始する。このバスマスタ＃ｋによるバスＢを使用した処理の行われている間、グラント数カウンタ２０−ｋはクロックをカウントする。そして、制御部５０は、バスマスタ＃ｋによってバス使用要求ＲＱｋが解除されたのを検知したとき、またはバスマスタ＃ｋによるバスＢの使用時間がバス使用時間上限値に到達したとき、バスマスタ＃ｋに対するグラントＧＲｋを解除する。
【００２１】
以上が本実施形態に係るバス調停回路１００の処理内容である。本実施形態においては、例えば第１カウンタ３１（第２カウンタ３２）がダウンカウントを行っている方のカウント値が０間際になっているときに、優先度１以上の複数のバスマスタからのバス使用要求が集中して発生し、第１カウンタ３１（第２カウンタ３２）がダウンカウントを行っている期間内に、優先度１以上のバスマスタに対してグラントを与えることができないような場合も起こり得る。しかし、そのような最悪の場合においても、その後、第２カウンタ３２（第１カウンタ３１）がダウンカウントを開始した場合には、このダウンカウントが行われる期間内に、バス使用要求を発生した全てのバスマスタに対してグラントが与えられる。何故ならば、このダウンカウントの行われる時間Ｔは、全ての高優先度バスマスタのバス使用時間上限値の総和よりも長いからである。従って、本実施形態によれば、高優先度バスマスタからのバス使用要求に対しては、必ず単位処理時間２Ｔ内にグラントを与えることができる。
【００２２】
図２は本実施形態の動作例を示すタイムチャートである。この動作例では、実時間バス共有システムの単位処理時間２Ｔは、５１２（時間の単位はクロック数）となっている。また、システムには、３個の高優先度バスマスタ＃１〜＃３があり、これらの優先度とバス使用時間上限値は次のようになっている。
バスマスタ＃１      優先度＝３      バス使用時間上限値＝５０
バスマスタ＃２      優先度＝２      バス使用時間上限値＝７５
バスマスタ＃３      優先度＝１      バス使用時間上限値＝１００
ここで、高優先度バスマスタのバス使用時間上限値の総和は、５０＋７５＋１００＝２２５であり、これは単位処理時間の１／２である２５６よりも小さいので、高優先度バスマスタからのバス使用要求発生に対して単位処理時間内にグラントを与えるための条件を満たしている。
【００２３】
図２に示す動作例では、時刻ｔ１において単位処理時間２Ｔが始まる。このとき第１カウンタ３１および第２カウンタ３２に初期値２５５が設定され、単位処理時間の前半時間の計時を行うべく第１カウンタ３１のダウンカウントが開始される。このとき、いずれのバスマスタからのバス使用要求も発生していないので、バス使用要求データは、全ビットが“０”となっている。
【００２４】
第１カウンタ３１のダウンカウントが行われている期間内の時刻ｔ２においてバスマスタ＃１はバス使用要求ＲＱ１を出力する。これにより、バス使用要求データにおけるバスマスタ＃１に対応したビットが“１”とされる。制御部５０は、バス使用要求ＲＱ１の発生を検知すると、時刻ｔ３においてバスマスタ＃１に対してグラントＧＲ１を与える。このときバス使用要求データのバスマスタ＃１に対応したビットは“０”に戻される。バスマスタ＃１は、グラントＧＲ１が与えられたことによりバスＢを使用した処理を開始する。このバスマスタ＃１にグラントＧＲ１が与えられている間、バスマスタ＃１に対応したグラント数カウンタ２０−１によりクロックのカウントが進められ、そのカウント値であるグラント数が増加してゆく。
【００２５】
その後、時刻ｔ４においてバスマスタ＃２および＃３がバス使用要求ＲＱ２およびＲＱ３を出力する。しかし、この時点では、高優先度バスマスタであるバスマスタ＃１に対してグラントＧＲ１が与えられているため、制御部５０は、バスマスタ＃２および＃３のいずれにもグラントを与えない。
【００２６】
バスマスタ＃１は、時刻ｔ４において、バスＢを使用した処理を終了すべくバス使用要求ＲＱ１を解除する。このバス使用要求ＲＱ１の解除を検知した制御部５０は、時刻ｔ５においてバスマスタ＃１に対するグラントＧＲ１を解除する。このグラントＧＲ１の解除に伴い、グラント数カウンタ２０−１は、カウント動作を停止する。また、制御部５０は、グラントＧＲ１を解除したことに伴い、その時点（時刻ｔ５）においてバス使用要求を発生しているバスマスタ＃２および＃３のうち優先度の高いバスマスタ＃２のバス使用要求ＲＱ２を受け入れ、バスマスタ＃２にグラントＧＲ２を与える。このときバス使用要求データのバスマスタ＃２に対応したビットは“０”に戻される。バスマスタ＃２は、グラントＧＲ２が与えられたことによりバスＢを使用した処理を開始する。このバスマスタ＃２にグラントＧＲ２が与えられている間、バスマスタ＃２に対応したグラント数カウンタ２０−２によりクロックのカウントが進められ、そのカウント値であるグラント数が増加してゆく。
【００２７】
その後、バスマスタ＃２は、バスＢを使用した処理を終了すべくバス使用要求ＲＱ２を解除する。このバス使用要求ＲＱ２の解除を検知した制御部５０は、時刻ｔ６においてバスマスタ＃２に対するグラントＧＲ２を解除する。このグラントＧＲ２の解除により、グラント数カウンタ２０−１は、カウント動作を停止する。
【００２８】
グラントＧＲ２の解除の時点において、高優先度バスマスタであるバスマスタ＃３からのバス使用要求ＲＱ３が発生している。しかし、図示の例では、その時点における第１カウンタ３１のカウント値Ｔ１は８０であり、これはバスマスタ＃３のバス使用時間上限値１００よりも短い。従って、バスマスタ＃３に対するグラントＧＲ３の付与は見送られる。
【００２９】
なお、このグラントＧＲ２の解除の時点において、仮にバス使用時間上限値が５０であるバスマスタ＃１からのバス使用要求ＲＱ１が発生しており、かつ、バスマスタ＃１のグラント数がバスマスタ＃１のバス使用時間上限値５０に達していない場合には、バスマスタ＃１に対してグラントＧＲ１が与えられることとなる。この場合、グラント数カウンタ２０−１のカウントが再開され、バスマスタ＃１は、そのカウント値であるグラント数がバス使用時間上限値５０を越えないことを限度としてバスＢを使用することができる。
【００３０】
その後、第１カウンタ３１のダウンカウントが進められ、そのカウント値Ｔ１が０になると、その次のクロックタイミングである時刻ｔ７において単位処理時間の後半時間が始まる。そして、第１カウンタ３１は、カウント動作を停止してカウント値Ｔ１＝０を維持し、第２カウンタ３２はクロックのダウンカウントを開始する。
【００３１】
ダウンカウントを行うカウンタが第１カウンタ３１から第２カウンタ３２に切り換わったことに伴い、制御部５０は、第２カウンタ３２のカウント値Ｔ２に基づいて、発生しているバス使用要求に対するグラントの付与の可否を判断する。この例では、時刻ｔ７においてバスマスタ＃３からのバス使用要求ＲＱ３が発生しており、このバスマスタ＃３のバス使用時間上限値１００は、カウント値Ｔ２＝２５５よりも短い。従って、制御部５０は、時刻ｔ８においてバスマスタ＃３に対してグラントＧＲ３を与え、バスマスタ＃３は、バスＢを使用した処理を開始する。そして、バスマスタ＃３にグラントＧＲ３が与えられている間、グラント数カウンタ２０−３によりクロックのカウントが進められる。その後、バスマスタ＃３がバス使用要求ＲＱ２を解除すると、これを検知した制御部５０は、時刻ｔ９においてバスマスタ＃３に対するグラントＧＲ３を解除する。このグラントＧＲ３の解除により、グラント数カウンタ２０−３は、カウント動作を停止する。
【００３２】
その後、第２カウンタ３２のカウント値Ｔ２が０になり、新たな単位処理時間が始まると、再び第１カウンタ３１および第２カウンタ３２に２５５が設定され、第１カウンタ３１のダウンカウントが開始される。また、全てのグラント数カウンタがリセットされ、全てのバスマスタのグラント数が０とされる。以後、同様な処理が行われる。
【００３３】
以上説明したように、本実施形態によれば、各単位処理時間において、各高優先度バスマスタに対し、各々の単位処理時間内におけるバス使用時間がバス使用時間上限値を越えないことを限度として、優先的にバスの使用を許可するようにしたので、高優先度バスマスタは、バス使用要求の発生後、単位処理時間以内に必ずバスの使用許可を受けることができる。
【００３４】
以上、この発明の一実施形態について説明したが、この発明にはこれ以外にも他の実施形態が考えられる。例えば次の通りである。
（１）高優先度バスマスタからバス使用要求が発生した場合、その単位処理時間においてはグラントを与えず、次の単位処理時間にバス使用時間上限値の限度内で必ずグラントを与えることを保証し、優先度０のバスマスタについてはそのような保証を与えない代わりに、バスが空いているときであれば、バス使用要求に対して即座にグラントを与えるようにしてもよい。この場合、単位処理時間は、全ての高優先度バスマスタのバス使用時間上限値の総和以上であればよい。この態様によれば、高優先度バスマスタに対して、バス使用要求の発生から単位処理時間の２倍の時間内にグラントを与えることを保証することができる。
（２）上記実施形態のようにバス共有システムの設計時に各バスマスタのバス使用時間上限値と単位処理時間を定めるだけでなく、バスに新規なバスマスタが接続された時点で、バス共有システムを管理する上位のホストコンピュータ等が、各バスマスタにバス使用時間上限値を問い合わせ、単位処理時間を再設定するように構成してもよい。
【図面の簡単な説明】
【００３５】
【図１】この発明の一実施形態であるバス調停回路を用いた実時間バス共有システムの構成を示すブロック図である。
【図２】同実施形態の動作例を示すタイムチャートである。
【符号の説明】
【００３６】
１００……バス調停回路、５０……制御部、＃１〜＃ｍ……バスマスタ、Ｂ……バス、１０−１〜１０−ｍ……バスマスタ管理レジスタ、２０−１〜２０−ｍ……グラント数カウンタ、３０……Ｔ保持レジスタ、３１……第１カウンタ、３２……第２カウンタ、４０……バス使用要求保持レジスタ。
【図１】
2007094695.tif 000003
【図２】
2007094695.tif 000004