(57)【要約】【課題】複数のバスマスタのバス使用要求全体の保留時間の総和を最小になるように各バスマスタのバス使用権の優先順位を動的に変更して、システム全体の高速動作を実現する。【解決手段】同一のバスに接続された複数のバスマスタと、所定期間内における個々のバスマスタのバス使用要求保留時間の累積時間を計測する累積保留時間計測手段と、所定のタイミングで個々のバスマスタの累積保留時間の大小を比較する大小比較器とを備え、該比較結果に基づき、所定のタイミングで個々のバスマスタのバス使用権の優先順位を変更するようにした。【選択図】        図１
2004341665.tif 000002
【特許請求の範囲】
【請求項１】
同一のバスに接続された複数のマスタと、所定期間内における個々のマスタのバス使用要求保留時間の累積時間を計測する累積保留時間計測手段と、個々のマスタの累積保留時間の大小を比較する大小比較手段とを備え、該比較結果に基づき、所定のタイミングで個々のマスタのバス使用権の優先順位を変更させることを特徴とした、バス使用権調停制御装置。
【請求項２】
累積保留時間の大小順に、バス使用権の優先順位を変更させることを特徴とする、請求項１のバス使用権調停制御装置。
【請求項３】
優先順位の変更は、所定の変更範囲内でのみ実施されることを特徴とする請求項１、２のバス使用権調停制御装置。
【請求項４】
上記所定期間とは、一定のインターバル期間であることを特徴とする請求項１のバス使用権調停制御装置。
【請求項５】
上記所定のタイミングとは、上記一定のインターバル期間を経過し、かつ全てのマスタがバス使用要求を行っていないタイミングであることを特徴とする請求項１のバス使用権調停制御装置。
【請求項６】
上記所定のタイミングとは、上記一定のインターバル期間が過ぎ、かついずれかのマスタのバス使用要求を受付けた直後のタイミングであることを特徴とする請求項１のバス使用権調停制御装置。
【請求項７】
上記所定期間とは、いずれかのマスタの累積保留時間が所定値を越えるまでの期間であることを特徴とする請求項１のバス使用権調停装置。
【請求項８】
上記所定のタイミングとは、いずれかのマスタの累積保留時間が所定値を越え、かつ全てのマスタがバス使用要求を行っていないタイミングであることを特徴とする請求項１のバス使用権調停制御装置。
【請求項９】
上記所定のタイミングとは、いずれかのマスタの累積保留時間が所定値を越え、かついずれかのマスタのバス使用要求を受付けた直後のタイミングであることを特徴とする請求項１のバス使用権調停制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は個々のバスマスタのバス使用権の優先順位を、条件に応じて動的に変更するバス使用権調停制御装置に関する。
【０００２】
【従来の技術】
同一バス上に接続された、メモリ−ＩＯデバイス間、メモリ−メモリ間、あるいはＩＯデバイス−ＩＯデバイス間のデータの転送をＣＰＵを用いずに直接ＤＭＡによって行う場合、同時に発生する複数のバス使用要求はＣＰＵ−メモリ間、ＣＰＵ−ＩＯデバイス間のバス使用要求も含めて、何らかの優先順位をつけて処理することとなる。
【０００３】
この際、個々のＤＭＡ要求の優先順位を、条件に応じて変更する装置が知られている。例えば特開平９−９１１９４号公報には、特定のＤＭＡ要求の保留が一定時間を越えたときに当該ＤＭＡ要求の優先順位を最高位にする装置が開示されている。
【０００４】
また特開平６−９６０１４号公報には、要求が受付けられるまでの無為保留時間の累積値が予め設定しておいた基準値を越えた場合に、その要求の優先順位を上げる装置が開示されている。
【０００５】
【発明が解決しようとする課題】
さてシステム全体の動作を考えると、最も高速に動作しているといえるのは、複数あるバス使用要求全体の保留時間の総和が最小になっているときである。しかしながら、従来技術ではこの点に関してはあまり考慮されていない。
【０００６】
例えば上記特開平９−９１１９４号公報の例では、特定のＤＭＡ要求が少なくとも一定の時間内に許可されることだけが実現されているに過ぎない。
【０００７】
一方特開平６−９６０１４号公報の例では、個々の基準値を適切に選択すれば複数のバス使用要求全体の保留時間の総和を最小とすることも不可能ではないものの、個々のバス使用の頻度がシステム全体の動作モード等毎に大きく異なっている場合には、基準値をその都度最適値に変更してやる必要がある。
【０００８】
このことはシステム全体の動作が、比較的単純な場合はそれほど困難でもないが、様々な動作モードを有するなどして複雑になるに連れ、最適の基準値を決定するのは容易ではない。現実的には、まず概ねの基準値を設定して実際のシステムを動作させ、その結果を見ながら基準値の微調整を行うという検証作業がどうしても必要となろう。さらにはこのように苦労して決定した基準値も、新たにバス使用要求源（ＤＭＡ要求源）を追加した場合には、一からやり直さねばならず、極めて柔軟性に乏しい。
【０００９】
本発明はこうした従来技術の欠点に鑑みてなされたものであり、その目的は特別な基準値などを設けることなく半自動的に優先順位が変更され、結果、複数のバス使用要求全体の保留時間の総和が最小となるバス使用権調停制御装置を提供することにある。
【００１０】
【課題を解決するための手段】
本発明によれば、同一のバスに接続された複数のマスタと、所定期間内における個々のマスタのバス使用要求保留時間の累積時間を計測する累積保留時間計測手段と、所定のタイミングで個々のマスタの累積保留時間の大小を比較する大小比較器とを備え、該比較結果に基き、所定のタイミングで個々のマスタのバス使用権の優先順位を変更するようにしたものである。
【００１１】
【発明の実施の形態】
（第１の実施例）
図１は本発明を実施したシステムの構成図である。図中１０はバスマスタの一つであるところのＣＰＵである。１１〜１３は後段ＲＡＭ１６へのＤＭＡ転送を実施するＤＭＡ要求源であり、それぞれをＤＭＡマスタ１１〜１３と呼ぶことにする。ここで、個々のＤＭＡ要求源の具体的な機能について詳細な説明は割愛するが、例えばインターフェースの受信データの格納、特定のデバイス（例えばインクジェットプリンタのヘッド部）へのデータ転送、ＲＡＭ１６上のデータの処理（ＲＡＭ１６からデータを吸い上げ所定の処理を施した後ＲＡＭ１６上に書き戻す）などを挙げることができる。
【００１２】
ＣＰＵ１０のＲＡＭ１６へのアクセスを含めたバス使用要求は、アービタ１４で調停される。アービタ１４では所定の優先順位に基づいて、競合した要求のうち最も高位のバス使用要求のみを受付け、他は受付けたバス使用が終了するまで保留する。アービタ１４はバス使用要求を受付けると、ＲＡＭアクセス回路１５に対してアクセスの開始を出力し、これによりＲＡＭアクセス回路１５は、ＲＡＭ１６へのアクセス信号を生成して、実際のＲＡＭ１６へのアクセスが実施される。
【００１３】
なお、ＣＰＵ１０には別途ローカルなバスにＲＯＭ／ＲＡＭ１７が接続されており、動作プログラムやスタック等の作業領域はこちらに確保されている。
【００１４】
図２にバス使用要求の受付け・保留の様子を表したタイミング図を示す。図中ＣＰＵＲＥＱ、ＤＲＥＱ１はそれぞれＣＰＵ１０，ＤＭＡマスタ１１のバス使用要求信号（負論理）、ＣＰＵＡＣＫ、ＤＡＣＫ１はそれぞれＣＰＵＲＥＱ、ＤＲＥＱ１が受付けられたときに出力されるバス使用許可信号（負論理）、またＡＣＣＥＳＳは実際にＲＡＭ１６へのリードまたはライトが行われている期間であることを示すタイミングである。またこの図におけるバス使用権の優先順位は
ＣＰＵ１０＞ＤＭＡマスタ１１
であるとする。
【００１５】
図からも明らかなようにＣＰＵＲＥＱとＤＲＥＱ１は同時にアサートされているが、ＣＰＵ１０のバス使用権の方が高位なので、まずＣＰＵ１０のバス使用要求が受付けられ、ＣＰＵＡＣＫがアサートされる。ＣＰＵ１０は要求が受付けられたので、ＣＰＵＲＥＱ信号をネゲートする。そしてこの後、実際のＲＡＭ１６へのアクセスが行われるわけである。
【００１６】
ＣＰＵ１０のＲＡＭ１６へのアクセスが終了するまでの間、ＤＭＡマスタ１１のバス使用要求は保留され、アクセス終了後に受付けられてＤＡＣＫ１がアサートされる。この間ＤＲＥＱ１はずっとアサートされたままになっている。つまり、バス使用の要求・受付け・保留はＲＥＱ／ＡＣＫ信号のハンドシェイクにより実施される。
【００１７】
なお、ＲＡＭ１６へのリードアクセスの場合は、図にあるようにアクセスの終了時にリードデータ信号（ＲＤＡＴＡ）と、データアクノリッジ信号（ＤＴＡＣＫ＃）が出力されるので、ＣＰＵ１０を含む各ＤＭＡマスタは、それぞれにたいして出力されるデータアクノリッジ信号で、出力されたリードデータをラッチするようになっている。
【００１８】
次に、図３を用いてアービタ１４の詳細な構成を説明する。図中２０〜２３はバス使用要求の保留時間をカウントする保留時間カウンタであり、それぞれＣＰＵ１０、ＤＭＡマスタ１１〜１３のバス使用要求保留時間をカウントするものである。具体的にはバス使用要求信号がアサートされている時間を累積加算（ただし最初の２クロック分は、保留がない場合の最短アサート時間であるからこの分はカウントしない。図２で言えば（３）に相当する期間のみをカウントする。）するものである。それぞれの計時結果は大小判定回路２４に入力される。大小判定回路２４はそれぞれの計時結果の大小を判定し、その順番を出力するようになっている。この際、計時結果が同値の場合は以下の順で大きいものと見做す。
【００１９】
ＣＰＵ１０＞ＤＭＡマスタ１１＞ＤＭＡマスタ１２＞ＤＭＡマスタ１３
２５は４×４のマトリクススイッチ回路であり、入力ａ、ｂ、ｃ、ｄを組み替え制御信号に基づいて出力Ａ、Ｂ、Ｃ、Ｄに順番を入れ替えて出力するものである。組み替え制御信号には大小判定回路２４の順番出力が入力される。入力ａ、ｂ、ｃ、ｄにはそれぞれＣＰＵ１０、ＤＭＡマスタ１１〜１３からのバス使用要求信号が入力されている。いま、大小判定回路２４からの順番出力が
ＤＭＡマスタ１２＞ＣＰＵ１０＞ＤＭＡマスタ１３＞ＤＭＡマスタ１１
であるとすると、出力Ａ、Ｂ、Ｃ、ＤにはそれぞれＤＭＡマスタ１２、ＣＰＵ１０、ＤＭＡマスタ１３、ＤＭＡマスタ１１のバス使用要求信号が出力されるわけである。
（なお、初期時はａ、ｂ、ｃ、ｄへの入力がＡ、Ｂ、Ｃ、Ｄへ出力されるものとする。）
２６は優先順位を決定するプライオリティエンコーダである。ここで入力ｈ、ｉ、ｊ、ｋに対して、
ｈ＞ｉ＞ｊ＞ｋ
の優先順位で、入力されているバス使用要求信号のうちで、最高位のバス使用要求信号の存在を下段の回路に出力する。
【００２０】
２８はサイクルコントローラであり、プライオリティエンコーダ２６から出力された最高位のバス使用要求信号の出力に基づいて、ＲＡＭアクセス回路１５にＲＡＭアクセスの要求信号を出力するとともに、対応するバスマスタに対してバス使用許可信号（リードアクセス時の場合はデータアクノリッジ信号も含む）を出力するものである。
【００２１】
プライオリティエンコーダ２６の出力は２９のセレクタ回路にも接続されている。セレクタ回路２９には、各バスマスタからのアドレス信号、リード・ライト区別信号、ライトデータ信号（ライトアクセス時のみ）が入力されており、プライオリティエンコーダ２６の出力に基づいて、対応する信号だけがＲＡＭアクセス回路１５に、選択されて出力されるようになっている。
【００２２】
さて２７は一定時間を計時して出力するインターバルタイマである。しかも本実施例においてはその出力は一定時間が経過した時点で無条件で出力されるのでなく、一定時間が経過し、かつ全てのバスマスタからのバス要求信号が出力されていないときにはじめて出力されるようになっている。そして出力後、計時を０に戻し、一定時間を再計時する。大小判定回路２４は常に比較結果を出力するのであるが、その結果出力は上記インターバルタイマ２７からの出力信号をトリガとしてラッチされるようになっている。これは、優先順位の変更が不用意なタイミングで起こらないようにするためである。すなわち、優先順位の変更は図２における（２）のタイミングで実施される。また、このインターバルタイマ２４からの出力に基づいて各保留時間カウンタ２０〜２３のカウント値は０にクリアされるようになっている。
【００２３】
もちろん、システムの構成によっては全てのバスマスタからのバス要求信号が出力されない期間がほとんど存在しない場合も考えられる。そのような場合は図２に示す（１）のタイミング、つまりいずれかのマスタのバス使用要求を受付けた直後に、インタバールタイマ２７が信号を出力し（そのためにはインタバールタイマ２７においてバス使用許可信号を監視すればよい）そのタイミングで優先順位の変更を実施するようにすればよい。
【００２４】
以上、説明してきたように本実施例によれば一定のインターバル期間毎にバス使用の優先順位が見直され、それまでの累積保留時間の大きい順にバス使用の優先順位が高位となるわけである。つまりよくバスを使用するバスマスタのバス要求（よく使用するので優先順位が低位過ぎると累積保留時間が大きくなる）は高位に、あまりバスを使用しないバスマスタのバス要求（あまり使用しないので優先順位が高位過ぎると累積保留時間は小さくなる）は低位に配置されるわけである。
【００２５】
一般に、優先順位が適切に設定されていないと誤って高位に配置された、あまりバスを使用しないバスマスタの累積保留時間は小さくはなるが、誤って低位に配置された、よくバスを使用するバスマスタの累積保留時間が極めて大きくなるため、結果として各バスマスタのバス要求保留時間の総和は増大し、システム全体の動作速度の低下を招く。
【００２６】
本実施例では初めに設定しておいた優先順位はどうであれ、いずれは各バスマスタのバス要求保留時間の総和が最小になるよう収斂し、結果的にはシステム全体が最も高速で動作する状態が半ば自動的に実現するわけである。
【００２７】
なお、以上の実施例では保留時間の大小を単純に比較して優先順位の変更を行う場合について説明したが、システムの構成によっては大小比較に適当なヒステリシスを設け、個々の累積保留時間にある程度の乖離が生じて、はじめて優先順位の変更が起こるようにしたほうがよい場合もある。
【００２８】
また、優先順位の見直しを一定のインターバル期間毎に行うのではなく、いずれかのバスマスタの累積保留時間が所定値を越えた場合に行うようにしてもよい。
【００２９】
（第２の実施例）
さて、上記の実施例では全てのバスマスタの優先順位が、その累積保留時間の大小に応じて変更されようになっている。しかしながら、システムの構成によっては一部のバスマスタの優先順位を固定、ないしは変更するとしても大きく順位を変えないのが望ましい場合がある。例えば、インクジェットプリンタの印字ヘッドへのデータ転送は、モータ駆動によって移動している印字ヘッドの動きに同期させてデータ転送を行う必要があるため、そのＤＭＡ転送の優先順位は、常に比較的高位にあるのが適切である。
【００３０】
また、上記実施例では特に言及しなかったが、ＲＡＭにＤＲＡＭ素子を用いた場合にはリフレッシュ動作があり、これは何があっても常に最高位の優先順位にあるのが適切である（リフレッシュ動作は、狭義にはバス使用とは異なるが、その期間他のバスマスタがバスを使用できないと言う観点に立てば、ＤＭＡ転送などと同列に扱うことができる。すなわち、リフレッシュ動作を要求するものを一つのバスマスタとして考えてよい。）。
【００３１】
本実施例では上記の点に鑑み、特定のバスマスタの優先順位を固定ないしは所定の範囲でのみ変更するようにした。
【００３２】
図４は本実施例におけるシステムの構成図である。図中１０、１２、１３、１５、１６は図１で説明したものと同じものである。ただし、ここでＲＡＭ１６はＳＤＲＡＭ素子を用いたものとする。３４は本実施例におけるアービタであり、内部の構成がアービタ１４とは異なっている（詳細な構成については図５を用いて後述する。）。
【００３３】
３１はリフレッシュタイマで、所定のインターバルでＲＡＭ１６に対して分散オートリフレッシュを要求するものである。具体的には６４ｍ秒間に少なくとも４０９６回のオートリフレッシュを実施する場合、
６４ｍ秒÷４０９６＝１５．６２５μ秒
から若干のマージンも考慮して１５μ秒ごとに、アービタ３４に対してＲＡＭ１６のオートリフレッシュ要求信号（負論理：ＲＥＦＲＥＱ）を出力する。アービタ３４はこのオートリフレッシュ要求を許可または保留し、許可したときにはＲＡＭアクセス回路１５に対してオートリフレッシュ動作の開始を出力するとともに、オートリフレッシュ許可信号（負論理：ＲＥＦＡＣＫ）をリフレッシュタイマ３１対して出力する。図２で説明したバス使用要求・受付けのハンドシェイクと同様に、オートリフレッシュ要求信号も、オートリフレッシュ許可信号が出力されるまではアサートし続けるようになっている。また、このオートリフレッシュ許可信号に基づいてリフレッシュタイマ３１の内部カウンタはリセットされ、所定期間（１５μ秒）のカウントを再開するようになっている。
【００３４】
図５にアービタ３４の詳細な構成を示す。図中２０、２１、２６、２７は図３で説明したものと同じものである。２４’、２５’、２８’、２９’はそれぞれ本実施例における大小判定回路、マトリクススイッチ回路（２×２）、サイクルコントローラ、セレクタ回路であり、図３で説明したものと基本的には同様の動作を行うものである。
【００３５】
アービタ１４と異なり、アービタ３４では、累積保留時間をカウントするのはＣＰＵ１０、ＤＭＡマスタ１２のバス使用要求だけであり、また優先順位の変更もこの二つのバス使用要求についてのみ行われる。最高位のオートリフレッシュ要求、ならびに最低位のＤＭＡマスタ１３のバス使用要求については、累積保留時間を計測せず、したがってその大小によって優先順位が変更になることはない。
【００３６】
このように本実施例では、優先順位の変更は、中間順位のＣＰＵ１０とＤＡＭマスタ１２のバス使用要求だけとし、その変更範囲も中間位だけとした。したがって、条件によらず、常に最高位としたいオートリフレッシュ要求を第一優先順位に固定することができる。また、優先順位の変動も所定の範囲内でのみ実施することができるため、本発明をより幅広い様々なシステムに応用することが可能となる。
【００３７】
なお、上記の実施例では、最高位、最低位のみ固定とし、中間の優先順位を変更する構成としたが、これ以外にも中間位にいくつかの固定順位をおき、残りの順位のバス使用権についてだけ優先順位を変更してもよいし、優先順位を高位、中位、低位など複数のグループに分け、優先順位の変更はそのグループの範囲内でのみ実施するようにしてもよい。
【００３８】
【発明の効果】
以上、説明してきたように本発明によれば所定のタイミングでバス使用権の優先順位が見直され、それまでの累積保留時間の大きい順にバス使用権の優先順位が高位となるわけである。これにより、初めに設定しておいた優先順位はどうであれ、いずれは各バスマスタのバス要求保留時間の総和が最小になるよう収斂し、結果的にはシステム全体が最も高速で動作する状態が半ば自動的に実現するというすぐれた効果を有する。
【００３９】
また、途中で動作モードが変更になるなどして、個々のバスマスタのバス使用頻度が変化してしまった場合でも、何らの設定や操作を必要とせず、自動的に追随してバス使用権の優先順位が最適化されるという効果をも有している。
【００４０】
本発明は、プリンタ等の周辺装置に組み込まれる小規模な制御回路システムに好適であるが、複数のコンピュータを同一バス上に接続して構成される、大規模なコンピュータシステムに応用してももちろんよい。
【図面の簡単な説明】
【図１】本発明を実施したバス使用権調停制御装置のブロック図。
【図２】バス使用要求の受付け・保留の様子を表したタイミング図。
【図３】アービタ１４の詳細な構成図。
【図４】第２実施例におけるバス使用権調停制御装置のブロック図。
【図５】アービタ３４の詳細な構成図。
【符号の説明】
１０  ＣＰＵ
１１〜１３  ＤＭＡマスタ
１４、３４  アービタ
１５  ＲＡＭアクセス回路
１６  ＲＡＭ
１７  ＲＯＭ／ＲＡＭ
２０〜２３  保留時間カウンタ
２４、２４’  大小判定回路
２５、２５’  マトリクススイッチ回路
２６  プライオリティエンコーダ
２７  インターバルタイマ
２８、２８’  サイクルコントローラ
２９、２９’  セレクタ回路
３１  リフレッシュタイマ
【図１】
2004341665.tif 000003
【図２】
2004341665.tif 000004
【図３】
2004341665.tif 000005
【図４】
2004341665.tif 000006
【図５】
2004341665.tif 000007