(57)【要約】【課題】ＦＩＦＯ領域が設定されたメモリを、そのメモリのアクセス速度を最大限に利用できるメモリアクセス調停方法を提供する。【解決手段】ＦＩＦＯ領域２２の蓄積データ量Ｎを判断するカウンタ１９ａと、蓄積データ量Ｎが第１の設定値Ｓ１より大きいと、ＦＩＦＯリードアクセスがＦＩＦＯライトアクセスより優先される条件Ｄ１を設定する第１の設定部３１と、蓄積データ量Ｎが第２の設定値Ｓ２より小さいと、ＦＩＦＯライトアクセスがＦＩＦＯリードアクセスより優先される条件Ｄ２を設定する第２の設定部３２とを有する調停ユニット２０を提供する。設定部３１および３２により、ＦＩＦＯリードアクセスおよびＦＩＦＯライトアクセスのみの関係を変更した条件Ｄ１およびＤ２に変更することにより、バッファフルやバッファアンダーランの発生を確実に防止でき、他のメモリアクセスの性能低下も防ぐことができる。【選択図】        図２
2004185451.tif 000002
【特許請求の範囲】
【請求項１】
ＦＩＦＯ用の領域が設定されたメモリに対するアクセスを許可するメモリアクセス調停方法であって、
前記ＦＩＦＯ用の領域に蓄積されている蓄積データ量を判断する工程と、
前記蓄積データ量が第１の設定値より大きいと判断されれば、前記ＦＩＦＯ用の領域からデータを読み出すＦＩＦＯリードアクセスが優先されるように、前記メモリに対するアクセスを許可する条件を設定する第１の工程と、
前記蓄積データ量が第２の設定値より小さいと判断されれば、前記ＦＩＦＯ用の領域にデータを書き込むＦＩＦＯライトアクセスが優先されるように、前記メモリに対するアクセスを許可する条件を設定する第２の工程とを有するメモリアクセス調停方法。
【請求項２】
請求項１において、前記第１の工程では、前記ＦＩＦＯリードアクセスの頻度が大きくなるように前記条件を設定し、
前記第２の工程では、前記ＦＩＦＯライトアクセスの頻度が大きくなるように前記条件を設定するメモリアクセス調停方法。
【請求項３】
請求項２において、前記第１の工程では、前記ＦＩＦＯリードアクセスの頻度が、前記ＦＩＦＯライトアクセスの頻度より大きくなるように前記条件を設定し、
前記第２の工程では、前記ＦＩＦＯリードアクセスの頻度が、前記ＦＩＦＯライトアクセスの頻度より小さくなるように前記条件を設定するメモリアクセス調停方法。
【請求項４】
請求項１において、前記第１および第２の設定値は、前記ＦＩＦＯ用の領域に蓄積可能な許容データ量の半分であるメモリアクセス調停方法。
【請求項５】
請求項１において、前記第１の工程では、前記ＦＩＦＯリードアクセスが前記メモリに対する全てのアクセスに対しても優先されるように設定し、
前記第２の工程では、前記ＦＩＦＯライトアクセスが前記メモリに対する全てのアクセスに対しても優先されるように設定するメモリアクセス調停方法。
【請求項６】
請求項１において、前記第１および第２の工程では、前記ＦＩＦＯリードアクセスおよびＦＩＦＯライトアクセスの関係のみを設定するメモリアクセス調停方法。
【請求項７】
ＦＩＦＯ用の領域が設定されたメモリに対するアクセスを許可するメモリアクセス調停ユニットであって、
前記ＦＩＦＯ用の領域に蓄積されている蓄積データ量を判断する手段と、
前記蓄積データ量が第１の設定値より大きいと判断されれば、前記ＦＩＦＯ用の領域からデータを読み出すＦＩＦＯリードアクセスが優先されるように、前記メモリに対するアクセスを許可する条件を設定する第１の設定手段と、
前記蓄積データ量が第２の設定値より小さいと判断されれば、前記ＦＩＦＯ用の領域にデータを書き込むＦＩＦＯライトアクセスが優先されるように、前記メモリに対するアクセスを許可する条件を設定する第２の設定手段とを有するメモリアクセス調停ユニット。
【請求項８】
請求項７において、前記第１の設定手段は、前記ＦＩＦＯリードアクセスの頻度が大きくなるように前記条件を設定し、
前記第２の設定手段は、前記ＦＩＦＯライトアクセスの頻度が大きくなるように前記条件を設定するメモリアクセス調停ユニット。
【請求項９】
請求項８において、前記第１の設定手段は、前記ＦＩＦＯリードアクセスの頻度が、前記ＦＩＦＯライトアクセスの頻度より大きくなるように前記条件を設定し、
前記第２の設定手段は、前記ＦＩＦＯリードアクセスの頻度が、前記ＦＩＦＯライトアクセスの頻度より小さくなるように前記条件を設定するメモリアクセス調停ユニット。
【請求項１０】
請求項７において、前記第１および第２の設定値は、前記ＦＩＦＯ用の領域に蓄積可能な許容データ量の半分であるメモリアクセス調停ユニット。
【請求項１１】
請求項７において、前記第１の設定手段は、前記ＦＩＦＯリードアクセスを前記メモリに対する全てのアクセスに対しても優先されるように設定し、
前記第２の設定手段は、前記ＦＩＦＯライトアクセスを前記メモリに対する全てのアクセスに対しても優先されるように設定するメモリアクセス調停ユニット。
【請求項１２】
請求項７において、前記第１および第２の設定手段は、前記ＦＩＦＯリードアクセスおよびＦＩＦＯライトアクセスの関係のみを設定するメモリアクセス調停ユニット。
【請求項１３】
請求項７に記載のメモリアクセス調停ユニットと、ＦＩＦＯ用の領域が設定されたメモリであって、前記メモリアクセス調停ユニットによりアクセスが許可されるメモリとを有するメモリユニット。
【請求項１４】
請求項１３に記載のメモリユニットと、前記メモリに設定されたＦＩＦＯ用の領域にデータを供給するデータ供給装置と、前記ＦＩＦＯ用の領域に蓄えられたデータを読み出して消費するデータ消費装置とを有するデータ処理装置。
【請求項１５】
ＦＩＦＯ用の領域が設定されたメモリに対するアクセスを許可するメモリアクセスを調停するプログラムであって、
前記ＦＩＦＯ用の領域に蓄積されている蓄積データ量を判断する工程と、
前記蓄積データ量が第１の設定値より大きいと判断されれば、前記ＦＩＦＯ用の領域からデータを読み出すＦＩＦＯリードアクセスが優先されるように、前記メモリに対するアクセスを許可する条件を設定する第１の工程と、
前記蓄積データ量が第２の設定値より小さいと判断されれば、前記ＦＩＦＯ用の領域にデータを書き込むＦＩＦＯライトアクセスが優先されるように、前記メモリに対するアクセスを許可する条件を設定する第２の工程とを実行可能な命令を有するプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＦＩＦＯ用の領域が設定されたメモリに対するアクセスを調停する方法および装置に関するものである。
【０００２】
【従来の技術】
ＲＡＭなどのメモリまたはメモリデバイスにＦＩＦＯ用の領域を設定し、ＦＩＦＯバッファおよびそれ以外の目的で共用したシステムが知られている。特開２００１−１７５５９１号公報には、メモリをＦＩＦＯとして利用するデータバッファ装置および方法が開示されている。
【０００３】
【特許文献１】
特開２００１−１７５５９１号公報
【０００４】
【発明が解決しようとする課題】
ところで、１つのメモリを幾つかの目的で使用する場合はメモリアクセスに対する調停処理が必須となる。オペレーティングシステム（ＯＳ）などのタスクスケジューリングとして使用されている調停処理のアルゴリズムとしてラウンドロビン方式やプライオリティー（優先順位）方式が知られている。これらの調停方式を利用することにより、メモリをＦＩＦＯ領域やその他の目的のために共用したシステムを構築することが可能になる。
【０００５】
調停方法においては、システムにおいて予想されるＦＩＦＯに対するアクセス頻度に基づきライトチャネルまたはリードチャネルの優先順位または頻度が設定される。しかしながら、ＦＩＦＯに対するライト（ライトアクセスまたはライトチャネル）に関して優先順位の低い設計が採用されていると、ＦＩＦＯ領域に蓄積されたデータ量が少ないときにバッファアンダーランとなる確率が増加し、システム全体の能力低下を招く懸念がある。
【０００６】
一方、ＦＩＦＯに対するリード（リードアクセスまたはリードチャネル）に関して優先順位が低い設計が採用されていると、ＦＩＦＯ領域に蓄積されたデータ量が多い場合、バッファフル状態の時間的割合が増え、ＦＩＦＯライトアクセスが待たされるためにシステム全体の性能が低下する懸念がある。
【０００７】
メモリをＦＩＦＯとして有効利用することだけを考えれば、ＦＩＦＯのライトアクセスおよびリードアクセスの優先順位を予め高めた設計とすることにより、バッファアンダーランやバッファフルを防止し、ＦＩＦＯに関する性能を向上できるかもしれない。しかしながら、メモリをＦＩＦＯ以外の他の目的でも共用する場合は、ＦＩＦＯアクセス以外の他の目的でのメモリに対するアクセス性能が低下することになるので、システム全体として見ると、やはりシステム性能が低下する懸念がある。
【０００８】
図７に、単純な加重付きラウンドロビン方式による調停方法を示してある。ＦＩＦＯライトアクセスＭ１、ＦＩＦＯリードアクセスＭ２、その他のジョブＡのメモリアクセスＭ３、その他のジョブＢのメモリアクセスＭ４、およびその他のジョブＣのメモリアクセスＭ５の５チャネルのアクセスが調停対象として設定されている。調停ユニット９０には、全体で７サイクルを１周期とするようにアクセス（チャネル）が割り当てられている。図７では、ＦＩＦＯライトアクセスＭ１およびＦＩＦＯリードアクセスＭ２が共にメモリの全体のバンドレートの２／７を使用可能に設定されている。しかしながら、システムの通常動作における解析をおこなったところＦＩＦＯライトアクセスの頻度は小さくて良いとなったときは、ＦＩＦＯライトアクセスＭ１の頻度がＦＩＦＯリードアクセスＭ２の頻度より小さく、すなわち、ＦＩＦＯライトアクセスＭ１のバンドレートが１／７に設定される。このとき、ＦＩＦＯ領域のデータ容量が少なくなると、ＦＩＦＯライトアクセスよりＦＩＦＯリードアクセスの方がバンドレートの高い設定が採用されているので、ＦＩＦＯ領域のデータは増えにくく、ＦＩＦＯリードにより消費されるのでバッファアンダーランとなる。このため、本来ＦＩＦＯライトアクセスよりＦＩＦＯリードアクセスが主体のシステムにおいてＦＩＦＯリードアクセスの性能が低下するので、システム性能が低くなる恐れがある。
【０００９】
逆に、ＦＩＦＯリードアクセスに対してＦＩＦＯライトアクセスの頻度が多いと判断された場合は、ＦＩＦＯリードアクセスのバンドレートがＦＩＦＯライトアクセスのバンドレートより小さく設定される。このとき、ＦＩＦＯ領域のデータが多い場合は、ＦＩＦＯ領域のデータがさらに増加し、バッファフルの状態が発生し、ＦＩＦＯライトアクセスが中断される。そして、ＦＩＦＯリードアクセスよりＦＩＦＯライトアクセスが多いシステムでありながら、ＦＩＦＯライトアクセスが阻害され、システムの性能が低下する。
【００１０】
ＦＩＦＯライトアクセスおよびＦＩＦＯリードアクセスの頻度を高くし、あるいは、最大転送レートを上げることにより、上記のような状態は発生し難い。しかしながら、メモリに対するアクセスがＦＩＦＯ関係で独占されるので、他のジョブのアクセスが待たされることになり、システムの性能としては低下する可能性がある。したがって、ＦＩＦＯとしても利用されるメモリに対するアクセスの条件を、リードアクセスの頻度が高いシステムだからといってリードアクセスを優先するように調停するとバッファアンダーランとなりシステムの性能を低下させる可能性がある。逆に、ライトアクセスの頻度が高いシステムだからといってライトアクセスを優先するように調停するとバッファフルとなり、はやりシステムの性能を低下させる可能性がある。
【００１１】
そこで、本発明においては、ＦＩＦＯ用の領域として共用するメモリに対するアクセスを調停する方法およびユニットにおいて、リードアクセスの頻度が高いシステムであればリードアクセスの頻度を高くでき、また、ライトアクセスの頻度が高いシステムであればライトアクセスの頻度を高くできるメモリアクセス調停方法およびユニットを提供することを目的としている。一方、バッファアンダーランおよびバッファフルの発生を防止し、リードまたはライトのアクセス頻度を高めることによるシステム性能の低下も防止できるメモリアクセス調停方法およびユニットを提供することを目的としている。
【００１２】
【課題を解決するための手段】
このため、本発明のメモリアクセス調停方法においては、ＦＩＦＯリードアクセスが優先される条件と、ＦＩＦＯライトアクセスが優先される条件とを設け、これらの条件をＦＩＦＯ用の領域に蓄積されている蓄積データ量に応じて変更できるようにしている。すなわち、ＦＩＦＯ用の領域が設定されたメモリに対するアクセスを許可する本発明のメモリアクセス調停方法は、ＦＩＦＯ用の領域に蓄積されている蓄積データ量を判断する工程と、蓄積データ量が第１の設定値より大きいと判断されれば、ＦＩＦＯ用の領域からデータを読み出すＦＩＦＯリードアクセスが優先されるように、メモリに対するアクセスを許可する条件を設定する第１の工程と、ＦＩＦＯ用の領域の蓄積データ量が第２の設定値より小さいと判断されれば、ＦＩＦＯ用の領域にデータを書き込むＦＩＦＯライトアクセスが優先されるように、メモリに対するアクセスを許可する条件を設定する第２の工程とを有する。
【００１３】
また、ＦＩＦＯ用の領域が設定されたメモリに対するアクセスを許可する本発明のメモリアクセス調停ユニットは、ＦＩＦＯ用の領域に蓄積されている蓄積データ量を判断する手段と、蓄積データ量が第１の設定値より大きいと判断されればＦＩＦＯリードアクセスが優先されるように、メモリに対するアクセスを許可する条件を設定する第１の設定手段と、蓄積データ量が第２の設定値より小さいと判断されれば、ＦＩＦＯライトアクセスが優先されるように、メモリに対するアクセスを許可する条件を設定する第２の設定手段とを有する。また、本発明のメモリアクセス調停方法は、情報処理装置上で動作するプログラムとして提供することも可能である。すなわち、本発明は、情報処理装置であるＣＰＵなどのプロセッサあるいはコンピュータに対して、上述したメモリアクセス調停方法の、判断する工程と、第１の工程と、第２の工程とを実行させることが可能な命令を有するプログラムを含む。このようなプログラムは、ＣＤ−ＲＯＭやシステム内のＲＯＭなどの適当な記録媒体に記録して提供することが可能であるし、コンピュータネットワークを介して提供することも可能である。
【００１４】
本発明のメモリアクセス調停方法および調停ユニットでは、ＦＩＦＯ用の領域の蓄積データ量が第１の設定値より大きいと判断されると、ＦＩＦＯリードアクセスが優先され、ＦＩＦＯリードアクセスの頻度が増加する。したがって、ＦＩＦＯ領域内の蓄積データは読み出される頻度が高くなるので、バッファフルの発生を未然に防止できる。一方、ＦＩＦＯ用の領域の蓄積データ量が第２の設定値より小さいと判断されたときには、ＦＩＦＯライトアクセスが優先される条件に設定されるので、ＦＩＦＯライトアクセスの頻度が増加する。したがって、ＦＩＦＯ領域内にデータを書き込む頻度が高くなるので蓄積データ量が増え、バッファアンダーランの発生を未然に防止できる。このため、定常状態では、ＦＩＦＯリードアクセスとＦＩＦＯライトアクセスの頻度をシステムに適した状態となるように調停していても、バッファアンダーランあるいはバッファフルというシステムの性能が低下する状態を防止することができ、システムの性能を高い状態で維持できる。
【００１５】
したがって、本発明のメモリアクセス調停ユニットと、ＦＩＦＯ用の領域が設定されたメモリであって、メモリアクセス調停ユニットによりアクセスが許可されるメモリとを有するメモリユニットはシステムの要求に適したライトおよびリードの頻度を設定でき、その一方で、バッファアンダーランあるいはバッファフルというシステムの性能が低下する状態を防止する。このため、このメモリユニットと、メモリに設定されたＦＩＦＯ用の領域にデータを供給するデータ供給装置と、ＦＩＦＯ用の領域に蓄えられたデータを読み出して消費するデータ消費装置とを有するデータ処理装置は高い性能で処理を実行できる。
【００１６】
バッファフルおよびバッファアンダーランの発生を確実に防止するには、第１の工程および第１の設定手段において、ＦＩＦＯリードアクセスの頻度がＦＩＦＯライトアクセスの頻度より高くなるように条件、すなわち、プライオリティー方式であれば優先順位、ラウンドロビン方式であればバンドレートを設定し、第２の工程および第２の設定手段において、ＦＩＦＯリードアクセスの頻度が、ＦＩＦＯライトアクセスの頻度より低くなるように条件を設定することが望ましい。このように条件を設定することにより、ＦＩＦＯ領域内のデータ量の増減を確実に制御できるので、バッファフルおよびバッファアンダーランの発生を確実に制御できる。
【００１７】
第１および第２の工程、および第１および第２の設定手段において、ＦＩＦＯリードアクセスおよびＦＩＦＯライトアクセスの関係のみを設定すれば、メモリに対する他のアクセスへの影響を与えずにバッファフルおよびバッファアンダーランの発生を抑制できる。一方、第１の工程および第１の設定手段では、ＦＩＦＯリードアクセスがメモリに対する全てのアクセスに対して優先されるように設定し、第２の工程および第２の設定手段では、ＦＩＦＯライトアクセスがメモリに対する全てのアクセスに対しても優先されるように設定することも可能である。この場合は、メモリに対する他のアクセスに影響を与えるが、ＦＩＦＯ領域内のデータ量を最も効率よく調整でき、バッファフルおよびバッファアンダーランの発生を効率良く抑制できる。
【００１８】
第１および第２の設定値は、データの供給元のデータ量やデータの消費先の処理スピードを見越して決めておけば良く、たとえば、第１の設定値を蓄積データ量がＦＩＦＯ領域の許容データ量の７０％程度としておいたり、第２の設定値を蓄積データ量がＦＩＦＯ領域の許容データ量の３０％程度としておくことが可能である。また、第１および第２の設定値を、ＦＩＦＯ用の領域に蓄積可能な許容データ量の半分または５０％としておくことも可能である。
【００１９】
【発明の実施の形態】
以下に図面を参照して本発明をさらに詳しく説明する。図１にプリンタの概略構成を示してある。このプリンタ１は、本発明に係るメモリアクセス調停ユニットを備えたメモリユニットが搭載されている。プリンタ１は、ホスト装置８などから転送された印刷データφを画像処理して印刷機構４により用紙５に印刷するようになっており、画像処理や印刷機構４の制御を行うデータ処理装置２を備えている。このデータ処理装置２は、ＣＰＵ１１と、ファームウェアなどが記録されたＲＯＭ１２と、印刷データφを取得するインターフェイス１３と、印刷データφを画像処理する画像処理ＡＳＩＣ１４と、メモリユニット３とを備えており、これらがバス１７を介して接続されている。メモリユニット３は、ＲＡＭなどのメモリまたはメモリデバイス２１と、メモリ２１に対するメモリアクセスを調停可能な調停ユニット２０と、メモリコントローラ１５を備えている。また、データ処理装置２は、印刷機構４を制御するメカ制御部１６を備えている。
【００２０】
メモリユニット３のメモリ２１にはＦＩＦＯ用の領域２２が設定されており、画像処理ＡＳＩＣ１４で画像処理されたデータがＦＩＦＯ領域２２に蓄積または格納され、この蓄積されたデータ（蓄積データ）がメカ制御部１６を介して印刷機構４に出力されるようになっている。このため、画像処理ＡＳＩＣ１４からＦＩＦＯ領域２２に供給されるデータ量または処理スピードと、メカ制御部１６を介して印刷機構４で消費されるＦＩＦＯ領域内のデータ量または処理スピードとの差をメモリ２１に設定されたＦＩＦＯ領域２２で吸収される。したがって、本例では、画像処理ＡＳＩＣ１４がＦＩＦＯ領域２２にデータを供給するデータ供給装置であり、メカ制御部１６または印刷機能４がＦＩＦＯ領域２２の蓄積データを消費するデータ消費装置である。
【００２１】
メモリユニット３のメモリ２１は、ＲＯＭ１２に記録されたプログラムを実行する際に展開する領域や、プログラムを実行するためのデータの一時的な格納領域などとしても利用されるようになっており、１つのメモリ２１または１つのメモリ２１としてアクセスされるメモリブロックがＦＩＦＯとその他の目的として共用されている。
【００２２】
メモリユニット３は、ＦＩＦＯ領域２２が設定されたメモリ２１と、メモリ２１に対するアクセス要求を調停する調停ユニット２０と、メモリ２１に対して制御信号を出力して、調停ユニット２０により許可されたアクセス要求に対応したメモリアクセス、すなわち、所定のアドレスへのデータの書き込みまたは読み込みを可能とするメモリコントローラ１５とを備えている。
【００２３】
調停ユニット２０は、ＦＩＦＯ領域２２からデータを読み出すＦＩＦＯリード要求（またはリードアクセス）、ＦＩＦＯ領域２２にデータを書き込むＦＩＦＯライト要求（またはライトアクセス）、その他のジョブに関するメモリライト要求（またはメモリライトアクセス）、メモリリード要求（またはメモリリードアクセス）を受け付けて予め決められた条件または設定にしたがってメモリ２１に対するアクセス要求を許可する調停回路２４と、ＦＩＦＯ領域２２に蓄積されているデータ量（蓄積データ量）Ｎをカウントする機能１９ａを備えたＦＩＦＯコントローラ１９とを備えている。このため、ＦＩＦＯ領域２２にデータを書き込んだり読み出したりするデータはＦＩＦＯコントローラ１９を介して調停回路２４により制御される。たとえば、ＦＩＦＯ領域２２に書き込むデータはＦＩＦＯコントローラ１９を介して調停回路２４に供給され、ＦＩＦＯ領域２２から読み出されたデータは調停回路２４を介してＦＩＦＯコントローラ１９に供給されてメカ制御部１６に出力される。したがって、ＦＩＦＯコントローラ１９は、データの入出力に基づいてカウンタ１９ａを操作することによりＦＩＦＯ領域２２の蓄積データ量Ｎを把握できる。このカウンタ１９ａが、蓄積データ量Ｎを判断する手段に相当する。
【００２４】
図２にメモリユニット３の詳細を、ブロック図を用いて示してある。メモリユニット３の調停回路２４は、ＦＩＦＯリード要求を受け付けるＦＩＦＯリードチャネル４１、ＦＩＦＯライト要求を受け付けるＦＩＦＯライトチャネル４２、その他のメモリライト要求を受け付けるメモリライトチャネル４３、およびその他のメモリリード要求を受け付けるメモリリードチャネル４４を備えており、複数種類のアクセス要求を受け付けることが可能である。なお、ＦＩＦＯに関するアクセス要求に関しては、ＦＩＦＯコントローラ１９に備わっている読み出しポインタや書き込みポインタによってデータのリードアドレスやライトアドレスが生成されて調停回路２４に供給されるようになっており、ＦＩＦＯ領域２２に書き込まれた順番でデータを読み出す動作が実現されている。
【００２５】
この調停回路２４は、メモリに対するアクセスの優先順位またはバンドレートを変更可能な設定部３０と、この設定部３０で設定された優先順位またはバンドレートにしたがって所定のメモリアクセスを許可し、その他のメモリアクセスを待ち状態にする調停部３５とを備えている。設定部３０は、カウンタ１９ａの出力、すなわち、ＦＩＦＯ領域２２の蓄積データ量Ｎが第１の設定値Ｓ１より大きいと判断されればＦＩＦＯ領域２２からデータを読み出すＦＩＦＯリードアクセスＭ２が、ＦＩＦＯ領域２２にデータを書き込むＦＩＦＯライトアクセスＭ１より優先されるように、メモリ２１に対するアクセスを許可する条件Ｄ１を調停部３５に設定する第１の設定部３１と、蓄積データ量Ｎが第２の設定値Ｓ２より小さいと判断されれば、ＦＩＦＯライトアクセスＭ１が、ＦＩＦＯリードアクセスＭ２より優先されるように、メモリ２１に対するアクセスを許可する条件Ｄ２を調停部３５に設定する第２の設定部３２とを備えている。本例では、第１および第２の設定値Ｓ１およびＳ２は、いずれもＦＩＦＯ領域２２で蓄積可能な許容データ量または容量Ｃの５０％または半分（Ｃ／２）に設定されている。
【００２６】
図３に第１の設定部３１により調停部３５の設定が変えられたときのメモリ２１に対するアクセスが変化する様子を示してあり、図４に第２の設定部３２により調停部３５の設定が変えられたときの処理を示してある。なお、これらの図においても、図７に基づき説明したのと同様に、ＦＩＦＯライトアクセスＭ１、ＦＩＦＯリードアクセスＭ２、その他のジョブＡのメモリアクセスＭ３、その他のジョブＢのメモリアクセスＭ４、およびその他のジョブＣのメモリアクセスＭ５の５チャネルのアクセスがあり、全体で７サイクルを１周期としてチャネルの割り当てが行われる。そして、予めＦＩＦＯライトアクセスＭ１およびＦＩＦＯリードアクセスＭ２が共にメモリ２１の全体のバンドレートの２／７を使用可能な条件Ｄに設定されているとする。
【００２７】
第１の設定部３１および第２の設定部３２は、基本的には、図７に基づいて説明したラウンドロビン方式のアルゴリズムを採用してメモリアクセスを調停するようになっているが、ＦＩＦＯ領域２２の蓄積データ量Ｎに応じてＦＩＦＯライトアクセスＭ１とＦＩＦＯリードアクセスＭ２の頻度をフレキシブルに変更する。まず、図３（ａ）に示すように、第１の設定部３１において、ＦＩＦＯコントローラ１９のカウンタ１９ａの出力から蓄積データ量ＮがＣ／２より大きいと判断されると、調停部３５は、ＦＩＦＯライトアクセスＭ１の頻度を減らし、この減らした分をＦＩＦＯリードアクセスＭ２に割り当てるように設定（条件Ｄ１）される。これにより、ＦＩＦＯリードアクセスＭ２の頻度が高くなる。すなわち、ＦＩＦＯライトアクセスＭ１はメモリ２１の全体のバンドレートが２／７から１／７に減り、ＦＩＦＯリードアクセスＭ２のバンドレートが２／７から３／７に増えるので、ＦＩＦＯリードアクセスＭ２がＦＩＦＯライトアクセスＭ１より優先され、リードアクセスの頻度が高くなる。したがって、蓄積データ量Ｎが多い状態になっても、バッファフルになる可能性がなくなり、バッファフルの発生を未然に防止できる。
【００２８】
一方、図４（ａ）に示すように、第２の設定部３２において、ＦＩＦＯコントローラ１９のカウンタ１９ａの出力から蓄積データ量ＮがＣ／２より小さいと判断されると、調停部３５は、ＦＩＦＯリードアクセスＭ２の頻度を減らし、この減らした分をＦＩＦＯライトアクセスＭ１に割り当てるように設定（条件Ｄ２）される。これにより、ＦＩＦＯライトアクセスＭ１の頻度が高くなる。すなわち、ＦＩＦＯリードアクセスＭ２はメモリ２１の全体のバンドレートが２／７から１／７に減り、ＦＩＦＯライトアクセスＭ１のバンドレートが２／７から３／７に増えるので、ＦＩＦＯライトアクセスＭ１がＦＩＦＯリードアクセスＭ２よりも優先され、ライトアクセスの頻度が高まる。このため、蓄積データ量Ｎが少ない状態のときには、ＦＩＦＯライトがＦＩＦＯリードより優先して許可されるので、ＦＩＦＯ領域内のデータ量が増加し、バッファアンダーランの発生を未然に防止できる。
【００２９】
以上の制御では、第１の設定部３１および第２の設定部３２は、ＦＩＦＯライトアクセスＭ１およびＦＩＦＯリードアクセスＭ２の関係のみを変更した条件Ｄ１およびＤ２を設定し、その他のジョブのメモリアクセスＭ３〜Ｍ５の条件を変更しない。すなわち、他のメモリアクセスＭ３〜Ｍ５のバンドレートはそれぞれ１／７に維持されたままであり、他のメモリアクセスＭ３〜Ｍ５の優先度は変化しない。したがって、他のメモリアクセスに影響を与えることなく、バッファフルおよびバッファアンダーランの発生が確実に防止される。
【００３０】
図５に調停ユニット２０で行われる調停処理を、フローチャートを用いて示してある。まず、ステップ５１で、調停ユニット２０の調停回路２４がいずれかのメモリアクセス要求Ｍ１〜Ｍ５を受け付けると、ステップ５２において、設定されている条件にしたがってメモリアクセスを調停する。次に、ステップ５３において、設定部３０がＦＩＦＯコントローラ１９のカウンタ１９ａを参照し、蓄積データ量Ｎを判断する。ステップ５４において、蓄積データ量Ｎが第１の設定値Ｓ１より大きければ、第１の設定部３１が、ステップ５６において、調停部３５の条件を変更する。本例では、ＦＩＦＯライトアクセスＭ１の有効サイクルを減すと共に、ＦＩＦＯリードアクセスＭ２の有効サイクルを増やように条件が変えられ、ＦＩＦＯリードアクセスＭ２の頻度が高められる。すなわち、調停条件が条件Ｄ１に設定される。一方、ステップ５５において、蓄積データ量Ｎが第２の設定値Ｓ２（本例では、第１の設定値Ｓ１および第２の設定値Ｓ２はいずれもＣ／２）より小さければ、第２の設定部３２は、ステップ５７において、調停部３５の条件を変更する。調停部３５は、ＦＩＦＯリートアクセスＭ２の有効サイクルを減らすと共に、ＦＩＦＯライトアクセスＭ１の有効サイクルを増やすように設定され、ＦＩＦＯライトアクセスＭ１の頻度が高められる。すなわち、調停条件が条件Ｄ２に設定される。
【００３１】
このような処理は調停ユニット２０にハードウェアロジックとして組み込むことも可能であるし、ソフトウェアロジック（ファームウェア）として組み込むことも可能である。あるいは、調停ユニット２０としての制御を専用のマイクロプロセッサで制御することも可能であり、ソフトウェア制御を行う場合は、マイクロプロセッサや他のコンピュータとして動作する情報処理装置に上記のステップを実行するような命令を備えたプログラム（プログラム製品）をＲＯＭなどの記録媒体に記録して提供する。プログラムは、コンピュータネットワークを介して提供することも可能である。
【００３２】
本例の調停ユニット２０は、ＦＩＦＯリードサイクルおよびＦＩＦＯライトサイクルの頻度を、ＦＩＦＯ領域２２の蓄積データ量Ｎに応じてフレキシブルに変更することが可能である。したがって、ＦＩＦＯに対するアクセスの頻度をプリンタ１などのシステムに適した状態となるように予め設定し、通常状態においては、そのような条件で調停していても、バッファフルやバッファアンダーランが発生する可能性があるときは、それらの発生を防止するようにアクセスの優先度が自動的に変更されるので、バッファフルやバッファアンダーランの発生を未然に防止できる。このため、ＦＩＦＯに対するアクセスの優先基準を、システム（プリンタ）において予想される最も適した優先基準に設定し、通常状態では、システムの性能を高く維持できる。そして、システム性能が低下するような事態が発生しそうになると、そのシステム性能が低下する状態を防止できるので、システム性能を常に高い状態で維持できる。したがって、印刷データの量や画像処理の種類などが異なる様々な印刷処理であっても、常にメモリへのアクセス効率を高く保て、高速な処理を実現できる。特に、図３（ａ）および図４（ａ）に示した調停方法では、調停ユニット２０が、他のメモリアクセスＭ３〜Ｍ５の頻度は変更しないようにし、その他のジョブに係るメモリアクセスの性能を維持しているので、ＦＩＦＯ以外のジョブの処理速度は低下させずに、ＦＩＦＯ動作に伴う処理性能を効率良く向上できる。このため、システムの処理能力をフルに発揮させるのに最適である。一方、今まで過度に高速のメモリを使用して構築していた高性能なシステムを、低コストなそれほど高速でない（低速の）メモリを用いて同等の性能のシステムを構築できる可能性があり、本発明により低コストで高性能のシステムを提供できる。
【００３３】
また、本例の調停ユニット２０を用いることにより、ＣＰＵ１１に特別なジョブまたは処理を発生させることなく、データ供給装置（画像処理ＡＳＩＣ）１４で処理されたデータがＦＩＦＯ領域２２に蓄積されるスピードと、データ消費装置（メカ制御部）１６でデータが消費されるスピードとの差をメモリ２１に設定されたＦＩＦＯ領域２２で吸収またはマッチングさせることができる。したがって、調停ユニット２０を備えたメモリユニット３を用いることにより、メモリユニット３というクローズされた範囲でデータ供給装置とデータ消費装置との速度差をマッチングさせることが可能であり、調停ユニット２０をプリンタやホスト装置などのシステムに組み込むだけで、ＲＡＭなどのメモリデバイスをＦＩＦＯとして共用した高速で低コストのシステムを容易に構築することが可能である。
【００３４】
さらに、ＦＩＦＯ領域２２の蓄積データ量Ｎはカウンタ１９ａを用いて簡単に捉えることができるので、ＣＰＵなどで専用の処理を行わなくても良い。したがって、過剰な処理が増えることがなく、システム性能を効率良く引き出すことが可能である。また、調停条件の変更は第１および第２の設定値に依存するので、この条件の変更に伴う処理負担が大きいときには、第１および第２の設定値を変更するだけで、その処理負担を簡単に緩和することも可能である。したがって、調停ユニット２０またはメモリユニット３が組み込まれるシステムに応じて第１および第２の設定値を変更することで、そのシステムにマッチした、すなわち、システムの性能アップに直結するような調停条件の変更処理を実現することも可能である。
【００３５】
なお、上記では、ＦＩＦＯライトアクセスＭ１およびＦＩＦＯリードアクセスＭ２の関係のみを変更し、その他のメモリアクセスＭ３〜Ｍ５に影響を与えないようにしているが、他のメモリアクセスＭ３〜Ｍ５を含めてＦＩＦＯアクセスＭ１およびＭ２の関係を調停することも可能である。この場合は、他のメモリアクセスＭ３〜Ｍ５に影響を与えるが、ＦＩＦＯ領域２２のデータ量を最も効率良く調整できる。このような場合は、第１の設定部３１により、ＦＩＦＯリードアクセスＭ２がメモリ２１に対する他のアクセスに対しても優先されるように設定し、第２の設定部３２により、ＦＩＦＯライトアクセスＭ１が他のアクセスに対しても優先されるように設定すれば良い。
【００３６】
そのような方法の１つは、図３（ｂ）に示すように、第１の設定部３１により、サイクルを１つ増やして８サイクルを１周期とし、増やしたサイクルに対してＦＩＦＯリードアクセスＭ２を割り当てることである。これにより、ＦＩＦＯリードアクセスＭ２のバンドレートを３／８に高め、これ以外のメモリアクセスＭ１、Ｍ３〜Ｍ５のバンドレートを相対的に低下させた条件Ｄ３に設定できる。一方、図４（ｂ）に示すように、第２の設定部３２により、サイクルを１つ増やして８サイクルを１周期とし、増やしたサイクルにＦＩＦＯライトアクセスＭ１を割り当てる。これにより、ＦＩＦＯライトアクセスＭ１のバンドレートを３／８に高め、これ以外のメモリアクセスＭ２、Ｍ３〜Ｍ５のバンドレートを相対的に低下させた条件Ｄ４に設定できる。
【００３７】
さらに、このようなサイクルを増やす方法と、上述したようなＦＩＦＯリードアクセスとＦＩＦＯライトアクセスとの割り当てを変更する方法を併用することも可能である。これにより、ＦＩＦＯリードアクセスやＦＩＦＯライトアクセスが優先されるような条件を他段階に制御することも可能になり、蓄積データ量に応じてリアルタイムに調停条件を変更することが可能になる。
【００３８】
上記では、画像処理ＡＳＩＣ１４が搭載され、このＡＳＩＣ１４で処理されたデータがＦＩＦＯ領域２２に供給されるデータ処理装置２を例に説明した。さらに、ＡＳＩＣ１４を用いず、ホスト８から供給されたデータを印刷機構にそのまま送って印刷するプリンタにおいても、本発明を適用することが可能である。そのようなプリンタ１およびそれに搭載されたデータ処理装置２ａの概略を図６に示してある。このプリンタ１のデータ処理装置２ａは、画像処理ＡＳＩＣ１４が搭載されておらず、インターフェイス１３で取得したホスト８からのデータφがインターフェイス１３からＦＩＦＯコントローラ１９に直接供給されるようになっている。このため、このデータ処理装置２ａでは、インターフェイス１３がＦＩＦＯ領域２２にデータを供給するデータ供給装置になる。
【００３９】
このようなデータ処理装置２ａでは、ホスト８から転送されたデータをインターフェイス１３で取得しＦＩＦＯ領域２２に送られるので、ＦＩＦＯライトアクセスはホスト８とインターフェイス１３との間の通信速度に依存する。このため、バッファフルの状態になるとホスト８との通信の待ち時間（Ｂｕｓｙ時間）が多く発生することになる。このようなデータ処理装置２ａに本発明に係る調停ユニット２０を搭載しておけば、メモリアクセスの割り当てを変化させてバッファフルの発生を防ぐことができるので、ホスト８との通信の待ち時間（Ｂｕｓｙ時間）を少なく、または無くすことができ、ホスト−インターフェイス間のもつバンドレートを最大限に活用できる。
【００４０】
なお、ＦＩＦＯ領域２２の蓄積データ量Ｎは、データの入出力をインクリメントおよびデクリメントするカウンタ（アップダウンカウンタ）の代わりに、ＦＩＦＯ領域２２に対するリードアドレスおよびライトアドレスの差分を算出することにより求めることも可能である。このため、データ処理装置２ａにおいては、蓄積データ量Ｎを判断する手段として、これらのアドレスの差分を算出する機能１９ｂが設けられている。
【００４１】
上記では、第１および第２の設定値として、ＦＩＦＯ領域２２の蓄積データ量Ｎが領域２２の容量の半分の値を割り当てていたが、データ供給装置によりＦＩＦＯ領域に供給されるデータ量や、データ消費装置で処理されるデータ量などに応じて第１および第２の設定値を他のシステムに適した値に定めておくことが可能である。
【００４２】
また、各チャネルのアクセス要求を確認（サンプリング）する方法は、高優先なチャネルから順番に確認している方法と、ある時点で同時に確認する方法があるが、本発明はサンプリング方法に依存するものではない。
【００４３】
そして、上記では、プリンタを例に説明したが、本発明の調停ユニットまたはメモリユニットを適用可能な装置またはシステムはプリンタに限定されるものではなく、メモリをＦＩＦＯ領域として共用するシステムであれば、本発明の調停ユニットまたはメモリユニットを適用できる。
【００４４】
【発明の効果】
以上に説明したように、本発明においては、ＦＩＦＯ領域の蓄積データ量に応じて、ＦＩＦＯリードアクセスおよびＦＩＦＯライトアクセスの優先度をフレキシブルに変更するようにしている。したがって、ＦＩＦＯリードアクセスとＦＩＦＯライトアクセスをシステムに適した状態となるように調停していても、システムの性能の低下に繋がるバッファアンダーランやバッファフルの発生を確実に防止することができ、システムの性能を常に最大限に引き出すことが可能である。すなわち、システム内のメモリをＦＩＦＯとして共用する場合であっても、メモリのアクセス速度を最大限に活用でき、過度の高速なメモリを搭載しなくても、高性能なシステムを低コストで構築できる。
【図面の簡単な説明】
【図１】本発明に係るデータ処理装置が搭載されたプリンタの概略を示す図である。
【図２】図１に示すデータ処理装置に搭載されたメモリユニットの詳細を示すブロック図である。
【図３】図３は第１の設定部により調停部の設定が変えられる様子を示す図であり、図３（ａ）はＦＩＦＯリードアクセスとＦＩＦＯライトアクセスの関係のみを変更する方法を示す図、図３（ｂ）はサイクルを１つの増す方法を示す図である。
【図４】図４は第２の設定部により調停部の設定が変えられる様子を示す図であり、図４（ａ）はＦＩＦＯリードアクセスとＦＩＦＯライトアクセスの関係のみを変更する方法を示す図、図４（ｂ）はサイクルを１つの増す方法を示す図である。
【図５】調停ユニットにおいてＦＩＦＯリードアクセスおよびＦＩＦＯライトアクセスの優先度を変更する処理を示すフローチャートである。
【図６】異なるデータ処理装置が搭載されたプリンタの概略を示す図である。
【図７】ＦＩＦＯ領域が設定されたメモリをラウンドロビン方式を用いて調停する方法を説明するための図である。
【符号の説明】
１    プリンタ
２、２ａ    データ処理装置
３    メモリユニット
１４    画像処理ＡＳＩＣ（データ供給装置）
１５    メモリコントローラ
１６    メカ制御部（データ消費装置）
１９    ＦＩＦＯコントローラ
１９ａ    カウンタ（蓄積データ量を判断する手段）
２０    調停ユニット
２１    メモリ
２２    ＦＩＦＯ用の領域
２４    調停回路
３０    設定部
３１    第１の設定部
３２    第２の設定部
３５    調停部
【図１】
2004185451.tif 000003
【図２】
2004185451.tif 000004
【図３】
2004185451.tif 000005
【図４】
2004185451.tif 000006
【図５】
2004185451.tif 000007
【図６】
2004185451.tif 000008
【図７】
2004185451.tif 000009