(57)【特許請求の範囲】
【請求項１】
外部デバイスとのデータの送受信を行うための外部バスを制御する外部バス制御部と、を備え、
前記外部バス制御部は、
前記外部デバイスに対応して設けられ、内部バスからのデータを一時的に保存する複数の記憶部と、
前記内部バスからのアクセス要求に対して、予め重み付け値が設定される前記複数の記憶部のそれぞれのデータ量に基づいて、前記重み付け値に基づく連続アクセス上限回数を求め、前記連続アクセス上限回数分のアクセスの後に、前記複数の記憶部のそれぞれからのデータ出力の優先順位を変更して、変更された優先順位に従って、前記複数の記憶部のうち、前記外部バスにデータ転送する前記記憶部の選択を行い、選択された記憶部に保存されたデータを前記外部バスに出力する調停部と、
を備えたことを特徴とするアクセス制御装置。
【請求項２】
前記調停部は、前記内部バスからのアクセス要求に対して、前記重み付け値に基づいて、前記複数の記憶部のそれぞれからのデータ出力の優先順位を変更することを特徴とする請求項１に記載のアクセス制御装置。
【請求項３】
前記調停部は、前記データ量が多い程、前記連続アクセス上限回数を大きい値で求めることを特徴とする請求項１に記載のアクセス制御装置。
【請求項４】
前記調停部は、前記記憶部に保存されたデータの前記データ量がＦＵＬＬの状態になった場合に、前記連続アクセス上限回数を、前記重み付け値に基づく回数の２倍として求めることを特徴とする請求項３に記載のアクセス制御装置。
【請求項５】
前記記憶部は、先入れ先出し方式のＦｉＦｏメモリであることを特徴とする請求項１または２に記載のアクセス制御装置。
【請求項６】
画像形成装置であって、
画像形成に関する制御を行う制御部を備え、
前記制御部は、
前記制御部外のデバイスである外部デバイスとのデータの送受信を行うための外部バスを制御する外部バス制御部、を備え、
前記外部バス制御部は、
前記外部デバイスに対応して設けられ、内部バスからのデータを一時的に保存する複数の記憶部と、
前記内部バスからのアクセス要求に対して、予め重み付け値が設定される前記複数の記憶部のそれぞれのデータ量に基づいて、前記重み付け値に基づく連続アクセス上限回数を求め、前記連続アクセス上限回数分のアクセスの後に、前記複数の記憶部のそれぞれのデータを前記外部バスへ出力する順位を変更する制御を行い、変更した順位で前記複数の記憶部のそれぞれのデータを前記外部バスへ出力する調停部と、
を備えたことを特徴とする画像形成装置。
【請求項７】
アクセス制御装置で実行されるアクセス制御方法であって、
前記アクセス制御装置は、外部デバイスとのデータの送受信を行うための外部バスを制御する外部バス制御部、を備え、
前記外部バス制御部は、前記外部デバイスに対応して設けられ、内部バスからのデータを一時的に保存する複数の記憶部を備え、
前記内部バスからのアクセス要求に対して、予め重み付け値が設定される前記複数の記憶部のそれぞれのデータ量に基づいて、前記重み付け値に基づく連続アクセス上限回数を求め、前記連続アクセス上限回数分のアクセスの後に、前記複数の記憶部のそれぞれのデータを前記外部バスへ出力する順位を変更する制御を行うステップと、
変更した順位で前記複数の記憶部のそれぞれのデータを前記外部バスへ出力するステップと、
を含むことを特徴とするアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセス制御装置、画像形成装置およびアクセス制御方法に関する。
【背景技術】
【０００２】
電子写真方式の画像形成装置は、装置全体を統括制御するためのコントローラ回路、コントローラ回路に接続された操作部回路、ＬＡＮインターフェース回路、作像及び給排紙制御を行うためのエンジン制御回路、原稿を読み込むスキャナー制御回路、原稿を読み込んで得られた画像データを感光体ドラム上に書き込むためのＬＤＢ（Ｌａｓｅｒ  Ｄｉｏｄ  Ｂｏａｒｄ）回路等で構成される。
【０００３】
この中でも装置全体を統括制御するコントローラ回路には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が搭載されており、プログラムを格納するための不揮発性メモリ、及び一時的な作業データを格納するための揮発性メモリを用いて、プログラムを動作させて、各制御回路を制御している。
【０００４】
一般的にＣＰＵは、同一バス上にＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラを有しており、同じく同一バス上に配置された外部バスコントローラを経由して外部に接続された各デバイスの制御を行っており、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などで構成される場合が多い。
【０００５】
この時、ＡＳＩＣのピン数を最小限とするため、外部バスは接続デバイス分用意するのではなく、デバイスを並列接続し、デバイス選択信号を用いて、アクセスするデバイスを特定する構成が採用されている。
【０００６】
また、通常ＡＳＩＣ内部のバスアクセスは、サイクル周波数にもよるが、１サイクルなど高速アクセスが可能であるが、外部バスアクセスは、端子容量・基板／ハーネスなどの経路・バッファなどによって、信号遅延が発生する。このため外部バスにアクセスする場合には、外部のデバイスが応答可能な速度でアクセスを行う。しかしながら外部デバイスのアクセス速度に併せて、内部バスもアクセスすると、内部バスの処理性能が低下するため、一般的にはＦｉＦｏ（Ｆｉｒｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）メモリなどを用いて速度差を吸収する構成がとられる。このように構成することにより、ＦｉＦｏメモリに空きがある限り、内部バスが待ち状態になることを回避することができる。
【０００７】
さらに近年、内部バスはマトリクス状で構成される場合もある。このように構成することにより、同一バス上に接続されているＣＰＵとＤＭＡコントローラが、アクセス元／アクセス先が異なる場合は、同時にデータ転送をすることが可能となる技術が既に知られている。
【０００８】
また、特許文献１には、ＤＭＡＣによるデータ転送に必要な動作サイクル数を小さくする目的で、マイクロコンピュータに内蔵されたバスコントローラの前段にＤＭＡＣを配置し、ＤＭＡＣにデータバッファを設けず、ＤＭＡＣによるデータ転送制御に際して、バスコントローラのデータバッファから直接転送先にデータを転送させる技術について開示されている。
【０００９】
しかしながら、このような従来技術の構成では、ＦｉＦｏメモリへの内部バスからのアクセス周期に対して、外部バスからのアクセス周期が遅いため、ＦｉＦｏメモリに空きがある場合は問題ないが、外部バスへのアクセス頻度が高いと、ＦｉＦｏメモリが頻繁にＦＵＬＬになってしまうという問題がある。ＦｉＦｏメモリがＦＵＬＬになると内部バスからのデータ書き込みができないため、書き込み可能となるまで内部バスが待ち状態になる場合があり、外部バスアクセス速度がネックで内部バスのアクセスパフォーマンスが低下する問題があった。
【００１０】
また、外部バスコントローラと内部バスとの接続が１系統の場合、複数のモジュールからの同時アクセスができないという問題がある。例えば、ＣＰＵとＤＭＡコントローラなどから、外部バスアクセス要求が同時に発生した場合、通常優先順位の高いアクセスが優先的に処理される様に構成される。この場合、優先順位の低いアクセスは、優先順位の高いアクセスが終わるまで待ち状態になる。同一の外部バス空間へのアクセスであった場合は、待ち状態になるのは避けようがないが、異なる外部バス空間へのアクセスであった場合には、内部バスの待ち状態を回避すべきである。
【００１１】
さらに、優先順位の高いアクセス要求がバーストライトアクセス要求であった場合、バーストライトアクセスが終了するまで優先順位の低いアクセス要求が待ち状態になってしまうという問題もあった。
【００１２】
このような問題を解決するために、ＦｉＦｏメモリを複数設け、それぞれのＦｉＦｏメモリを内部バスに接続する構成が考えられる。この構成の利点として、上記の異なる外部バス空間へのアクセスが発生した場合でも、ＦｉＦｏが異なるため、内部バスのウェイト状態を回避することが可能となる。
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、このような従来技術では、外部バスの入出力が１系統のため、アクセス順序に応じた制御の場合、内部バスでバーストライト動作が始まると、やはり外部バスアクセスが、バースト動作で占有され、他からのアクセス要求は待ち状態になってしまうという問題がある。
【００１４】
本発明は、上記に鑑みてなされたものであって、複数の内部モジュールから異なる外部バス空間へ同時に書き込みアクセスがあった場合に、内部バスが待ち状態になる頻度を低下させ、内部バスのパフォーマンスを向上させることができるアクセス制御装置、画像形成装置およびアクセス制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した課題を解決し、目的を達成するために、本発明にかかるアクセス制御装置は、外部デバイスとのデータの送受信を行うための外部バスを制御する外部バス制御部と、を備え、前記外部バス制御部は、前記外部デバイスに対応して設けられ、内部バスからのデータを一時的に保存する複数の記憶部と、前記内部バスからのアクセス要求に対して、予め重み付け値が設定される前記複数の記憶部のそれぞれのデータ量に基づいて、前記重み付け値に基づく連続アクセス上限回数を求め、前記連続アクセス上限回数分のアクセスの後に、前記複数の記憶部のそれぞれからのデータ出力の優先順位を変更して、変更された優先順位に従って、前記複数の記憶部のうち、前記外部バスにデータ転送する前記記憶部の選択を行い、選択された記憶部に保存されたデータを前記外部バスに出力する調停部と、を備えたことを特徴とする。
【００１６】
また、本発明にかかる画像形成装置は、画像形成に関する制御を行う制御部を備え、前記制御部は、前記制御部外のデバイスである外部デバイスとのデータの送受信を行うための外部バスを制御する外部バス制御部、を備え、前記外部バス制御部は、前記外部デバイスに対応して設けられ、内部バスからのデータを一時的に保存する複数の記憶部と、前記内部バスからのアクセス要求に対して、予め重み付け値が設定される前記複数の記憶部のそれぞれのデータ量に基づいて、前記重み付け値に基づく連続アクセス上限回数を求め、前記連続アクセス上限回数分のアクセスの後に、前記複数の記憶部のそれぞれのデータを前記外部バスへ出力する順位を変更する制御を行い、変更した順位で前記複数の記憶部のそれぞれのデータを前記外部バスへ出力する調停部と、を備えたことを特徴とする。
【００１７】
また、本発明にかかるアクセス制御方法は、アクセス制御装置で実行されるアクセス制御方法であって、前記アクセス制御装置は、外部デバイスとのデータの送受信を行うための外部バスを制御する外部バス制御部、を備え、前記外部バス制御部は、前記外部デバイスに対応して設けられ、内部バスからのデータを一時的に保存する複数の記憶部を備え、前記内部バスからのアクセス要求に対して、予め重み付け値が設定される前記複数の記憶部のそれぞれのデータ量に基づいて、前記重み付け値に基づく連続アクセス上限回数を求め、前記連続アクセス上限回数分のアクセスの後に、前記複数の記憶部のそれぞれのデータを前記外部バスへ出力する順位を変更する制御を行うステップと、変更した順位で前記複数の記憶部のそれぞれのデータを前記外部バスへ出力するステップと、を含むことを特徴とする。
【発明の効果】
【００１８】
本発明によれば、複数の内部モジュールから異なる外部バス空間へ同時に書き込みアクセスがあった場合に、内部バスが待ち状態になる頻度を低下させ、内部バスのパフォーマンスを向上させることができるという効果を奏する。
【図面の簡単な説明】
【００１９】
【図１】図１は、実施の形態１にかかる画像形成装置の電気系の構成を示すブロック図である。
【図２】図２は、ＡＳＩＣの構成図である。
【図３】図３は、外部バスアドレス空間と各ＦｉＦｏの割り当てを示す説明図である。
【図４】図４は、実施の形態１の外部バスコントローラの動作タイミングを示す説明図である。
【図５】図５は、実施の形態２の外部バスコントローラの動作タイミングを示す説明図である。
【図６】図６は、実施の形態３の外部バスコントローラの動作タイミングを示す説明図である。
【図７】図７は、従来の外部バスコントローラの動作タイミングを示す説明図である。
【図８】図８は、従来のＦｉＦｏメモリがない場合の外部バスコントローラの構成図である。
【図９】図９は、ＦｉＦｏメモリを設けた場合の従来例の外部バスコントローラの構成図である。
【発明を実施するための形態】
【００２０】
以下に添付図面を参照して、アクセス制御装置、画像形成装置およびアクセス制御方法の実施の形態を詳細に説明する。
【００２１】
（実施の形態１）
図１は、実施の形態１にかかる画像形成装置の電気系の構成を示すブロック図である。本実施の形態では、画像形成装置として、コピー機能、スキャナ機能、ファクシミリ機能、プリンタ機能を備えた複合機を例にあげて説明する。なお、複写機、プリンタ、スキャナ装置、ファクシミリ装置等の画像形成装置であればいずれにも本発明を適用することができる。
【００２２】
本実施の形態の画像形成装置は、図１に示すように、コントローラボード５０１と、操作部制御ボード５０２と、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）５０３と、ＬＡＮインターフェースボード５００と、汎用ＰＣＩバスに接続されたＦＡＸコントローユニット（ＦＣＵ）５０６と、エンジン制御ボード５１０と、読み取りユニット３００と、ＬＤＢ（Ｌａｓｅｒ  Ｄｉｏｄｅ  ｃｏｎｔｒｏｌ  Ｂｏａｒｄ）５１２とを主に備えている。画像形成装置は、この他、ＩＥＥＥ１３９４ボード、無線ＬＡＮボード、ＵＳＢボード等（いずれも不図示）も備えている。
【００２３】
ＬＡＮインターフェースボード５００は、社内ＬＡＮに接続されており、社内ＬＡＮとコントローラボード５０１との通信インターフェースボードである。外部機器との通信はこのＬＡＮインターフェースボード５００を経由して実施される。
【００２４】
ＨＤＤ５０３は、画像データ等の各種データを記憶する記憶媒体である。より具体的には、ＨＤＤ５０３は、画像形成装置のアプリケーションプログラ、プリンタ、作像プロセス機器の機器付勢情報を格納するアプリケーションデータベース、読み取り画像や書き込み画像の画像データ、文書データを蓄える画像データベースとして用いられる。
【００２５】
操作部制御ボード５０２は、コントローラボード５０１に接続され、ユーザへの各種画面の表示およびユーザからの入力を受け付ける操作表示部（不図示）の制御を行う。ＦＣＵ５０６は、ファクシミリ機能を実現するユニットである。
【００２６】
エンジン制御ボード５１０は、ＰＣＩバスでコントローラボード５０１に接続され、エンジンであるＬＤＢ５１２および読取りユニット３００の制御を行う。すなわち、エンジン制御ボード５１０は、画像形成装置の作像制御を主として行い、ＣＰＵ５１０ｂと、画像処理を行う画像データ処理器（ＩＰＰ：Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｉｎｇ  Ｐｒｏｃｅｓｓｏｒ）５１０ａと、複写およびプリントアウトを制御するため必要なプログラムを内蔵したＲＯＭ５１０ｅと、その制御に必要なＳＲＡＭ５１０ｇと、画像形成に必要な各種パラメータを格納するためのＮＶ―ＲＡＭ５１０ｆと、更にはＩ／Ｏ（カウンター、ファン、ソレノイド、モーター等）を制御するための複数のＩ／Ｏ  ＡＳＩＣ５１０ｃ、５１０ｄとを備え、それぞれ外部バスで接続されている。ＣＰＵ５１０ｂは、ＲＯＭ５１０ｅに格納されているデータをリードし、プログラムコードに従い、各デバイスの制御を行うことで、画像形成を行っている。
【００２７】
読み取りユニット３００は、ＣＣＤ５２１と、スキャナボード（ＳＢＵ：Ｓｃａｎｎｅｒ  Ｂｏａｒｄ  Ｕｎｉｔ）５１１を備えている。ＣＣＤ５２１は、コピー対象の原稿に対する照明光源の走査を行い、原稿を光学的に読み取って原稿に対する光照射の反射光を結像し、この反射光を光電変換して画像信号を生成する。
【００２８】
ＳＢＵ５１１は、アナログＡＳＩＣ及びＣＣＤ５２１、アナログＡＳＩＣの駆動タイミングを発生する回路（不図示）を備えている。ＣＣＤ５２１から出力される画像信号は、アナログＡＳＩＣ内部でデジタル画像データへの変換、シェーディング補正などを行ない、エンジン制御ボード５１０のＩＰＰ５１０ａに送出される。
【００２９】
ＩＰＰ５１０ａは画像処理をおこなうプログラマブルな演算処理部であり、階調処理等を行う。ＳＢＵ５１１からＩＰＰ５１０ａに転送された画像データは、ＩＰＰ５１０ａによって光学系およびデジタル信号への量子化に伴う信号劣化（スキャナ系の信号劣化）を補正され、図示しないフレームメモリに書き込まれる。
【００３０】
ＬＤＢ５１２は、原稿を読み取ることで得られた画像データ、ネットワークを介して受信した画像データを感光体ドラム（不図示）に書き込むものである。
【００３１】
すなわち、ＩＰＰ５１０ａで処理された画像データは、一度ＰＣＩバスを経由してコントローラボード５０１のワークメモリに格納される。そして用紙の給紙タイミングに応じて、ワークメモリから画像データを読み出し、ＬＤＢ５１２のＬＤ書き込み回路に入力される。ＬＤ書き込み回路でＬＤ電流制御（変調制御）が行われ、各ＬＤに出力される。
【００３２】
コントローラボード５０１には、図示しないＣＰＵ及びプログラムを格納するためのＲＯＭ、ＣＰＵの作業用メモリであるＲＡＭ及びＣＰＵ周辺を制御するＡＳＩＣ及びそのインターフェース回路等が搭載されている。
【００３３】
コントローラボード５０１は、スキャナアプリケーション，ファクシミリアプリケーション，プリンタアプリケーションおよびコピーアプリケーション等の複数アプリケーションの機能を有し、画像形成装置全体の制御を行う。また、コントローラボード５０１は、操作部制御ボード５０２の入力を解読して本システムの設定とその状態内容を操作表示部の液晶パネル等に表示する。
【００３４】
ＰＣＩバスは他のユニットと接続されており、画像データバス／制御コマンドバスで、画像データと制御コマンドが時分割で転送される。
【００３５】
本実施の形態では、画像処理を行うＩＰＰ及びＩ／Ｏ制御は、ＡＳＩＣでハードウェア化されており、画像形成の最初もしくはＩ／Ｏが動作する際にのみ、各デバイスへのアクセス制御を行っている。このため、ＣＰＵのアクセス頻度としては、ＦＲＯＭ及びワークエリアとして使用しているＲＡＭは高頻度でアクセスを行うが、その他のデバイスへのアクセス頻度はＦＲＯＭ／ＲＡＭほどは高くない。このようにアクセス頻度の高いデバイスと、低いデバイスが混在する構成となっている。
【００３６】
しかしながら、外部デバイスの設定レジスタ数が多くなると、画像形成開始時及びＩ／Ｏ制御開始時に、ＦＲＯＭ・ＲＡＭアクセスとタイミングが重なってしまう場合がある。このとき外部デバイスへのアクセスは、配線領域及びＡＳＩＣのピン数の問題で、同一外部バスを並列接続して使用しているため、各デバイスへのアクセスに遅延が生じる場合がある。遅延が生じても、結果として作像動作に影響がなければ問題ないが、扱うデータ量が多い機種であったり、コピー速度が速い機種、入出力数（Ｉ／Ｏ数）が多い機種では、例えば画像生成タイミングと用紙の搬送タイミングがずれて出力画像に影響を及ぼしたり、各入出力を制御するタイミングがずれて、用紙詰まりを発生させてしまう場合がある。特に外部バスへのアクセスが集中するタイミングで、ＣＰＵの内部バスのアクセス頻度が対処理がウェイト状態となる時間が長くなる程、前述の問題が発生するリスクが高くなる。このため、本実施の形態では、ＡＳＩＣを以下のように構成している。
【００３７】
図２は、ＡＳＩＣの構成図である。ＡＳＩＣ内部は、図２に示すように、ＣＰＵコア３０１と、複数のＤＭＡコントローラ３０２と、内部ＳＲＡＭ３０３と、外部バスコントローラ３０４とを主に備えている。また、ＡＳＩＣは、不図示のＵＡＲＴ／Ｉ２Ｃ／ウォッチドックタイマなどその他のモジュールも備えている。これらの各モジュールは内部バス３０５で接続されており、ＣＰＵコア３０１、ＤＭＡコントローラ３０２をマスタとして、モジュール間のデータ転送を行っている。
【００３８】
内部バス３０５は、マトリックス上に構成されていて、それぞれバスマスタとなるモジュールのデータ転送が占有可能なように構成されている。このためＣＰＵコア３０１によるその他のモジュール（例えばＵＡＲＴ）へのアクセスと、ＤＭＡ３０２によるＳＲＡＭ３０３からＩ２Ｃモジュールへのデータ転送などを同時に行うことが可能になっている。
【００３９】
なお、本実施の形態では、ＣＰＵコア３０１、ＤＭＡ３０２、不図示のＵＳＢ−ＨＯＳＴをバスマスタとしている。
【００４０】
ＳＲＡＭ３０３は、複数に分割配置されている。これにより、ＳＲＡＭ領域を異なるマスタから同時にアクセスすることが可能となり、メモリの使用効率の向上が図られている。
【００４１】
外部バスへのアクセスは、外部バスコントローラ３０４を経由して行われる。外部バスコントローラ３０４は、本実施の形態では、３つの先入れ先出し方式のＦｉＦｏメモリ０〜２（以下、単に「ＦｉＦｏ０〜２」という場合もある。）と調停回路３１０とを内蔵している。
【００４２】
ＦｉＦｏ０〜２のそれぞれは、内部バス３０５と接続されていて、内部バス３０５の各マスタから転送されてきたデータを一時格納するものである。本実施の形態では、各デバイス毎（チップセレクト空間毎）に外部アドレス空間が割り付けられている。
【００４３】
図３は、外部バスアドレス空間と各ＦｉＦｏの割り当てを示す説明図である。図３に示すように、外部アドレス空間であるチップセレクト空間ＣＳ０〜ＣＳ３がＦｉＦｏ０に割り付けられ、チップセレクト空間ＣＳ４〜ＣＳ７がＦｉＦｏ１に割り付けられ、チップセレクト空間ＣＳ８〜ＣＳ１１がＦｉＦｏ２に割り付けられている。各ＦｉＦｏ０〜２の図示しないアドレスデコーダが内部バス３０５のアクセス空間に応じて、対象アドレス空間へのアクセスであった場合に、ＦｉＦｏ０〜２にアドレス及びデータを格納する動作を行っている。
【００４４】
ＦｉＦｏ０〜２に格納されたデータは、調停回路３１０を通じて外部バスに転送される。調停回路３１０は、主に複数のＦｉＦｏ０〜２のうち、外部バスにデータ転送するＦｉＦｏの選択を行うものである。調停回路３１０の動作の詳細については後述する。
【００４５】
上述したように外部バスには複数の外部デバイスが並列に接続されているため、調停回路３１０ではアクセスするデータが、どの外部デバイスへのデータを転送するかを識別するためのチップ選択信号（ＣＳ信号）の生成も行っている。本実施の形態では、１２個のＣＳ空間を持っており、それぞれのＦｉＦｏ０〜２ごとに４つのＣＳ空間のアクセスデータが格納される。
【００４６】
通常、内部のバスアクセスは、サイクル周波数にもよるが、１サイクルなど早いアクセスが可能であるが、外部バスアクセスは、ＡＳＩＣの端子容量・基板／ハーネスなどの経路・バッファなどによって、信号遅延が発生する。このため外部バスにアクセスするときは、外部のデバイスが応答可能な速度でアクセスを行う。
【００４７】
しかしながら、外部デバイスのアクセス速度に併せて、内部バスもアクセスすると、内部バスの処理性能が低下する。ＦｉＦｏ０〜２は、このアクセス速度差を吸収する役割も担っている。このように構成することで、外部アクセスが遅くても、ＦｉＦｏ０〜２に空きがある限り、内部バスが待ち状態になることが回避される。
【００４８】
本実施の形態の外部バスコントローラ３０４の動作を説明する前に、従来の外部バスコントローラについて説明する。
【００４９】
図７は、従来の外部バスコントローラの動作タイミングを示す説明図である。図７（ａ）は、各モジュールからのアクセス要求タイミングを示し、図７（ｂ）は内部バスとの接続が１系統でＦｉＦｏメモリなしの場合のアクセスタイミングを示す。図８は、従来のＦｉＦｏメモリがない場合の外部バスコントローラの構成図である。
【００５０】
各モジュールからの内部バスを介するアクセス要求があった場合、従来の外部バスコントローラは、先にアクセス要求のあった処理を随時受け付ける処理を行う。そして、複数の要求が同時にあった場合は、優先順位の高い処理を先に処理を行う。
【００５１】
図７は、優先順位はＣＰＵ＞ＤＭＡＣ＃０＞ＤＭＡＣ＃１となっている例であり、例えば、図７（ａ）に示すように、「Ａ０」、「Ｃ０」のような複数の要求が同時にあった場合は、図７（ｂ）に示すように、優先順位の高い「Ａ０」の要求が先に処理される。ＦｉＦｏメモリがない場合、外部アクセスが終了したときのアクセス要求を参照し、優先順位の高いアクセス要求を処理していくため、図７に示すように、優先順位の高いアクセス要求（ＣＰＵ）が連続して発生すると、優先順位の低いアクセス要求（ＤＭＡＣ＃０／１）の処理が待たされる状態となる。
【００５２】
そして、優先順位の高いアクセス要求が一通り終了した後に、優先順位の低いアクセスが処理される。このため、アクセス頻度の高い処理の優先順位を低くし、頻度の低い処理を高く設定せざるを得ない。本来であれば、ＣＰＵアクセスは最も優先順位を高くしたいところではあるが、アクセス頻度が高い場合は優先順位を低くせざるを得なく、処理が集中した場合に、遅延が発生するという問題が残る。
【００５３】
一方、図９は、内部バスと調停回路の間にＦｉＦｏメモリを設けた場合の従来例の外部バスコントローラの構成図である。
【００５４】
図７（ｃ）は、図９の外部バスコントローラ（内部バスとの接続が１系統でＦｉＦｏメモリありの場合）のアクセスタイミングを示す図である。この例でも、図７（ａ）に示す各モジュールからのアクセス要求タイミングであるとする。また、図７（ｃ）において、ＦｉＦｏレベルは、ＦｉＦｏメモリにデータが格納されている段数の状態を示している。図７（ｃ）の例では、ＦｉＦｏメモリは６段のものを使用し、このため６つデータが保存されたときに、ＦＵＬＬの状態となる。図７（ｃ）において、ＦｉＦｏレベルの網掛け部分は、ＦｉＦｏがＦＵＬＬになっている状態を示している。
【００５５】
図７（ｃ）に示すように、ＦｉＦｏメモリがＦＵＬＬの状態でなく、空きがある場合にはアクセス要求の先着順で、ＦｉＦｏメモリにデータが格納されるため、内部バスのアクセス順序に従って外部バスをアクセスすることが可能となる（Ｓ７１，Ｓ７２参照）。しかし、アクセス要求が集中しＦｉＦｏがＦＵＬＬの状態になると、やはり図７（ｂ）と同様の状態となり、外部アクセスが終了したときのアクセス要求を参照し、優先順位の高いアクセス要求をＦｉＦｏに格納していくようになるため、優先順位の高いアクセス要求（図７の例ではＣＰＵからのアクセス要求）が連続して発生すると、優先順位の低いアクセス要求（図７の例では、ＤＭＡＣ＃０／１からのアクセス要求）の処理が待たされる状態となる。ＦｉＦｏメモリの段数を大幅に追加することにより、上記問題を解決することができる、製造コストが増大してしまう。
【００５６】
このため、本実施の形態の調整回路３１０は、内部バスからのアクセス要求に対して、３個のＦｉＦｏメモリ０〜２のうち、外部バスにデータ転送するＦｉＦｏメモリの選択を行い、選択されたＦｉＦｏメモリに保存されたデータを外部バスに出力する。より具体的には、３個のＦｉＦｏメモリ０〜２のそれぞれからのデータ出力の優先順位を最初に定めておき、調停回路３１０は、内部バスからのアクセス要求に対して、３個のＦｉＦｏメモリ０〜２のそれぞれからのデータ出力の優先順位を変更して、変更された優先順位に従って、外部バスにデータ転送するＦｉＦｏメモリの選択を行い、選択されたＦｉＦｏメモリに保存されたデータを外部バスに出力する。
【００５７】
図４は、実施の形態１の外部バスコントローラの動作タイミングを示す説明図である。図４（ａ）は、各モジュールからのアクセス要求タイミングを示す。図４（ｂ）は、本実施の形態の調停回路３１０で優先順位を各アクセス毎に入れ替えたときのアクセスタイミングを示している。ここで、ＦｉＦｏレベルは、各ＦｉＦｏ０〜２にデータが格納されている段数の状態を示している。本例の各ＦｉＦｏ０〜２は、３段のものを使用しており、このため、各ＦｉＦｏ０〜２は、３つデータが保存されたときに、ＦＵＬＬの状態となる。図４（ｂ）において、ＦｉＦｏレベルの網掛け部分は、ＦｉＦｏがＦＵＬＬになっている状態を示している。
【００５８】
図４（ｂ）の例では、外部バスコントローラ３０４がＡ０とＣ０のアクセス要求を同時に受付け、Ａ０をＦｉＦｏ０に格納し、Ｃ０をＦｉＦｏ２に格納している。そして、Ａ０を外部バスにデータ出力し、次にＡ１とＢ０のアクセス要求を同時に受付け、Ａ１をＦｉＦｏ０に格納し、Ｂ０をＦｉＦｏ１に格納している。同様に、外部バスコントローラ３０４が順次、アクセス要求を受け付けて、ＦｉＦｏ０〜２に格納していくが、Ａ３のアクセス要求を受け付けたときに、ＦｉＦｏ０がＦＵＬＬの状態となることが図４（ｂ）に示されている。
【００５９】
本実施の形態の調停回路３１０は、各ＦｉＦｏメモリにデータがある場合、アクセスごとに、ＦｉＦｏメモリ０〜２のそれぞれからのデータ出力の優先順位を順次変更する動作を行う。
【００６０】
例えば、優先順位は、最初、ＦｉＦｏ０＞ＦｉＦｏ１＞ＦｉＦｏ２の順に定められており、調停回路３１０は、最初のアクセスではＦｉＦｏ０＞ＦｉＦｏ１＞ＦｉＦｏ２の優先順位でＦｉＦｏメモリ０を選択してＦｉＦｏ０に保存されているデータを外部バスに出力する。このため、図４（ｂ）に示すように、最初のアクセスでは、ＦｉＦｏ０の「Ａ０」が外部バスに出力される（Ｓ４１）。
【００６１】
また、調停回路３１０は、２回目のアクセスでは優先順位をＦｉＦｏ１＞ＦｉＦｏ２＞ＦｉＦｏ０に変更し、この優先順位に従ってＦｉＦｏ１を選択し、ＦｉＦｏ１に保存されているデータを外部バスに出力する。このため、図４（ｂ）に示すように、２回目のアクセスでは、ＦｉＦｏ１の「Ｂ０」が外部バスに出力される（Ｓ４２）。
【００６２】
また、調停回路３１０は、３回目のアクセスでは優先順位をＦｉＦｏ２＞ＦｉＦｏ０＞ＦｉＦｏ１に変更してＦｉＦｏ２を選択し、ＦｉＦｏ２に保存されているデータを外部バスに出力する。このため、図４（ｂ）に示すように、３回目のアクセスでは、ＦｉＦｏ２の「Ｃ０」が外部バスに出力される（Ｓ４３）。
【００６３】
また、調停回路３１０は、４回目のアクセスでは優先順位をＦｉＦｏ０＞ＦｉＦｏ１＞ＦｉＦｏ２に変更して、ＦｉＦｏ０を選択し、ＦｉＦｏ０に保存されているデータを外部バスに出力する。このため、図４（ｂ）に示すように、４回目のアクセスでは、ＦｉＦｏ０の「Ａ１」が外部バスに出力される（Ｓ４４）。
【００６４】
なお、このときデータが格納されていないＦｉＦｏメモリがある場合は、優先順位が最下位となる。
【００６５】
ＦｉＦｏメモリを１個で構成した場合、優先順位の高いアクセス要因がバーストアクセス要求であった場合に、他の要因がウェイト状態になってしまうことがあったが、本実施の形態では、複数のＦｉＦｏメモリ０〜２を設け、調停回路３１０でデータ転送の優先順位をアクセスごとに変更しているので、各要因のデータが均等に転送される。このため、本実施の形態によれば、内部バスのロック時間を短くすることが出来き、パフォーマンスを向上させることが可能となる。
【００６６】
（実施の形態２）
実施の形態２では、調整回路３１０による制御が実施の形態１と異なっている。実施の形態２の画像形成装置の電気系の構成、ＡＳＩＣの構成は、図１、２を用いて説明した実施の形態１と同様である。
【００６７】
本実施の形態では、３つのＦｉＦｏ０〜２のそれぞれには、予め重み付け値が設定されている。重み付け値は、ＲＯＭまたはＲＡＭ等にＦｉＦｏ０〜２に対応して記憶させておけばよい。
【００６８】
本実施の形態のの調整回路３１０は、内部バス３０５からのアクセス要求に対して、上記重み付け値に基づいて、３つのＦｉＦｏ０〜２のそれぞれからのデータ出力の優先順位を変更する。より具体的には、調停回路３１０は、重み付け値が大きいＦｉＦｏメモリ程、当該ＦｉＦｏメモリの順位が最高の優先順位を適用するアクセス回数を多く設定し、このアクセス回数分、この優先順位を適用した後、優先順位を変更する。そして、調停回路３１０は、変更された優先順位に従って、外部バスにデータ転送するＦｉＦｏメモリの選択を行い、選択されたＦｉＦｏメモリに保存されたデータを外部バスに出力する。
【００６９】
図５は、実施の形態２の外部バスコントローラの動作タイミングを示す説明図である。図５（ａ）は、各モジュールからのアクセス要求タイミングを示し、図４（ａ）と同様である。図５（ｂ）は、本実施の形態の調停回路３１０で、重み付け値に基づいて優先順位を各アクセス毎に入れ替えたときのアクセスタイミングを示している。ここで、本例においても、各ＦｉＦｏ０〜２は、３段のものを使用しており、ＦｉＦｏレベルの網掛け部分は、ＦｉＦｏがＦＵＬＬになっている状態を示している。
【００７０】
図５（ｂ）の例では、ＦｉＦｏ０の重み付け値を２、ＦｉＦｏ１の重み付け値を１．５、ＦｉＦｏ２の重み付け値を１として設定している。なお、重み付け値の設定についてはこれに限定されるものではない。
【００７１】
ここで、重み付け値によって優先順位の変更は具体的には以下のようになる。調停回路３１０は、重み付け値が２のＦｉＦｏメモリの順位が最も高い優先順位を、２回のアクセスにおいて連続して適用してデータ転送を行い、その後のアクセスで優先順位を変更する。
【００７２】
また、調停回路３１０は、重み付け値が１．５のＦｉＦｏメモリの順位が最も高い優先順位を、１回り目では、当該ＦｉＦｏメモリの順位が最も高い優先順位を１回適用してデータ転送を行い、その後のアクセスで優先順位を変更する。そして、調停回路３１０は、重み付け値が１．５のＦｉＦｏメモリの順位が最も高い優先順位を、２回り目では、当該ＦｉＦｏメモリの順位が最も高い優先順位を２回適用してデータ転送を行い、その後のアクセスで優先順位を変更する。
【００７３】
また、調停回路３１０は、重み付け値が１のＦｉＦｏメモリの順位が最も高い優先順位を１回適用してデータ転送を行い、その後のアクセスで優先順位を変更する。
【００７４】
図５（ｂ）の例では、最初のアクセスでは、調停回路３１０は、重み付け値が２のＦｉＦｏ０の順位が最も高い優先順位ＦｉＦｏ０＞ＦｉＦｏ１＞ＦｉＦｏ２に従ってＦｉＦｏ０を選択し、選択したＦｉＦｏ０に保存されているデータを外部バスに出力する（Ｓ５１）。また、２回目のアクセスでも、調停回路３１０は、重み付け値が２のＦｉＦｏ０の順位が最も高い優先順位ＦｉＦｏ０＞ＦｉＦｏ１＞ＦｉＦｏ２に従ってＦｉＦｏ０を選択し、選択したＦｉＦｏ０に保存されているデータを外部バスに出力する（Ｓ５２）。
【００７５】
このため、図５（ｂ）に示すように、１回目のアクセスではＦｉＦｏ０に保存されている「Ａ０」が外部バスに出力され、２回目のアクセスではＦｉＦｏ０に保存されている「Ａ１」が外部バスに出力される。
【００７６】
そして、３回目のアクセス（１回り目）では、調停回路３１０は、重み付け値が１．５のＦｉＦｏ１の順位が最も高い優先順位ＦｉＦｏ１＞ＦｉＦｏ２＞ＦｉＦｏ０に従ってＦｉＦｏ１を選択し、選択したＦｉＦｏ１に保存されているデータを外部バスに出力する（Ｓ５３）。このため、図５（ｂ）に示すように、３回目のアクセスではＦｉＦｏ１に保存されている「Ｂ１」が外部バスに出力される。
【００７７】
なお、２回り目では、調停回路３１０は、重み付け値が１．５のＦｉＦｏ１の順位が最も高い優先順位ＦｉＦｏ１＞ＦｉＦｏ２＞ＦｉＦｏ０を２回分のアクセスに適用してから優先順位を変更する（Ｓ５５，Ｓ５６）。
【００７８】
さらに、４回目のアクセスでは、調停回路３１０は、重み付け値が１．５のＦｉＦｏ１の順位が最も高い優先順位ＦｉＦｏ２＞ＦｉＦｏ０＞ＦｉＦｏ１に従ってＦｉＦｏ２を選択し、選択したＦｉＦｏ２に保存されているデータを外部バスに出力する（Ｓ５４）。このため、図５（ｂ）に示すように、４回目のアクセスではＦｉＦｏ２に保存されている「Ｂ０」が外部バスに出力される。
【００７９】
このように本実施の形態の調停回路３１０は、優先順位がＦｉＦｏ０〜２の重み付けに従って変化する動作を行う。従って、アクセス頻度の高いＦｉＦｏに対して予め重み付け値として大きい値を設定しておくことにより、当該ＦｉＦｏに対するアクセスを優先的に行うことができ、頻度の高いバスマスタの内部バスロック時間を短くすることができる。
【００８０】
（実施の形態３）
実施の形態３でも、調整回路３１０による制御が実施の形態１と異なっている。実施の形態３の画像形成装置の電気系の構成、ＡＳＩＣの構成は、図１、２を用いて説明した実施の形態１と同様である。
【００８１】
本実施の形態の調停回路３１０は、内部バス３０５からのアクセス要求に対して、３つのＦｉＦｏ０〜２のそれぞれのデータ量に基づいて、重み付け値に基づく連続アクセス上限回数を求める。より具体的には、調停回路３１０は、３つのＦｉＦｏ０〜２のそれぞれのデータ量が多い程、連続アクセス上限回数を大きい値で求める。一例として、調停回路３１０は、ＦｉＦｏに保存されたデータのデータ量がＦＵＬＬの状態になった場合に、連続アクセス上限回数を、重み付け値に基づく回数の２倍として求める。
【００８２】
そして、調停回路３１０は、連続アクセス上限回数分のアクセスの後に、３つのＦｉＦｏ０〜２のそれぞれからのデータ出力の優先順位を変更する。そして、調停回路３１０は、変更された優先順位に従って、外部バスにデータ転送するＦｉＦｏメモリの選択を行い、選択されたＦｉＦｏメモリに保存されたデータを外部バスに出力する。
【００８３】
図６は、実施の形態３の外部バスコントローラの動作タイミングを示す説明図である。図６（ａ）は、各モジュールからのアクセス要求タイミングを示し、図４（ａ）と同様である。図６（ｂ）は、本実施の形態の調停回路３１０で、重み付け値に基づいて優先順位を各アクセス毎に入れ替えたときのアクセスタイミングを示している。ここで、本例においても、各ＦｉＦｏ０〜２は、３段のものを使用しており、ＦｉＦｏレベルの網掛け部分は、ＦｉＦｏがＦＵＬＬになっている状態を示している。
【００８４】
図６（ｂ）の例では、実施の形態２の例である図５（ｂ）と同様に、ＦｉＦｏ０の重み付け値を２、ＦｉＦｏ１の重み付け値を１．５、ＦｉＦｏ２の重み付け値を１として設定している。ただし、本実施の形態の調停回路３１０では、さらに、ＦｉＦｏ０〜２のデータ量に応じて切り替えタイミングを変更している。
【００８５】
本実施の形態では、調停回路３１０は、ＦｉＦｏメモリのデータ量として、ＦｉＦｏメモリがＦＵＬＬの状態の場合に、重み付け値の２倍を連続アクセスの上限値として、優先順位の切り替えを行う。図５（ｂ）の例で、例えば、ＦｉＦｏ０であれば、重み付け値２×２＝４回を連続アクセスの上限値とする。なお、連続アクセスの上限値の算出方法は、これに限定されるものではない。
【００８６】
ここで、データ量に応じた重み付け値の設定は、システムのデータアクセス頻度に応じて変更するのが好ましい。なお、ＦｉＦｏメモリがＦＵＬＬとなっている間は、優先順位を固定にする方法もあるが、連続したアドレスに対してデータのリード／ライトを行うバーストアクセスのような高頻度のアクセスが発生すると、常にＦｉＦｏメモリがＦＵＬＬの状態となり、他の空間へのアクセスが滞る可能性がある。このため、本実施の形態のように、連続アクセスの上限を設けて、優先順位の切り替えを行う。
【００８７】
ここで、データ量に基づく重み付け値による優先順位の変更は具体的には以下のようになる。調停回路３１０は、重み付け値が２のＦｉＦｏ０の順位が最も高い優先順位を、通常、２回のアクセスにおいて連続して適用するが、図６（ｂ）に示すように、ＣＰＵからＡ３のアクセス要求を受け付けた場合（Ｓ６１）、ＦｉＦｏ０レベルが３となりＦｉＦｏ０がＦＵＬＬの状態となる（Ｓ６２）。
【００８８】
このため、調停回路３１０は、連続アクセスの上限値を重み付け値２の２倍である４回として、図６（ｂ）に示すように、４回分のアクセスにおいて、優先順位ＦｉＦｏ０＞ＦｉＦｏ１＞ＦｉＦｏ２を適用し、当該優先順位に従ってＦｉＦｏ０を選択し、選択したＦｉＦｏ０に保存されているデータを外部バスに出力する（Ｓ６７）。そして、これにより連続アクセスの上限値に達したため、次のアクセスで、調停回路３１０は優先順位を変更する。
【００８９】
このため、図６（ｂ）に示すように、１回目のアクセスではＦｉＦｏ０に保存されている「Ａ０」が外部バスに出力され、２回目のアクセスではＦｉＦｏ０に保存されている「Ａ１」が外部バスに出力され、３回目のアクセスではＦｉＦｏ０に保存されている「Ａ２」が外部バスに出力され、４回目のアクセスではＦｉＦｏ０に保存されている「Ａ３」が外部バスに出力される。
【００９０】
次のアクセスでは、調停回路３１０は、優先順位を、重み付け値が１．５のＦｉＦｏ１の順位が最も高い優先順位ＦｉＦｏ１＞ＦｉＦｏ２＞ＦｉＦｏ０に変更する。ここで、調停回路３１０は、重み付け値が１．５のＦｉＦｏメモリの順位が最も高い優先順位を、通常、１回のアクセスにおいてのみ適用するが、図６（ｂ）に示すように、ＤＭＡＣ＃０からＢ４のアクセス要求を受け付けて（Ｓ６３）、これをＦｉＦｏ１に保存した場合、ＦｉＦｏ１レベルが３となりＦｉＦｏ１がＦＵＬＬの状態となる（Ｓ６４）。
【００９１】
このため、調停回路３１０は、連続アクセスの上限値を重み付け値１．５に応じた回数１の２倍である２回として、図６（ｂ）に示すように、２回分のアクセスにおいて、優先順位ＦｉＦｏ１＞ＦｉＦｏ２＞ＦｉＦｏ０を適用し、当該優先順位に従ってＦｉＦｏ１を選択し、選択したＦｉＦｏ１に保存されているデータを外部バスに出力する（Ｓ６８）。そして、これにより連続アクセスの上限値に達したため、次のアクセスで、調停回路３１０は優先順位を変更する。
【００９２】
このため、図６（ｂ）に示すように、５回目のアクセスではＦｉＦｏ１に保存されている「Ｂ０」が外部バスに出力され、６回目のアクセスではＦｉＦｏ１に保存されている「Ｂ１」が外部バスに出力される。
【００９３】
なお、２回り目では、調停回路３１０は、連続アクセスの上限値を重み付け値１．５に応じた回数２の２倍である４回とする。
【００９４】
次のアクセスでは、調停回路３１０は、優先順位を、重み付け値が１のＦｉＦｏ２の順位が最も高い優先順位ＦｉＦｏ２＞ＦｉＦｏ０＞ＦｉＦｏ１に変更する。ここで、調停回路３１０は、重み付け値が１のＦｉＦｏ２の順位が最も高い優先順位を、通常、１回のアクセスにおいてのみ適用するが、図６（ｂ）に示すように、ＤＭＡＣ＃０からＣ３のアクセス要求を受け付けて（Ｓ６５）、これをＦｉＦｏ２に保存した場合、ＦｉＦｏ２レベルが３となりＦｉＦｏ２がＦＵＬＬの状態となる（Ｓ６６）。
【００９５】
このため、調停回路３１０は、連続アクセスの上限値を重み付け値１に応じた回数１の２倍である２回として、図６（ｂ）に示すように、２回分のアクセスにおいて、優先順位ＦｉＦｏ２＞ＦｉＦｏ０＞ＦｉＦｏ１を適用し、当該優先順位に従ってＦｉＦｏ２を選択し、選択したＦｉＦｏ２に保存されているデータを外部バスに出力する（Ｓ６９）。そして、これにより連続アクセスの上限値に達したため、次のアクセスで、調停回路３１０は優先順位を変更する。
【００９６】
このため、図６（ｂ）に示すように、７回目のアクセスではＦｉＦｏ２に保存されている「Ｃ０」が外部バスに出力され、８回目のアクセスではＦｉＦｏ２に保存されている「Ｃ１」が外部バスに出力される。
【００９７】
このように本実施の形態では、調停回路３１０が、内部バス３０５からのアクセス要求に対して、３つのＦｉＦｏ０〜２のそれぞれのデータ量に基づいて、重み付け値に基づく連続アクセス上限回数を求め、連続アクセス上限回数分のアクセスの後に、３つのＦｉＦｏ０〜２のそれぞれからのデータ出力の優先順位を変更するので、アクセス頻度の高い処理を優先しつつ、各バスマスタのデータが均等に転送されるため、内部バスのロック時間を短縮することができ、パフォーマンスを向上させることが可能となる。
【００９８】
なお、実施の形態１〜３の調停回路３１０は、ハードウェアで構成する他、ＣＰＵがプログラムを実行することにより実現されるものであってもよい。
【００９９】
さらなる効果や変形例は、当業者によって容易に導き出すことができる。本発明の実施態様は、以上に説明したような特定の実施の形態に限定されるものではない。よって、本発明およびその均等物の発明の概念を超えない範囲で様々な変更が可能である。
【符号の説明】
【０１００】
３００  読み取りユニット
３０１  ＣＰＵコア
３０２  ＤＭＡＣ
３０３  ＳＲＡＭ
３０４  外部バスコントローラ
３０５  内部バス
５００  ＬＡＮインターフェースボード
５０１  コントローラボード
５０２  操作部制御ボード
５０３  ＨＤＤ
５０６  ＦＡＸコントローユニット（ＦＣＵ）
５１０  エンジン制御ボード
５１１  ＳＢＵ
５１２  ＬＤＢ
５２１  ＣＣＤ
【先行技術文献】
【特許文献】
【０１０１】
【特許文献１】特開平１１‐８５６７０号公報
【図１】
0005906625.tif 000002
【図２】
0005906625.tif 000003
【図３】
0005906625.tif 000004
【図４】
0005906625.tif 000005
【図５】
0005906625.tif 000006
【図６】
0005906625.tif 000007
【図７】
0005906625.tif 000008
【図８】
0005906625.tif 000009
【図９】
0005906625.tif 000010