(57)【特許請求の範囲】
【請求項１】
複数のマスタと複数のスレーブとがバスに接続され、前記複数のマスタが前記複数のスレーブに対してそれぞれ同時にデータ転送を行うことが可能なマルチレイア構成のバスシステムであって、
それぞれが、前記複数のスレーブのそれぞれに対応して設けられ、前記複数のマスタから対応するスレーブへのデータ転送を調停する複数のアービタを備え、
前記複数のスレーブのうちの第１のスレーブに対応する第１のアービタが、
前記複数のマスタのそれぞれから前記第１のスレーブへのデータ転送のそれぞれの緊急度を算出する算出手段と、
前記複数のスレーブのうちの前記第１のスレーブ以外の他のスレーブに対応する他のアービタに、前記算出手段が算出した緊急度を通知する通知手段と、
前記複数のマスタのそれぞれから前記他のスレーブへのデータ転送のそれぞれの緊急度を、前記他のスレーブに対応する他のアービタから取得する取得手段と、
前記算出手段で算出した緊急度と前記取得手段で取得した緊急度に基づいて、データ転送の優先度の最も高いマスタを優先するように、前記複数のマスタから前記第１のスレーブへのデータ転送を調停する調停手段とを備えることを特徴とするバスシステム。
【請求項２】
前記算出手段は、前記複数のマスタのそれぞれからの前記第１のスレーブへのデータ転送のデータ転送量と、前記複数のマスタのそれぞれからの前記第１のスレーブへの前記データ転送量のデータ転送のデッドラインとから、前記複数のマスタのそれぞれから前記第１のスレーブへのデータ転送のそれぞれの緊急度を算出することを特徴とする請求項１記載のバスシステム。
【請求項３】
複数のマスタと複数のスレーブとがバスに接続され、前記複数のマスタが前記複数のスレーブに対してそれぞれ同時にデータ転送を行うことが可能なマルチレイア構成のバスシステムであって、
それぞれが、前記複数のスレーブのそれぞれに対応して設けられ、前記複数のマスタから対応するスレーブへのデータ転送を調停する複数のアービタを備え、
前記複数のスレーブのうちの第１のスレーブに対応する第１のアービタが、
前記複数のマスタのそれぞれからの前記第１のスレーブへのデータ転送のデータ転送量と、前記複数のマスタのそれぞれからの前記第１のスレーブへの前記データ転送のそれぞれのデッドラインとを設定する設定手段と、
前記複数のマスタのそれぞれからの前記第１のスレーブへのデータ転送のデータ転送量のそれぞれから、それぞれのマスタが転送を完了したデータ量を引いた残りデータ量を算出する残りデータ量算出手段と、
前記複数のマスタのそれぞれからの前記第１のスレーブへの前記データ転送量のデータ転送のそれぞれのデッドラインまでの残り時間をカウントする第１のカウント手段と、
前記複数のマスタのそれぞれからの前記第１のスレーブへのデータ転送のそれぞれのデッドラインまでにそれぞれのデータ転送が完了しない場合、それぞれのデータ転送が完了するまでの時間をカウントする第２のカウント手段と、
前記複数のマスタのそれぞれからの前記第１のスレーブへのデータ転送のそれぞれの残りデータ量と、前記複数のマスタのそれぞれからの前記第１のスレーブへのデータ転送のそれぞれのデッドラインまでの残り時間とから、前記複数のマスタのそれぞれから前記第１のスレーブへのデータ転送のそれぞれに要する転送速度を算出する転送速度算出手段と、
前記転送速度算出手段で算出した転送速度に基づいて、転送速度が最も速いマスタを優先するように、前記複数のマスタから前記第１のスレーブへのデータ転送を１トランザクション毎に調停する調停手段と、
前記複数のマスタのうちの第１のマスタからの前記第１のスレーブへのデータ転送が当該データ転送のデッドライン以降に完了した場合、前記第２のカウント手段がカウントした当該デッドラインから当該データ転送が完了するまでの超過時間を、前記第１マスタが次にデータを転送する第２のスレーブに対応する第２のアービタに通知する通知手段と、
前記第１のマスタが前記第１のスレーブへのデータ転送に先立って第３のスレーブへのデータ転送を行った場合であって、前記第１のマスタから前記第３のスレーブへのデータ転送のデッドライン以降に当該データ転送が完了した場合、当該デッドラインから当該データ転送が完了するまでの超過時間を前記第３のスレーブに対応する第３のアービタから取得する取得手段と、
前記取得手段で取得した超過時間により、前記第１のマスタから前記第１のスレーブへのデータ転送のデッドラインを短くするように前記設定手段に設定されたデッドラインを変更する変更手段とを備えることを特徴とするバスシステム。
【請求項４】
複数のマスタと複数のスレーブとがバスに接続され、前記複数のマスタが前記複数のスレーブに対してそれぞれ同時にデータ転送を行うことが可能なマルチレイア構成のバスシステムであって、
それぞれが、前記複数のスレーブのそれぞれに対応して設けられ、前記複数のマスタから対応するスレーブへのデータ転送を調停する複数のアービタを備え、
前記複数のスレーブのうちの第１のスレーブに対応する第１のアービタが、
前記複数のマスタから前記第１のスレーブへのデータ転送を調停し、前記第１のスレーブに対するデータ転送待ちのデータ転送要求を転送キューに蓄積する調停手段と、
前記転送キューに蓄積されたデータ転送要求の数を、当該データ転送要求をしたマスタ毎に計数する計数手段と、
前記複数のアービタのうちの前記第１のアービタ以外のアービタに、前記計数手段が計数したマスタ毎のデータ転送要求の数を通知する通知手段と、
前記第１のアービタ以外のアービタに蓄積されたマスタ毎のデータ転送要求の数を取得する取得手段とを備え、
前記調停手段は、前記複数のマスタのうちの第１のマスタから前記第１のスレーブへのデータ転送を、前記取得手段で取得したマスタ毎のデータ転送要求の数のうちの前記第１のマスタからのデータ転送要求の数と、前記転送キューに蓄積されている前記第１のスレーブに対するデータ転送要求の総数とに基づいて調停することを特徴とするバスシステム。
【請求項５】
前記調停手段は、前記第１のマスタが要求したデータ転送を前記第１のマスタが要求した順に行うインオーダ転送である場合、前記第１のアービタ以外のアービタに蓄積された前記第１のマスタからのデータ転送要求の数と、前記転送キューに蓄積されているデータ転送要求の総数とに基づいて、前記第１のマスタからの前記インオーダ転送のデータ転送を調停することを特徴とする請求項４に記載のバスシステム。
【請求項６】
複数のマスタと複数のスレーブとがバスに接続され、前記複数のマスタが前記複数のスレーブに対してそれぞれ同時にデータ転送を行うことが可能なマルチレイア構成のバスシステムであって、
それぞれが、前記複数のスレーブのそれぞれに対応して設けられ、前記複数のマスタから対応するスレーブへのデータ転送を調停する複数のアービタを備え、
前記複数のスレーブのうちの第１のスレーブに対応する第１のアービタが、
前記複数のマスタから前記第１のスレーブへの転送待ちのデータ転送要求の数をマスタ毎に保持する保持手段と、
前記複数のアービタのうちの前記第１のアービタ以外のアービタに、前記保持手段が保持しているマスタ毎の転送待ちのデータ転送要求の数を通知する通知手段と、
前記複数のスレーブのうちの前記第１のアービタ以外のアービタが保持しているマスタ毎の転送待ちのデータ転送要求の数を取得する取得手段と、
前記複数のマスタのうちの一つのマスタから前記第１のスレーブへのデータ転送を、前記第１のスレーブへのデータ転送要求が待ち状態であるマスタの数と、前記取得手段により取得された前記第１のアービタ以外のアービタが保持している当該一つのマスタからの転送待ちのデータ転送要求の数に基づいて調停する調停手段とを備えることを特徴とするバスシステム。
【請求項７】
それぞれが、複数のスレーブのそれぞれに対応して設けられ、複数のマスタから対応するスレーブへのデータ転送を調停する複数のアービタを備え、前記複数のマスタと前記複数のスレーブとがバスに接続され、前記複数のマスタが前記複数のスレーブに対してそれぞれ同時にデータ転送を行うことが可能なマルチレイア構成のバスシステムにおいて、前記複数のスレーブのうちの第１のスレーブに対応する第１のアービタにより実行される調停方法であって、
算出手段が前記複数のマスタのそれぞれから前記第１のスレーブへのデータ転送のそれぞれの緊急度を算出する算出工程と、
通知手段が、前記複数のスレーブのうちの前記第１のスレーブ以外の他のスレーブに対応する他のアービタに、前記算出工程で算出した緊急度を通知する通知工程と、
取得手段が、前記複数のマスタのそれぞれから前記他のスレーブへのデータ転送のそれぞれの緊急度を、前記他のスレーブに対応する他のアービタから取得する取得工程と、
調停手段が、前記算出工程で算出した緊急度と前記取得工程で取得した緊急度に基づいて、データ転送の優先度の最も高いマスタを優先するように、前記複数のマスタから前記第１のスレーブへのデータ転送を調停する調停工程とを備えることを特徴とする調停方法。
【請求項８】
前記算出工程は、前記複数のマスタのそれぞれからの前記第１のスレーブへのデータ転送のデータ転送量と、前記複数のマスタのそれぞれからの前記第１のスレーブへの前記データ転送量のデータ転送のデッドラインとから、前記複数のマスタのそれぞれから前記第１のスレーブへのデータ転送のそれぞれの緊急度を算出することを特徴とする請求項７記載の調停方法。
【請求項９】
それぞれが、複数のスレーブのそれぞれに対応して設けられ、複数のマスタから対応するスレーブへのデータ転送を調停する複数のアービタを備え、前記複数のマスタと前記複数のスレーブとがバスに接続され、前記複数のマスタが前記複数のスレーブに対してそれぞれ同時にデータ転送を行うことが可能なマルチレイア構成のバスシステムにおいて、前記複数のスレーブのうちの第１のスレーブに対応する第１のアービタにより実行される調停方法であって、
設定手段が、前記複数のマスタのそれぞれからの前記第１のスレーブへのデータ転送のデータ転送量と、前記複数のマスタのそれぞれからの前記第１のスレーブへの前記データ転送のそれぞれのデッドラインとを設定する設定工程と、
データ量算出手段が、前記複数のマスタのそれぞれからの前記第１のスレーブへのデータ転送のデータ転送量のそれぞれから、それぞれのマスタが転送を完了したデータ量を引いた残りデータ量を算出する残りデータ量算出工程と、
第１のカウント手段が、前記複数のマスタのそれぞれからの前記第１のスレーブへの前記データ転送量のデータ転送のそれぞれのデッドラインまでの残り時間をカウントする第１のカウント工程と、
第２のカウント手段が、前記複数のマスタのそれぞれからの前記第１のスレーブへのデータ転送のそれぞれのデッドラインまでにそれぞれのデータ転送が完了しない場合、それぞれのデータ転送が完了するまでの時間をカウントする第２のカウント工程と、
転送速度算出手段が、前記複数のマスタのそれぞれからの前記第１のスレーブへのデータ転送のそれぞれの残りデータ量と、前記複数のマスタのそれぞれからの前記第１のスレーブへのデータ転送のそれぞれのデッドラインまでの残り時間とから、前記複数のマスタのそれぞれから前記第１のスレーブへのデータ転送のそれぞれに要する転送速度を算出する転送速度算出工程と、
調停手段が、前記転送速度算出工程で算出した転送速度に基づいて、転送速度が最も速いマスタを優先するように、前記複数のマスタから前記第１のスレーブへのデータ転送を１トランザクション毎に調停する調停工程と、
通知手段が、前記複数のマスタのうちの第１のマスタからの前記第１のスレーブへのデータ転送が当該データ転送のデッドライン以降に完了した場合、前記第２のカウント工程でカウントした当該デッドラインから当該データ転送が完了するまでの超過時間を、前記第１マスタが次にデータを転送する第２のスレーブに対応する第２のアービタに通知する通知工程と、
取得手段が、前記第１のマスタが、前記第１のスレーブへのデータ転送に先立って第３のスレーブへのデータ転送を行った場合であって、前記第１のマスタから前記第３のスレーブへのデータ転送のデッドライン以降に当該データ転送が完了した場合、当該デッドラインから当該データ転送が完了するまでの超過時間を前記第３のスレーブに対応する第３のアービタから取得する取得工程と、
変更手段が、前記取得工程で取得した超過時間により、前記第１のマスタから前記第１のスレーブへのデータ転送のデッドラインを短くするように前記設定工程で設定されたデッドラインを変更する変更工程とを備えることを特徴とする調停方法。
【請求項１０】
それぞれが、複数のスレーブのそれぞれに対応して設けられ、複数のマスタから対応するスレーブへのデータ転送を調停する複数のアービタを備え、前記複数のマスタと前記複数のスレーブとがバスに接続され、前記複数のマスタが前記複数のスレーブに対してそれぞれ同時にデータ転送を行うことが可能なマルチレイア構成のバスシステムにおいて、前記複数のスレーブのうちの第１のスレーブに対応する第１のアービタにより実行される調停方法であって、
調停手段が、前記複数のマスタから前記第１のスレーブへのデータ転送を調停し、前記第１のスレーブに対するデータ転送待ちのデータ転送要求を転送キューに蓄積する調停工程と、
計数手段が、前記転送キューに蓄積されたデータ転送の数を、当該データ転送要求をしたマスタ毎に計数する計数工程と、
通知手段が、前記複数のアービタのうちの前記第１のアービタ以外のアービタに、前記計数工程で計数したマスタ毎のデータ転送要求の数を通知する通知手段と、
取得手段が、前記第１のアービタ以外のアービタに蓄積されたマスタ毎のデータ転送要求の数を取得する取得工程とを備え、
前記調停工程は、前記複数のマスタのうちの第１のマスタから前記第１のスレーブへのデータ転送を、前記取得手段で取得したマスタ毎のデータ転送要求の数のうちの前記第１のマスタからのデータ転送要求の数と、前記転送キューに蓄積されている前記第１のスレーブに対するデータ転送要求の総数とに基づいて調停することを特徴とする調停方法。
【請求項１１】
前記調停工程は、前記第１のマスタが要求したデータ転送を前記第１のマスタが要求した順に行うインオーダ転送である場合、前記第１のアービタ以外のアービタに蓄積された前記第１のマスタからのデータ転送要求の数と、前記転送キューに蓄積されているデータ転送の総数とに基づいて、前記第１のマスタからの前記インオーダ転送のデータ転送を調停することを特徴とする請求項１０に記載の調停方法。
【請求項１２】
それぞれが、複数のスレーブのそれぞれに対応して設けられ、複数のマスタから対応するスレーブへのデータ転送を調停する複数のアービタを備え、前記複数のマスタと前記複数のスレーブとがバスに接続され、前記複数のマスタが前記複数のスレーブに対してそれぞれ同時にデータ転送を行うことが可能なマルチレイア構成のバスシステムにおいて、前記複数のスレーブのうちの第１のスレーブに対応する第１のアービタにより実行される調停方法であって、
保持手段が、前記複数のマスタから前記第１のスレーブへの転送待ちのデータ転送要求の数をマスタ毎に保持する保持工程と、
通知手段が、前記複数のアービタのうちの前記第１のアービタ以外のアービタに、前記保持手段が保持しているマスタ毎の転送待ちのデータ転送要求の数を通知する通知工程と、
取得手段が、前記複数のスレーブのうちの前記第１のアービタ以外のアービタが保持しているマスタ毎の転送待ちのデータ転送要求の数を取得する取得工程と、
調停手段が、前記複数のマスタのうちの一つのマスタから前記第１のスレーブへのデータ転送を、前記第１のスレーブへのデータ転送要求が待ち状態であるマスタの数と、前記取得手段により取得された前記第１のアービタ以外のアービタが保持している当該一つのマスタからの転送待ちのデータ転送要求の数に基づいて調停する調停工程とを備えることを特徴とする調停方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のマスタと複数のスレーブとがバスに接続されたバスシステム、及び、アービタにより実行される調停方法に関する。
【背景技術】
【０００２】
近年、システムＬＳＩの集積度が飛躍的に向上していることから、多数のマスタが多数のスレーブに対して高速かつ効率的なデータ転送を行うためのバス構成が求められている。このような背景から、複数のマスタが複数のスレーブに対してそれぞれ同時にデータ転送を行うことが可能なマルチレイア構成のバスシステムが多く利用されている。
【０００３】
又、システムＬＳＩにおいて考慮すべき他の問題としては、マスタには、要求された時間内に要求されたデータ量の転送を完了することが必要とされていることが挙げられる。要求された時間に対して転送すべきデータ量が多い場合は、そのマスタのデッドライン保証が困難となる。逆に時間に対して転送すべきデータ量が少ない場合は、そのマスタのデッドライン保証が容易になる。
【０００４】
例えば、特許文献１には、基準より遅れているデバイスに対して、優先的にバスを割り当てるバス調停装置が記載されている。この特許文献１のバス調停装置は、各デバイスに要求されている転送レートに基づいたクロックで動作する基準カウンタと、実際に転送したデータ量を計測する転送データカウンタとを有する。そして、バス調停時にこれら２つのカウンタの値を比較することでバスの調停を行う。
【特許文献１】特開平１０−２８９２０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
例えば、図１５に示されるように、マスタＡがスレーブＡに対してM1S10、M1S11、M1S12の順でデータ転送を要求し、その後、スレーブＢに対してM1S20のデータ転送を要求する場合を想定する。ここで、スレーブＡに対するM1S12のデータ転送とスレーブ２に対するM1S20のデータ転送はインオーダ転送（要求した順にデータの転送を行わなければならないデータ転送）であるとする。又、インオーダ転送において、スレーブの切替前のデータ転送を先行するデータ転送、切替後のデータ転送を後続するデータ転送と称する。図１５の例では、スレーブＡに対するM1S10、M1S11、M1S12のデータ転送が先行するデータ転送、スレーブＢに対するM1S20のデータ転送が後続するデータ転送である。
【０００６】
一方、図１５において、マスタＢはスレーブＡに対してM2S10、M2S11の順でデータ転送を要求し、スレーブＢに対してM2S20、M2S21、M2S22の順でデータ転送を要求している。スレーブＡに関してバス調停を行うアービタＡはスレーブＡに要求されたデータ転送を所定のアルゴリズムに従って調停する。ここで、所定のアルゴリズムとしては、例えば、マスタＡとマスタＢにバス使用権を交互に与えるラウンドロビンが挙げられる。この結果、アービタＡにより、M2S10、M1S10、M2S11、M1S11、M1S12の順にバスの使用権が与えられる。一方、スレーブＢに関してバス調停を行うアービタＢは、スレーブＢに要求されたデータ転送をラウンドロビンに従って調停し、その結果、M1S20、M2S20、M2S21、M2S22の順にバスの使用権を与える。
【０００７】
上記の調停の結果、スレーブＡのデータ転送はM2S10、M1S10、M2S11、M1S11、M1S12の順で実行され、スレーブＢのデータ転送はM1S20、M2S20、M2S21、M2S22の順で実行される。ここで、M1S20のデータ転送はインオーダ転送による後続のデータ転送である。このため、M1S20以降にマスタＢが要求したM2S20、M2S21、M2S22のデータ転送は、実行可能であるにもかかわらずインオーダ転送が完了するまで待たされてしまう。
【０００８】
つまり、１つのマスタが異なる２つのスレーブへ順次にデータ転送要求を行い、かつこれら２つのデータ転送がインオーダ転送である場合、これらのデータ転送に後続するデータ転送は、先行するデータ転送の完了を待たなければならない。従って、その完了を待つ間、後続するデータ転送を行うスレーブは他のデータ転送を行うことができず、処理効率が低下するという課題がある。
【０００９】
又、マスタ−スレーブの組に対してデータ転送のデッドラインを保証することが可能なデッドライン保証アービタが提案されている。例えば、マスタＢがスレーブＡへのデータ転送とスレーブＢへのデータ転送を同時に行う場合、スレーブＡ，Ｂに対応するデッドライン保証アービタＡ，Ｂは、それぞれの転送のデッドラインを独立して保証することになる。しかしながら、マスタが行う複数の転送に対するデッドラインを転送毎に独立して保証すると、次のような課題が生じる。
【００１０】
例えば、マスタＡからスレーブＡへのデータ転送と、マスタＢからスレーブＡ及びＢへのデータ転送とが同時に行われている場合を考える。ここで、各データ転送のデッドラインとデータ量の関係から、マスタＡからスレーブＡへのデータ転送の方が、マスタＢからスレーブＡへのデータ転送よりも高い優先度を有するとする。この場合、マスタＢとスレーブＡの間のデータ転送は、より高い優先度を持つマスタＡからの転送と競合し、アービトレーションされるまでに時間がかかることになる。そのため、マスタＢはスレーブＡ，Ｂへのアクセスを次々と発行するものの、アービトレーション待ちのスレーブＡへの転送データによりマスタＢのバッファリソースが埋め尽くされ、マスタＢは各スレーブへのアクセスを発行できなくなってしまう。この結果、マスタＢからスレーブＢへの転送速度はスレーブＡへの転送速度で頭打ちになり、マスタＢとスレーブＢの間のデータ転送に高い優先度が設定されていてもそのデータ転送のデッドラインを保証することができなくなる。
【００１１】
以上のように、マスタが同時に複数のスレーブへ転送を行う場合にデッドラインを保証することは、転送毎に独立してデッドラインを保証するのみでは実現できない。即ち、マスタが行っている各転送の優先度（緊急度評価値）に応じて、そのマスタが行う他の転送の優先度（緊急度評価値）を変更する手法が必要とされる。
【００１２】
又、マスタＢがスレーブＡへのデータ転送とスレーブＢへのデータ転送を順次実行し、これら一連のデータ転送をデッドラインＴで実行するべく設定される場合がある。この場合、スレーブＡ用のデッドライン保証アービタＡには、マスタＢからスレーブＡへのデータ転送にデッドラインt1が設定される。同様に、スレーブＢ用のデッドライン補償アービタＢには、マスタＢからスレーブＢへのデータ転送にデッドラインt2が設定される。そして、t1＋t2＝Ｔとなるように設定されることで、マスタＢからスレーブＡ及びスレーブＢへのデータ転送をデッドラインＴで実行するようにする。
【００１３】
上記の場合、マスタＢはまずスレーブＡへのデータ転送を行う。しかしながら、他マスタからのスレーブＡへのデータ転送やスレーブＡの状態により、マスタＢはデッドラインt1までにデータ転送を終えることができない場合がある。そして、デッドラインt1を超えてスレーブＡへのデータ転送が終了すると、続いて、マスタＢによるスレーブＢへのデータ転送が開始されるが、デッドライン保証アービタＢは直前のスレーブＡへのデータ転送がデッドラインを超えたことを考慮しない。即ち、デッドライン保証アービタＢは、マスタＢが予め設定されたデッドラインt2までにスレーブＢへのデータ転送を終えるようにアービトレーションを行うのみである。その結果、マスタＢからスレーブＢへのデータ転送がデッドラインt2までに完了しても、マスタＢが行う一連のデータ転送に対してデッドラインＴを保証することができない。
【００１４】
或は、マスタＢからスレーブＡへのデータ転送がデッドラインt1よりも早く完了する場合も考えられる。上述したように、引き続き実行されるマスタＢからスレーブＢへのデータ転送に関しては、予め設定されたデッドラインt2のみが考慮される。即ち、マスタＢのスレーブＡへのデータ転送が完了した時点でデッドラインＴまでの残時間はデッドラインt2に対して余裕を持つことになるが、デッドライン保証アービタＢはそれを考慮しない。この結果、マスタＢからスレーブＢへのデータ転送を必要以上に優先したアービトレーションになってしまう可能性がある。そして、その結果として、他マスタのスレーブＢへのデータ転送のアービトレーション待ち時間が増加し、他マスタのデッドラインを保証できなくしてしまう可能性がある。
【００１５】
以上のように、一連のデータ転送に対してデッドラインを保証するにおいて、一連のデータ転送を構成するデータ転送毎にデッドラインを保証すると不適切となる可能性がある。従って、一連のデータ転送の進行度を確認しながら、各データ転送に対するデッドラインを変更していく手法が必要とされている。
【００１６】
本発明は上記の課題に鑑みてなされたものであり、複数のマスタと複数のスレーブとがバスに接続されたバスシステムにおいて、マスタからスレーブへのデータ転送が効率よく行えるように、適切に調停することを目的とする。
【課題を解決するための手段】
【００１７】
上記の目的を達成するための本発明の一態様によるバスシステムは以下の構成を備える。即ち、
複数のマスタと複数のスレーブとがバスに接続され、前記複数のマスタが前記複数のスレーブに対してそれぞれ同時にデータ転送を行うことが可能なマルチレイア構成のバスシステムであって、
それぞれが、前記複数のスレーブのそれぞれに対応して設けられ、前記複数のマスタから対応するスレーブへのデータ転送を調停する複数のアービタを備え、
前記複数のスレーブのうちの第１のスレーブに対応する第１のアービタが、
前記複数のマスタのそれぞれから前記第１のスレーブへのデータ転送のそれぞれの緊急度を算出する算出手段と、
前記複数のスレーブのうちの前記第１のスレーブ以外の他のスレーブに対応する他のアービタに、前記算出手段が算出した緊急度を通知する通知手段と、
前記複数のマスタのそれぞれから前記他のスレーブへのデータ転送のそれぞれの緊急度を、前記他のスレーブに対応する他のアービタから取得する取得手段と、
前記算出手段で算出した緊急度と前記取得手段で取得した緊急度に基づいて、データ転送の優先度の最も高いマスタを優先するように、前記複数のマスタから前記第１のスレーブへのデータ転送を調停する調停手段とを備える。
【００１８】
また、上記の目的を達成するための本発明の他の態様による調停方法は、
それぞれが、複数のスレーブのそれぞれに対応して設けられ、複数のマスタから対応するスレーブへのデータ転送を調停する複数のアービタを備え、前記複数のマスタと前記複数のスレーブとがバスに接続され、前記複数のマスタが前記複数のスレーブに対してそれぞれ同時にデータ転送を行うことが可能なマルチレイア構成のバスシステムにおいて、前記複数のスレーブのうちの第１のスレーブに対応する第１のアービタにより実行される調停方法であって、
算出手段が前記複数のマスタのそれぞれから前記第１のスレーブへのデータ転送のそれぞれの緊急度を算出する算出工程と、
通知手段が、前記複数のスレーブのうちの前記第１のスレーブ以外の他のスレーブに対応する他のアービタに、前記算出工程で算出した緊急度を通知する通知工程と、
取得手段が、前記複数のマスタのそれぞれから前記他のスレーブへのデータ転送のそれぞれの緊急度を、前記他のスレーブに対応する他のアービタから取得する取得工程と、
調停手段が、前記算出工程で算出した緊急度と前記取得工程で取得した緊急度に基づいて、データ転送の優先度の最も高いマスタを優先するように、前記複数のマスタから前記第１のスレーブへのデータ転送を調停する調停工程とを備える。
【発明の効果】
【００１９】
本発明によれば、複数のマスタと複数のスレーブとがバスに接続されたバスシステムにおいて、マスタからスレーブへのデータ転送が効率よく行えるように、適切に調停することが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施形態について添付の図面を用いて詳細に説明する。
【００２１】
［第１実施形態］
以下、ＬＳＩシステムにおける、複数のマスタが複数のスレーブに対してそれぞれ同時にデータ転送を行うことが可能なマルチレイア構成のバスシステムに適用される、複数のアービタを備えたバス調停装置について説明する。本実施形態のバス調停装置では、あるマスタからスレーブへのデータ転送中にそのデータ転送を調停しているアービタの調停動作に関連して、他のアービタによるデータ転送の調停動作が制御される。このように、複数のアービタ間の調停動作を互いに影響させるようにして、効率的なデータ転送を実現する。以下、第１実施形態のバス調停装置に着いて説明する。
【００２２】
図１は第１実施形態における、２つのマスタと２つのスレーブからなるマルチレイア構成のバスシステムの構成例を示す図である。尚、第１実施形態は説明を簡単にするため２つのマスタおよび２つのスレーブといった構成になっているが、本発明はマスタの数やスレーブの数は２に限定されるものではない。
【００２３】
図１において、マスタＡ１、マスタＢ２はデータ転送を要求する。スレーブＡ３、スレーブＢ４は、それぞれマスタＡ１、マスタＢ２からの要求に応じてマスタとの間のデータ転送を実行する。アービタＡ５はマスタＡ１又はマスタＢ２からのデータ転送の要求を１つのスレーブＡ１に対して調停し、アービタＢ６はマスタＡ１又はマスタＢ２からのデータ転送の要求を１つのスレーブＢ２に対して調停する。転送順序制御回路Ａ７、転送順序制御回路Ｂ８はそれぞれマスタＡ１、マスタＢ２のデータ転送順を制御する。転送順序制御回路Ａ７，Ｂ８は、マスタＡ１，Ｂ２が要求する転送順どおりに転送を行わなければならない場合（例えば、インオーダ転送）に、アービタＡ５又はアービタＢ６にデータ転送が可能であるかを通知する。アービタＡ５、アービタＢ６は、それぞれ、他方のアービタが保持する情報を用いてマスタＡ１及びマスタＢ２にバスの使用権を与えるための調停を行う。
【００２４】
図２はアービタＡ５、アービタＢ６の詳細な構成を示すブロック図である。但し、本発明の説明に不要な構成は示されていない。アービタＡ５、アービタＢ６において、優先制御部５１，６１は、転送順制御回路Ａ７，Ｂ８からのハンドシェーク信号によってマスタＡ１，Ｂ２の転送のうちいずれかを決定する。又、アービタＡ５，Ｂ６は、転送順制御回路Ａ７，Ｂ８からそれぞれ現在の転送がインオーダであるか否かを通知する信号を受信する。尚、マスタＡ１の転送がインオーダであることを通知する信号をinOrder1、マスタＢ２の転送がインオーダであることを通知する信号をinOrder2とする。
【００２５】
優先制御部５１，６１によって調停されたバス使用権に従って、データ転送の内容がそれぞれ転送キュー５２，６２に転送される。転送キュー５２は、入力したデータ転送順にスレーブＡ３に対してデータ転送を指示する。同様に、転送キュー６２は、入力したデータ転送順にスレーブＢ４に対してデータ転送を指示する。Qpos、M1pos、M2posは、転送キュー５２，６２の状態を表す信号である。Qposは転送キューに蓄えられたデータ転送の総数を表す。例えば、アービタＡ５のQposは、優先制御部５１から転送要求を受け付けると１加算され、スレーブＡ３にデータ転送を要求すると１減算される。同様に、例えば、アービタＢ６のQposは、優先制御部６１から転送要求を受け付けると１加算され、スレーブＢ４にデータ転送を要求すると１減算される。
【００２６】
M1pos、M2posは転送キュー５２，６２の状態を他のアービタに通知するための信号であり、転送キューにおけるマスタ毎のデータ転送数を表す。例えば、アービタＡ５においてM1posはマスタＡ１から要求され転送キュー５２にキューイングされたデータ転送の数であり、M2posはマスタＢ２から要求され転送キュー５２にキューイングされたデータ転送の数である。これらマスタ毎のデータ転送数はM1pos、M2posは他のアービタへ通知される。即ち、アービタＡ５の転送キュー５２の状態（M1pos、M2pos）はアービタＢ６の優先制御部６２に通知され、アービタＢ６の転送キュー６２の状態（M1pos、M2pos）はアービタＡ５の優先制御部５１に通知される。
【００２７】
各アービタは、外部より通知された転送キューの数M1pos、M2posをMpos1、Mpos2として保持する。尚、本実施形態では、２つのアービタで説明しているので、外部より通知されるM1pos、M2posは一つずつであり、M1pos＝Mpos1、M2pos＝Mpos2となる。アービタが３つ以上存在する場合は、外部より通知されたマスタ毎のデータ転送数M1pos及びM2posのそれぞれの最大値をMpos1、Mpos2として保持する。なお、外部より通知されたデータ転送数M1posの合計値をMpos1、M2posの合計値をMpos2として保持して、以下の調停制御に利用してもよい。
【００２８】
図３は図２における優先制御部５１、６１の動作を説明する状態遷移図である。状態１０１はラウンドロビンによる優先制御を行う状態であって、この場合マスタＡ１およびマスタＢ２のデータ転送要求は交互に転送キュー５２に蓄えられる。状態１０２はマスタＡ１のデータ転送要求が優先される状態であり、この状態においては、マスタＡ１からの転送要求がない場合を除きマスタＡ１の転送要求が転送キュー５２又は６２に蓄えられる。状態１０３はマスタＢ２が優先される状態であり、この状態では、マスタＢ２の転送要求がない場合を除きマスタＢ２の転送要求が転送キュー５２又は６２に蓄えられる。
【００２９】
ここで状態が遷移するための条件を示す信号Qcond1、Qcond2は以下により生成される信号である。
if(Mpos1−Qpos≧Param) {Qcond1＝True} else {Qcond1＝False}  →条件１
if(Mpos2−Qpos≧Param) {Qcond2＝True} else {Qcond2＝False}  →条件２
尚、定数Paramは予め定められた数であって、マイクロプロセッサのレジスタ制御（図示していない）等によって変更可能としてもよい。
【００３０】
Qcond1、Qcond2は、インオーダ転送のうち先行する転送待ちのデータ転送数と後続する転送待ちのデータ転送数の差が所定値（Param）以上であるか否かを示す。これらの条件は、インオーダの先行するデータ転送の待ちの数が、後続するデータ転送の待ちの数に比べ大きい場合に、後続するデータ転送が先行するデータ転送の転送完了を待つ状態になることを意味する。つまり、この条件が成立した場合、インオーダ転送以外の、他のデータ転送を優先した方が効率的であることを示している。従って、定数ParamはスレーブＡ３の能力やスレーブＢ４の能力などによって最適な値を決定すればよい。
【００３１】
状態１０１において、inOrder2が真で且つQcond2が真の場合、状態１０２へ遷移する。これにより、マスタＢ２の要求する転送がインオーダの後続する転送であって、他のアービタが保持する転送キューの状態のうちマスタＢ２のインオーダの先行する転送が所定条件（条件２）の場合にマスタＡ１が優先されるように制御される。この条件（条件２）が成立する限り状態１０２から他の状態への遷移は行われない。他のアービタのデータ転送が進捗し、インオーダの先行する転送が上記条件（条件２）でなくなった場合は、状態１０３に遷移して、後続するマスタＢ２のインオーダ転送を優先する。そして、ラウンドロビンの状態１０１へ戻る。
【００３２】
状態１０１において、inOrder1が真でかつQcond1が真の場合、状態１０３へ遷移する。これにより、マスタＡ１の要求する転送がインオーダの後続する転送であって、他のアービタが保持する転送キューの状態のうちマスタＡ１のインオーダの先行する転送が所定条件（条件１）の場合にマスタＢ２が優先されるように制御される。この条件が成立する限り状態１０３から他の状態への遷移は行われない。他のアービタのデータ転送が進捗し、インオーダの先行する転送が上記所定条件（条件１）でなくなった場合は、状態１０２に遷移して、後続するマスタＡ１のインオーダ転送を優先する。そして、ラウンドロビンの状態１０１へ戻る。
【００３３】
より具体的に説明するために、上述のParamを０とした場合を図４を参照して説明する。Paramを０とした場合、インオーダ転送の後続するデータ転送を調停する際、先行するデータ転送の待ち数よりも後続するデータ転送の待ち数が少ない場合は、後続するデータ転送よりも他のデータ転送を優先する。これにより、後続するデータ転送の方が先にデータ転送の準備を完了して先行するデータ転送の待ち状態となることにより他の転送が無駄な待ち状態になってしまうというような事態の発生を防止することができる。
【００３４】
図４は本実施形態によるデータ転送例を示すタイムチャートである。図４ではParamを０とした場合の例が示されている。図４によれば、時刻T1、T2において、
［アービタＢ６のMpos1（アービタＡ５のM1pos）］−［アービタＢ６のQpos］≧０
となっているため、アービタＢ６においてQcond1はTrueとなる。即ち、時刻T1、T2において、アービタＢ６においてQcond1が真である。このため、アービタＢ６は、マスタＡ１が要求するインオーダの後続するデータ転送（M1S12）よりもマスタＢ２のデータ転送（T1におけるM2S20、T2におけるM2S21）を優先する。この結果、マスタＢ２のデータ転送（M2S21、M2S21、M2S22）はマスタＡ１によるインオーダの後続するデータ転送（M1S12）の影響を受けることなく実施され、効率的な転送が行えることがわかる。
【００３５】
以上のように、第１実施形態による各アービタは、インオーダによるデータ転送において、他のアービタで待ち状態となっている先行するデータ転送の数と、自身における待ち状態のデータ転送の数とに基づいて、バス調停のアルゴリズムを調整する。即ち、他のアービタで待ち状態となっている先行するデータ転送の数と自身において待ち状態となっているデータ転送の数から、インオーダによるデータ転送を受け付けた場合に、先行するデータ転送の完了を待つ状態になり得るか否かを判断する。そして、先行するデータ転送の完了待ちの状態になり得ると判定された場合には、インオーダによる後続するデータ転送よりも他のマスタが要求するデータ転送を優先する（状態１０１から状態１０２或は状態１０３に遷移する）。これにより、効率的なデータ転送を実現できる。
【００３６】
［第２実施形態］
図５は第２実施形態における、８つのマスタ２０１〜２０８（以下、マスタＡ〜Ｈと表記する）と２つのスレーブ２１１，２１２（以下、スレーブＡ，Ｂと表記する）を有するマルチレイア構成のバスシステムの例を示す図である。但し、本実施形態は、本発明におけるマスタの数やスレーブの数を限定するものではない。マスタＡ〜Ｈはデータ転送を要求するマスタである。スレーブＡ，スレーブＢはマスタＡ〜Ｈからの要求によってマスタとのデータ転送を実行する。アービタ２０９（以下、アービタＡ）はマスタＡ〜Ｈのデータ転送の要求のうち１つをラウンドロビンによって調停し、スレーブＡに対してデータ転送を行う。アービタ２１０（以下、アービタＢ）はマスタＡ〜Ｈからのデータ転送の要求のうちの１つをラウンドロビンによって調停し、１つのスレーブＢに対してデータ転送を行う。又、アービタＡ又はアービタＢは転送キューを持たない構成であって、調停したデータ転送が各スレーブにデータ転送の要求がなされるものとする。アービタＡは、自身が保持するマスタ毎のバス使用権の待ち数M1pos[8:1]をアービタＢに通知する。同様に、アービタＢは、自身が保持するマスタ毎のバス使用権の待ち数M2pos[8:1]をアービタＡに通知する。
【００３７】
図６はアービタＡ及びアービタＢによる調停を説明する図である。図６の見方を説明する。円内に記載のＡ〜ＨはマスタＡ〜Ｈに対応する。また、白い円のマスタはデータ転送を要求していないことを表し、ハッチングされた円のマスタはデータ転送を要求していることを表すものとする。図６の（Ａ）はスレーブＡに対する調停の様子を表し、図６の（Ｂ）はスレーブＢに対する調停の様子を表す。アービタＡ、アービタＢはラウンドロビンに従って調停される。従って、通常は、図６の全体の円を時計と反対向きに回転し、最も下に位置するマスタがスレーブに対してデータ転送を要求する。次の調停時では、データ転送を要求しているマスタが最も下に位置するまで全体の円を回転する。
【００３８】
アービタＡ、アービタＢはそれぞれマスタＡ〜Ｈが要求するデータ転送に対し、バスの使用権待ちの数を示す状態を保持する。アービタＡが保持する待ちの数は、M1pos[8:1]、アービタＢが保持する待ちの数は、M2pos[8:1]である。図６の（Ａ）の例において、アービタＡが保持するデータ転送の待ちの数は、M1pos[1]＝６、M1pos[2]＝０、M1pos[3]＝１、M1pos[4]＝２、M1pos[5]＝３、M1pos[6]＝４、M1pos[7]＝０、M1pos[8]＝５であるとする。又、アービタＢが保持するデータ転送の待ちの数は、M2pos[1]＝１、M2pos[2]＝０、M2pos[3]＝０、M2pos[4]＝２、M2pos[5]＝０、M2pos[6]＝３、M1pos[7]＝０、M1pos[8]＝０である。また、バスの使用権待ちのマスタの総数Qposは、アービタＡが６（マスタＡ，Ｃ，Ｄ，Ｅ，Ｆ，Ｈ）であって、アービタＢが３（マスタＡ，Ｃ，Ｆ）である。以下、アービタＡのQposはQ1pos、アービタＢのQposはQ2posとする。
【００３９】
ここでマスタＡが要求するデータ転送は、スレーブＡが先行するインオーダ転送で、スレーブＢが後続するインオーダ転送であるとする。アービタＢにおいて、次に使用権が許可されるマスタは、ラウンドロビンによればマスタＡとなるが、自身が保持するQ2posとアービタ１が保持するM1pos[1]が以下の関係の場合はマスタＡの転送を後回しにする。
M1pos[1]−Q2pos≧Param
【００４０】
本例では、M1pos[1]＝６、Q2pos＝３なので、Paramが３以下の数であれば、マスタＡの転送が後回しになる。図７はParamが３以下の数の場合に、図６の調停の状態から次の調停の状態へ遷移した状態を表す。即ち、図６（Ｂ）の状態からラウンドロビンにより決定されるデータ転送はマスタＡのデータ転送であるが、M1pos[1]−Q2pos＝６−３＝３であり、図７の（Ｂ）に示されるようにマスタＡがスキップされ、マスタＤのデータ転送が優先される。
【００４１】
上述の通り第２実施形態によれば、アービタに転送キューを持たずに、マスタ毎のバス使用権の待ち数を保持することにより、インオーダ転送の先行するデータ転送の完了にかかわらず他のデータ転送を行えるようにでき、効率的なデータ転送を実現できる。
【００４２】
［第３実施形態］
図８は第３実施形態によるバスシステム構成例を示すブロック図である。又、図９は第３実施形態によるデッドライン保証アービタの構成例を示すブロック図である。第３実施形態のバスシステムは、マスタ３１０、３１１と、デッドライン保証アービタ３１２、３１３と、ＭＵＸ３１４、３１５と、スレーブ３１６、３１７を有する。尚、以下では、マスタ３１０、マスタ３１１をマスタＡ、マスタＢと表記する。又、デッドライン保証アービタ３１２、３１３を、アービタＡ、Ｂと表記する。更に、スレーブ３１６、３１７をスレーブＡ、Ｂと表記する。尚、第１、第２実施形態と同様に、本実施形態で例示したマスタ、スレーブの数は本発明を限定するものではない。
【００４３】
マスタＡ、Ｂは各々デッドラインを有した転送を行う。各アービタＡ、Ｂは、図９に示すような構成を有する。データ量設定レジスタ４０１（４０２）には、マスタＡ（Ｂ）のデータ転送量が設定される。デッドライン設定レジスタ４０３（４０４）には、マスタＡ（Ｂ）のデータ転送時間（即ちデッドライン）が設定される。データ転送量カウンタ４０５（４０６）は、各マスタが転送を完了したデータ量をデータ量設定レジスタ４０１（４０２）の値から差し引いた残りデータ量を出力する。タイマ４０７（４０８）は、マスタＡ（Ｂ）から最初のスレーブアクセス要求が到着した後に、デッドライン設定レジスタ４０３（４０４）に格納されている時間からカウントダウンを開始した残り時間を出力する。
【００４４】
緊急度評価値算出部４０９（４１０）は、データ転送量カウンタ４０５（４０６）が出力する残りデータ量をタイマ４０７（４０８）が出力する残り時間で割ることにより、緊急度評価値を算出する。緊急度評価値選択部４１１（４１２）は、緊急度評価値算出部４０９（４１０）で算出された緊急度評価値と、緊急度評価値受信部４１５（４１６）が他のアービタから受信した緊急度評価値とを比較し、最も緊急度の高いものを選択して調停部４１７へ通知する。調停部４１７は、マスタ毎に用意された緊急度評価値選択部２１１、２１２から通知される緊急度評価値を比較し、最も緊急度が高いマスタからのスレーブアクセスを優先して調停する。
【００４５】
緊急度評価値送信部４１３（４１４）は、緊急度評価値算出部４０９（４１０）から出力される緊急度評価値を他のデッドライン保証アービタへ転送する。緊急度評価値受信部４１１、４１２は、他デッドライン保証アービタから転送されてくる緊急度評価値を受信し、緊急度評価値選択部４１１（４１２）へ通知する。ＭＵＸ３１４、３１５はセレクタであり、アービタＡ、Ｂにより選択されたマスタのスレーブアクセスを許可する。
【００４６】
次に、図１０を用いて、第３実施形態の動作を説明する。マスタＢがスレーブＡとスレーブＢへ、マスタＡがスレーブＡへデータ転送を行い、各転送データ量d1、d2、d3とデッドラインt1、t2、t3が図１０（Ａ）、（Ｂ）のように設定されている場合を例に説明する。
【００４７】
デッドライン保証アービタＡの緊急度評価値算出部４０９（４１０）は、対応するマスタのデータ転送中に、データ転送量カウンタ４０５（４０６）の値とタイマ４０７（４０８）の値から、緊急度評価値を算出する。上述したように、緊急度評価値は、データ転送量カウンタの値÷タイマの値で算出される。そして、算出した緊急度評価値を緊急度評価値送信部４１３（４１４）、及び緊急度評価値選択部４１１（４１２）へ通知する。緊急度評価値送信部４１３（４１４）は、信号線３１８〜３２１を介して、緊急度評価値を他方のデッドライン保証アービタＢへ送信する。又、デッドライン保証アービタＡの緊急度評価値受信部４１５（４１６）は、他方のデッドライン保証アービタＢから送信されてきた緊急度評価値を緊急度評価値選択部４１１（４１２）へ通知する。緊急度評価値選択部４１１（４１２）は、通知された２つの緊急度評価値のうち、より緊急度が高いものを選択し、調停部２１７へ通知する。デッドライン保証アービタＢにおいても、同様の動作が実行される。
【００４８】
以上のように、本実施形態のデッドライン保証アービタＡ（Ｂ）はマスタのデータ転送中、そのデータ転送の緊急度評価値を他デッドライン保証アービタＢ（Ａ）へ通信する。緊急度評価値を受け取ったデッドライン保証アービタＡ（Ｂ）は、他デッドライン保証アービタＢ（Ａ）から受け取った緊急度評価値と自身が保持する緊急度評価値を比較して、最も厳しい緊急度評価値を用いてアービトレーションを行う。
【００４９】
図１０（Ｂ）の例では、t_over1（＝４０μＳ）においてマスタＢからスレーブＢへのデータ転送の残量及びデッドラインまでの残時間はそれぞれ３０ＭＢ及び２０μＳであり、緊急度評価値は１．５となる。又、図１０（Ｃ）によれば、マスタＡからスレーブＡへのデータ転送の残量及びデッドラインまでの残時間はそれぞれ７５ＭＢ及び５０μＳであり、緊急度評価値は１．５となる。そして、時刻t_over1を境にして、マスタＢからスレーブＢへのデータ転送の緊急度評価値は、マスタＡからスレーブＡへのデータ転送の緊急度評価値を上回る。
【００５０】
なお、データ転送の調停は、１トランザクション終了後に行われる。その際に、緊急度の高いマスタからの転送が必ず優先されるが、調停を行うタイミングに緊急度の高いマスタからのデータ転送が到着していない場合は他のマスタからのデータ転送が選択される。これにより、ある期間で見ると複数のマスタのデータ転送が行われているように見えることになる。また、図１０（Ｃ）において、t_over1後にマスタＡ→スレーブＡの転送スピードが大きくなっているのは、マスタＢ→スレーブＡの緊急度を計算してから実際に調停に反映されるまでの時間差でマスタＡ→スレーブＡのデータ転送が多く行われているためである。
【００５１】
デッドライン保証アービタＢの緊急度評価値算出部４１０で算出された緊急度評価値は緊急度評価値送信部４１４から、デッドライン保証アービタＡへ送信される。送信された緊急度評価値は、デッドライン保証アービタＡの緊急度評価値受信部４１６から緊急度評価値選択部４１２に通知される。このとき、デッドライン保証アービタＡの緊急度評価値選択部４１２に通知される緊急度評価値は、
・自身の緊急度評価値算出部４１０が算出したマスタＢからスレーブＡへのデータ転送の緊急度評価値と、
・デッドライン保証アービタＢから送信されたマスタＢからスレーブＢへのデータ転送の緊急度評価値である。
【００５２】
上述したように、図１０において、時刻t_over1後では、「マスタＢからスレーブＡへのデータ転送の緊急度評価値」＜「マスタＢからスレーブＢへのデータ転送の緊急度評価値」となる。このため、デッドライン保証アービタＡの緊急度評価値選択部４１２は、マスタＢからスレーブＢへの転送の緊急度評価値を選択し、調停部２１７へ通知する。調停部２１７は、通知された緊急度評価値のうち最も緊急度の高いマスタからのアクセスを優先するため、マスタＢからのアクセスを優先してアービトレーションすることになる。このため、マスタＢからスレーブＡへのアクセスがアービトレーションされ、その結果、マスタＢのバッファリソースが解放される。こうして、マスタＢはスレーブＢへアクセス要求を発行することが可能になり、マスタＢからスレーブＢへのデータ転送のデッドラインt2を保証することが可能になる。その後、時刻t_over2において、マスタＢからスレーブＢへの転送が終了すると、デッドライン保証アービタＡは、マスタＢの緊急度評価値としてマスタＢからスレーブＡへのデータ転送の緊急度評価値を用いてアービトレーションを行うことになる。
【００５３】
以上のように、第３実施形態によれば、あるマスタからスレーブへのデータ転送中に、そのデータ転送をアービトレーションしているバス調停装置の保持する緊急度評価値と、他のデッドライン保証アービタが保持する緊急度評価値が比較される。そして、最も厳しい緊急度評価値を用いてアービトレーションを行うことにより、１つのマスタが同時に複数のスレーブへのデータ転送を行う場合においても、デッドラインをより確実に保証することが可能になる。
【００５４】
［第４実施形態］
図１１に第４実施形態にかかるシステム構成の一例を示す。又、図１２は第４実施形態によるデッドライン保証アービタの構成例を示すブロック図である。
【００５５】
図１１に示されるように、第４実施形態によるシステムは、マスタ５１０〜５１２と、デッドライン保証アービタ５１３〜５１５と、ＭＵＸ５１６〜５１８と、スレーブ５１９〜５２１と、進行度転送クロスバ５２２とを有する。マスタ５１０〜５１２の各々は、デッドラインを有した転送を行う。また、デッドライン保証アービタ５１３〜５１５の各々は、図１２に示す構成を具備する。以下、マスタ５１０，５１１，５１２をマスタＡ，Ｂ，Ｃと表記する。又、デッドライン保証アービタ５１３，５１４，５１５をアービタＡ，Ｂ，Ｃと表記する。又、スレーブ５１９，５２０，５２１をスレーブＡ，Ｂ，Ｃと表記する。
【００５６】
図１２において、データ量設定レジスタ６０１（６０２、６０３）には、対応するマスタＡ（Ｂ、Ｃ）のデータ転送量が設定される。デッドライン設定レジスタ６０４（６０５、６０６）には、データ転送を行う時間（デッドライン）が設定される。データ転送量カウンタ６０７（６０８、６０９）は、各マスタが転送を完了したデータ量をデータ量設定レジスタの値から差し引いた残りデータ量を出力する。タイマ６１０（６１１、６１２）は、マスタＡ（Ｂ、Ｃ）から最初のスレーブアクセス要求が到着した後に、デッドライン設定レジスタ６０４（６０５、６０６）に格納されている時間からカウントダウンを開始し、残り時間を出力する。
【００５７】
要求転送速度算出部６１３（６１４、６１５）は、データ転送量カウンタ６０７（６０８、６０９）が出力する残りデータ量をタイマ６１０（６１１、６１２）が出力する残り時間で割ることにより、要求転送速度を算出する。調停部６１６は、要求転送速度算出部６１３〜６１５で算出された要求転送速度を比較し、最も要求転送速度が大きいマスタを優先するように調停を行う。デッドラインオーバーカウンタ６１７（６１８、６１９）は、タイマ６１０（６１１、６１２）が０になり、且つデータ転送量カウンタ６０７（６０８、６０９）が０でない場合に、データ転送量カウンタ６０７（６０８、６０９）が０になるまでの時間を計測する。即ち、デッドラインオーバーカウンタ６１７（６１８、６１９）はそれぞれデータ転送がデッドラインからオーバーした時間を計測する。次アービタレジスタ６２０（６２１、６２２）は、マスタＡ（Ｂ、Ｃ）の次の転送がどのデッドライン保証アービタで行われるかを示すアービタ識別情報を保持する。マージンレジスタ６２３（６２４、６２５）には、それまでにマスタＡ（Ｂ、Ｃ）が行ったデータ転送で生じたデッドラインまでの余り時間が格納される。
【００５８】
進行度計算部６２７（６２８、６２９）は、データ転送量カウンタ６０７（６０８、６０９）がタイマ６１０（６１１、６１２）より先に０になった場合に次の動作を行う。即ち、タイマ６１０（６１１、６１２）の値とマージンレジスタ６２３（６２４、６２５）の値の和を算出する。そして、算出された和を進行度として、転送を行っているマスタ識別情報とともに進行度送信部６２６に通知する。又、進行度計算部６２７（６２８、６２９）は、タイマ６１０（６１１、６１２）がデータ転送量カウンタ６０７（６０８、６０９）より先に０になった場合に次の動作を行う。まず、データ転送量カウンタ６０７（６０８、６０９）が０になるまで待つ。次に、マージンレジスタ６２３（６２４、６２５）の値とデッドラインオーバーカウンタ６１７（６１８、６１９）の差を算出する。そして、算出された差を進行度として、転送を行っているマスタ識別情報とともに、進行度送信部６２６へ通知する。
【００５９】
進行度送信部６２６は、進行度計算部６２７〜６２９から進行度とマスタ識別情報の通知を受けると、進行度転送クロスバー５２２へ進行度を送信する。進行度受信部６３３は、進行度転送クロスバー５２２から進行度を受信し、共に受信されたマスタ識別情報に従って受信した進行度をデッドライン再計算部６３０〜６３２に振分ける。
【００６０】
デッドライン再計算部６３０（６３１、６３２）は、次アービタレジスタ６２０（６２１、６２２）に次のアービタ番号が設定されており、且つ、進行度受信部６３３から振分けられた進行度が０以上の場合、マージンレジスタ６２３（６２４、６２５）に進行度を格納する。進行度が０以上であっても、次アービタレジスタ６２０（６２１，６２２）に次のアービタが指定されていない場合は、受信した進行度とデッドライン設定レジスタに設定されている値の和をデッドライン設定レジスタ６０４（６０５、６０６）に格納する。又、進行度が負の場合は、デッドライン再計算部６３０（６３１、６３２）は、受信した進行度とデッドライン設定レジスタに設定されている値の和をデッドライン設定レジスタ６０４（６０５、６０６）に格納する。
【００６１】
ＭＵＸ５１６、５１７、５１８はセレクタであり、デッドライン保証アービタＡ、Ｂ、Ｃにより選択されたマスタによるスレーブアクセスを許可する。図１１の例のように、アービタＡはアービタＡ，Ｂ，Ｃに接続されており、これによりアービタＡは自身と他の全てのアービタと通信することが可能になっている。このように、各アービタが自身を含む全てのアービタと接続されるため、進行度転送クロスバ−５２２のサイズは、[デッドライン保証アービタ数]×[デッドライン保証アービタ数]となる。本実施形態では３×３となっており、デッドライン保証アービタ１３、１４、１５の進行度送信部２２６で指定されるアービタ番号に基づいて、同じく進行度送信部２２６から出力される進行度を転送する。尚、自身との通信には進行度転送クロスバー５２２を利用しなくてもよく、その場合のサイズは[デッドライン保証アービタ数]×[デッドライン保証アービタ数−１]となる。
【００６２】
次に、図１３を用いて、第４実施形態における第１の動作例を説明する。第１の動作例は、マスタＢからスレーブＡ、スレーブＢ、スレーブＣへと順番に転送を行う場合であって、スレーブＡへのデータ転送がデッドラインをオーバーする例である。
【００６３】
マスタＢが行うスレーブＡ〜Ｃへの一連の転送にはデッドラインＴが設定されており、各アービタＡ、Ｂ、Ｃは、図１３の（Ａ）に示される初期状態のように設定されている。即ち、スレーブＡへはデッドラインt1内に転送データ量d1を、スレーブＢへはデッドラインt2内に転送データ量d2を、スレーブＣへはデッドラインt3内に転送データ量d3を転送するように設定されている。ここで、t1＋t2＋t3＝Ｔとなるように設定されている。また、アービタＡのマスタＢに対応する次アービタレジスタ６２１には２（アービタＡを示す）、アービタＢの次アービタレジスタ６２１には３（アービタＣを示す）、アービタＣの次アービタレジスタ６２１には最終転送を意味する0xFが設定されている。
【００６４】
最初に、マスタＢはスレーブＡへのデータ転送を行う。スレーブＡへのデータ転送はアービタＡでアービトレーションされる。以下の説明で登場する構成は、アービタＡのものであるとする。
【００６５】
今、マスタＢによるスレーブＡへのデータ転送が、他マスタのスレーブＡへのデータ転送がアービトレーションで優先されたことにより、デッドライン設定レジスタ６０５に設定されたデッドラインt1になっても終了しないとする。時刻t1において、タイマ６１１の値が０になると、デッドラインオーバーカウンタ６１８は経過時間のカウントを開始する。進行度計算部６２８は、データ転送量カウンタ６０８とタイマ６１１のどちらが先に０になるかを監視しており、時刻t1でタイマ６１１が０になったため、次はデータ転送量カウンタ６０８が０になるまで待機する。
【００６６】
図１３の（Ｂ）に示されるように、時刻t_end1においてデータ転送量カウンタ６０８が０になる（マスタＢ→スレーブＡのデータ転送が完了する）。データ転送量カウンタ６０８が０になると、進行度計算部６２８は、デッドラインオーバーカウンタ６１８からデッドラインオーバー時間t_over1を得る。マスタＢのスレーブＡへのデータ転送は一連のデータ転送を構成する最初のデータ転送であるため、マージンレジスタ６２４は０になっている。よって、進行度計算部６２８は［マージンレジスタ６２４の値］−［デッドラインオーバー時間］を計算することにより、−t_over1を計算結果として得る。そして、進行度計算部６２８はこの計算結果を進行度として、次アービタレジスタ６２０に設定されたアービタ識別情報（＝アービタＢ）と自身が管理しているマスタ識別情報（マスタＢ）とともに進行度送信部６２６に通知する。進行度送信部６２６は、進行度計算部６２８から通知された情報を進行度転送クロスバ５２２へ送信する。進行度転送クロスバ５２２は、送信された情報の一部であるアービタ識別情報が示すアービタＢの進行度受信部６３３へ、当該送信された情報をルーティングする。
【００６７】
上記ルーティングの結果、アービタＢの調停によりマスタＢからスレーブＢへのデータ転送が開始される。以下の説明で示される構成はアービタＢのものであるとする。
【００６８】
進行度受信部６３３は、進行度（本例では−t_over1）及びマスタ識別情報（マスタＢを示す）を進行度転送クロスバ５２２から受信する。そして、進行度受信部６３３は、受信したマスタ識別情報に対応するデッドライン再計算部へ進行度を振分ける。ここでは、マスタＢに対応するデッドライン再計算部６３１へ進行度が振り分けられる。デッドライン再計算部６３１は通知された進行度が０より大きいか判断する。ここで、−t_over1は負であるため、デッドライン設定レジスタ６０６に設定されたt2と−t_over1との和を計算し、その計算結果でデッドライン設定レジスタ６０６の値を更新する。その結果、デッドライン設定レジスタ６０６の設定値はt2から、t2'（＝t2−t_over1）へ変更される。ここまでの処理結果を図１３の（Ｂ）に示す。
【００６９】
次に、マスタＢはスレーブＢへのデータ転送を行う。スレーブＢへのデータ転送はアービタＢでアービトレーションされる。ここで、マスタＢによるスレーブＢへのデータ転送が、他マスタのスレーブＢへのデータ転送によって妨害され、デッドライン設定レジスタ６０５に設定されたデッドラインt2'になっても終了せず、t_end2になって終了したとする。以後の動作は、上述したマスタＢのスレーブＡへのデータ転送と同様である。従って、マスタＢのスレーブＢへのデータ転送の結果、アービタＣのデッドライン設定レジスタ６０５の値はt3−t_over2（＝t3'）で更新されることになる。ここまでの結果を図１３（Ｃ）に示す。
【００７０】
最後に、マスタＢはスレーブＣへのデータ転送を行う。スレーブＣへのデータ転送はアービタＣでアービトレーションされる。スレーブＣへのデータ転送が、デッドライン設定レジスタ６０５に設定された上述のデッドラインt3'内に終了すれば、マスタＢが行うスレーブＡ〜Ｃへの一連の転送がデッドラインＴ内に完了することになる。ここまでの結果を図３（Ｄ）に示す。
【００７１】
以上のように、一連のデータ転送の進行度を確認し、各データ転送に対するデッドラインを変更することで、一連のデータ転送に対してデッドラインを保証することが可能になる。
【００７２】
次に、図１４を用いて、第４実施形態における第２の動作例を説明する。第２の動作例は、マスタＢからスレーブＡ、スレーブＢ、スレーブＣへと順番に転送を行う場合であって、各データ転送がデッドラインに対して余裕を残して完了する場合の動作例である。
【００７３】
マスタＢが行う一連のデータ転送にはデッドラインＴが設定されており、図１４（Ａ）の初期状態に示されるように、アービタＡ、Ｂ、Ｃが設定されている。即ち、マスタＢからスレーブＡへはデッドラインt1内に転送データ量d1を、スレーブＢへはデッドラインt2内に転送データ量d2を、スレーブＣへはデッドラインt3内に転送データ量d3を転送するようにアービタＡ〜Ｃの各々が設定されている。ここで、t1＋t2＋t3＝Ｔとなるように設定されている。また、アービタＡの次アービタレジスタ６２１には２（＝アービタＢ）、アービタＢの次アービタレジスタ６２１には３（＝アービタＣ）、アービタＣの次アービタレジスタ６２１には最終転送を意味する0xFが設定されている。
【００７４】
最初に、マスタＢはスレーブＡへのデータ転送を行う。スレーブＡへのデータ転送はアービタＡでアービトレーションされる。以下の説明で登場する構成は、アービタＡにおける構成であるとする。
【００７５】
マスタＢからスレーブＡへのデータ転送中、他のマスタからスレーブＡへのデータ転送が行われなかったとする。そのため、マスタＢのスレーブＡへのデータ転送は、デッドライン設定レジスタ６０５に設定されたデッドラインt1よりもt_short1だけ前に終了したとする。進行度計算部６２８は、データ転送量カウンタ６０８とタイマ６１１のどちらが先に０になるかを監視しており、時刻t_end1でデータ転送量カウンタ６０８が先に０になると、タイマ６１１の値を得る。マスタＢのスレーブＡへの転送は最初の転送であるため、マージンレジスタ６２４の値は０である。従って、進行度計算部６２８は［マージンレジスタ６２４の値］＋［タイマ２１１の値］を計算し、t_short1を計算結果として得る。そして、進行度計算部６２８は、この計算結果を進行度として、次アービタレジスタ６２０に設定されたアービタ識別情報（＝アービタＢ）と自身が管理しているマスタ識別情報（＝マスタＢ）とともに進行度送信部２２６に通知する。進行度送信部６２６は、進行度計算部６２８から通知された情報を進行度転送クロスバー５２２へ送信する。進行度転送クロスバー５２２は、送信された情報の一部であるアービタ識別情報が示すアービタＢの進行度受信部６３３へ、当該送信された情報をルーティングする。
【００７６】
上記ルーティングの結果、アービタＢの調停によりマスタＢからスレーブＢへのデータ転送が開始される。以下の説明で示される構成はアービタＢのものであるとする。
【００７７】
進行度受信部６３３は、進行度（t_short1）及びマスタ識別情報（マスタＢ）を進行度転送クロスバー５２２から受信する。そして、受信したマスタ番号に従って、受信した進行度をデッドライン再計算部６３１へ振分ける。デッドライン再計算部６３１は通知された進行度が０より大きいか判断する。ここで、t_short1は０以上であるため、進行度（ここではt_short1）をマージンレジスタ６２４へ「margin」として格納する。ここまでの結果を図１４（Ｂ）に示す。
【００７８】
次に、マスタＢはデッドラインt2までにデータ転送を完了するようにスレーブＢへのデータ転送を行う。スレーブＢへのデータ転送はアービタＢでアービトレーションされる。ここで、マスタＢからスレーブＢへのデータ転送は、他マスタからスレーブＢへのデータ転送によって妨害され、デッドライン設定レジスタ６０５に設定されたデッドラインt2になっても終了せず、t_end2で終了したものとする。以後の動作は、第１の動作例で上述したとおりである。即ち、マスタＢからスレーブＢへのデータ転送の結果、進行度はmargin−t_over2（＞０）となる。ここで、アービタＣのスレーブＣに対応した次アービタレジスタ６２２には次のアービタが存在しないので、アービタＣのデッドライン設定レジスタ６０５の値はt3'＝t3＋(margin−t_over2)で更新される。ここまでの結果を図１４（Ｃ）に示す。
【００７９】
最後に、マスタＢはスレーブＣへのデータ転送を行う。スレーブＣへのデータ転送はアービタＣでアービトレーションされる。スレーブＣへのデータ転送は、アービタＣのデッドライン設定レジスタ６０５に設定されたデッドラインt3'内に終了する。ここまでの結果を図１４（Ｄ）に示す。
【００８０】
以上のように、第４実施形態によれば、あるマスタからスレーブへのデータ転送完了後に、そのデータ転送をアービトレーションしたバス調停装置の保持する進行度を用いて、そのデータ転送以後に続くデータ転送のためのデッドラインを再計算する。これにより、一連のデータ転送に対するデッドラインを保証することが可能になり、また、一連のデータ転送が必要以上に優先されることを回避することも可能になる。即ち、一連のデータ転送の進行度を確認し、各データ転送に対するデッドラインを変更することで、必要以上に優先してアービトレーションされることを防ぐことが可能となる。又、他マスタからの転送を妨害し、他マスタのデッドラインを保証できなくなる可能性が低減される。
【００８１】
以上、実施形態を用いて本発明を説明したが、本発明は実施形態に限定されるものではない。例えば、次アービタレジスタのような次のデータ転送を行うマスタ識別子を保持するためのレジスタを持つことで、一連のデータ転送が複数のマスタで実行される場合にも適用可能である。また、一連のデータ転送が1つのデッドライン保証アービタでのみアービトレーションされる場合であっても、デッドライン保証アービタ内部で進行度を通信することによりデッドラインを保証可能である。そして、本実施形態において、進行度は直後に行われるデータ転送をアービトレーションするデッドライン保証アービタにのみ送信されるがこれに限られるものではない。例えば、進行度送信部２２６が予め設定された比率に従って、以後のデータ転送をアービトレーションするデッドライン保証アービタ毎に進行度を振分けて送信するようにしてもよい。このように、本発明は実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々の変更が可能である。
【図面の簡単な説明】
【００８２】
【図１】第１実施形態による２つのマスタと２つのスレーブからなるマルチレイア構成のバスシステムの構成例を示す図である。
【図２】第１実施形態によるアービタの構成例を示すブロック図である。
【図３】第１実施形態のアービタが備える優先制御部の動作を説明するための状態遷移図である。
【図４】第１実施形態によるデータ転送例を示すタイムチャートである。
【図５】第２実施形態による８つのマスタと２つのスレーブからなるマルチレイア構成のバスシステムの構成例を示す図である。
【図６】第２実施形態のアービタによる調停動作を説明する図である。
【図７】第２実施形態のアービタによる調停動作を説明する図である。
【図８】第３実施形態によるバスシステムの構成例を示す図である。
【図９】第３実施形態によるデッドライン保証アービタの構成例を示すブロック図である。
【図１０】第３実施形態によるデータ転送動作例を説明する図である。
【図１１】第４実施形態によるバスシステムの構成例を示す図である。
【図１２】第４実施形態によるデッドライン保証アービタの構成例を示すブロック図である。
【図１３】第４実施形態によるデータ転送の動作例を示す図である。
【図１４】第４実施形態によるデータ転送の他の動作例を示す図である。
【図１５】一般的なバスシステムにおけるデータ転送動作を示すタイムチャートである。
【図１】
0004455540.tif 000002
【図２】
0004455540.tif 000003
【図３】
0004455540.tif 000004
【図４】
0004455540.tif 000005
【図５】
0004455540.tif 000006
【図６】
0004455540.tif 000007
【図７】
0004455540.tif 000008
【図８】
0004455540.tif 000009
【図９】
0004455540.tif 000010
【図１０】
0004455540.tif 000011
【図１１】
0004455540.tif 000012
【図１２】
0004455540.tif 000013
【図１３】
0004455540.tif 000014
【図１４】
0004455540.tif 000015
【図１５】
0004455540.tif 000016