説明

バスマスタ装置、情報処理システム、バスマスタ装置の制御方法並びにコンピュータプログラム

【課題】適切なデッドライン保証を行えるバスマスタ装置を提供する。
【解決手段】バススレーブ装置に対してバスを介してデータ転送を行うバスマスタ装置において、残り転送時間格納手段がデータ転送手段によりデータ転送を完了させるまでの残り時間を示す第1の残り時間を格納する。算出手段が、残り転送量、目標時間、及び、目標転送量に基づいて、第2の残り時間を算出手段で算出し、第2の残り時間が第1の残り時間より小さい場合に、残り転送時間格納手段における前記第1の残り時間を前記第2の残り時間により更新する。また、前記第1の残り時間と前記第2の残り時間との差分情報を、時間量削減量格納手段に格納する。データ転送手段による目標転送量のデータ転送が完了した直後に更なるデータ転送を行う場合は、残り転送時間格納手段の初期値として、更なる目標時間と差分情報との和が格納される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、バスマスタ装置、情報処理システム、バスマスタ装置の制御方法並びにコンピュータプログラムに関する。
【背景技術】
【0002】
バス上に複数のバスマスタが接続されており、各バスマスタがバスに接続されたバススレーブに対してデータ転送を行う場合、バスマスタは、まずバス上のアービタ(バス調停器)に対して転送要求を出力する。そして、この転送要求に対して、アービタから転送許可を与えられると、バスマスタはデータ転送を開始するのが一般的である。その際のアービタの調停アルゴリズムとしては、固定プライオリティ方式やラウンドロビン方式が一般的である。
【0003】
しかしながら、固定プライオリティ方式やラウンドロビン方式といった調停アルゴリズムによるバス調停においては、各バスマスタがデータ転送を行う際に要求するデッドラインを保証することが困難な場合がある。
【0004】
例えば、ある期間内に各バスマスタが要求する「平均帯域の和」が、バスの割当て可能な範囲内であったとしても、該期間の一部の期間に着目すると、各バスマスタが要求する帯域の和が、バスの割当て可能な帯域を超えてしまうことが起り得る。
【0005】
この場合、固定プライオリティ方式やラウンドロビン方式といった単純な調停アルゴリズムでは、デッドライン保証という観点から適切なバス調停が行われないという問題点がある。
【0006】
図10は、ラウンドロビン方式の調停アルゴリズムを採用してバス調停を行った場合の転送データ量と経過時間との関係を示したグラフである。この図10のグラフには、デッドライン保証ができていないケースが含まれている。
【0007】
図10の例では、1サイクルあたり1ワード(1ワードは4バイトとする)を転送できるバスシステムにおいて、3つのバスマスタが合計896ワードを転送する場合を想定している。また、master0とmaster2とについては、800サイクル目をデッドラインとし、master1については1100サイクル目をデッドラインとして考える。更に、各バスマスタのデータ転送量は、master0が512ワード、master1が256ワード、master2が128ワードとしている。
【0008】
図10の例では、単純なラウンドロビン方式によるバス調停を行った結果、master0の転送完了がデッドラインである800サイクル目を越えてしまい、デッドライン保証ができていない。
【0009】
また、特許文献1には、基準より遅れているデバイスに対して、優先的にバスを割り当てるバス調停装置が記載されている。この特許文献1のバス調停装置は、この割り当てのために、各デバイスに要求されている転送レートに基づいたクロックで動作する基準カウンタと、実際に転送したデータ量を計測する転送データカウンタとを設ける。そして、バス調停時にこれら2つのカウンタの値を比較している。
【0010】
さらに、バスブリッジを用いる等して階層化されたバスの場合を考える。この場合も、各階層ごとに固定プライオリティ方式やラウンドロビン方式といった単純な調停アルゴリズムによってバス調停を行えば、下位階層に接続されたバスマスタが、上位階層において必ずしも優先的にバス権を取得できない。よって、固定プライオリティ方式やラウンドロビン方式では、階層化されたバスの場合においても、デッドライン保証が困難であるという問題点がある。
【特許文献1】特開平10−289203号公報
【発明の開示】
【発明が解決しようとする課題】
【0011】
上記のように、従来のバスシステムでは、適切なデッドライン保証を行うことが困難であった。
【0012】
本発明の目的は、上記の点を鑑み、より適切なデッドライン保証を行えるバスシステムを提供することにある。
【課題を解決するための手段】
【0013】
上記課題を解決するための本発明は、
バススレーブ装置に対してバスを介してデータ転送を行うバスマスタ装置であって、
目標時間までに目標転送量のデータ転送を行うデータ転送手段と、
前記データ転送手段によりデータ転送を完了させるまでの残り時間を示す第1の残り時間を格納する残り転送時間格納手段と、
前記データ転送手段によるデータ転送の転送レートで、前記データ転送手段によるデータ転送が完了するまでの残り時間を示す第2の残り時間を算出する算出手段と、
前記第2の残り時間が前記第1の残り時間より小さい場合に、前記残り転送時間格納手段における前記第1の残り時間を前記第2の残り時間により更新する更新手段と
を備え、
前記データ転送手段による前記目標転送量のデータ転送が完了した後に更なるデータ転送を行う場合に、前記第1の残り時間と前記第2の残り時間との差分に基づき、前記残り転送時間格納手段の初期値を設定することを特徴とする。
【発明の効果】
【0014】
本発明によれば、適切なデッドライン保証を行えるバスシステムを提供することができる。
【発明を実施するための最良の形態】
【0015】
以下、添付する図面を参照して、発明の実施形態を説明する。
【0016】
[第1の実施形態]
図1は、本発明によるバスマスタ装置の構成の一例を示すブロック図である。図1において、バスマスタ装置1は、バススレーブI/F部10、転送時間レジスタ11、転送量レジスタ12、転送開始レジスタ13、転送能力レジスタ14、再計算周期レジスタ15を備える。また、バスマスタI/F部20、バスマスタ制御部21、データ処理部22、転送要求度計算部23、残り転送時間レジスタ(残り転送時間格納部)24、残り転送量レジスタ(残り転送量格納部)25、転送時間初期値レジスタ26を備える。更に、転送量初期値レジスタ27、転送レート算出部30、目標平均転送レート格納部31、比較部32、残り時間再計算部33、タイマ34、時間量削減量格納レジスタ35から構成される。なお、バススレーブI/F部10及びバスマスタIF部20は、バス0に接続される。
【0017】
また図2は、バスマスタ装置1を用いた情報処理システムの構成の一例を表すブロック図である。情報処理システム100は、バス40、CPU41、アービタ42、バスマスタ43、44及び45、バススレーブ46及び47から構成される。このうち、バスマスタ43、44及び45は、各々、図1のバスマスタ装置1に対応する構成を有する。また、バス40は、図1のバス0に対応する。
【0018】
次に、本実施形態に対応するバスマスタ装置1の概要を説明する。バススレーブI/F部10は、バス0上のCPU(図2のCPU41に相当)からのレジスタアクセスを受付けるインターフェースである。転送時間レジスタ11は、バスマスタ装置1が行うデータ転送に要求される転送時間(即ち、転送開始から転送終了までの時間の最大値)を1μ秒単位で設定するレジスタである。また、転送量レジスタ12は、該データ転送の転送量をバイト単位で設定するレジスタである。またバスマスタ装置1は、転送開始レジスタ13に'1'が書き込まれることによってデータ転送を開始し、転送が完了すると転送開始レジスタ13を自動的にクリアする。
【0019】
転送能力レジスタ14は、バスマスタ装置1の転送能力を設定する6ビットのレジスタで、バスマスタ装置1が単独でデータ転送を行った場合の(即ち、バスマスタ装置1のみに連続してバス権許可が与えられ続けた場合の)平均転送能力を設定する。ここで、この平均転送能力は、ワード/サイクルを単位として設定される。転送能力レジスタ14の設定範囲は0.01325(2の−5乗)から1(2の0乗)までである。なお、ハードウエア的には1を超える設定が可能であるが、1サイクルあたり1ワードを超えるデータ転送は、本実施形態のバスシステムにおいては不可能なため、上限を1として使用している。
【0020】
バスマスタI/F部20は、バス0上のバススレーブ装置(図2のバススレーブ46または47に相当)と、データ処理部22との間のデータ転送を行うためのインターフェースである。バスマスタ制御部21は、バスマスタI/F部20、転送開始レジスタ13、残り転送時間レジスタ24及び残り転送量レジスタ25を制御する。データ処理部22は、転送データを生成または受信する部分で、例えば画像処理を行うブロックや、外部との通信を行うインターフェースブロックなど、バスマスタ装置1に要求される機能によって異なる。
【0021】
次に、バスマスタ装置1の基本的な動作について説明する。バス0上のCPUから転送開始レジスタ13に'1'が書き込まれると、バスマスタ制御部21は、残り転送時間レジスタ24及び残り転送量レジスタ25に対してロード信号をアサートする。これにより、転送時間レジスタ11の値が残り転送時間レジスタ24にコピーされると共に、転送量レジスタ12の値が残り転送量レジスタ25にコピーされる。その後バスマスタ制御部21は、残り転送時間レジスタ24に対しては1μ秒ごとに時間減算信号をアサートし、残り転送量レジスタ25に対してはデータ転送が行われる度に転送されたバイト数分の転送量減算信号をアサートする。
【0022】
例えば、本実施形態においては、バス0における1ワードは4バイトである。このため、1ワードの転送が行われた場合には転送量減算信号として'4'が、ハーフワード転送の場合には'2'が、バイト転送の場合には'1'がアサートされ、残り転送量レジスタ25は、自身の値から転送量減算信号の値を減算する。以上により、残り転送時間レジスタ24及び残り転送量レジスタ25の値が減算され、残り転送時間及び残り転送量の値が適切に更新される。
【0023】
データ処理部22も、転送開始レジスタ13に'1'が書き込まれることによって起動される。データが送信もしくは受信可能になると、データ処理部22はバスマスタ制御部21に対してデータレディ信号をアサートする。データレディ信号のアサートを受けて、バスマスタ制御部21は、バス0上のアービタ(図2のアービタ42に相当する)に対して転送要求信号をアサートするよう、バスマスタI/F部20を制御する。
【0024】
一方、転送要求度計算部23は、残り転送時間レジスタ24、残り転送量レジスタ25及び転送能力レジスタ14の値に基づいて、データ転送の優先度情報(P1)を計算する。本実施形態における優先度情報P1の計算式は以下の式1のように表される。式1では、残り転送量レジスタ25における残りデータ量をDr1、残り転送時間レジスタ24の残り時間をTt1、転送能力レジスタ14の転送能力をTc1としている。
【0025】
P1=(Dr1/Tt1)/Tc1・・・(式1)
この式1により、同一の残りデータ量(Dr1)に対しては、残り時間(Tt1)が少なくなるほど転送要求の優先度情報(P1)が大きくなる。一方、同一の残り時間(Tt1)に対しては、残りデータ量(Dr1)が多くなるほど優先度情報(P1)は大きくなる。
【0026】
さらに、同一の「残りデータ量(Dr1)/残り時間(Tt1)」の値に対しては、転送能力(Tc1)の低いバスマスタほど優先度情報(P1)は大きくなる。バスマスタI/F部20はアービタ42に対して、転送要求度計算部23における優先度情報P1の計算結果を転送要求優先度信号として出力する。転送要求優先度信号のアサートタイミングは、転送要求信号のアサート開始と同一サイクルで、以降、転送が完了するまで値を保持する。
【0027】
次に、本発明の原理について説明する。図4は、1つのバスマスタ装置1が直列に2回のデータ転送を行う動作を説明するグラフである。同図においてバスマスタ装置1は、総目標転送量{m1+m2}ワードのデータ転送を目標時間{t1+t2}秒の間に行うことが要求されている。1回目の目標時間であるデッドラインt1は「仮のデッドライン」であり、{t1+t2}秒の期間に{m1+m2}ワードのデータデータ転送が完了していれば、t1は必ずしもデッドラインとして保証する必要がない。
【0028】
目標転送量m1と目標転送量m2のデータは、各々異なるバススレーブに転送される。転送能力a1は、転送量m1のデータを転送する際の、理論上の最高転送レート(即ち、バスマスタ装置1がt1の期間バスを占有することができた場合の転送レート)を示している。また、転送能力a2は、転送量m2のデータを転送する際の、理論上の最高転送レート(即ち、バスマスタ装置1がt2の期間バスを占有することができた場合の転送レート)を示している。転送能力a1と転送能力a2の傾きが異なる理由は、転送先のバススレーブが受信可能なバースト長が異なるためである。
【0029】
目標平均転送レートr1はm1/t1と等しく、転送量m1のデータをt1の期間に平均的に転送できたと仮定した場合の転送状況を示す直線である。同様に、目標平均転送レートr2はm2/t2と等しく、転送量m2のデータをt2の期間に平均的に転送できたと仮定した場合の転送状況を示す直線である。実際の転送状況raは、実際の転送状況の一例を示す線である。
【0030】
図5は、本発明の原理を説明するためのグラフである。図5では、時刻0から転送量m1のデータ転送を開始し、時刻taに達した状態を示している。また、図5において、転送量m1及びm2、期間t1及びt2、転送能力a1及びa2、目標平均転送レートr1及びr2は、図4と同じ定義である。図5では、時刻taにおける残りのデータ量がm1'であることを示している。さらに、時刻taまでの実際の平均転送レートr1'の傾きが目標平均転送レートr1の傾きよりも大きいことから、実際の平均転送レートr1'は目標平均転送レートr1よりも大きいことを示している。
【0031】
本実施形態では、データ転送中に一定周期でデッドラインを動的に再計算すると共に、再計算を行う際に目標平均転送レートを用いて新しいデッドラインを再計算する。
【0032】
例えば、図5の時刻taにおいてデッドラインを再計算する場合、「残りの転送量m1'を目標平均転送レートr1で転送できる」と仮定する。
【0033】
再計算後のデッドラインをt1'とすると、t1'の計算式は、
m1/t1=m1'/(t1'−ta)・・・(式2)
であることから、
t1'−ta=(m1'/m1)×t1・・・(式3)
と式2を変形し、
t1'=(m1'/m1)×t1+ta・・・(式4)
となる。
【0034】
t1'が新たなデッドラインとして設定されると、前倒しされた時間{t1−t1'}の分だけ転送量m2のデータ転送に費やせる期間が長くなる。即ち、時間{t1−t1'}がマージンとなる。これにより、図5において再計算後の目標平均レートr2'の傾きが、目標平均レートr2の傾きよりも小さくなる。
【0035】
このように、本実施形態では、稼げる期間にマージンを稼いでおき、転送量m1のデータ転送を前倒しする。これによって、将来各バスマスタが要求する帯域の和が、バスが供給できる帯域を一時的に超えてしまう状況が起った場合に備えて、他のバスマスタに割当てられる帯域を確保することができる。
【0036】
次に、本実施形態に対応する、バスマスタ装置1におけるデッドラインの再計算動作の処理の一例を図6のフローチャートを参照して説明する。図1において、デッドラインの再計算動作に特に関わる部分は、再計算周期レジスタ15、転送時間初期値レジスタ26、転送量初期値レジスタ27、転送レート算出部30、目標平均転送レート格納部31、比較部32、残り時間再計算部33、タイマ34、時間量削減量格納レジスタ35である。図6における処理は、以下の説明において登場する各構成部が対応する処理プログラムを実行することにより実現される。
【0037】
図6において、まず、ステップS601では、バス0上のCPUから転送開始レジスタ13に'1'が書き込まれると、バスマスタ制御部21がロード信号をアサートする。これにより、ステップS602において、転送時間レジスタ11の値が転送時間初期値レジスタ26にコピーされると共に、転送量レジスタ12の値が転送量初期値レジスタ27にコピーされる。
【0038】
次に、ステップS603において、転送時間初期値レジスタ26の値Ti1が、残り転送時間レジスタ24に転送される。また、転送量初期値レジスタ27の値Di1が、残り転送量レジスタ25の値Dr1として格納される。なお、ステップ103の処理は、データ転送開始時の初期化処理の一環として行われるものであって、データ転送が開始されて時間が経過するに従い、Tt1及びDr1の値は初期化値から更新されていくものである。すなわち、残り転送時間レジスタ24の値Ti1、残り転送量レジスタ25の値Dr1は、更新される。
【0039】
ステップS604及びステップS605において、転送レート算出部30は、目標平均転送レート(r1)を、実際の平均転送レート(ra)を算出する。この算出は、残り転送時間レジスタ24、残り転送量レジスタ25、転送時間初期値レジスタ26及び転送量初期値レジスタ27の値に基づいて行うことができる。
【0040】
具体的に、ステップS604における目標平均転送レート(r1)の計算は、バスマスタ制御部21から出力されるロード信号がアサートされた次のサイクル行われる。次のサイクルとは、即ち、残り転送時間レジスタ24、残り転送量レジスタ25、転送時間初期値レジスタ26及び転送量初期値レジスタ27が、ロード信号のアサートによって更新されたサイクルに相当する。
【0041】
この計算は、転送量初期値レジスタ27の初期値Di1と、転送時間初期値レジスタ26の初期値Ti1とを用いて、
r1=Di1/Ti1・・・(式5)
で計算される。計算された目標平均転送レートは、目標平均転送レート格納部31に格納される。
【0042】
また、ステップS605における実際の平均転送レート(ra)の計算は、バスマスタ制御部21から出力される時間減算信号がアサートされる毎に行われる。この計算は、転送量初期値レジスタ27の初期値Di1、残り転送量レジスタ25の残り転送量Dr1、転送時間初期値レジスタ26の初期値Ti1、残り転送時間レジスタ24の残り転送時間値Tt1を用いて、
ra=(Di1−Dr1)/(Ti1−Tt1)・・・(式6)
で計算される。
【0043】
なお、式6は、計時手段としてのタイマ34のカウント値C1を用いて、
ra=(Di1−Dr1)/C1・・・(式7)
と表すこともできる。これは、「Ti1−Tt1」がデータ転送開始からの経過時間を表すからである。
【0044】
なお、比較部32は、目標平均転送レート格納部31に格納された目標平均転送レート(r1)の値と、時間減算信号がアサートされる毎に転送レート算出部30が算出する、実際の平均転送レート(ra)との比較を行う。比較結果は、残り時間再計算部33へ出力する。
【0045】
続くステップS606において、残り時間再計算部33は、残り転送時間レジスタ24、残り転送量レジスタ25、転送時間初期値レジスタ26、転送量初期値レジスタ27、及びタイマ34の値から、再計算残り時間(Tr)を算出する。それと共に、再計算残り時間(Tr)を採用した場合に削減される残り時間量削減量(Trd)を算出する。
【0046】
ステップS606における再計算残り時間Tr及び残り時間量削減量Trdの計算は、タイマ34の値を参照しながら、再計算周期レジスタ15の値に基づく一定周期で行われる。ここで、再計算周期レジスタ15は、残り時間再計算部33において、デッドラインの再計算を行う一定周期を設定するレジスタである。本実施形態においては、設定できる周期の最小単位は1μ秒である。
【0047】
タイマ34は、バスマスタ制御部21から出力されるロード信号によって初期化される。また、バスマスタ制御部21から出力される時間減算信号のアサート回数をカウントすることにより、データ転送開始からの経過時間をカウントし、残り時間再計算部33へ出力する。時間減算信号は、上述のとおり1μ秒毎にアサートされるため、タイマ34は、転送開始からの時間を1μ秒単位にカウントするタイマとして動作する。
【0048】
再計算残り時間(Tr)の計算式は、
Tr=(Dr1/Di1)×Ti1・・・(式8)
で表される。図5の場合を考えると、Dr1がm1’に、Di1がm1に、また、Ti1がt1に相当する。即ち、式8は、式4からtaを減じた(t1'−ta)に対応する。また、式8に基づくTrは、目標平均転送レートr1で、残りのデータTa1を転送した場合に要する時間を表していると考えることもできる。
【0049】
これに対し、実際の平均転送レートraにて転送した結果の残り時間は、残り転送時間レジスタ24に格納されているTt1である。即ち、実際の残り時間(第1の残り時間)Tt1と、理論的に求まる再計算残り時間(第2の残り時間)Trとの差分情報が、時間量削減量Trdに相当する。よって、時間量削減量Trdの計算式は、
Trd=Tt1−Tr・・・(式9)
で表される。
【0050】
ここで、再計算周期レジスタ15は、残り時間再計算部33において、デッドラインの再計算を行う周期を設定するレジスタである。本実施形態においては、設定できる周期の最小単位は1μ秒である。タイマ34は、バスマスタ制御部21から出力されるロード信号によって初期化され、バスマスタ制御部21から出力される時間減算信号のアサート回数をカウントすることにより、データ転送開始からの時間をカウントし、残り時間再計算部33へ出力する。時間減算信号は、上述のとおり1μ秒毎にアサートされるため、タイマ34は、転送開始からの時間を1μ秒単位にカウントするタイマとして動作する。
【0051】
続くステップS607において、残り時間再計算部33は、再計算残り時間Trと残り転送時間レジスタ24の残り転送時間値Tt1とを比較する。比較の結果、再計算残り時間Trが残り転送時間値Tt1よりも小さい(Tr<Tt1)場合は(ステップS607において「YES」)、ステップS608に移行する。このとき残り時間再計算部33は、残り転送時間レジスタ24及び時間量削減量格納レジスタ35に対して再計算値ロード信号をアサートする。なお、Tr<Tt1が成立する場合とは、デッドラインを前倒しできる場合に相当する。また、再計算残り時間Trが残り転送時間値Tt1以上(Tr≧Tt1)の場合は(ステップS607において「NO」)、ステップS609に移行する。
【0052】
ステップS608において、残り転送時間レジスタ24は、再計算値ロード信号に応じて再計算残り時間Trにより、格納している残り転送時間値Tt1の値を更新する。即ち、残り転送時間値Tt1が時間量削減量Trd分だけ削られることとなる。ステップS608では、この残り転送時間レジスタ24での更新に対応して、時間量削減量格納レジスタ35の値も更新される。時間量削減量格納レジスタ35では、既に保持している値に残り時間再計算部33から取得したTrdを加算することにより更新を行う。これにより、随時算出される削減量が積算されていくこととなる。
【0053】
残り時間再計算部33において、再計算残り時間Trが残り転送時間値Tt1よりも小さい場合のみ、残り転送時間レジスタ24及び時間量削減量格納レジスタ35を更新する理由は、以下のとおりである。
【0054】
まず、各バスマスタが要求する帯域の和が小さい状態であれば、再計算値(Tr)は残り転送時間レジスタ24の値(Tt1)よりも小さくなり、デッドラインを前倒しできる。しかし、各バスマスタが要求する帯域の和が大きい状態の時に再計算を行うと、実際の平均転送レートraが目標平均転送レートr1を下回るために、再計算値(Tr)が残り転送時間レジスタ24の値(Tt1)よりも大きくなってしまう。この場合の再計算値を残り転送時間レジスタ24に反映させれば、デッドラインが後ろ方向に再設定されてしまう。即ち、一旦行ったデッドラインの前倒しがキャンセルされてしまう場合がある。さらに最悪の場合は、再設定される値が、転送開始時のデッドラインの初期値(図11においてデータm1を転送する場合の時刻t1)を超えてしまう場合も考えられる。
【0055】
このような状況を防止するため、残り時間再計算部33は、Tr<Tt1が成立する場合にのみ、ステップS608において残り転送時間レジスタ24及び時間量削減量格納レジスタ35を更新することとしている。
【0056】
続くステップS609では、1回のデータ転送が終了したか否かを判定する。もし終了した場合には(ステップS609において「YES」)、本処理を終了する。一方、終了していない場合には(ステップS609において「NO」)、ステップS610に移行する。
【0057】
ステップS610では、残り時間再計算部33が残り転送時間レジスタ24のTt1の値が0となったか否かを判定する。Tt1=0の場合とは、再設定した(即ち前倒しした)デッドラインをバスマスタ装置1が守れなかった場合に相当する。もし、Tt1=0の場合には(ステップS610において「YES」)、ステップS611に移行する。
【0058】
ステップS611では、残り転送時間レジスタ24のTt1の値を、転送時間初期値レジスタ26の値Ti1に基づき再設定する。即ち、現在時刻とTi1との差分を残り転送時間値Tt1として残り転送時間レジスタ24に設定する。このように、デッドラインを超えた場合は、残り時間を初期値に基づいてリセットする。これにより、各バスマスタが要求する帯域の和が小さい状態が長時間続いたことによりデッドラインが前倒しされ過ぎた場合にも、適切なデッドラインの再計算が行うことが可能となる。なお、残り転送時間レジスタ24の再設定に伴い、時間量削減量Trdがリセットされるので、残り時間再計算部33は、時間量削減量格納レジスタ35をリセットする。その後、ステップS605に戻って処理を継続する。
【0059】
以上のようにして、1回のデータ転送が終了すると、時間量削減量格納レジスタ35に最終的な時間量削減量が格納され、次回のデータ転送に利用される。即ち、次回のデータ転送を開始する場合にステップS603において「転送時間初期値レジスタ26の値+時間量削減量格納レジスタ35の値」が残り転送時間レジスタ24に格納される。
【0060】
これにより、直前のデータ転送において削減した時間量(即ちマージン)が次の転送に加算され、次の転送の実質的な目標平均レート(図11における、再計算後の目標平均レートr2'と等価)を下げることが可能となる。よって、次の転送期間中に他のバスマスタに割当てられる帯域を、マージン分については確保することが可能となる。
【0061】
以下、具体的に本実施形態に対応する処理によりデッドライン保証が可能となる場合を説明する。各バスマスタのデータ転送条件は以下のとおりである。
【0062】
master0:21000サイクル以内に8192ワードの転送を2回保証。1回目の転送は1サイクル目に開始し、8ビートバースト転送が受信可能なバススレーブに対して転送する。2回目の転送は1回目の転送完了直後に開始し、シングル転送のみ受信可能なバススレーブに対して転送(2回分の転送のデッドラインは21000サイクル目。1回目の転送のデッドラインは、仮に10500サイクル目とした)。
【0063】
master1:1200サイクル以内に1000ワードの転送を保証。19800サイクル目に転送を開始し、シングル転送のみ受信可能なバススレーブに対して転送(転送のデッドラインは21000サイクル目)。
【0064】
master2:1回目の転送は13000サイクル以内に2048ワードの転送を保証。2000サイクル目に転送を開始し、シングル転送のみ受信可能なバススレーブに対して転送(1回目の転送のデッドラインは15000サイクル目)。2回目の転送は7000サイクル以内に2048ワードの転送を保証。15000サイクル目に開始し、シングル転送のみ受信可能なバススレーブに対して転送(2回目の転送のデッドラインは22000サイクル目)。
【0065】
上記のmaster1の転送は、転送データ量は他のバスマスタに比べて少ないが、本バスシステムの約83%のバンド幅を要する転送である。即ち、1サイクルあたり1ワードを転送できるバスシステムにおいて、平均1.2サイクルあたり1ワードの転送を行うことが要求される転送である。このmaster1のデッドラインが、master0の2回目の転送のデッドラインと重なる場合、master0、master1ともにデッドラインを保証できなくなるおそれがある。
【0066】
図7は、本実施形態を適用せずにデッドラインが保証できなかった場合を示すグラフであり、図8は、図7の20001サイクルから22000サイクル目を拡大したグラフである。
【0067】
さらに図9は、上記の転送条件に対して本発明を適用し、デッドライン保証が可能となった例を示すグラフである。図9においては、他のバスマスタに比べて転送データ量の多い(即ち、他のバスマスタに比べてバスの占有時間の長い)master0にのみ本発明を適用し、かつ、master0のデッドラインの再計算周期を1μ秒と設定している。
【0068】
master0に対して本発明を適用することにより、図7及び図8においてはmaster0の1回目の転送完了が10225サイクル目であるのに対して、図9においては9409サイクル目に前倒しされている。これにより、図9においてはmaster0の2回目の転送が19520サイクル目に完了する。よって、図7及び図8において起きていた、master0とmaster1のバスの競合が回避され、master0、master1ともにデッドラインの保証が可能となっている。
【0069】
以上のように、本実施形態によれば、各バスマスタに対して適切なデッドライン保証を行うことが可能となる。
【0070】
[第2の実施形態]
次に、発明の第2の実施形態について説明する。図3は、第2の実施形態に対応する、バスマスタ装置1を用いた、情報処理システムの他の構成の一例を示すブロック図である。情報処理システム200は、上位階層バス50、CPU51、アービタ52、バスマスタ53及び54、バススレーブ55及び56、下位階層バス60、アービタ61、バスマスタ62及び63、バススレーブ64から構成される。このうち、CPU51は図2のCPU41と同一であり、アービタ52及び61は、バスマスタのチャネル数が異なる点以外は、図2のアービタ42と同じである。また、バスマスタ53、54、62及び63は、各々図1のバスマスタ装置1に相当し、バススレーブ55、56及び64は、図2のバススレーブ46及び47と同一である。
【0071】
第1の実施形態における図2との相違点は、上位階層バス50と下位階層バス60の2つにバスが階層化され、両バスがバスブリッジにより結合されている点である。上位階層バス50においてはアービタ52がバス調停を行い、下位階層バス60においてはアービタ61がバス調停を行う。また、バス階層を跨いで転送を行う場合は、バスブリッジ56を介して行う。
【0072】
バス階層を跨いだ転送の例として、下位階層バス60上のバスマスタ62から上位階層バス50上のバススレーブ55へデータ転送を行う場合について説明する。
【0073】
まずバスマスタ62は、アービタ61に対して、転送要求優先度信号と共に転送要求を行う。アービタ61によって転送許可を与えられると、バスマスタ62は、バスブリッジ56を介してバススレーブ55に対して転送を開始する。
【0074】
これを受けてバスブリッジ56は、アービタ52に対して、バスマスタ62が出力した転送要求優先度信号値と共に転送要求を行う。即ち、このときバスブリッジ56は、上位階層バス50上のバスマスタの1つとして動作し、かつ、転送要求優先度信号は下位階層バス60上のバスマスタが出力した値を継承する。アービタ52によって上位階層バス50における転送許可を与えられると、バスブリッジ56はバススレーブ55に対する転送を行い、データ転送動作が終了する。
【0075】
アービタ52及び61の調停動作は、第1の実施形態と同様であり、転送要求優先度信号の値がより大きいバスマスタを優先的に転送許可を与える。また、転送要求優先度信号の値が最大のバスマスタが複数ある場合は、最大であるバスマスタを対象にラウンドロビン方式でバス調停を行う。
【0076】
以上のような構成及び方式を採ることにより、階層化されたバスシステムにおいても、各バスマスタに対して適切なデッドライン保証を行うことが可能となる。
【0077】
[その他の実施形態]
なお、本発明は、複数の機器(例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。
【0078】
また、本発明の目的は、前述した機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムに供給し、そのシステムがプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現し、そのプログラムコードを記憶した記憶媒体は本発明を構成する。また、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した機能が実現される場合も含まれる。
【0079】
さらに、以下の形態で実現しても構わない。すなわち、記憶媒体から読み出されたプログラムコードを、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。そして、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行って、前述した機能が実現される場合も含まれる。
【0080】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【0081】
【図1】発明の実施形態に対応するバスマスタ装置の構成例を示すブロック図である。
【図2】発明の第1の実施形態に対応する、バスマスタ装置1を用いた情報処理システムの構成の一例を示すブロック図である。
【図3】発明の第2の実施形態に対応する、情報処理システムの構成の一例を示すブロック図である。
【図4】本発明の原理を説明するための図である。
【図5】本発明の原理を更に説明するための図である。
【図6】発明の第1の実施形態に対応する処理の一例を示すフローチャートである。
【図7】発明の実施形態を適用せずに行った調停アルゴリズムの実行結果を示すグラフである。
【図8】発明の実施形態を適用せずに行った調停アルゴリズムの実行結果を部分的に拡大して示したグラフである。
【図9】図7及び図8の転送条件に対して本発明を適用し、デッドライン保証が可能となった例を示すグラフである。
【図10】従来例に対応する調停アルゴリズムの実行結果を示すグラフである。
【符号の説明】
【0082】
1:バスマスタ
10:バススレーブI/F部
11:転送時間レジスタ
12:転送量レジスタ
13:転送開始レジスタ
14:転送能力レジスタ
15:再計算周期レジスタ
20:バスマスタI/F部
21:バスマスタ制御部
22:データ処理部
23:転送要求度計算部
24:残り転送時間レジスタ
25:残り転送量レジスタ
26:転送時間初期値レジスタ
27:転送量初期値レジスタ
30:転送レート算出部
31:目標平均転送レート格納部
32:比較部
33:残り時間再計算部
34:タイマ
35:時間量削減量格納レジスタ

【特許請求の範囲】
【請求項1】
バススレーブ装置に対してバスを介してデータ転送を行うバスマスタ装置であって、
目標時間までに目標転送量のデータ転送を行うデータ転送手段と、
前記データ転送手段によりデータ転送を完了させるまでの残り時間を示す第1の残り時間を格納する残り転送時間格納手段と、
前記データ転送手段によるデータ転送の転送レートで、前記データ転送手段によるデータ転送が完了するまでの残り時間を示す第2の残り時間を算出する算出手段と、
前記第2の残り時間が前記第1の残り時間より小さい場合に、前記残り転送時間格納手段における前記第1の残り時間を前記第2の残り時間により更新する更新手段と
を備え、
前記データ転送手段による前記目標転送量のデータ転送が完了した後に更なるデータ転送を行う場合に、前記第1の残り時間と前記第2の残り時間との差分に基づき、前記残り転送時間格納手段の初期値を設定することを特徴とするバスマスタ装置。
【請求項2】
前記更新手段は、前記第1の残り時間が0となっても、前記目標転送量のデータ転送が完了しない場合に、該第1の残り時間を前記目標時間に基づく値に更新することを特徴とする請求項1に記載のバスマスタ装置。
【請求項3】
前記更新手段は、前記第1の残り時間と前記第2の残り時間との差分を表わす差分情報を格納する時間量削減量格納手段を備え、前記第1の残り時間を前記目標時間に基づく値で更新した場合に、前記時間量削減量格納手段に格納された前記差分情報をリセットすることを特徴とする請求項2に記載のバスマスタ装置。
【請求項4】
前記算出手段における前記第2の残り時間の算出及び前記更新手段による更新は、一定周期で実行されることを特徴とする請求項1乃至3のいずれか1項に記載のバスマスタ装置。
【請求項5】
前記バスマスタ装置は、複数のバスを結合するバスブリッジとして機能することを特徴とする請求項1乃至4のいずれか1項に記載のバスマスタ装置。
【請求項6】
請求項1乃至5のいずれか1項に記載の前記バスマスタ装置がバスに接続された情報処理システム。
【請求項7】
目標時間までに目標転送量のデータ転送を行うデータ転送手段と、
前記データ転送手段によりデータ転送を完了させるまでの残り時間を示す第1の残り時間を格納する残り転送時間格納手段とを備える、バススレーブ装置に対してバスを介してデータ転送を行うバスマスタ装置の制御方法であって、
前記データ転送手段によるデータ転送の転送レートで、前記データ転送手段によるデータ転送が完了するまでの残り時間を示す第2の残り時間を算出する算出工程と、
前記第2の残り時間が前記第1の残り時間より小さい場合に、前記残り転送時間格納手段における前記第1の残り時間を前記第2の残り時間により更新する更新工程と、
前記データ転送手段による前記目標転送量のデータ転送が完了した後に更なるデータ転送を行う場合に、前記第1の残り時間と前記第2の残り時間との差分に基づき、前記残り転送時間格納手段の初期値を設定する工程と
を備えることを特徴とするバスマスタ装置の制御方法。
【請求項8】
前記更新工程では、前記第1の残り時間が0となっても、前記目標転送量のデータ転送が完了しない場合に、該第1の残り時間が前記目標時間に基づく値に更新されることを特徴とする請求項7に記載のバスマスタ装置の制御方法。
【請求項9】
前記更新工程では、前記第1の残り時間を前記目標時間に基づく値で更新した場合に、時間量削減量格納手段に格納された差分情報がリセットされることを特徴とする請求項8に記載のバスマスタ装置の制御方法。
【請求項10】
前記算出工程と前記更新工程とが、一定周期で実行されることを特徴とする請求項7乃至9のいずれか1項に記載のバスマスタ装置の制御方法。
【請求項11】
コンピュータを、請求項1乃至5のいずれか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