(57)【要約】【課題】同程度の優先度の複数のバスマスタに対し、より優先度の高いバスマスタの使用効率を圧迫しないアービタを提供すること。【解決手段】共通のバス１２に接続されている複数のバスマスタ１１０からのバス獲得要求を、予め設定されている各バスマスタの優先度に基づき調停するバスアービタ１００であって、優先度が最も高い第一のバスマスタからの第一のバス獲得要求、及び、前記第一のバスマスタと同等の優先度である第二のバスマスタからの第二のバス獲得要求を監視するバス獲得要求監視手段１４と、前記バス獲得要求監視手段の監視結果を取得して、前記第一のバス獲得要求の頻度及び前記第二のバス獲得要求の頻度が予め定められた基準を満たす特定事象を検知する特定事象検知手段１５と、前記特定事象検知手段から特定事象検知信号を取得して、前記第二のバス獲得要求の頻度を制限するバス獲得制御手段１３と、を有することを特徴とする。【選択図】図７
2013054699.tif 000002
【特許請求の範囲】
【請求項１】
共通のバスに接続されている複数のバスマスタからのバス獲得要求を、予め設定されている各バスマスタの優先度に基づき調停するバスアービタであって、
優先度が最も高い第一のバスマスタからの第一のバス獲得要求、及び、前記第一のバスマスタと同等の優先度である第二のバスマスタからの第二のバス獲得要求を監視するバス獲得要求監視手段と、
前記バス獲得要求監視手段の監視結果を取得して、前記第一のバス獲得要求の頻度及び前記第二のバス獲得要求の頻度が予め定められた基準を満たす特定事象を検知する特定事象検知手段と、
前記特定事象検知手段から特定事象検知信号を取得して、前記第二のバス獲得要求の頻度を制限するバス獲得制御手段と、
を有するバスアービタ。
【請求項２】
前記特定事象検知手段は、一定時間内の、前記第一のバス獲得要求の数及び前記第二のバス獲得要求の数をカウントすることで、前記第一のバス獲得要求の頻度及び前記第二のバス獲得要求の頻度を求める、
ことを特徴とする請求項１記載のバスアービタ。
【請求項３】
前記バス獲得制御手段は、前記特定事象検知信号を取得すると、前記第二のバスマスタの前記第二のバス獲得要求によりバス獲得要求がマスクされない第三のバスマスタに第三のバス獲得要求を発生させる、
ことを特徴とする請求項１又は２記載のバスアービタ。
【請求項４】
前記バス獲得制御部が前記第三のバスマスタに前記第三のバス獲得要求を発生させる際、前記バス獲得制御部は前記第三のバスマスタに、前記第三のバス獲得要求にダミーであること示すダミーヘッダを付加させる、
ことを特徴とする、請求項３記載のバスアービタ。
【請求項５】
前記ダミーヘッダを検出した場合、前記第三のバス獲得要求に基づくバスの獲得要求を調停することなく前記第三のバス獲得要求を破棄する、
ことを特徴とする、請求項４記載のバスアービタ。
【請求項６】
前記バス獲得要求監視手段、又は、前記特定事象検知手段のうち、少なくとも１つを停止させることができる機能停止手段を有する、
ことを特徴とする、請求項１〜５いずれか１項記載のバスアービタ。
【請求項７】
任意の前記基準の判定条件を記憶する判定条件記憶手段を有し、
前記特定事象検知手段は、前記判定条件記憶手段に記憶された判定条件に基づき特定事象を検知する、
ことを特徴とする、請求項１〜６いずれか１項記載のバスアービタ。
【請求項８】
請求項１〜７いずれか１項記載のバスアービタと、
複数のバスマスタと、
バスを介して接続されたメモリと、
バス獲得要求を調停した前記バスアービタからの指示により、前記メモリにアクセスするメモリコントローラと、
を有するバスアービタシステム。
【請求項９】
共通のバスに接続されている複数のバスマスタからのバス獲得要求を、予め設定されている各バスマスタの優先度に基づき調停するバスアービタの処理方法であって、
バス獲得要求監視手段が、優先度が最も高い第一のバスマスタからの第一のバス獲得要求、及び、前記第一のバスマスタと同等の優先度である第二のバスマスタからの第二のバス獲得要求を監視するステップと、
特定事象検知手段が、前記バス獲得要求監視手段の監視結果を取得して、前記第一のバス獲得要求の頻度及び前記第二のバス獲得要求の頻度が予め定められた基準を満たす特定事象を検知するステップと、
バス獲得制御手段が、前記特定事象検知手段から特定事象検知信号を取得して、前記第二のバス獲得要求の頻度を制限するステップと、
を有するバスアービタの処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共通のバスに接続されている複数のバスマスタからのバス獲得要求を、予め設定されている各バスマスタの優先度に基づき調停するバスアービタに関する。
【背景技術】
【０００２】
情報処理装置では複数の機器がバスを共有してメモリへのリード／ライトを行うことで処理を遂行することが多い。例えば、画像形成装置では、印刷用のデータを用紙に印刷するまでに、いくつかの画像処理手段が高速なメモリにそれぞれアクセスする。
【０００３】
図１は、各画像処理手段によるメモリアクセスを説明する図の一例である。ＰＣ（Personal  Computer）３００上のアプリケーションがＯＳやプリンタドライバを利用してＰＤＬデータ（ページ記述言語）を画像形成装置２００に送信すると、通信コントローラ２０１がＰＤＬデータをメモリに記憶する。次に、ＣＰＵ（ソフトウェア）２０２がＰＤＬデータをメモリから読み出して描画コマンドを生成してメモリ４００に書き戻す。次に、描画装置２０３がメモリ４００から描画コマンドを解析し階調処理した画像データをメモリ４００に書き込む。次に、符号化装置２０４が、階調処理された画像データを圧縮アルゴリズム（ＪＢＩＧなど）により符号化された画像データをメモリ４００に書き込む。次に、復号装置２０５が、メモリ４００から符号化された画像データを読み込み復号し、Ｃ，Ｍ，Ｙ，Ｋの各版に対応するラスタデータをプリンタエンジン２０６に転送する。このように、複数の画像処理手段が１つのメモリ４００に次々とアクセスする。
【０００４】
このため、複数の画像処理手段とメモリの間にメモリアクセスを調停するアービタ１００が設けられることが一般的である。アービタ１００は、複数の画像処理手段が同時期にメモリアクセスを要求した際に、所定の規則に従い、画像処理手段とメモリ４００を結ぶバス５００の使用権を与える画像処理手段を決定する。
【０００５】
バス要求が同時に発生した場合にアービタ１００が調停する調停方法について、予め固定的に画像処理手段に優先度を設定しておき、高い方にバス使用権を与える固定優先順位方式がある。この他、優先度が固定ではなく、順番に画像処理手段にバスの使用権を与えるラウンドロビン方式があるが、本願では主に固定優先順位方式を扱う。
【０００６】
図２は、固定優先順位方式を説明する図の一例である。バスマスタ１１０（区別する場合、バスマスタ１〜５という）のうち、ここではバスマスタ１が最も高い優先度を有するものとする。
・バスマスタ１がアービタ１００にバスの獲得を要求した場合、アービタ１００はバスマスタ１にバスの使用権を与える。
・バスマスタ１のバス獲得要求がなく、優先度の低いバスマスタ２，３がアービタ１００にバスの獲得を要求した場合、アービタ１００はバスマスタ２、３の獲得要求をマスクすることなくバスマスタ２、３にバスの使用権を与える。
【０００７】
しかし、バスマスタ１がバスの獲得要求を発生し、かつ、バスマスタ２、３がバスの獲得要求を発生した場合、バスマスタ２、３等はバスを獲得できない状況が発生する。この場合、バスマスタ１がバスの獲得要求を発生する期間が長いと、バスマスタ２、３のバスの獲得要求が継続的に無視されてしまう。
【０００８】
そこで、バスマスタ１を優先しながらバスマスタ２、３等のバスの獲得要求を完全には無視しないアービタ１００が提案されている（例えば、特許文献１参照。）。特許文献１には、バスマスタ１がバスを獲得している間に、バスマスタ２，３がバスの獲得を要求した場合、バスマスタ２，３のバス使用頻度を一時的に低下させる技術が開示されている。
【０００９】
図３は、従来のバスマスタ１〜３のアービタへの獲得要求について説明する図の一例である。図では棒状の縦線がバスマスタ１〜３のバスの獲得要求を示す。バスマスタ１のバス獲得要求がない場合には、他のバスマスタ２、３は獲得要求をマスクされることなく、バスを獲得している。しかし、バスマスタ１がバスの獲得を要求し、かつ、バスマスタ２又は３がバスの獲得を要求した場合、バスマスタ２、３は一定期間、バス要求をマスクされる。これにより、バスマスタ２，３はバス使用頻度を制限される。係る構成によれば、アービタ１００は、他のバスマスタ２，３のバス使用頻度を一時的に低下させることができ、かつ、優先度の低いバスマスタからの要求を無視することなく、バスマスタ１のデータ転送効率を保証することができる。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１に記載された技術は、バスマスタ１と同等の優先度が必要なバスマスタ（これをバスマスタ１´とする）がある場合、不都合が生じるという問題がある。例えば、バスマスタ１のバス獲得要求が少ない場合に、バスマスタ１´のバス獲得要求が多いと、アービタ１００はバスマスタ１よりもバスマスタ１´にバスの使用権を与えるので、バスマスタ１のバス獲得率が低下する傾向が生じる。
【００１１】
図４は、バスマスタ１とバスマスタ１´についてより具体例に説明する図の一例である。従来から、回転器と呼ばれる画像処理手段が、メモリ４００に書き込まれた画像データを１８０度回転させる処理が行われることがある。図４ではこの回転処理を、バスマスタ１が読み出すアドレスを調整することで、メモリ４００からの読み出し時に行っている。このため、図４では図１に加え、ＬＳＩ１２０が画像出力器を有している。
(i)  不図示の画像処理手段がＨＤＤ１３０から符号化された画像データを読み出し、メモリ４００上に展開する。
(ii)  バスマスタ１´（復号装置）がメモリ４００から符号化された画像データを読み出す。
(iii)  バスマスタ１´は符号化された画像データを伸長して生データを生成し、バンド（１ページを副走査方向にいくつかに分割した領域）単位に分割してメモリ４００上に展開する。
(iv)  バスマスタ１（画像出力器）は、バンド単位に分割されたメモリ４００上の生データを、１８０度回転するように読み出すアドレス順を調整し、読み出した生データをプリンタエンジンに出力する。
【００１２】
こうすることにより、メモリ４００からの読み出し時に１８０度回転させることができるので、ＬＳＩ内の回転器が伸長された生データを１８０度回転する場合よりも高速化することができる。
【００１３】
しかし、図４の方式を実現するには、バスマスタ１（画像出力器）とバスマスタ１´（復号装置）の動作をバンド単位で連動させなければならない。これは、アービタ１００が、バスマスタ１（画像出力器）とバスマスタ１´（復号装置）の優先度を同等に扱う必要があることを意味している。レーザプリンタの場合、画像出力器は一定のスピードで画像データを出力しなければいけないため、バスマスタ１の優先度を一番高くする必要がある。よって、画像出力器＝バスマスタ１である。一方、画像出力器と連動して動作する必要がある復号装置＝バスマスタ１´となる。
【００１４】
上記のように、バスマスタ１とバスマスタ１´の優先度が同程度のままでは以下のような不都合が生じる。概略を説明すると、バスマスタ１のリードリクエストが、バスマスタ１´のライトリクエストやライトデータに圧迫されてしまう。
【００１５】
図５は、バスマスタ１とバスマスタ１´の優先度が同程度の場合の不都合を説明する図の一例である。図５（ａ）は、説明のため、バスマスタ１がバスマスタ１´に圧迫されていないケースを示す。バスマスタ１はリードしか行わないが、バスマスタ１´はリードとライトを行う。このため、バスマスタ１とバスマスタ１´は以下のような数のリードチャネルとライトチャネルを有する。
バスマスタ１はリードチャネルを２チャンネル（リードのDMACを２個）、
バスマスタ１´はリードチェネルを２チャンネル（リードのDMACを２個）
バスマスタ１´はライトチャネルを２チャンネル（ライトのDMACを２個）
図５（ａ）の左図では、バスマスタ１、バスマスタ１´がアービタ１００に対し書き込み要求する際のコマンドが円形で、書き込み要求する際のデータが矩形で、それぞれ表されている。図５（ａ）の右図では、メモリ４００がアービタ１００に対し転送要求するリードデータが矩形で表されている。図５（ａ）の左側のコマンド及びデータが流れるパスを総称してライトパスといい、図５（ａ）の右側のデータが流れるパスを総称してリードパスという。それぞれ次の情報が流れる。
ライトパス：ライトリクエストコマンド、リードリクエストコマンド、ライトデータ
リードパス：リードデータ
図５（ａ）の左図のライトパスによれば、
バスマスタ１のCH１、CH２のリードリクエストコマンド、
バスマスタ１´のCH１、CH２のリードリクエストコマンド
バスマスタ１´のCH１、CH２のライトリクエストコマンド、
バスマスタ１´のCH１、CH２のライトデータ
がアービタ１００に対し流れている。
【００１６】
図５（ａ）の右図のリードパスによれば、
バスマスタ１のCH１、CH２のリードデータ
バスマスタ１´のCH１、CH２のリードデータ
がアービタ１００に対し流れている。
【００１７】
アービタ１００はリードリクエスト同士、ライトリクエスト同士を調停し、調停後はライトデータやリードデータの送信を許可する。しかし、いずれのリクエストもアービタに出力されるので、アービタは優先度が同等であれば、リクエストの多い方のバスマスタに使用権を与える傾向がある。図５（ａ）では、バスマスタ１のリードチャネルが２CH、バスマスタ１´のリードチャネルが２チャンネルなので、両者のシャネル数が同じであるため、バスマスタ１のリードリクエストはバスマスタ１´のライトリクエストに圧迫されない。このように、同等の優先度を有するバスマスタ１とバスマスタ１´が、同時にバス獲得を要求する場合でも、チャネル数が同じであれば不都合は少ない。
【００１８】
図５（ｂ）は、バスマスタ１がバスマスタ１´に圧迫されているケースを示す。バスマスタ１とバスマスタ１´は以下のようなチャネルを有する。
バスマスタ１のリードチャネルが１チャンネル
バスマスタ１´のリードチャネルが２チャンネル
バスマスタ１´のライトチャネルが２チャンネル、
図５（ｂ）のようにバスマスタ１とバスマスタ１´で、同時にバス獲得を要求しているチャネル数に差がある場合、ライトパスとリードパスにおいてバスマスタ１がバスマスタ１´に圧迫される。ライトパスにおいては、バスマスタ１のリードコマンドが圧迫され、リードパスにおいてはバスマスタ１のリードデータが圧迫される。
【００１９】
以下に図５（ａ）と比較して、バスマスタ１がバスマスタ１´に圧迫される原因について説明する。
１．アービタに対してバス獲得要求するバスマスタ１のリードリクエストコマンドが少ない分、優先度が同等のバスマスタ１´のライトリクエストコマンドがアービタに入り込んでくる。
２．アービタに対しバス獲得要求するバスマスタ１´のライトリクエストコマンドが増える分、バスマスタ１´のライトデータ量が増加する。
３．バスマスタ１´のライトデータ量が増加することで、バス獲得要求するバスマスタ１のリードリクエストコマンドがアービタに到達しにくくなる。
４．バスマスタ１のリードリクエストコマンドがアービタに到達しにくくなることで、メモリからアービタに流れるバスマスタ１のリードデータの転送効率が落ちる。
【００２０】
本発明は、上記課題に鑑み、同程度の優先度の複数のバスマスタに対し、より優先度の高いバスマスタの使用効率を圧迫しないアービタを提供することを目的とする。
【課題を解決するための手段】
【００２１】
本発明は、共通のバスに接続されている複数のバスマスタからのバス獲得要求を、予め設定されている各バスマスタの優先度に基づき調停するバスアービタであって、優先度が最も高い第一のバスマスタからの第一のバス獲得要求、及び、前記第一のバスマスタと同等の優先度である第二のバスマスタからの第二のバス獲得要求を監視するバス獲得要求監視手段と、前記バス獲得要求監視手段の監視結果を取得して、前記第一のバス獲得要求の頻度及び前記第二のバス獲得要求の頻度が予め定められた基準を満たす特定事象を検知する特定事象検知手段と、前記特定事象検知手段から特定事象検知信号を取得して、前記第二のバス獲得要求の頻度を制限するバス獲得制御手段と、を有することを特徴とする。
【発明の効果】
【００２２】
同程度の優先度の複数のバスマスタに対し、より優先度の高いバスマスタの使用効率を圧迫しないアービタを提供すること。
【図面の簡単な説明】
【００２３】
【図１】各画像処理手段によるメモリアクセスを説明する図の一例である。
【図２】固定優先順位方式を説明する図の一例である。
【図３】従来のバスマスタ１〜３の獲得要求の処理について説明する図の一例である。
【図４】バスマスタ１とバスマスタ１´についてより具体例に説明する図の一例である。
【図５】バスマスタ１とバスマスタ１´の優先度が同程度の場合の不都合を説明する図の一例である。
【図６】本実施形態のアービタの概略的な特徴を説明する図の一例である。
【図７】アービタを利用したメモリ利用システムのブロック図の一例である。
【図８】リクエストコマンドを説明する図の一例である。
【図９】特定事象の検知について説明する図の一例である。
【図１０】アービタ内部におけるリクエストコマンドやデータの取得頻度を模式的に示す図の一例である。
【図１１】ＬＳＩの動作手順を説明するフローチャート図の一例である。
【図１２】メモリを利用するＬＳＩのブロック図の一例である（実施例２）。
【図１３】メモリを利用するＬＳＩのブロック図の一例である（実施例３）。
【発明を実施するための形態】
【００２４】
以下、本発明を実施するための形態について図面を参照しながら説明する。
【実施例１】
【００２５】
図６は、本実施形態のアービタ１００の概略的な特徴を説明する図の一例である。バスマスタ１とバスマスタ１´の優先度は同程度であり、バスマスタ２，３よりも高い。バスマスタ４，５はアービタ１００によるバス獲得要求の対象外のバスマスタである。したがって、アービタ１００はバスマスタ１又はバスマスタ１´がバスの獲得を要求した場合、バスマスタ２，３のバスの獲得要求をマスクする。しかし、バスマスタ４，５はアービタ１００にとってマスクの対象外であるので、バスマスタ１又はバスマスタ１´がバスの獲得を要求しても、バスマスタ４，５のバスの獲得要求をマスクしない。
Ｉ  事象発生検知部１５は、バスマスタ１とバスマスタ１´が同時にバスの獲得要求を発生したため、バスマスタ１のリードリクエストやリードデータを圧迫するおそれがあること（特定事象）を検知する。
II  バス獲得制御部１３は、特定事象の検知の通知を受け、マスク対象外のバスマスタ５（又は４でもよい）にダミーのリクエストコマンド（ダミーのバスの獲得要求）を発生させる。
【００２６】
アービタ１００にバスマスタ５のダミーのリードリクエストコマンドを挿入することで、バスマスタ１´のバスの占有率が低下し、バスマスタ１´のバスの使用頻度を一時的に低下させることができる。したがって、バスマスタ１のリードリクエストコマンドやリードデータが、バスマスタ１´のライトリクエストコマンドやライトデータに圧迫されることを防止できる。
【００２７】
また、バスマスタ４，５のバスの獲得要求は、ダミーなのでアービタ１００は無視することができる。よって、バスマスタ４，５のバス獲得要求は、リード側のパスには影響を与えず、バスマスタ１の転送効率が低下することはない。
【００２８】
〔構成例〕
図７は、アービタを利用したメモリ利用システム６００のブロック図の一例である。ＬＳＩ１２０とメモリ４００がシステムバス１２を介して接続されている。メモリ４００は、例えばＳＤＲＡＭ等の高速なメモリである。
【００２９】
ＬＳＩ１２０はバス獲得制御部１３に接続されたバスマスタ１〜５、アービタ１００、及び、メモリコントローラ１１を有している。バスマスタ１，１´は、それぞれリクエスト監視部１４（以下、区別する場合、リクエスト監視部１、１´という）に接続され、２つのリクエスト監視部１、１´はアービタ１００に接続されている。また、リクエスト監視部１、１´は事象発生検知部１５と接続され、事象発生検知部１５はバス獲得制御部１３と接続されている。
【００３０】
バスマスタ１、バスマスタ１´、バスマスタ２、及び、バスマスタ３は、画像形成装置２００では、例えば、バスマスタ１＝画像出力器、バスマスタ１´＝復号装置、バスマスタ２＝符号化装置、バスマスタ３＝描画装置、である。
【００３１】
例えば、ＰＣ３００やスキャナが印刷対象のデータを画像形成装置２００に記憶させる。これによりメモリ４００に印刷データが記憶される。
【００３２】
ＣＰＵ２０２はプログラムを実行し、メモリ４００から印刷データを読み出し解析して、中間言語による印刷データ（描画コマンド）を生成する。ＣＰＵ２０２は生成した描画コマンドをメモリ４００に記憶する。
【００３３】
描画装置２０３は、メモリ４００から描画コマンドを読み出し、描画コマンドを解析して画像データに階調処理を施すことで２値化された画像データをメモリ４００に書き込む。階調処理は、バンド単位（１ページ分を副走査方向に８〜１６等分した領域）で行われることが多いため、２値化された画像データをバンドデータという場合がある。
【００３４】
次に、符号化装置２０４は、メモリ４００からバンドデータを読み出して、ＪＢＩＧなどの２値画像の圧縮アルゴリズムにより符号化し、メモリ４００に記憶する。
【００３５】
次に、復号装置２０５は、メモリ４００から符号化データを読み込んで復号し、メモリ４００に記憶する。画像出力器は、バンド単位に、復号された画像データをアドレスの最後からメモリから読み出して、不図示のエンジンコントローラへ転送する。エンジンコントローラは、プリンタエンジンを制御してプリンタエンジンで印刷データを用紙などに印刷する。したがって、画像出力器は、プリンタエンジンが一定のスピードで印刷できるように、最優先でメモリ４００にアクセスする必要がある。また、画像出力器に画像データを供給する復号装置は同等の優先度が必要となる。
【００３６】
このような関係は、出力までの画像処理の種類や数、処理後のデータのメモリ４００への格納の有無、バス獲得競合の有無、などにより変わりうるものである。よって、各バスマスタと画像処理手段の対応は一例に過ぎない。また、１つのＬＳＩ１２０に複数のバスマスタが搭載されている必要はなく、例えばＣＰＵ２０２はＬＳＩ１２０の外に配置されることも多い。
【００３７】
以下では、
バスマスタ１、バスマスタ１´：優先度が最も高い
バスマスタ２、バスマスタ３  ：優先度が次に高い
ものとする。
【００３８】
リクエスト監視部１は、バスマスタ１の一定期間内におけるリードリクエストの数をカウントし、直接又はリクエスト監視部１´を介して事象発生検知部１５に通知する。同様に、リクエスト監視部１´は、バスマスタ１´の一定期間（後述するリクエスト数計測時間）内におけるリードリクエスト及びライトリクエストの数をカウントし事象発生検知部１５に通知する。なお、リクエスト監視部１は、バスマスタ１のリードリクエストをそのままアービタ１００に透過的に転送し、リクエスト監視部１´は、バスマスタ１´のリードリクエスト及びライトリクエストをそのままアービタ１００に透過的に転送する。
【００３９】
事象発生検知部１５は、バスマスタ１の一定期間内におけるリードリクエストの数、及び、バスマスタ１´の一定期間内におけるリードリクエスト及びライトリクエストの数に基づき特定事象の検知を行う。特定事象の検知については後述する。事象発生検知部１５は、事象検知信号を送信することで、特定事象を検知したことをバス獲得制御部１３に通知する。
【００４０】
バス獲得制御部１３は、事象検知信号を取得すると、マスク対象外である、バスマスタ４又はバスマスタ５の少なくとも一方に対し、ダミーのリードリクエストコマンドを発行させる。その際、リードリクエストコマンドのダミーヘッダにダミーであることを示す情報を付加する。ダミーヘッダについては後述する。
【００４１】
ダミーの獲得要求は、バスマスタ１のリードリクエストコマンドの圧迫を抑制するため、リードリクエストであればよいが、バスマスタ１´のライトリクエストコマンドを制限するために、ライトリクエストでもよい。
【００４２】
なお、バス獲得制御部１３、リクエスト監視部１、１´、及び、事象発生検知部１５はアービタ１００の外に図示されているが、アービタ１００による獲得要求の調停を支援する手段なので、アービタ１００の一部である。
【００４３】
アービタ１００はコマンドを解釈するためのコマンド判断部１６を有する。コマンド判断部１６は、ダミーのリクエストコマンドを検出する。アービタ１００は、コマンド判断部１６がダミーのリクエストコマンドでないと判断した、リードリクエスト、ライトリクエストのコマンドヘッダを解析して、リード・ライトの区別をし、アクセス先のアドレスを特定する。
【００４４】
アービタ１００は、リードリクエストコマンド、ライトリクエストコマンドのそれぞれにおいて、リクエスト元のバスマスタの優先度を比較し、優先度の高いリクエストを優先し、メモリコントローラ１１に出力する。また、優先度の高いバスマスタのリクエスを処理している間は、優先度の低いバスマスタのリクエストをマスクする。
【００４５】
本実施形態の場合、リクエストコマンドのダミーヘッダに基づき、コマンド判断部１６は、リードリクエスト又はライトリクエストがダミーか否かを判定し、ダミーであると判定すると、メモリコントローラ１１にリクエストコマンドを発行せずに破棄する。
【００４６】
これにより、バスマスタ４，５のリードリクエストをアービタ１００まで到達させ、バスマスタ１´のバス使用頻度を一時的に低下させることができる。また、アービタ１００のメモリコントローラ１１側には、アービタ１００はダミーのリードリクエストコマンドを出力しないので、メモリコントローラ１１とメモリ間でのバスの混雑に影響を与えない。
【００４７】
〔ダミーのリクエストコマンド〕
図８は、リクエストコマンドのフォーマットを説明する図の一例である。リクエストコマンドは、ダミーヘッダ、転送内容プロトコル、転送データ、及び、転送終了プロトコルの各フィールドを有する。
・ダミーヘッダには、"Dummy"又は"No Dummy"が格納される。
・転送内容プロトコルには、ライトリクエスト・リードリクエストの識別情報、リードリクエストの場合は転送先アドレスとデータサイズ、ライトリクエストの場合は転送先アドレス及びデータサイズ、等が格納される。
・転送データには、ライトリクエストの場合に転送データ又は転送元アドレスが格納される。
・転送終了プロトコルは、転送の終了を通知するフィールドである。
【００４８】
したがって、ダミーヘッダに"Dummy"が格納されたリクエストコマンドが、ダミーのリクエストコマンドである。
【００４９】
〔特定事象の検知〕
図９は、特定事象の検知について説明する図の一例である。図９は、バスマスタ１と、バスマスタ１´で、同時にバス獲得要求を発行しているチャネル数に差がある場合を図示している。
【００５０】
バスマスタ１のリードリクエストのチャネル数はCH１〜４の４つであり、バスマスタ１´のリードリクエストのチャネル数はCH１、２の２つであり、ライトリクエストのチャネル数はCH３，４の２つである。このうち、バスマスタ１はCH１にのみリードリクエストコマンドを出力しているが、バスマスタ１´はCH１〜４の全てにリクエストコマンドを出力している。上述したように、このような状態では、バスマスタ１のリードリクエストコマンドやリードデータがアービタ１００に到達しにくくなる。
【００５１】
リクエスト監視部１は、点線で示す一定時間毎に、CH１〜CH４のリードリクエストコマンドの数をカウントする。リクエスト監視部１´も、同じ一定時間毎に、CH１〜CH４のライトリクエストコマンドの数及びリードリクエストコマンドの数をカウントする。図示する例では、リクエスト監視部１のカウント結果は３であり、リクエスト監視部１´のカウント結果は１６である。
【００５２】
事象発生検知部１５は、これらのカウント結果を取得し、２つのカウント結果の差が所定値以上の場合、特定事象の発生を検知する。所定値は、例えば、１つのチェネルで一定時間にカウントされる最大のリクエストコマンドの数をｎとした場合、ｎ〜２ｎ程度とすればよいが、所定値は適宜、設定できる。
【００５３】
〔アービタ内部のデータの取り扱い〕
図１０は、アービタ内部におけるリードリクエストコマンド、ライトリクエストコマンド、ライトデータ又はリードデータの取得頻度を模式的に示す図の一例である。図１０（ａ）は上記の図５（ａ）と同じものであり、バスマスタ１のリードリクエストコマンドやリードデータの転送が圧迫されている例を示している。
【００５４】
これに対し、図１０（ｂ）はダミーのリクエストコマンドにより、バスマスタ１のリードリクエストコマンドやリードデータの転送が圧迫されない例を示している。
【００５５】
図１０（ｂ）の左図は、バスマスタ１、バスマスタ１´、バスマスタ５のアービタ１００に対するリクエストコマンドが円形で、ライトデータが矩形で、それぞれ表されている。図１０（ｂ）の右図は、メモリ４００がアービタ１００に転送要求するリードデータが矩形で表されている。図１０（ｂ）の左図に示すように、各バスマスタは以下のチャネルを有する。
バスマスタ１のリードリクエストコマンドが１CH、
バスマスタ１´のリードリクエストコマンドが２CH、
バスマスタ１´のライトリクエストコマンドが２CH、
バスマスタ５のリードリクエストコマンドが１CH、
すなわち、特定事象が検知された場合、バスマスタ５がダミーのリードリクエストコマンドを発生させるので、図１０（ｂ）の左図に示すように、バスマスタ５のリードリクエストコマンドが１CH、確保される。このような構成によれば、以下のような作用により、バスマスタ１のリードリクエストコマンドやリードデータが、バスマスタ１´のライトリクエストコマンドやライトデータにより圧迫されることが防止される。
【００５６】
１．アービタに対しバス獲得要求するバスマスタ１のリードリクエストコマンドが少なくても、マスクされないバスマスタ５のリードリクエストコマンドがアービタ１００に到達する。
２．このため、アービタに到達するバスマスタ１´のライトリクエストコマンドが増えにくくなり、バスマスタ１´からアービタに流れるライトデータ量は増加しない。
３．バスマスタ１´のライトデータ量が増加しないので、アービタに対してバス獲得要求するバスマスタ１のリードリクエストコマンドが圧迫されない。
４．バスマスタ５のリードリクエストはダミーであり、アービタ１００が破棄するので、メモリがアービタ１００に送信するリードデータの転送効率が落ちることもない。
【００５７】
〔動作手順〕
図１１は、アービタ１００の動作手順を説明するフローチャート図の一例である。
【００５８】
バスマスタ１はバスマスタ１´と非同期にリクエスト監視部１にリードリクエストコマンドを出力する（Ｓ１）。リクエスト監視部１は、リードリクエストコマンドをアービタ１００に出力する（Ｓ２）。
【００５９】
バスマスタ１´はバスマスタ１と非同期にリクエスト監視部１´にリードリクエストコマンド又はライトリクエストコマンドを出力する（Ｓ３）。リクエスト監視部１´は、リードリクエストコマンド又はライトリクエストコマンドをアービタ１００に出力する（Ｓ４）。
【００６０】
リクエスト監視部１は、リードリクエストコマンドを事象発生検知部１５に出力する（Ｓ５）。
【００６１】
リクエスト監視部１´は、リードリクエストコマンド又はライトリクエストコマンドを事象発生検知部１５に出力する（Ｓ６）。
【００６２】
アービタ１００は、バスマスタ１とバスマスタ１´からのリードリクエストコマンドの優先度が同等なので、例えば早くリクエストを出力したバスマスタに使用権を与える。また、アービタ１００は、バスマスタ１´からのライトリクエストコマンドに対し、バスマスタ１´の優先度が最も高いのでバスマスタ１´に使用権を与える。このような、バスマスタ１´のアービタ１００へのリクエストが多いことやライトデータの転送が、バスマスタ１のリードリクエストを圧迫する要因になる。
【００６３】
事象発生検知部１５は、リクエスト数計測時間におけるバスマスタ１のリードリクエストコマンドの数と、バスマスタ１´のリードリクエストコマンドの数及びリードリクエストコマンドの合計の差が所定値以上の場合、特定事象の発生を検知する（Ｓ７）。特定事象の発生を検知した事象発生検知部１５は事象検知信号をバス獲得制御部１３に出力する（Ｓ８）。
【００６４】
バス獲得制御部１３は、事象検知信号を取得すると、バスマスタ４又は５の少なくとも一方にリードリクエストコマンドを出力させる（Ｓ９）。
【００６５】
バスマスタ５は、バス獲得制御部１３からの要求に対しダミーのリードリクエストコマンドをアービタ１００に出力する（Ｓ１０）。
【００６６】
アービタ１００のコマンド判断部１６は、リードリクエストコマンドのダミーヘッダを参照して、ダミーであることを検出するとこれを破棄する。したがって、メモリとメモリコントローラ１１の間でリードデータが流れることはない。
【００６７】
以上説明したように、本実施例のアービタ１００は、同等の優先度のバスマスタ１、１´が共にアービタにリクエストを出力する場合に、バスマスタ４，５のリードリクエストコマンドを挿入する。これにより、バスマスタ１´のバス使用頻度を一時的に低下させることができる。したがって、バスマスタ１のリードリクエストやリードデータが、バスマスタ１´のライトリクエストコマンドやライトデータに圧迫されることを防止できる。
【実施例２】
【００６８】
本実施例では、特定事象の検知に伴う機能を停止させることができるアービタ１００について説明する。
【００６９】
図１２は、アービタを利用したメモリ利用システム６００のブロック図の一例である。図１２において図７と同一部の説明は省略する。
【００７０】
本実施例のＬＳＩ１２０は、新たにＯＮ／ＯＦＦ切替部１７を有する。ＯＮ／ＯＦＦ切替部１７は、バスマスタ１´がバスマスタ１を圧迫するユースケースがない場合、リクエスト監視部１，１´、事象発生検知部１５、及び、コマンド判断部１６を停止させる。例えば、ＯＮ／ＯＦＦ切替部１７は、リクエスト監視部１，１´、事象発生検知部１５、及び、コマンド判断部１６に供給されるクロックのクロック信号線を切断する。これにより、ＬＳＩ１２０の消費電力を削減できる。
【００７１】
ユースケースの有無の判断は、ＬＳＩ１２０のメーカや使用者（以下、単に開発者という）が行う。開発者は、バスマスタ１´がバスマスタ１を圧迫するユースケースがあるか否かを判断して、初期設定用のパラメータを不図示のＲＯＭやメインのプログラムに記述しておく。メインのプログラムは、ＬＳＩ１２０の起動時にパラメータをＯＮ／ＯＦＦ切替部１７のレジスタなどに設定する。ＯＮ／ＯＦＦ切替部１７はレジスタに記憶されたパラメータに応じて、リクエスト監視部１，１´、事象発生検知部１５、及び、コマンド判断部１６を停止させる。
【００７２】
なお、バスマスタ１とバスマスタ１´は直接、アービタ１００に接続されているため、リクエスト監視部１，１´は、動作が停止されてもリクエストコマンドをアービタ１００に出力することができる。
【００７３】
本実施例によれば、同等な優先度を付与すべきバスマスタ１とバスマスタ１´が存在しないような場合、または、存在しても処理に大きな影響がない場合、ＬＳＩ１２０の消費電力を抑制できる。
【実施例３】
【００７４】
本実施例では、ダミーのリクエストコマンドの発生頻度を制御可能なＬＳＩ１２０について説明する。
図１３は、アービタを利用したメモリ利用システム６００のブロック図の一例である。図１３において図７と同一部の説明は省略する。
【００７５】
本実施例のＬＳＩ１２０は、新たに条件格納部１８を有する。条件格納部１８には、事象発生検知部１５が特定事象の発生を検知するための条件が格納される。条件格納部１８は、ＲＯＭやレジスタなどの記憶媒体である。事象発生検知部１５は、条件格納部１８に記憶されたビットパターンにより、特定事象の発生を検知するための条件を切り換える。例えば、以下のビットパターンでは、特定事象の発生を検知するための条件は次のようになる。なお、"Ｘ"は不定とする。
ＸＸ０１：バスマスタ１のリードリクエストコマンドの数と、バスマスタ１´のライトリクエストコマンド及びリードリクエストコマンドの合計の差が、所定数以上の場合に特定事象を検知する。
ＸＸ１０：バスマスタ１のリードリクエストコマンドの数と、バスマスタ１´のリードリクエストコマンドの数の差が、所定数以上の場合に特定事象を検知する。
００１１：バスマスタ１のリードリクエストコマンドの数と、バスマスタ１´のライトリクエストコマンドの数の差が、所定数以上の場合に特定事象を検知する。
０１ＸＸ：所定数を３
１０ＸＸ：所定数を６
１１ＸＸ：所定数を９
特定事象の発生を検知するための条件の設定の仕方は、実施例２と同様である。すなわち、開発者は、特定事象の発生を検知するための条件（ビットパターン）を不図示のＲＯＭやメインのプログラムに記述しておく。メインのプログラムは、ＬＳＩ１２０の起動時にビットパターンを条件格納部１８のレジスタなどに設定する。
【００７６】
事象発生検知部１５は、特定事象の発生を検知する際、条件格納部１８に格納されたビットパターンに従い、特定事象が発生したか否かを判定する。
【００７７】
このように、特定事象の発生を検知するための条件を変えることができることで、ダミーのリクエストコマンドによるデータリードが発生しすぎてしまい、バスマスタ１´の転送効率が低下してしまうことを防止できる。また、想定よりもダミーリードが発生しにくいため、本実施形態の効果が期待ほど得られないような場合にも対応することができる。
【００７８】
なお、図１３では、ＯＮ／ＯＦＦ切替部１７が図示されていないが、条件格納部１８と共にＯＮ／ＯＦＦ切替部１７を搭載することもできる。この場合、特定事象の発生を検知するための条件を可変とすることができると共に、ＯＮ／ＯＦＦ切替部１７により消費電力を抑制することができる。
【符号の説明】
【００７９】
１１      メモリコントローラ
１２      システムバス
１３      バス獲得制御部
１４      リクエスト監視部
１５      事象発生検知部
１６      コマンド判断部
１７      ＯＮ／ＯＦＦ切替部
１８      条件格納部
１００    アービタ
１１０    バスマスタ
２００    画像形成装置
６００    メモリ利用システム
【先行技術文献】
【特許文献】
【００８０】
【特許文献１】特開２００２−２６９０３２号公報
【図１】
2013054699.tif 000003
【図２】
2013054699.tif 000004
【図３】
2013054699.tif 000005
【図４】
2013054699.tif 000006
【図５】
2013054699.tif 000007
【図６】
2013054699.tif 000008
【図７】
2013054699.tif 000009
【図８】
2013054699.tif 000010
【図９】
2013054699.tif 000011
【図１０】
2013054699.tif 000012
【図１１】
2013054699.tif 000013
【図１２】
2013054699.tif 000014
【図１３】
2013054699.tif 000015