(57)【要約】【課題】  メモリアクセスの際の特定の条件において、バス利用の優先権を制御して選択することにより、安定した処理を行うメモリ制御装置を提供する。【解決手段】  ＰＣＩバスやホストバスを介してメモリに書き込みを行うデータを一時的に保存するライトバッファと、メモリからリードしたデータを一時的に保存するリードバッファと、リードバッファに保存したデータをホストバスを介して一時的に保存する残量検出用メモリを有し、残量検出用バッファのデータの残量を監視し、予め設定した残量値と残量を比較し、比較結果とリード要求信号とライト要求信号に基づいて、メモリとライトバッファとリードバッファへのアクセスの優先度を遷移させる。【選択図】  図１
2007094579.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する記憶手段と、
該記憶手段に書き込むデータを一時保存する第１の保存手段と、
前記記憶手段から読み出すデータを一時保存する第２の保存手段と、
該第２の保存手段から読み出したデータを印刷部に送信する際一時データを保管するデータ保管手段と、
該データ保管手段に保管するデータが所定量以上保管されている時、前記記憶手段へのデータの書き込み処理を優先して行わせ、前記データ保管手段に保管するデータが所定量以下の時、前記記憶手段からのデータの読み出し処理を優先して行わせる制御手段と、
を有することを特徴とするメモリ制御装置。
【請求項２】
前記記憶手段に記憶するデータは画像データであり、スキャナ装置から読み取られた画像データを前記第１の保存手段に保存した後、前記記憶手段に記憶し、該記憶手段に記憶された画像データを、前記第２の保存手段に保存した後、前記データ保管手段に保管し、該データ保管手段に保管された画像データは印刷部の印字ヘッドに供給することを特徴とする請求項１記載のメモリ制御装置。
【請求項３】
前記制御手段は、前記データ保管手段に保管するデータが所定量以上の時、前記記憶手段からのデータの読み出し処理をリトライ指示によってキャンセルさせ、前記データ保管手段に保管するデータが所定量以下の時、前記記憶手段へのデータの書き込み処理をリトライ指示によってキャンセルさせることを特徴とする請求項１記載のメモリ制御装置。
【請求項４】
前記データ読み出し処理の際、データ読み出し指示が行われた後、実際にデータが読み出されるまでの時間をリトライ回数で計数し、該計数結果に基づいて、ＰＣＩバスを他のデバイスに開放することを特徴とする請求項３記載のメモリ制御装置。
【請求項５】
記憶手段を含む複数のデバイスが接続されたＰＣＩバスと、
リトライ指示が連続して行われる回数をＰＣＩバスに接続されたデバイス毎に計数する計数手段と、
該計数結果が予め設定された設定値以上である時、ＰＣＩバスの使用権を前記リトライ回数が設定値以上であるデバイスに変更する制御手段と、
を有することを特徴とするメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリンタ機能を有する複合印刷機（ＭＦＰ：マルチファンクションプリンタ）等に使用するメモリ制御装置に関する。
【背景技術】
【０００２】
最近、印刷機能にファクシミリ機能や複写機能等を付加した複合印刷機が広く市販されている。このような複合印刷機は複数の機能を単一のメモリやＣＰＵを使用して実現できるため、極めて有利である。
【０００３】
例えば、スキャナで読み取ったデータをプリンタ出力する場合、スキャナから読み取った１画面分の画像データを一旦画像メモリに展開し、画像メモリからデータを順次読み出して印刷出力する。また、複合印刷機に接続されたパーソナルコンピュータ等のホスト機器から転送される画像データを、対応するインターフェースを介してメモリに展開し、同様に画像メモリからデータを順次読み出して印刷出力する。
【０００４】
一方、今日スキャナやプリンタ機能が高速化し、またライトバッファやリードキャッシュ等の技術により、それぞれの瞬間転送レートよりメモリアクセスが遅れる場合がある。この為、メモリに対するライトアクセスとリードアクセスが競合する機会も多くなり、適切なアービトレーションが要求される。
【０００５】
しかし、ライトアクセスを優先すれば、印字ヘッドヘのデータ転送が遅れる。例えば、印字ムラを避けるため一定速度で動作する必要がある場合、データの準備が間に合わず、データの取りこぼしによる印字不良が発生する。一方、リードアクセスを優先すれば、例えばスキャナからメモリへのデータ書き込みが滞ることになる。特に、１ラインスキャンする毎にデータを送出するタイプのスキャナの場合、データ読み取りを待たせることになり、スキャナをスムーズに駆動することができない。
【０００６】
この点、特許文献１によれば、メモリに対するライト回数とリード回数を比較し、優先度を変更する提案がされている。また、特許文献２によれば、リフレッシュ未実行回数によってリフレッシュ及びメモリアクセスの優先度を変更する提案もなされている。さらに、関連する発明として、特許文献３にはメモリコストを下げる発明も開示されている。
【特許文献１】特開２００１−２４９７７０号公報
【特許文献２】特開平１１−２１９５８５号公報
【特許文献３】特開平０５−３４４２９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１及び２は、アクセスの優先度を変更する方法であり、優先度の判断とリードの必要性とは直接関係しない為、必ずしもアクセス効率を改善するものではない。
【０００８】
また、特許文献３はメモリコストを下げる目的であり、スキャナ動作を優先させる目的には適さない。また、複合印刷機に内蔵されるプリンタがページプリンタのように一定速度でデータをリードする必要がある場合については説明されていない。
【０００９】
本発明は上記のような実情に鑑みてなされたものであり、メモリアクセスの際の特定の条件において、バス利用の優先権を制御して選択することにより、スキャナをスムーズに駆動できると共に、一定速度で印刷処理を行うことができるメモリ制御装置を提供するものである。
【課題を解決するための手段】
【００１０】
上記課題は本発明によれば、データを記憶する記憶手段と、該記憶手段に書き込むデータを一時保存する第１の保存手段と、前記記憶手段から読み出すデータを一時保存する第２の保存手段と、該第２の保存手段から読み出したデータを印刷部に送信する際一時データを保管するデータ保管手段と、該データ保管手段に保管するデータが所定量以上保管されている時、前記記憶手段へのデータの書き込み処理を優先して行わせ、前記データ保管手段に保管するデータが所定量以下の時、前記記憶手段からのデータの読み出し処理を優先して行わせる制御手段とを有するメモリ制御装置を提供することによって達成できる。
【００１１】
例えば、データが所定量以上、データ保管手段に保管されている時、データのリード要求とライト要求が競合すれば、ライト要求を優先して実行し、記憶手段へのデータの書き込み処理を優先する。一方、データが所定量以下時、リード要求とライト要求が競合すれば、リード要求を優先して実行し、記憶手段からデータを読み出し、データ保管手段にデータを送信し、データ保管手段に保管するデータ量を確保し、印刷処理を一定速度で行うことを可能とする。
【００１２】
また、前記記憶手段に記憶するデータは画像データであり、スキャナ装置から読み取られた画像データを前記第１の保存手段に保存した後、前記記憶手段に記憶し、該記憶手段に記憶された画像データを、前記第２の保存手段に保存した後、前記データ保管手段に保管し、該データ保管手段に保管された画像データは印刷部の印字ヘッドに供給する。
【００１３】
このように構成することにより、スキャナ装置を有し、該スキャナ装置から画像データを読み出して印刷部によって印刷処理を行う複合印刷機に本発明のメモリ制御装置を適用することができる。
【００１４】
また、前記制御手段は、前記データ保管手段に保管するデータが所定量以上の時、前記記憶手段からのデータの読み出し処理をリトライ指示によってキャンセルさせ、前記データ保管手段に保管するデータが所定量以下の時、前記記憶手段へのデータの書き込み処理をリトライ指示によってキャンセルさせる構成である。
【００１５】
このように構成することによっても、スキャナ等の読み取り装置が行う原稿データの読み取り処理をスムーズに行い、一定速度で読み取り装置を駆動すると共に、データ保管手段に保管するデータ量を常に確保し、一定速度で用紙への印刷処理を行うことができる。
【００１６】
また、前記データ読み出し処理の際、データ読み出し指示が行われた後、実際にデータが読み出されるまでの時間をリトライ回数で計数し、該計数結果に基づいて、ＰＣＩバスを他のデバイスに開放する構成である。
【００１７】
このように構成することにより、記憶手段からデータを読み出す際、ＰＣＩバスを有効利用することができる。
また、記憶手段を含む複数のデバイスが接続されたＰＣＩバスと、リトライ指示が連続して行われる回数をＰＣＩバスに接続されたデバイス毎に計数する計数手段と、該計数結果が予め設定された設定値以上である時、ＰＣＩバスの使用権を前記リトライ回数が設定値以上であるデバイスに変更する制御手段とを有するメモリ制御装置を提供することによって達成できる。
【００１８】
例えば、ＰＣＩバスに接続されるデバイスとして、スキャナや、ビデオ転送コントローラ、ＬＡＮインターフェース等があり、例えば制御手段であるバスアービタはそれぞれのデバイスのリトライ回数を計数し、該計数結果が予め設定された設定値以上である時、ＰＣＩバスの使用権を上記設定値以上のリトライ回数のデバイスに移す。このように構成することにより、ＰＣＩバスに接続されたデバイスを効率よく駆動することができ、記憶手段に記憶されたデータの印刷処理も一定速度で行うことが可能となる。
【発明の効果】
【００１９】
本発明によれば、記憶手段にデータを書き込む際、スキャナ等の原稿読み取り装置をスムーズに駆動することができる。また、記憶手段からデータを読み出す際、データを取りこぼすことなく印刷部に送り、印刷部を一定速度で駆動することができる。
【００２０】
また、リトライ連続回数が一定値以上になると、ＰＣＩバスに接続されたデバイスに対して優先権を与え、デバイス全体を効率よく駆動することができる。したがって、記憶手段からデータを読み出す際、ＰＣＩバスを有効利用することができる。
【発明を実施するための最良の形態】
【００２１】
以下図面に基づいて、本発明の実施形態について詳細を説明する。
（実施形態１）
図１はスキャナから原稿データを読み取り、原稿データに基づいて印刷出力を行う複合印刷機の一部の回路を示す回路ブロック図である。尚、同図は本例のメモリ制御装置の説明上必要の回路を示すものであり、複合印刷機として有する、例えばファクシミリ機能や通信機能等の構成は省略している。
【００２２】
同図に示すように、本例のメモリ制御装置は記憶手段であるメモリ１、メモリアクセスコントローラ２、第２の保存手段であるリードバッファ３、ＣＰＵ４、ビデオ転送コントローラ５、第１の保存手段であるライトバッファ６、データ保管手段であるビデオ用ＦＩＦＯ（First-In First-Out）７、スキャナコントローラ８、スキャナ９、及びプリンタエンジン１０で構成されている。
【００２３】
メモリ１は、例えばＳＤＲＡＭ（Synchronous DRAM）で構成され、メモリアクセスコントローラ２がバーストアクセスを行うことにより、効率良くデータのリード、ライトが可能である。また、リードバッファ３、及びライトバッファ６とデータの遣り取りを行うバスは、例えば、３２ビット幅で８ワード単位としている。すなわち、６４バイト単位でアクセスを可能にしている。
【００２４】
したがって、６４バイト幅のリードバッファ３をリード用に設け、リードバッファ３には２段のリードバッファを用意する。そして、リードアクセスがあった場合、メモリアクセスコントローラ２は該当するアドレスのメモリ１の内容をバーストリードし、１段目のリードバッファ３に保存する。
【００２５】
リードバッファ３にデータが貯まるまで、メモリアクセスコントローラ２は、メモリアクセスをしたデバイスを、ウエイト信号やレディー信号により待たせる。そして、リードバッファ３にデータが蓄積されると、リードアクセスしたデバイスビデオ転送コントローラ５は、リードバッファ３のデータをリードする。
【００２６】
一方、ライトバッファ６も６４バイトの容量を有し、例えばスキャナ９から読み出されたデータを保存する。すなわち、スキャナコントローラ８からライト要求が行われると、メモリコントローラ２は該当するアドレスを記憶すると共に、データをライトバッファ６に保存する。そして、ライトバッファ６が満杯になりと、メモリアクセスを行ったデバイスを待たせるため、ウエイト信号やレディー信号を出力すると共に、ライトバッファ６の内容をメモリ１に書き込む。
【００２７】
ビデオ転送コントローラ５は、ビデオ用ＦＩＦＯ７に一定量以下の画像データが保管されている時、メモリ１に対するリードアクセスとライトアクセスが競合すると、リードアクセスを優先する。例えば、この処理により、ビデオ用ＦＩＦＯ７にデータを貯える行為が滞ることなく行われ、ビデオ用ＦＩＦＯ７が空になることを避けることができる。
【００２８】
一方、ビデオ転送コントローラ５は、ビデオ用ＦＩＦＯ７に一定量以上の画像データが保管されている時、メモリ１に対するリードアクセスとライトアクセスが競合すると、ライト処理を優先する。これにより、メモリ１にデータを書き込むスキャナコントローラ８及びスキャナ９の動作をできる限りスムーズに行う。
【００２９】
次に、図２は上記メモリアクセスコントローラ２の動作シーケンスを示す。メモリアクセスコントローラ２は、メモリ１からリードバッファ３へのデータ読み出し制御、及びライトバッファ６からメモリ１へのデータ書き込み制御を行う。
【００３０】
先ず、待機状態からステップ（以下、Ｓで示す）１への遷移条件について説明する。処理（Ｓ１）はメモリ１からデータをリードバッファ３に読み出す処理であり、この処理への移行は、アドレスが不一致であり、ビデオ用ＦＩＦＯ７に貯えられるデータ残量が所定量より多く、リード要求があり、ライト要求がない場合である。また、ビデオ用ＦＩＦＯ７に貯えられたデータ残量が所定の量より少なく、リード要求がある場合である。この場合、メモリ１からデータを読み出し、リードバッファ３に保存する。
【００３１】
また、処理（Ｓ２）はリードバッファ３に保存したデータをビデオ用ＦＩＦＯ７に出力する処理であり、この移行条件は、アドレスが一致し、ビデオ用ＦＩＦＯ７に貯えられるデータ残量が多いとき、リード要求があり、ライト要求がない場合である。また、ビデオ用ＦＩＦＯ７に貯えられたデータ残量が少ない場合で、リード要求がある場合である。この場合、リードバッファ３のデータを読み出し、ビデオ用ＦＩＦＯ７に出力する。
【００３２】
また、処理（Ｓ３）はスキャナ９から読み出したデータをライトバッファ６に書き込む処理であり、この移行条件は、ビデオ用ＦＩＦＯ７に貯えられたデータ残量が少なく、リード要求がなく、ライト要求がある場合である。また、ビデオ用ＦＩＦＯ７に貯えられたデータ残量が多く、ライト要求がある場合である。この場合、スキャナ９から読み出したデータをライトバッファ６に書き込む。
【００３３】
さらに、処理（Ｓ４）はライトバッファ６に保存されたデータをメモリ１に書き込む処理であり、この移行条件は、アドレスが異なる場合、又はライトバッファ６がデータで満たされている場合である。この場合、ライトバッファ６に保存されたデータをメモリ１に書き込む。
【００３４】
次に、本例の処理動作を図３及び図４に示すタイムチャートに従って説明する。
尚、図３はスキャナとビデオ転送が競合する時のタイムチャートを示し、図４はスキャナとビデオ転送が競合しない時のタイムチャートを示す。また、図３及び図４に示す波形の意味は以下の通りである。
【００３５】
先ず、（１）はスキャナコントローラ８からのライト要求を示す信号であり、スキャナ９が読み出したデータを、ライトバッファ６に保存する際出力される信号である。尚、（１）の波形はハイアクティブである。
【００３６】
また、（２）はスキャナ許可を示す信号であり、スキャナコントローラ８経由で転送されるデータのライトバッファ６への書き込み許可を示す信号である。
また、（３）はビデオ転送部からのリード要求を示し、ビデオ転送部（具体的には、ビデオ転送コントローラ５とビデオ用ＦＩＦＯ７）からメモリ１に読み込み許可を求める信号である。また、（４）はビデオ転送許可を示し、メモリ１からリードバッファ３にデータの読み込みを許可する信号である。
【００３７】
また、（５）はホストバスの使用権を示し、（６）はライトバッファ６に保存されるデータを示す。さらに、（７）はリードバッファ３に保存されるデータを示し、（８）はメモリ１のアドレス指示（ＳＤＲＡＭ−ＲＡＳ（Row Address Strobe Signal））を示し、（９）はメモリ１のアドレス指示（ＳＤＲＡＭ−ＣＡＳ(column address)）を示す。
【００３８】
また、（１０）はメモリ１に記憶されるデータを示し、（１１）はＦＩＦＯの残量を示し、（１２）はリードバッファ３に保存されるデータのアドレスを示し、（１３）はライトバッファ６に保存されるデータのアドレスを示す。
【００３９】
以下、図３に示す処理をタイムチャートに従って処理動作を説明する。先ず、同図に示すスキャナ優先範囲（ホストバスをスキャナの処理で使用する範囲）は、ビデオ用ＦＩＦＯ７のデータ残量が多く、ライト要求が発生した範囲である。この場合、スキャナコントローラ８からライト要求がＴ１、Ｔ２、・・・のタイミングで出力され、スキャナ許可がハイアクティブになる毎にホストバスの使用権がスキャナ側に開放される。
【００４０】
また、上記ライト要求により、ライトバッファ６にはアドレス「A0100」、「A0140」、「A0180」、「A01C0」、「A0200」、「A0240」に対応するデータ（Ｗ１〜Ｗ６）が書き込まれる。例えば、タイミングＴ１に対応して「A0100」番地のデータＷ１がスキャナ９から転送されライトバッファ６に保存される。また、タイミングＴ２に対応して「A0140」番地のデータＷ２がライトバッファ６に保存され、以下タイミングＴ３で「A0180」番地のデータＷ３、タイミングＴ４で「A01C0」番地のデータＷ４、タイミングＴ５で「A0200」番地のデータＷ５、タイミングＴ６で「A0240」番地のデータＷ６がそれぞれライトバッファ６に保存される。
【００４１】
またこの間、ライトバッファ６が満杯（フル）になると（図２に示すＳ２の処理を実行するための条件）、メモリアクセスを行ったデバイス（スキャナ９）を待たせるため、ウエイト信号やレディー信号を出力すると共に、ライトバッファ６に保存されたデータをメモリ１に書き込む。すなわち、ライトバッファ６に保存されたデータＷ１〜Ｗ６を、メモリ１に書き込む。この時、前述のＳＤＲＡＭ−ＲＡＳとＳＤＲＡＭ−ＣＡＳが、アクティブ（ローアクティブ）となり（Ｔ８のタイミングの時）、Ｗ１＋Ｗ２のデータをメモリ１に書き込む。以下、タイミングＴ９においてＷ３＋Ｗ４のデータをメモリ１に書き込み、タイミングＴ１０においてＷ５＋Ｗ６のデータをメモリ１に書き込む。その後、前述の待機状態に戻る。
【００４２】
一方、上記スキャナ９で読み取ったデータの書き込み処理を繰り返す間、ビデオ用ＦＩＦＯ７に保管されたデータはプリンタエンジン側に順次読み出され、ビデオ用ＦＩＦＯ７に保管されるデータ残量が少なくなると、メモリアクセスコントローラ２の制御はビデオ転送を優先する処理に移行する（図３に示すビデオ転送優先範囲）。
【００４３】
先ず、Ｔ１１のタイミングで、アドレス「A0000」を先頭アドレスとしてＲ１とＲ２のデータをメモリ１から読み出し、リードバッファ３に保存する。このデータＲ１、Ｒ２は、Ｔ１２、Ｔ１３のタイミングでビデオ用ＦＩＦＯ７に転送される。
【００４４】
次に、Ｔ１６、Ｔ１７のタイミングで、「A0080」のデータＲ３と「A00C0」のデータＲ４を、リードバッファ３に格納する。そして、Ｔ１４、Ｔ１５のタイミングで、Ｒ３、Ｒ４のデータをビデオ用ＦＩＦＯ７に転送する。その後、前述の待機状態に戻る。
【００４５】
以上のように、メリモリアクセスコントローラ２は、ビデオ転送用ＦＩＦＯ７のデータ残量が多い時、メモリ１へのデータ書き込みを優先し、スキャナ９からデータの読み取り処理を行い、スムーズにスキャナ９を駆動する。一方、ビデオ転送用ＦＩＦＯ７のデータ残量が少なくなると、メモリ１からのデータ読み出しを優先的させ、データの取りこぼしを無くし、プリンタエンジン１０への安定したデータ供給を行う。
【００４６】
一方、ライト要求とリード要求が競合しないとき、図４に示す処理が行われる。この場合、前述と同様、ライト要求が発生すると（図２に示すＳ３の条件）、スキャナコントローラ８からのライト要求を示すＴ４１、Ｔ４２、・・・のタイミングに従って、アドレス「A0100」、「A0140」、「A0180」、「A01C0」、「A0200」、「A0240」のデータ（Ｗ４１〜Ｗ４６）がライトバッファ６に保存される。すなわち、タイミングＴ４１において「A0100」番地のデータＷ４１がスキャナから転送され、タイミングＴ４２において「A0140」番地のデータＷ４２がスキャナから転送され、以下タイミングＴ４３で「A0180」番地のデータＷ４３が転送され、タイミングＴ４４で「A01C0」番地のデータＷ４４が転送され、タイミングＴ４５で「A0200」番地のデータＷ４５が転送され、タイミングＴ４６で「A0240」番地のデータＷ４６が転送され、ライトバッファ６に保存される。
【００４７】
その後、ライトバッファ６が満杯（フル）になると、ライトバッファ６に保存されたデータをメモリ１に書き込む。すなわち、ライトバッファ６に書き込まれたデータＷ４１〜Ｗ４６を、メモリ１に書き込む。
【００４８】
次に、ビデオ転送優先の範囲では、Ｔ４１１のタイミングで、アドレス「A0000」を先頭アドレスとしてデータＲ４１とＲ４２をメモリ１から読み出し、リードバッファ３に保存する。そして、ビデオ転送許可により、リードバッファ３からＴ４１２、Ｔ４１３のタイミングでデータＲ１、Ｒ２をビデオ用ＦＩＦＯ７に転送する。以下、Ｔ４１６、Ｔ４１７のタイミングで、「A0080」のデータＲ３、「A00C0」のデータＲ４４をメモリ１からリードバッファ３に保存し、更にＴ４１４、Ｔ４１５のタイミングで、Ｒ４３、Ｒ４４のデータをビデオ用ＦＩＦＯ７に転送する。その後、Ｓ２１待機状態に遷移する。
【００４９】
尚、上記実施形態１では、ビデオ用ＦＩＦＯ７のデータ残量を「多い」、「少ない」の２種類で判定したが、ビデオ用ＦＩＦＯ７の残量を示す信号を複数用意し、例えば残量レベル毎に（レベル１〜ｎ毎に）、リードまたはライトを待機させる割合を調節する構成としてもよい。この場合、ビデオ用ＦＩＦＯ７の残量が徐々に減っていく場合、ライト２回ごとにリードを１回優先されるなど、段階的に優先度を変更することができ、より効率の良い処理を行うことが可能になる。
【００５０】
さらに、実施形態１では、ライトバッファ６がフル、またはライトアドレスが異なると、ライトバッファ６のデータをメモリ１に書き込むようにしたが、メモリ１のアイドル時間を検出してデータを書き込む構成としてもよい。また、ライトバッファ６にデータを書き込む毎にライトバッファ６のデータをメモリ１に書き込む構成としてもよい。
（実施形態２）
次に、本発明の実施形態２について説明する。
【００５１】
図５は実施形態２の構成を示す図である。本例ではスキャナコントローラ８、ビデオ用ＦＩＦＯ７、及びＰＣＩ−メモリコントローラ１１はＰＣＩバスに接続されており、メモリ１のアクセスはＰＣＩバスを経由する。
【００５２】
同図において、ＰＣＩ−メモリコントローラ１１はライトバッファ６、及びリードバッファ３に接続されている。また、スキャナコントローラ８がメモリ１に対して、データを書き込むためにライト要求を行うとき、スキャナコントローラ８はライト要求するバスマスタとなる。また、ビデオ転送コントローラ５はメモリ１に対してリード要求を行うとき、ビデオ転送コントローラ５はリード要求するバスマスタとなる。尚、このビデオ用ＦＩＦＯ７は、データ量が一定以上であるかを検出する機能を有する。
【００５３】
ビデオ用ＦＩＦＯ７に保管されたデータが一定量未満の時、メモリ１に対するリードアクセスとライトアクセスとが競合すると、リードを優先させる為、ライトを要求するバスマスタ、すなわちスキャナ９に対してリトライを発行する。
【００５４】
図６に、メモリ制御に関するＰＣＩ−メモリコントローラ１１の動作シーケンスを示す。以下、各シーケンスを説明する。尚、上記シーケンスにおいて、リトライ処理以外の処理については前述の図２と同様であり、説明を省略する。
【００５５】
同図に示すように、リトライ処理はビデオ用ＦＩＦＯ７のデータ残量が少なく、直前リード要求がなく、ライト要求があればリトライ処理を行う。また、ビデオ用ＦＩＦＯ７のデータ残量が多く、リード要求があり、かつ直前ライト要求があればリトライ処理を行う。さらに、ビデオ用ＦＩＦＯ７のデータ残量が少なく、直前リード要求があり、かつライト要求があればリトライ処理を行う。
【００５６】
次に、本例の処理動作を説明する。
図７はスキャナとビデオ転送が競合した際、スキャナ処理を優先するタイムチャートを示し、図８はスキャナとビデオ転送が競合した際、ビデオ転送を優先する処理を示すタイムチャートである。
【００５７】
先ず、図７に示すスキャナ優先の場合の処理を説明する。尚、同図に示すスキャナ優先は、前述の条件の中で、ビデオ用ＦＩＦＯ７のデータ残量が多く、リード要求があり、かつ直前ライト要求がある場合である。
【００５８】
この場合、先ずＴ７１のタイミングで、スキャナ９からデータが供給され、ＰＣＩ−ＦＲＡＭＥ＃がローアクティブとなり、ＰＣＩ−ＡＤのアドレスフェーズからアドレスデータＡＤ７１をＰＣＩ−メモリコントローラ１１に供給する。
【００５９】
次に、Ｔ７２のタイミングでデータフェーズのデータＷ７１を連続してライトバッファ６に書き込む。その後、Ｔ７３に示すタイミングでＳＤＲＡＭ−ＲＡＳ、及びＳＤＲＡＭ−ＣＡＳがアクティブとなり、メモリ１にデータＷ７１を書き込む。
【００６０】
次に、Ｔ７４のタイミングで、ＰＣＩ−ＦＲＡＭＥ＃がローアクティブとなり、ＰＣＩ−ＡＤリード要求が発生する。この時、ビデオ用ＦＩＦＯ７のデータ残量が多く、リードの要求は入力するが、リード要求直前に上記ライト要求が存在するため、直ちにリトライ処理を行う（ＰＣＩ−ＳＴＯＰ＃がローレベルとなる）。
【００６１】
次に、Ｔ７５のタイミングで再度ＰＣＩ−ＦＲＡＭＥ＃がローアクティブとなり、ＰＣＩ−ＡＤのアドレスフェーズからアドレスデータＡＤ７２をＰＣＩ−メモリコントローラ１１に供給する。そして、上記と同様、ＳＤＲＡＭ−ＲＡＳ、及びＳＤＲＡＭ−ＣＡＳをアクティブとし、メモリ１にデータＷ７２を書き込む。
【００６２】
以下、上記処理を繰り返すことにより、データＷ７３、Ｗ７４、・・・がメモリ１に書き込まれる。この間、同図に示すタイミングでリトライ処理が行われる。ここで、本例においては、ライトバッファ６のデータ幅を３２ビット、メモリ１のデータ幅を６４ビットとし、１回の転送にて、両者とも６４バイト分をアクセスしている。
【００６３】
次に、図８のタイムチャートを使用して、ビデオ転送優先時の処理を説明する。尚、この場合、ビデオ用ＦＩＦＯ７のデータ残量が少ない場合である。
先ず、Ｔ８１のタイミングでＰＣＩ−ＦＲＡＭＥ＃はローアクティブとなり、データリードの指示が行われる。この場合、リードアクセスを検知し、ＰＣＩ−ＡＤのアドレスフェーズからアドレスデータをＰＣＩ−メモリコントローラ１１に記録する。そして、メモリ１のデータを順次リードバッファ３に保存する。
【００６４】
リードバッファ３へのデータ保存は６４ビット幅、リードバッファ３からのリードは３２ビット幅とする。リードバッファ３のデータが半分（４ダブルワード）、ＰＣＩ−ＡＤより転送されたら（ＰＣＩ−ＡＤでは８ワード）、メモリ１にアクセスを開始して、順次リードバッファ３にデータを保存する。
【００６５】
ＰＣＩ−ＡＤでの転送終了時、リードバッファ３に空きが生じ、その時点で、メモリ１へのアクセスを開始し、順次リードバッファ３にデータを保存する。以下同様に、ＰＣＩ−ＡＤ＃に８ワードごとに上記処理を繰り返す。
【００６６】
以上のように、本例はビデオ用ＦＩＦＯ７の残量が多い場合、リードアクセスに対してリトライを発行し、ライトアクセスを優先させスキャナ９の駆動をスムーズに行う。一方、ビデオ用ＦＩＦＯ７の残量が少ない場合、ライトアクセスに対してリトライを発行し、リードアクセスを優先させメモリ１からデータを供給し、データを取りこぼすことなく一定速度でプリンタエンジン１０を駆動させる。
【００６７】
尚、上記例ではメモリ１からデータをリードして、リードバッファ３にデータを貯えるまで、単純にＴＲＤＹ♯を遅らせて、イニシエータを待たせていたが、メモリ１へのアクセスクロックが遅い場合など、メモリアクセスに時間がかかる場合、メモリ１をリードしてからリードバッファ３にデータを貯え終わるまでは、ＰＣＩバスを開放させるため、リード要求に対してリトライトで応答してもよい。
（実施形態３）
次に、本発明の実施形態３について説明する。
【００６８】
本実施形態３について、全体構成は上記実施形態２と同様であるが、本例は図６に示すＡのリトライ処理を説明するものであり、上記尚書き部分の具体的な実施例である。
先ず、本例の動作原理を説明する。最初、適当なメモリエリアをリードする。この時、リトライ処理によってターゲットが応答すると、引き続き同じアドレスをリードする。また、同時に、リトライ回数のカウントを開始する。そして、正常なリードアクセスが行われるまで、リトライサイクルを繰り返す。
【００６９】
その後、正常なリードアクセスが行われると、前回のアクセスと連続性のある次のアドレスについてリードアクセスを行う。その時にも、リトライ処理での応答があれば計数する。連続リトライ回数はメモリに保存されるので、何度かリード処理を繰り返すと、リトライ回数の平均値を算出でき、連続性のあるアクセス時のリトライ予測回数として保存できる。
【００７０】
さらに、前回のアクセスと連続性がない、例えば数キロバイト以上離れたアドレスにリードアクセスを行う。この時にも、リトライ処理での応答があれば計数処理を行う。そして、前述と同様メモリに保存した値から平均値を算出し、非連続なアドレスでのアクセス時におけるリトライ予測回数として保存する。
【００７１】
図９は、本例の処理を説明するフローチャートである。先ず、他のＰＣＩデバイスとの競合が無いとき、例えばメモリ１にリード要求し、ＰＣＩアイドル状態を監視する（ステップ（以下、ＳＴで示す）１）。ここで、リトライ応答があると、このリトライを検出し、連続回数をカウンタによりカウントアップする（ＳＴ２、ＳＴ３）。尚、リトライ処理が発生せず、アクセスを終了する場合、再びアイドル状態の監視に戻る（ＳＴ３）。
【００７２】
次に、連続してリトライ指示がある場合、連続回数を計数し、ＰＣＩアイドル状態を監視する（ＳＴ４）。そして、リトライ検出又はアクセス終了であるか判断し、リトライ指示を検出した場合、再度連続リトライ回数を計数する。一方、アクセス終了指示であれば、計数した連続リトライ回数のデータをメモリ１に記憶する（ＳＴ６）。また、カウンタに計数された連続リトライ回数のデータをクリアする（ＳＴ７）。
【００７３】
以上の処理により、例えばリードアクセスが行われ、実際にデータが読み出されるまでの時間がリトライ回数の情報として記録することができる。したがって、次に上記リトライ回数をもとに、再びリトライが連続して発生しそうな回数を、図１０に示す手順で予測する。
【００７４】
先ず、前述の処理により、リトライが連続して何回発生するのか測定する。例えば、ＰＣＩアドレスを変更する毎に、前述の図９に示すシーケンスを動作させ、カウンタのチェックを行う。また、２回目は連続した次のアドレスをアクセスする。そして、図９に示すカウンタのチェックを行う。そして、３回目も連続した次の次のアドレスをアクセスする。そして、図９に示すカウンタのチェックを行う。
【００７５】
この処理を繰り返し、図１０に示す「想定した連続アドレスにおけるリトライ回数」を求める（チェックした図９のカウンタ値）。そして、改めて１回目のアクセスを行い、図９のカウンタをチェックする。２回目は全く異なるアドレスをアクセスする。そして、図９のカウンタをチェックする。
【００７６】
さらに、３回目も異なるアドレスをアクセスする。そして、図９のカウンタをチェックする。これを繰り返し、図１０に示す「想定した非連続アドレスにおけるリトライ回数」を求める。
【００７７】
先ず、ＰＣＩバスに接続されたＰＣＩデバイスが、メモリ１にアクセスを開始する（ＳＴ８）。ここで、ＰＣＩアクセスを行わない場合、上記処理（ＳＴ８）に戻る。一方、リトライが発生すると（ＳＴ９がＹ）、リトライ回数の予想情報を取得する（ＳＴ１０）。
【００７８】
すなわち、異なるアドレスをリードすると、必ずリトライになる場合、リードデータを用意するのに一定時間かかると判断し、この特性（予想したリトライ回数に対応した値）を記憶しておく。また、例えばリード時に必ず４回リトライすると、この４回分の特性を記憶しておき、リード時に続いて３回のリトライが発生すると考えられるので、リードアクセスを３回分の時間だけ実行せず、他のＰＣＩデバイスのためにＰＣＩバスを開放する。
【００７９】
次に、連続したアドレスか非連続なアドレスかを判定する（ＳＴ１１）。そして、連続したアドレスであると判断すると、想定する連続したアドレスにおけるリトライ回数に相当する分の時間だけ待機する（ＳＴ１２）。一方、非連続なアドレスであると判断すると、想定する非連続したアドレスにおけるリトライ回数に相当する分の時間だけ待機する（ＳＴ１３）。
【００８０】
図１１にリトライ期間の長いターゲットに対して、連続したアドレスのアクセスを行った時のタイミングチャートを示す。同図において、Ｔ１１１のタイミングにおいて、ＰＣＩ−ＦＲＡＭＥ＃のリード要求に基づいてロー信号を出力する。この時、最初のリード要求なので非連続なアドレスである。尚、その後は連続したアドレスでリード要求を行う。
【００８１】
例えば、Ｔ１１１〜Ｔ１１３のタイミングの間、リード処理が４回行われ、非連続なアドレスのシーケンス（図９のフローチャート）に基づいて、リトライ予測回数を４回として保存する。一方、Ｔ１１４〜Ｔ１１６のタイミングの間、及びＴ１１７〜Ｔ１１９の間、連続したアドレスのシーケンスにより（図９のフローチャート）に基づいて、リトライ回数を２回として保存する。
【００８２】
図１２にリトライ期間の長いターゲットに対して、リトライ回数予測後に、連続したアドレスのアクセスを行った時のタイミングチャートを示す。図１１で示した図１０のシーケンスにより処理することで、連続アドレスのＴ１１５〜Ｔ１１６と、Ｔ１１８〜Ｔ１１９の期間にアイドルサイクルを設けることができるようになり、アイドルサイクルが増えるので、他のＰＣＩデバイスがＰＣＩバスを使用しやすくなる。また、非連続なアドレスのＴ１１２〜Ｔ１１３の期間にもアイドルサイクルが設けることができる。
【００８３】
図１３にリトライ期間の長いターゲットに対して、非連続なアドレスのアクセスを行った時のタイミングチャートを示す。先ず、Ｔ１３１のタイミングでは、ＰＣＩ−ＦＲＡＭＥ＃のリード要求のため、ローパルスを出力する。このとき、最初のリード要求なので非連続なアドレスである。Ｔ１３１〜Ｔ１３３の期間では４回行われているので、非連続なアドレスのシーケンス（図９のフローチャート）により、リトライ予測回数を４回として保存する。同様に、Ｔ１３４〜Ｔ１３６の期間でもリトライ予測回数を４回分保存する。
【００８４】
図１４にリトライ期間の長いターゲットに対して、リトライ回数予測後に、非連続なアドレスのアクセスを行った時のタイミングチャートを示す。図１３で示した図１０のシーケンスにより処理することにより、非連続なアドレスのＴ１３２〜Ｔ１３３の期間と、Ｔ１３５〜Ｔ１３６の期間に、アイドルサイクルを設けることができるようになり、アイドルサイクルが増え、他のＰＣＩデバイスがＰＣＩバスを使用しやすくなる。
（実施形態４）
次に、本発明の実施形態４について説明する。
【００８５】
ＰＣＩバスアービタは、各ＰＣＩデバイスからＰＣＩバス使用権の要求信号ＲＥＱ＃を受け取り、設定された優先順位に従ってＰＣＩバスの制御権を認めてバスを開放するとき、認めたＰＣＩデバイスに対してＧＮＴ♯を出力する、ＰＣＩバスの調停を行うものである。
【００８６】
図１５に実施形態４のシステム構成を示す。スキャナ９はスキャナコントローラ８や、ビデオ転送コントローラ５はビデオ用ＦＩＦＯ７を、介してＰＣＩバスに接続されており、それらがメモリ１をアクセスするためには、ＰＣＩバスを経由する。そして、メモリ１へのアクセスはＰＣＩ−メモリコントローラ１１を介して行われる。ＰＣＩ−メモリコントローラ１１はライトバッファ６、リードバッファ３と接続される。さらに、ＰＣＩバスアービタ１２、ＰＣＩホストブリッジ１３、リトライ検出回路１４、及び連続リトライカウンタ１５を有する。ホストＰＣＩブリッジ１３は、ＣＰＵの外部バス等、所謂ホスト側のバスをＰＣＩバスと接続し、相互に通信できるようにする。ＣＰＵの外部バスとＰＣＩバスでは、電気的特性からデータ転送のプロトコルや仕様等が大きく異なるため用いられている。
【００８７】
本例のシステムは、基本的には図５と同じであるが以下の点で異なる。すなわち、図５に示す例では、ＰＣＩバスに接続されているＰＣＩデバイスのうちのどれか、例えばＰＣＩ−メモリコントローラ１１に、ＰＣＩバスアービタ１２が含まれていると想定していた。しかし、本例では、ＰＣＩバスアービタ１２の存在を明確にするため、独立して表記している。そして、本例のＰＣＩバスアービタ１２は、連続したリトライを一定値以上検出すると、他のＰＣＩデバイスでリトライが発生していないことを確認したうえで、そのＰＣＩデバイスのバスマスタに対して優先権を与える構成である。
【００８８】
リトライで止められてしまう例としては、例えばライトはデータを更新する必要があるという理由に基づいて、リードよりもライトを固定優先にしているメモリコントローラが存在するが、このメモリコントローラに接続されたメモリ対して、連続にライトを実行するバスマスタが存在すると、同じメモリをリードしたいバスマスタに対してはリトライとされてしまい、ライトしているバスマスタのアクセスが終了するまで待機せざるを得ない状態になってしまう。もしも、リードするバスマスタが、ページプリンタのビデオ転送コントローラ５だった場合には、データを取りこぼすなどの不具合が発生する。
【００８９】
本例のＰＣＩバスアービタ１２によれば、リトライが一定回数以上連続するとそのバスマスタに優先権が与えられるので、リトライの原因となっていた他のバスマスタからのアクセスを中断させることができ、リトライさせられていたバスマスタのアクセスが正常に実行されることができる。
【００９０】
ここで、リトライ検出回路１４は、デバイス毎にリトライを検出し、リトライサイクルが発生したときのＧＮＴ＃により、どのバスマスタがリトライさせられたかを知る。バスマスタの数だけ、連続リトライ回数を管理する連続リトライカウンタ１５を用意し、それぞれの連続リトライ回数を加算する。リトライが解消、即ち当該バスマスタが正常アクセスできれば、リトライの連続性は途切れることになり、連続リトライカウンタ１５は再度ゼロからスタートする。
【００９１】
ＰＣＩバスアービタ１２と連続リトライカウンタ１５の動作シーケンスを図１６に示す。この場合、バスマスタは４つあるものとする。例えば、スキャナ、ビデオ転送、ＬＡＮインターフェース等に対応する。尚、以下の説明において、便宜上連続リトライカウンタ０〜４とする。
【００９２】
先ず、バスマスタ０がＰＣＩバスアービタ１２に対し、ＰＣＩバスの使用権を要求するため、ＲＥＱ０＃を発行する（ステップ（以下、ＳＴＰで示す）１）。このリクエストに対し、ＰＣＩバスアービタ１２はバスの制御権を認めるためにＧＮＴ０＃を出力する（ＳＴＰ２）。その時、デバイス０に対応する連続リトライカウンタ０をリセットする。
【００９３】
次に、他のデバイスの連続リトライカウンタを確認し、例えばデバイス１に対応する連続リトライカウンタ１が一定値以上であれば（ＳＴＰ３がＹ）、処理（ＳＴＰ４）に進む。一方、連続リトライカウンタ１が一定値以下であれば（ＳＴＰ３がＮ）、判断（ＳＴＰ５）に進み、次のデバイス２に対応する連続リトライカウンタ２が一定値以上でるか判断する。
【００９４】
ここで、連続リトライカウンタ２が一定値以上であれば（ＳＴＰ５がＹ）、処理（ＳＴＰ６）に進む。一方、連続リトライカウンタ２が一定値以下であれば（ＳＴＰ５がＮ）、判断（ＳＴＰ７）に進み、次の連続リトライカウンタ３が一定値以上でるか判断する。
【００９５】
以下、同様にして処理を行い（ＳＴＰ８、ＳＴＰ９、・・・）、リトライ連続回数が一定値以上になったら、該当するバスマスタであるＰＣＩデバイスに対して優先権を与える。このように構成することにより、ＰＣＩバスアービタ１２により、メモリ１にデータをライトするスキャナ９をできる限り速く動作させる一方、印字するプリンタはデータを取りこぼすことなくメモリ１からデータをリードすることができる。
【００９６】
例えば、図１７に示すタイムチャートは本例の処理を使用するものである。先ず、Ｔ１７１のタイミングでバスマスタ０がＰＣＩ−ＲＥＱ０＃信号をアサート（ローアクティブ）し、ＰＣＩ−ＧＮＴ０をローアクティブとし、ＰＣＩバスの制御権をバスマスタ０（スキャナ）に設定する。そして、ＰＣＩ−ＦＲＡＭＥ＃にメモリ１に対するライトアクセスを行う。
【００９７】
次に、Ｔ１７２のタイミングでＰＣＩ−ＲＥＱ１＃がアサート（ローアクティブ）になり、ＰＣＩ−ＧＮＴ１＃にＰＣＩバス制御を行う要求を行うが、Ｔ１７３のタイミングで再びＰＣＩ−ＲＥＱ０＃がアサートされる為、ＰＣＩ−ＳＴＯＰ＃において、ＰＣＩ−ＲＥＱ１＃の処理を中断する（リトライを要求する）。例えば、デバイス１（例えば、ビデオ転送）の要求はリトライ処理により待たされる。この時、バスマスタ１用のリトライカウンタ１がこのリトライ（ＰＣＩ−ＳＴＯＰ＃のローアクティブ）をカウントする。
【００９８】
続いて、Ｔ１７３とＴ１７６で、バスマスタ０のライトアクセスが行われ、Ｔ１７５から始まった、バスマスタ１のライトアクセスは中断される。このとき、Ｔ１７７のローを検出してリトライカウンタ１のカウントをアップする（２回になる）。さらに、Ｔ１７８でもＰＣＩ−ＳＴＯＰ＃でローを検出しカウントアップし（３回）、この値が予め設けた設定値以上になればバスマスタ１のＰＣＩ−ＲＥＱ１＃のアサートが優先されるようになる。Ｔ１７９のタイミングのＰＣＩ−ＲＥＱ１＃のローへの変化点をトリガとして、バスマスタ１のライトアクセスが開始される。
【００９９】
以上のように、本例ではリトライ連続回数が一定値以上になると、該当するバスマスタであるＰＣＩデバイスに対して優先権を与えることができ、ＰＣＩバスアービタ１２により、複数のデバイスを効率よく駆動することができる。
【０１００】
尚、本例では、優先するＰＣＩデバイスの判断を、連続してリトライされた回数を基準にしたが、実施形態２、３と同様にビデオ転送制御部のビデオ用ＦＩＦＯ７の残量の情報を利用して、その残量情報をＰＣＩバスアービタ１２が直接受け取り、ビデオ転送制御部のビデオ用ＦＩＦＯ７の残量が少なくなったときに、ビデオ転送制御部を優先してＰＣＩバスを使用させるアービトレーションを行ってもよい。
【０１０１】
さらに、本発明は上記各実施形態に限定されるものでなく、本発明の要旨を逸脱しない範囲内で種々の改良、変更が可能である。
【図面の簡単な説明】
【０１０２】
【図１】実施形態１のメモリ制御装置のシステム構成を示す図である。
【図２】メモリアクセスコントローラの動作シーケンスを示す図である。
【図３】競合時のスキャナとビデオ転送時のタイムチャートである。
【図４】非競合時のスキャナとビデオ転送時のタイムチャートである。
【図５】実施形態２、及び３のメモリ制御装置のシステム構成を示す図である。
【図６】ＰＣＩ−メモリコントローラの動作シーケンスを示す図である。
【図７】スキャナ優先時のスキャナとビデオ転送時のタイムチャートである。
【図８】ビデオ転送優先時のスキャナとビデオ転送時のタイムチャートである。
【図９】リトライ回数想定シーケンスを示す図である。
【図１０】リトライ回数の予測シーケンスを示す図である。
【図１１】リトライ期間の長いターゲットに対するタイムチャートである。
【図１２】リトライ期間の長いターゲットに対するタイムチャートである。
【図１３】リトライ期間の長いターゲットに対するタイムチャートである。
【図１４】リトライ期間の長いターゲットに対するタイムチャートである。
【図１５】実施形態４のメモリ制御装置のシステム構成を示す図である。
【図１６】ＰＣＩバスアービタと連続リトライカウンタの動作シーケンスを示す図である。
【図１７】連続リトライ回数が一定値以上のときのタイムチャートである。
【符号の説明】
【０１０３】
１・・・メモリ、２・・・メモリコントローラ、３・・・リードバッファ、
４・・・ＣＰＵ、５・・・ビデオ転送コントローラ、６・・・ライトバッファ、
７・・・ビデオ用ＦＩＦＯ、８・・・スキャナコントローラ、９・・・スキャナ、
１０・・・プリンタエンジン、１１・・・ＰＣＩ−メモリコントローラ、
１２・・・ＰＣＩバスアービタ、１３・・・ホストＰＣＩブリッジ、
１４・・・リトライ検出回路、１５・・・連続リトライカウンタ（０〜４）、
【図１】
2007094579.tif 000003
【図２】
2007094579.tif 000004
【図３】
2007094579.tif 000005
【図４】
2007094579.tif 000006
【図５】
2007094579.tif 000007
【図６】
2007094579.tif 000008
【図７】
2007094579.tif 000009
【図８】
2007094579.tif 000010
【図９】
2007094579.tif 000011
【図１０】
2007094579.tif 000012
【図１１】
2007094579.tif 000013
【図１２】
2007094579.tif 000014
【図１３】
2007094579.tif 000015
【図１４】
2007094579.tif 000016
【図１５】
2007094579.tif 000017
【図１６】
2007094579.tif 000018
【図１７】
2007094579.tif 000019