(57)【要約】【課題】適切なデッドライン保証を行えるバスマスタ装置を提供する。【解決手段】バススレーブ装置に対してバスを介してデータ転送を行うバスマスタ装置において、残り転送時間格納手段がデータ転送手段によりデータ転送を完了させるまでの残り時間を示す第１の残り時間を格納する。算出手段が、残り転送量、目標時間、及び、目標転送量に基づいて、第２の残り時間を算出手段で算出し、第２の残り時間が第１の残り時間より小さい場合に、残り転送時間格納手段における前記第１の残り時間を前記第２の残り時間により更新する。また、前記第１の残り時間と前記第２の残り時間との差分情報を、時間量削減量格納手段に格納する。データ転送手段による目標転送量のデータ転送が完了した直後に更なるデータ転送を行う場合は、残り転送時間格納手段の初期値として、更なる目標時間と差分情報との和が格納される。【選択図】図１
2008269176.tif 000002
【特許請求の範囲】
【請求項１】
バススレーブ装置に対してバスを介してデータ転送を行うバスマスタ装置であって、
目標時間までに目標転送量のデータ転送を行うデータ転送手段と、
前記データ転送手段によりデータ転送を完了させるまでの残り時間を示す第１の残り時間を格納する残り転送時間格納手段と、
前記データ転送手段によるデータ転送の転送レートで、前記データ転送手段によるデータ転送が完了するまでの残り時間を示す第２の残り時間を算出する算出手段と、
前記第２の残り時間が前記第１の残り時間より小さい場合に、前記残り転送時間格納手段における前記第１の残り時間を前記第２の残り時間により更新する更新手段と
を備え、
前記データ転送手段による前記目標転送量のデータ転送が完了した後に更なるデータ転送を行う場合に、前記第１の残り時間と前記第２の残り時間との差分に基づき、前記残り転送時間格納手段の初期値を設定することを特徴とするバスマスタ装置。
【請求項２】
前記更新手段は、前記第１の残り時間が０となっても、前記目標転送量のデータ転送が完了しない場合に、該第１の残り時間を前記目標時間に基づく値に更新することを特徴とする請求項１に記載のバスマスタ装置。
【請求項３】
前記更新手段は、前記第１の残り時間と前記第２の残り時間との差分を表わす差分情報を格納する時間量削減量格納手段を備え、前記第１の残り時間を前記目標時間に基づく値で更新した場合に、前記時間量削減量格納手段に格納された前記差分情報をリセットすることを特徴とする請求項２に記載のバスマスタ装置。
【請求項４】
前記算出手段における前記第２の残り時間の算出及び前記更新手段による更新は、一定周期で実行されることを特徴とする請求項１乃至３のいずれか１項に記載のバスマスタ装置。
【請求項５】
前記バスマスタ装置は、複数のバスを結合するバスブリッジとして機能することを特徴とする請求項１乃至４のいずれか１項に記載のバスマスタ装置。
【請求項６】
請求項１乃至５のいずれか１項に記載の前記バスマスタ装置がバスに接続された情報処理システム。
【請求項７】
目標時間までに目標転送量のデータ転送を行うデータ転送手段と、
前記データ転送手段によりデータ転送を完了させるまでの残り時間を示す第１の残り時間を格納する残り転送時間格納手段とを備える、バススレーブ装置に対してバスを介してデータ転送を行うバスマスタ装置の制御方法であって、
前記データ転送手段によるデータ転送の転送レートで、前記データ転送手段によるデータ転送が完了するまでの残り時間を示す第２の残り時間を算出する算出工程と、
前記第２の残り時間が前記第１の残り時間より小さい場合に、前記残り転送時間格納手段における前記第１の残り時間を前記第２の残り時間により更新する更新工程と、
前記データ転送手段による前記目標転送量のデータ転送が完了した後に更なるデータ転送を行う場合に、前記第１の残り時間と前記第２の残り時間との差分に基づき、前記残り転送時間格納手段の初期値を設定する工程と
を備えることを特徴とするバスマスタ装置の制御方法。
【請求項８】
前記更新工程では、前記第１の残り時間が０となっても、前記目標転送量のデータ転送が完了しない場合に、該第１の残り時間が前記目標時間に基づく値に更新されることを特徴とする請求項７に記載のバスマスタ装置の制御方法。
【請求項９】
前記更新工程では、前記第１の残り時間を前記目標時間に基づく値で更新した場合に、時間量削減量格納手段に格納された差分情報がリセットされることを特徴とする請求項８に記載のバスマスタ装置の制御方法。
【請求項１０】
前記算出工程と前記更新工程とが、一定周期で実行されることを特徴とする請求項７乃至９のいずれか１項に記載のバスマスタ装置の制御方法。
【請求項１１】
コンピュータを、請求項１乃至５のいずれか１項に記載のバスマスタ装置として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスマスタ装置、情報処理システム、バスマスタ装置の制御方法並びにコンピュータプログラムに関する。
【背景技術】
【０００２】
バス上に複数のバスマスタが接続されており、各バスマスタがバスに接続されたバススレーブに対してデータ転送を行う場合、バスマスタは、まずバス上のアービタ（バス調停器）に対して転送要求を出力する。そして、この転送要求に対して、アービタから転送許可を与えられると、バスマスタはデータ転送を開始するのが一般的である。その際のアービタの調停アルゴリズムとしては、固定プライオリティ方式やラウンドロビン方式が一般的である。
【０００３】
しかしながら、固定プライオリティ方式やラウンドロビン方式といった調停アルゴリズムによるバス調停においては、各バスマスタがデータ転送を行う際に要求するデッドラインを保証することが困難な場合がある。
【０００４】
例えば、ある期間内に各バスマスタが要求する「平均帯域の和」が、バスの割当て可能な範囲内であったとしても、該期間の一部の期間に着目すると、各バスマスタが要求する帯域の和が、バスの割当て可能な帯域を超えてしまうことが起り得る。
【０００５】
この場合、固定プライオリティ方式やラウンドロビン方式といった単純な調停アルゴリズムでは、デッドライン保証という観点から適切なバス調停が行われないという問題点がある。
【０００６】
図１０は、ラウンドロビン方式の調停アルゴリズムを採用してバス調停を行った場合の転送データ量と経過時間との関係を示したグラフである。この図１０のグラフには、デッドライン保証ができていないケースが含まれている。
【０００７】
図１０の例では、１サイクルあたり１ワード（１ワードは４バイトとする）を転送できるバスシステムにおいて、３つのバスマスタが合計８９６ワードを転送する場合を想定している。また、ｍａｓｔｅｒ０とｍａｓｔｅｒ２とについては、８００サイクル目をデッドラインとし、ｍａｓｔｅｒ１については１１００サイクル目をデッドラインとして考える。更に、各バスマスタのデータ転送量は、ｍａｓｔｅｒ０が５１２ワード、ｍａｓｔｅｒ１が２５６ワード、ｍａｓｔｅｒ２が１２８ワードとしている。
【０００８】
図１０の例では、単純なラウンドロビン方式によるバス調停を行った結果、ｍａｓｔｅｒ０の転送完了がデッドラインである８００サイクル目を越えてしまい、デッドライン保証ができていない。
【０００９】
また、特許文献１には、基準より遅れているデバイスに対して、優先的にバスを割り当てるバス調停装置が記載されている。この特許文献１のバス調停装置は、この割り当てのために、各デバイスに要求されている転送レートに基づいたクロックで動作する基準カウンタと、実際に転送したデータ量を計測する転送データカウンタとを設ける。そして、バス調停時にこれら２つのカウンタの値を比較している。
【００１０】
さらに、バスブリッジを用いる等して階層化されたバスの場合を考える。この場合も、各階層ごとに固定プライオリティ方式やラウンドロビン方式といった単純な調停アルゴリズムによってバス調停を行えば、下位階層に接続されたバスマスタが、上位階層において必ずしも優先的にバス権を取得できない。よって、固定プライオリティ方式やラウンドロビン方式では、階層化されたバスの場合においても、デッドライン保証が困難であるという問題点がある。
【特許文献１】特開平１０−２８９２０３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上記のように、従来のバスシステムでは、適切なデッドライン保証を行うことが困難であった。
【００１２】
本発明の目的は、上記の点を鑑み、より適切なデッドライン保証を行えるバスシステムを提供することにある。
【課題を解決するための手段】
【００１３】
上記課題を解決するための本発明は、
バススレーブ装置に対してバスを介してデータ転送を行うバスマスタ装置であって、
目標時間までに目標転送量のデータ転送を行うデータ転送手段と、
前記データ転送手段によりデータ転送を完了させるまでの残り時間を示す第１の残り時間を格納する残り転送時間格納手段と、
前記データ転送手段によるデータ転送の転送レートで、前記データ転送手段によるデータ転送が完了するまでの残り時間を示す第２の残り時間を算出する算出手段と、
前記第２の残り時間が前記第１の残り時間より小さい場合に、前記残り転送時間格納手段における前記第１の残り時間を前記第２の残り時間により更新する更新手段と
を備え、
前記データ転送手段による前記目標転送量のデータ転送が完了した後に更なるデータ転送を行う場合に、前記第１の残り時間と前記第２の残り時間との差分に基づき、前記残り転送時間格納手段の初期値を設定することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、適切なデッドライン保証を行えるバスシステムを提供することができる。
【発明を実施するための最良の形態】
【００１５】
以下、添付する図面を参照して、発明の実施形態を説明する。
【００１６】
［第１の実施形態］
図１は、本発明によるバスマスタ装置の構成の一例を示すブロック図である。図１において、バスマスタ装置１は、バススレーブＩ／Ｆ部１０、転送時間レジスタ１１、転送量レジスタ１２、転送開始レジスタ１３、転送能力レジスタ１４、再計算周期レジスタ１５を備える。また、バスマスタＩ／Ｆ部２０、バスマスタ制御部２１、データ処理部２２、転送要求度計算部２３、残り転送時間レジスタ（残り転送時間格納部）２４、残り転送量レジスタ（残り転送量格納部）２５、転送時間初期値レジスタ２６を備える。更に、転送量初期値レジスタ２７、転送レート算出部３０、目標平均転送レート格納部３１、比較部３２、残り時間再計算部３３、タイマ３４、時間量削減量格納レジスタ３５から構成される。なお、バススレーブＩ／Ｆ部１０及びバスマスタＩＦ部２０は、バス０に接続される。
【００１７】
また図２は、バスマスタ装置１を用いた情報処理システムの構成の一例を表すブロック図である。情報処理システム１００は、バス４０、ＣＰＵ４１、アービタ４２、バスマスタ４３、４４及び４５、バススレーブ４６及び４７から構成される。このうち、バスマスタ４３、４４及び４５は、各々、図１のバスマスタ装置１に対応する構成を有する。また、バス４０は、図１のバス０に対応する。
【００１８】
次に、本実施形態に対応するバスマスタ装置１の概要を説明する。バススレーブＩ／Ｆ部１０は、バス０上のＣＰＵ（図２のＣＰＵ４１に相当）からのレジスタアクセスを受付けるインターフェースである。転送時間レジスタ１１は、バスマスタ装置１が行うデータ転送に要求される転送時間（即ち、転送開始から転送終了までの時間の最大値）を１μ秒単位で設定するレジスタである。また、転送量レジスタ１２は、該データ転送の転送量をバイト単位で設定するレジスタである。またバスマスタ装置１は、転送開始レジスタ１３に'１'が書き込まれることによってデータ転送を開始し、転送が完了すると転送開始レジスタ１３を自動的にクリアする。
【００１９】
転送能力レジスタ１４は、バスマスタ装置１の転送能力を設定する６ビットのレジスタで、バスマスタ装置１が単独でデータ転送を行った場合の（即ち、バスマスタ装置１のみに連続してバス権許可が与えられ続けた場合の）平均転送能力を設定する。ここで、この平均転送能力は、ワード／サイクルを単位として設定される。転送能力レジスタ１４の設定範囲は０．０１３２５（２の−５乗）から１（２の０乗）までである。なお、ハードウエア的には１を超える設定が可能であるが、１サイクルあたり１ワードを超えるデータ転送は、本実施形態のバスシステムにおいては不可能なため、上限を１として使用している。
【００２０】
バスマスタＩ／Ｆ部２０は、バス０上のバススレーブ装置（図２のバススレーブ４６または４７に相当）と、データ処理部２２との間のデータ転送を行うためのインターフェースである。バスマスタ制御部２１は、バスマスタＩ／Ｆ部２０、転送開始レジスタ１３、残り転送時間レジスタ２４及び残り転送量レジスタ２５を制御する。データ処理部２２は、転送データを生成または受信する部分で、例えば画像処理を行うブロックや、外部との通信を行うインターフェースブロックなど、バスマスタ装置１に要求される機能によって異なる。
【００２１】
次に、バスマスタ装置１の基本的な動作について説明する。バス０上のＣＰＵから転送開始レジスタ１３に'１'が書き込まれると、バスマスタ制御部２１は、残り転送時間レジスタ２４及び残り転送量レジスタ２５に対してロード信号をアサートする。これにより、転送時間レジスタ１１の値が残り転送時間レジスタ２４にコピーされると共に、転送量レジスタ１２の値が残り転送量レジスタ２５にコピーされる。その後バスマスタ制御部２１は、残り転送時間レジスタ２４に対しては１μ秒ごとに時間減算信号をアサートし、残り転送量レジスタ２５に対してはデータ転送が行われる度に転送されたバイト数分の転送量減算信号をアサートする。
【００２２】
例えば、本実施形態においては、バス０における１ワードは４バイトである。このため、１ワードの転送が行われた場合には転送量減算信号として'４'が、ハーフワード転送の場合には'２'が、バイト転送の場合には'１'がアサートされ、残り転送量レジスタ２５は、自身の値から転送量減算信号の値を減算する。以上により、残り転送時間レジスタ２４及び残り転送量レジスタ２５の値が減算され、残り転送時間及び残り転送量の値が適切に更新される。
【００２３】
データ処理部２２も、転送開始レジスタ１３に'１'が書き込まれることによって起動される。データが送信もしくは受信可能になると、データ処理部２２はバスマスタ制御部２１に対してデータレディ信号をアサートする。データレディ信号のアサートを受けて、バスマスタ制御部２１は、バス０上のアービタ（図２のアービタ４２に相当する）に対して転送要求信号をアサートするよう、バスマスタＩ／Ｆ部２０を制御する。
【００２４】
一方、転送要求度計算部２３は、残り転送時間レジスタ２４、残り転送量レジスタ２５及び転送能力レジスタ１４の値に基づいて、データ転送の優先度情報（Ｐ１）を計算する。本実施形態における優先度情報Ｐ１の計算式は以下の式１のように表される。式１では、残り転送量レジスタ２５における残りデータ量をＤｒ１、残り転送時間レジスタ２４の残り時間をＴｔ１、転送能力レジスタ１４の転送能力をＴｃ１としている。
【００２５】
Ｐ１＝（Ｄｒ１／Ｔｔ１）／Ｔｃ１・・・（式１）
この式１により、同一の残りデータ量（Ｄｒ１）に対しては、残り時間（Ｔｔ１）が少なくなるほど転送要求の優先度情報（Ｐ１）が大きくなる。一方、同一の残り時間（Ｔｔ１）に対しては、残りデータ量（Ｄｒ１）が多くなるほど優先度情報（Ｐ１）は大きくなる。
【００２６】
さらに、同一の「残りデータ量（Ｄｒ１）／残り時間（Ｔｔ１）」の値に対しては、転送能力（Ｔｃ１）の低いバスマスタほど優先度情報（Ｐ１）は大きくなる。バスマスタＩ／Ｆ部２０はアービタ４２に対して、転送要求度計算部２３における優先度情報Ｐ１の計算結果を転送要求優先度信号として出力する。転送要求優先度信号のアサートタイミングは、転送要求信号のアサート開始と同一サイクルで、以降、転送が完了するまで値を保持する。
【００２７】
次に、本発明の原理について説明する。図４は、１つのバスマスタ装置１が直列に２回のデータ転送を行う動作を説明するグラフである。同図においてバスマスタ装置１は、総目標転送量｛ｍ１＋ｍ２｝ワードのデータ転送を目標時間｛ｔ１＋ｔ２｝秒の間に行うことが要求されている。１回目の目標時間であるデッドラインｔ１は「仮のデッドライン」であり、｛ｔ１＋ｔ２｝秒の期間に｛ｍ１＋ｍ２｝ワードのデータデータ転送が完了していれば、ｔ１は必ずしもデッドラインとして保証する必要がない。
【００２８】
目標転送量ｍ１と目標転送量ｍ２のデータは、各々異なるバススレーブに転送される。転送能力ａ１は、転送量ｍ１のデータを転送する際の、理論上の最高転送レート（即ち、バスマスタ装置１がｔ１の期間バスを占有することができた場合の転送レート）を示している。また、転送能力ａ２は、転送量ｍ２のデータを転送する際の、理論上の最高転送レート（即ち、バスマスタ装置１がｔ２の期間バスを占有することができた場合の転送レート）を示している。転送能力ａ１と転送能力ａ２の傾きが異なる理由は、転送先のバススレーブが受信可能なバースト長が異なるためである。
【００２９】
目標平均転送レートｒ１はｍ１／ｔ１と等しく、転送量ｍ１のデータをｔ１の期間に平均的に転送できたと仮定した場合の転送状況を示す直線である。同様に、目標平均転送レートｒ２はｍ２／ｔ２と等しく、転送量ｍ２のデータをｔ２の期間に平均的に転送できたと仮定した場合の転送状況を示す直線である。実際の転送状況ｒａは、実際の転送状況の一例を示す線である。
【００３０】
図５は、本発明の原理を説明するためのグラフである。図５では、時刻０から転送量ｍ１のデータ転送を開始し、時刻ｔａに達した状態を示している。また、図５において、転送量ｍ１及びｍ２、期間ｔ１及びｔ２、転送能力ａ１及びａ２、目標平均転送レートｒ１及びｒ２は、図４と同じ定義である。図５では、時刻ｔａにおける残りのデータ量がｍ１'であることを示している。さらに、時刻ｔａまでの実際の平均転送レートｒ１'の傾きが目標平均転送レートｒ１の傾きよりも大きいことから、実際の平均転送レートｒ１'は目標平均転送レートｒ１よりも大きいことを示している。
【００３１】
本実施形態では、データ転送中に一定周期でデッドラインを動的に再計算すると共に、再計算を行う際に目標平均転送レートを用いて新しいデッドラインを再計算する。
【００３２】
例えば、図５の時刻ｔａにおいてデッドラインを再計算する場合、「残りの転送量ｍ１'を目標平均転送レートｒ１で転送できる」と仮定する。
【００３３】
再計算後のデッドラインをｔ１'とすると、ｔ１'の計算式は、
ｍ１／ｔ１＝ｍ１'／（ｔ１'−ｔａ）・・・（式２）
であることから、
ｔ１'−ｔａ＝（ｍ１'／ｍ１）×ｔ１・・・（式３）
と式２を変形し、
ｔ１'＝（ｍ１'／ｍ１）×ｔ１＋ｔａ・・・（式４）
となる。
【００３４】
ｔ１'が新たなデッドラインとして設定されると、前倒しされた時間｛ｔ１−ｔ１'｝の分だけ転送量ｍ２のデータ転送に費やせる期間が長くなる。即ち、時間｛ｔ１−ｔ１'｝がマージンとなる。これにより、図５において再計算後の目標平均レートｒ２'の傾きが、目標平均レートｒ２の傾きよりも小さくなる。
【００３５】
このように、本実施形態では、稼げる期間にマージンを稼いでおき、転送量ｍ１のデータ転送を前倒しする。これによって、将来各バスマスタが要求する帯域の和が、バスが供給できる帯域を一時的に超えてしまう状況が起った場合に備えて、他のバスマスタに割当てられる帯域を確保することができる。
【００３６】
次に、本実施形態に対応する、バスマスタ装置１におけるデッドラインの再計算動作の処理の一例を図６のフローチャートを参照して説明する。図１において、デッドラインの再計算動作に特に関わる部分は、再計算周期レジスタ１５、転送時間初期値レジスタ２６、転送量初期値レジスタ２７、転送レート算出部３０、目標平均転送レート格納部３１、比較部３２、残り時間再計算部３３、タイマ３４、時間量削減量格納レジスタ３５である。図６における処理は、以下の説明において登場する各構成部が対応する処理プログラムを実行することにより実現される。
【００３７】
図６において、まず、ステップＳ６０１では、バス０上のＣＰＵから転送開始レジスタ１３に'１'が書き込まれると、バスマスタ制御部２１がロード信号をアサートする。これにより、ステップＳ６０２において、転送時間レジスタ１１の値が転送時間初期値レジスタ２６にコピーされると共に、転送量レジスタ１２の値が転送量初期値レジスタ２７にコピーされる。
【００３８】
次に、ステップＳ６０３において、転送時間初期値レジスタ２６の値Ｔｉ１が、残り転送時間レジスタ２４に転送される。また、転送量初期値レジスタ２７の値Ｄｉ１が、残り転送量レジスタ２５の値Ｄｒ１として格納される。なお、ステップ１０３の処理は、データ転送開始時の初期化処理の一環として行われるものであって、データ転送が開始されて時間が経過するに従い、Ｔｔ１及びＤｒ１の値は初期化値から更新されていくものである。すなわち、残り転送時間レジスタ２４の値Ｔｉ１、残り転送量レジスタ２５の値Ｄｒ１は、更新される。
【００３９】
ステップＳ６０４及びステップＳ６０５において、転送レート算出部３０は、目標平均転送レート（ｒ１）を、実際の平均転送レート（ｒａ）を算出する。この算出は、残り転送時間レジスタ２４、残り転送量レジスタ２５、転送時間初期値レジスタ２６及び転送量初期値レジスタ２７の値に基づいて行うことができる。
【００４０】
具体的に、ステップＳ６０４における目標平均転送レート（ｒ１）の計算は、バスマスタ制御部２１から出力されるロード信号がアサートされた次のサイクル行われる。次のサイクルとは、即ち、残り転送時間レジスタ２４、残り転送量レジスタ２５、転送時間初期値レジスタ２６及び転送量初期値レジスタ２７が、ロード信号のアサートによって更新されたサイクルに相当する。
【００４１】
この計算は、転送量初期値レジスタ２７の初期値Ｄｉ１と、転送時間初期値レジスタ２６の初期値Ｔｉ１とを用いて、
ｒ１＝Ｄｉ１／Ｔｉ１・・・（式５）
で計算される。計算された目標平均転送レートは、目標平均転送レート格納部３１に格納される。
【００４２】
また、ステップＳ６０５における実際の平均転送レート（ｒａ）の計算は、バスマスタ制御部２１から出力される時間減算信号がアサートされる毎に行われる。この計算は、転送量初期値レジスタ２７の初期値Ｄｉ１、残り転送量レジスタ２５の残り転送量Ｄｒ１、転送時間初期値レジスタ２６の初期値Ｔｉ１、残り転送時間レジスタ２４の残り転送時間値Ｔｔ１を用いて、
ｒａ＝（Ｄｉ１−Ｄｒ１）／（Ｔｉ１−Ｔｔ１）・・・（式６）
で計算される。
【００４３】
なお、式６は、計時手段としてのタイマ３４のカウント値Ｃ１を用いて、
ｒａ＝（Ｄｉ１−Ｄｒ１）／Ｃ１・・・（式７）
と表すこともできる。これは、「Ｔｉ１−Ｔｔ１」がデータ転送開始からの経過時間を表すからである。
【００４４】
なお、比較部３２は、目標平均転送レート格納部３１に格納された目標平均転送レート（ｒ１）の値と、時間減算信号がアサートされる毎に転送レート算出部３０が算出する、実際の平均転送レート（ｒａ）との比較を行う。比較結果は、残り時間再計算部３３へ出力する。
【００４５】
続くステップＳ６０６において、残り時間再計算部３３は、残り転送時間レジスタ２４、残り転送量レジスタ２５、転送時間初期値レジスタ２６、転送量初期値レジスタ２７、及びタイマ３４の値から、再計算残り時間（Ｔｒ）を算出する。それと共に、再計算残り時間（Ｔｒ）を採用した場合に削減される残り時間量削減量（Ｔｒｄ）を算出する。
【００４６】
ステップＳ６０６における再計算残り時間Ｔｒ及び残り時間量削減量Ｔｒｄの計算は、タイマ３４の値を参照しながら、再計算周期レジスタ１５の値に基づく一定周期で行われる。ここで、再計算周期レジスタ１５は、残り時間再計算部３３において、デッドラインの再計算を行う一定周期を設定するレジスタである。本実施形態においては、設定できる周期の最小単位は１μ秒である。
【００４７】
タイマ３４は、バスマスタ制御部２１から出力されるロード信号によって初期化される。また、バスマスタ制御部２１から出力される時間減算信号のアサート回数をカウントすることにより、データ転送開始からの経過時間をカウントし、残り時間再計算部３３へ出力する。時間減算信号は、上述のとおり１μ秒毎にアサートされるため、タイマ３４は、転送開始からの時間を１μ秒単位にカウントするタイマとして動作する。
【００４８】
再計算残り時間（Ｔｒ）の計算式は、
Ｔｒ＝（Ｄｒ１／Ｄｉ１）×Ｔｉ１・・・（式８）
で表される。図５の場合を考えると、Ｄｒ１がｍ１’に、Ｄｉ１がｍ１に、また、Ｔｉ１がｔ１に相当する。即ち、式８は、式４からｔａを減じた（ｔ１'−ｔａ）に対応する。また、式８に基づくＴｒは、目標平均転送レートｒ１で、残りのデータＴａ１を転送した場合に要する時間を表していると考えることもできる。
【００４９】
これに対し、実際の平均転送レートｒａにて転送した結果の残り時間は、残り転送時間レジスタ２４に格納されているＴｔ１である。即ち、実際の残り時間（第１の残り時間）Ｔｔ１と、理論的に求まる再計算残り時間（第２の残り時間）Ｔｒとの差分情報が、時間量削減量Ｔｒｄに相当する。よって、時間量削減量Ｔｒｄの計算式は、
Ｔｒｄ＝Ｔｔ１−Ｔｒ・・・（式９）
で表される。
【００５０】
ここで、再計算周期レジスタ１５は、残り時間再計算部３３において、デッドラインの再計算を行う周期を設定するレジスタである。本実施形態においては、設定できる周期の最小単位は１μ秒である。タイマ３４は、バスマスタ制御部２１から出力されるロード信号によって初期化され、バスマスタ制御部２１から出力される時間減算信号のアサート回数をカウントすることにより、データ転送開始からの時間をカウントし、残り時間再計算部３３へ出力する。時間減算信号は、上述のとおり１μ秒毎にアサートされるため、タイマ３４は、転送開始からの時間を１μ秒単位にカウントするタイマとして動作する。
【００５１】
続くステップＳ６０７において、残り時間再計算部３３は、再計算残り時間Ｔｒと残り転送時間レジスタ２４の残り転送時間値Ｔｔ１とを比較する。比較の結果、再計算残り時間Ｔｒが残り転送時間値Ｔｔ１よりも小さい（Ｔｒ＜Ｔｔ１）場合は（ステップＳ６０７において「ＹＥＳ」）、ステップＳ６０８に移行する。このとき残り時間再計算部３３は、残り転送時間レジスタ２４及び時間量削減量格納レジスタ３５に対して再計算値ロード信号をアサートする。なお、Ｔｒ＜Ｔｔ１が成立する場合とは、デッドラインを前倒しできる場合に相当する。また、再計算残り時間Ｔｒが残り転送時間値Ｔｔ１以上（Ｔｒ≧Ｔｔ１）の場合は（ステップＳ６０７において「ＮＯ」）、ステップＳ６０９に移行する。
【００５２】
ステップＳ６０８において、残り転送時間レジスタ２４は、再計算値ロード信号に応じて再計算残り時間Ｔｒにより、格納している残り転送時間値Ｔｔ１の値を更新する。即ち、残り転送時間値Ｔｔ１が時間量削減量Ｔｒｄ分だけ削られることとなる。ステップＳ６０８では、この残り転送時間レジスタ２４での更新に対応して、時間量削減量格納レジスタ３５の値も更新される。時間量削減量格納レジスタ３５では、既に保持している値に残り時間再計算部３３から取得したＴｒｄを加算することにより更新を行う。これにより、随時算出される削減量が積算されていくこととなる。
【００５３】
残り時間再計算部３３において、再計算残り時間Ｔｒが残り転送時間値Ｔｔ１よりも小さい場合のみ、残り転送時間レジスタ２４及び時間量削減量格納レジスタ３５を更新する理由は、以下のとおりである。
【００５４】
まず、各バスマスタが要求する帯域の和が小さい状態であれば、再計算値（Ｔｒ）は残り転送時間レジスタ２４の値（Ｔｔ１）よりも小さくなり、デッドラインを前倒しできる。しかし、各バスマスタが要求する帯域の和が大きい状態の時に再計算を行うと、実際の平均転送レートｒａが目標平均転送レートｒ１を下回るために、再計算値（Ｔｒ）が残り転送時間レジスタ２４の値（Ｔｔ１）よりも大きくなってしまう。この場合の再計算値を残り転送時間レジスタ２４に反映させれば、デッドラインが後ろ方向に再設定されてしまう。即ち、一旦行ったデッドラインの前倒しがキャンセルされてしまう場合がある。さらに最悪の場合は、再設定される値が、転送開始時のデッドラインの初期値（図１１においてデータｍ１を転送する場合の時刻ｔ１）を超えてしまう場合も考えられる。
【００５５】
このような状況を防止するため、残り時間再計算部３３は、Ｔｒ＜Ｔｔ１が成立する場合にのみ、ステップＳ６０８において残り転送時間レジスタ２４及び時間量削減量格納レジスタ３５を更新することとしている。
【００５６】
続くステップＳ６０９では、１回のデータ転送が終了したか否かを判定する。もし終了した場合には（ステップＳ６０９において「ＹＥＳ」）、本処理を終了する。一方、終了していない場合には（ステップＳ６０９において「ＮＯ」）、ステップＳ６１０に移行する。
【００５７】
ステップＳ６１０では、残り時間再計算部３３が残り転送時間レジスタ２４のＴｔ１の値が０となったか否かを判定する。Ｔｔ１＝０の場合とは、再設定した（即ち前倒しした）デッドラインをバスマスタ装置１が守れなかった場合に相当する。もし、Ｔｔ１＝０の場合には（ステップＳ６１０において「ＹＥＳ」）、ステップＳ６１１に移行する。
【００５８】
ステップＳ６１１では、残り転送時間レジスタ２４のＴｔ１の値を、転送時間初期値レジスタ２６の値Ｔｉ１に基づき再設定する。即ち、現在時刻とＴｉ１との差分を残り転送時間値Ｔｔ１として残り転送時間レジスタ２４に設定する。このように、デッドラインを超えた場合は、残り時間を初期値に基づいてリセットする。これにより、各バスマスタが要求する帯域の和が小さい状態が長時間続いたことによりデッドラインが前倒しされ過ぎた場合にも、適切なデッドラインの再計算が行うことが可能となる。なお、残り転送時間レジスタ２４の再設定に伴い、時間量削減量Ｔｒｄがリセットされるので、残り時間再計算部３３は、時間量削減量格納レジスタ３５をリセットする。その後、ステップＳ６０５に戻って処理を継続する。
【００５９】
以上のようにして、１回のデータ転送が終了すると、時間量削減量格納レジスタ３５に最終的な時間量削減量が格納され、次回のデータ転送に利用される。即ち、次回のデータ転送を開始する場合にステップＳ６０３において「転送時間初期値レジスタ２６の値＋時間量削減量格納レジスタ３５の値」が残り転送時間レジスタ２４に格納される。
【００６０】
これにより、直前のデータ転送において削減した時間量（即ちマージン）が次の転送に加算され、次の転送の実質的な目標平均レート（図１１における、再計算後の目標平均レートｒ２'と等価）を下げることが可能となる。よって、次の転送期間中に他のバスマスタに割当てられる帯域を、マージン分については確保することが可能となる。
【００６１】
以下、具体的に本実施形態に対応する処理によりデッドライン保証が可能となる場合を説明する。各バスマスタのデータ転送条件は以下のとおりである。
【００６２】
ｍａｓｔｅｒ０：２１０００サイクル以内に８１９２ワードの転送を２回保証。１回目の転送は１サイクル目に開始し、８ビートバースト転送が受信可能なバススレーブに対して転送する。２回目の転送は１回目の転送完了直後に開始し、シングル転送のみ受信可能なバススレーブに対して転送（２回分の転送のデッドラインは２１０００サイクル目。１回目の転送のデッドラインは、仮に１０５００サイクル目とした）。
【００６３】
ｍａｓｔｅｒ１：１２００サイクル以内に１０００ワードの転送を保証。１９８００サイクル目に転送を開始し、シングル転送のみ受信可能なバススレーブに対して転送（転送のデッドラインは２１０００サイクル目）。
【００６４】
ｍａｓｔｅｒ２：１回目の転送は１３０００サイクル以内に２０４８ワードの転送を保証。２０００サイクル目に転送を開始し、シングル転送のみ受信可能なバススレーブに対して転送（１回目の転送のデッドラインは１５０００サイクル目）。２回目の転送は７０００サイクル以内に２０４８ワードの転送を保証。１５０００サイクル目に開始し、シングル転送のみ受信可能なバススレーブに対して転送（２回目の転送のデッドラインは２２０００サイクル目）。
【００６５】
上記のｍａｓｔｅｒ１の転送は、転送データ量は他のバスマスタに比べて少ないが、本バスシステムの約８３％のバンド幅を要する転送である。即ち、１サイクルあたり１ワードを転送できるバスシステムにおいて、平均１．２サイクルあたり１ワードの転送を行うことが要求される転送である。このｍａｓｔｅｒ１のデッドラインが、ｍａｓｔｅｒ０の２回目の転送のデッドラインと重なる場合、ｍａｓｔｅｒ０、ｍａｓｔｅｒ１ともにデッドラインを保証できなくなるおそれがある。
【００６６】
図７は、本実施形態を適用せずにデッドラインが保証できなかった場合を示すグラフであり、図８は、図７の２０００１サイクルから２２０００サイクル目を拡大したグラフである。
【００６７】
さらに図９は、上記の転送条件に対して本発明を適用し、デッドライン保証が可能となった例を示すグラフである。図９においては、他のバスマスタに比べて転送データ量の多い（即ち、他のバスマスタに比べてバスの占有時間の長い）ｍａｓｔｅｒ０にのみ本発明を適用し、かつ、ｍａｓｔｅｒ０のデッドラインの再計算周期を１μ秒と設定している。
【００６８】
ｍａｓｔｅｒ０に対して本発明を適用することにより、図７及び図８においてはｍａｓｔｅｒ０の１回目の転送完了が１０２２５サイクル目であるのに対して、図９においては９４０９サイクル目に前倒しされている。これにより、図９においてはｍａｓｔｅｒ０の２回目の転送が１９５２０サイクル目に完了する。よって、図７及び図８において起きていた、ｍａｓｔｅｒ０とｍａｓｔｅｒ１のバスの競合が回避され、ｍａｓｔｅｒ０、ｍａｓｔｅｒ１ともにデッドラインの保証が可能となっている。
【００６９】
以上のように、本実施形態によれば、各バスマスタに対して適切なデッドライン保証を行うことが可能となる。
【００７０】
［第２の実施形態］
次に、発明の第２の実施形態について説明する。図３は、第２の実施形態に対応する、バスマスタ装置１を用いた、情報処理システムの他の構成の一例を示すブロック図である。情報処理システム２００は、上位階層バス５０、ＣＰＵ５１、アービタ５２、バスマスタ５３及び５４、バススレーブ５５及び５６、下位階層バス６０、アービタ６１、バスマスタ６２及び６３、バススレーブ６４から構成される。このうち、ＣＰＵ５１は図２のＣＰＵ４１と同一であり、アービタ５２及び６１は、バスマスタのチャネル数が異なる点以外は、図２のアービタ４２と同じである。また、バスマスタ５３、５４、６２及び６３は、各々図１のバスマスタ装置１に相当し、バススレーブ５５、５６及び６４は、図２のバススレーブ４６及び４７と同一である。
【００７１】
第１の実施形態における図２との相違点は、上位階層バス５０と下位階層バス６０の２つにバスが階層化され、両バスがバスブリッジにより結合されている点である。上位階層バス５０においてはアービタ５２がバス調停を行い、下位階層バス６０においてはアービタ６１がバス調停を行う。また、バス階層を跨いで転送を行う場合は、バスブリッジ５６を介して行う。
【００７２】
バス階層を跨いだ転送の例として、下位階層バス６０上のバスマスタ６２から上位階層バス５０上のバススレーブ５５へデータ転送を行う場合について説明する。
【００７３】
まずバスマスタ６２は、アービタ６１に対して、転送要求優先度信号と共に転送要求を行う。アービタ６１によって転送許可を与えられると、バスマスタ６２は、バスブリッジ５６を介してバススレーブ５５に対して転送を開始する。
【００７４】
これを受けてバスブリッジ５６は、アービタ５２に対して、バスマスタ６２が出力した転送要求優先度信号値と共に転送要求を行う。即ち、このときバスブリッジ５６は、上位階層バス５０上のバスマスタの１つとして動作し、かつ、転送要求優先度信号は下位階層バス６０上のバスマスタが出力した値を継承する。アービタ５２によって上位階層バス５０における転送許可を与えられると、バスブリッジ５６はバススレーブ５５に対する転送を行い、データ転送動作が終了する。
【００７５】
アービタ５２及び６１の調停動作は、第１の実施形態と同様であり、転送要求優先度信号の値がより大きいバスマスタを優先的に転送許可を与える。また、転送要求優先度信号の値が最大のバスマスタが複数ある場合は、最大であるバスマスタを対象にラウンドロビン方式でバス調停を行う。
【００７６】
以上のような構成及び方式を採ることにより、階層化されたバスシステムにおいても、各バスマスタに対して適切なデッドライン保証を行うことが可能となる。
【００７７】
［その他の実施形態］
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【００７８】
また、本発明の目的は、前述した機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムに供給し、そのシステムがプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現し、そのプログラムコードを記憶した記憶媒体は本発明を構成する。また、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した機能が実現される場合も含まれる。
【００７９】
さらに、以下の形態で実現しても構わない。すなわち、記憶媒体から読み出されたプログラムコードを、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。そして、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行って、前述した機能が実現される場合も含まれる。
【００８０】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【００８１】
【図１】発明の実施形態に対応するバスマスタ装置の構成例を示すブロック図である。
【図２】発明の第１の実施形態に対応する、バスマスタ装置１を用いた情報処理システムの構成の一例を示すブロック図である。
【図３】発明の第２の実施形態に対応する、情報処理システムの構成の一例を示すブロック図である。
【図４】本発明の原理を説明するための図である。
【図５】本発明の原理を更に説明するための図である。
【図６】発明の第１の実施形態に対応する処理の一例を示すフローチャートである。
【図７】発明の実施形態を適用せずに行った調停アルゴリズムの実行結果を示すグラフである。
【図８】発明の実施形態を適用せずに行った調停アルゴリズムの実行結果を部分的に拡大して示したグラフである。
【図９】図７及び図８の転送条件に対して本発明を適用し、デッドライン保証が可能となった例を示すグラフである。
【図１０】従来例に対応する調停アルゴリズムの実行結果を示すグラフである。
【符号の説明】
【００８２】
１：バスマスタ
１０：バススレーブＩ／Ｆ部
１１：転送時間レジスタ
１２：転送量レジスタ
１３：転送開始レジスタ
１４：転送能力レジスタ
１５：再計算周期レジスタ
２０：バスマスタＩ／Ｆ部
２１：バスマスタ制御部
２２：データ処理部
２３：転送要求度計算部
２４：残り転送時間レジスタ
２５：残り転送量レジスタ
２６：転送時間初期値レジスタ
２７：転送量初期値レジスタ
３０：転送レート算出部
３１：目標平均転送レート格納部
３２：比較部
３３：残り時間再計算部
３４：タイマ
３５：時間量削減量格納レジスタ
【図１】
2008269176.tif 000003
【図２】
2008269176.tif 000004
【図３】
2008269176.tif 000005
【図４】
2008269176.tif 000006
【図５】
2008269176.tif 000007
【図６】
2008269176.tif 000008
【図７】
2008269176.tif 000009
【図８】
2008269176.tif 000010
【図９】
2008269176.tif 000011
【図１０】
2008269176.tif 000012