(57)【特許請求の範囲】
【請求項１】
要求と応答とを分離して処理可能なバスを介して行うデータ転送を制御するデータ転送装置であって、
前記要求に応じたデータ転送処理を実行する複数のアクセス制御手段と、
前記複数のアクセス制御手段が発行した前記要求の調停を行い、受け付ける該要求を決定する調停手段と
を備え、
前記調停手段は、
前記調停を指定された期間禁止する調停禁止期間を設定し、該調停禁止期間中では、前記複数のアクセス制御手段のうち指定されたアクセス制御手段が発行した前記要求のみを受け付け、
該調停禁止期間中に前記指定されたアクセス制御手段で前記要求が発行された場合に、該調停禁止期間を停止して該要求を受け付け、該要求の受け付け後に該調停禁止期間を再び開始させる
ことを特徴とするデータ転送装置。
【請求項２】
前記調停手段は、
前記調停禁止期間中に前記指定されたアクセス制御手段で前記要求が発行された場合に、該調停禁止期間を無視して該要求を受け付ける
ことを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
前記調停手段は、
前記調停禁止期間と、前記調停を禁止しない調停有効期間とを繰り返す
ことを特徴とする請求項１または請求項２に記載のデータ転送装置。
【請求項４】
前記調停手段は、
前記調停禁止期間と前記調停有効期間とを繰り返す調停禁止サイクル有効期間と、該調停有効期間のみを含む調停禁止サイクル無効期間とを設け、該調停禁止サイクル有効期間の終了後に該調停禁止サイクル無効期間を開始させる
ことを特徴とする請求項３に記載のデータ転送装置。
【請求項５】
前記調停手段は、
前記複数のアクセス制御手段のうち優先順位の最も高い前記要求を発行させるアクセス制御手段を、前記指定されたアクセス制御手段とする
ことを特徴とする請求項１乃至請求項４の何れか１項に記載のデータ転送装置。
【請求項６】
前記調停手段は、
前記調停有効期間で前記複数のアクセス制御手段のうち指定されたアクセス制御手段が発行した前記要求を受け付けた時点で、前記調停禁止期間を開始させる
ことを特徴とする請求項３に記載のデータ転送装置。
【請求項７】
要求と応答とを分離して処理可能なバスを介して行うデータ転送を制御するデータ転送方法であって、
アクセス制御手段が、前記要求に応じたデータ転送処理を実行するアクセス制御ステップと、
調停手段が、複数の前記アクセス制御ステップが発行した前記要求の調停を行い、受け付ける該要求を決定する調停ステップと
を備え、
前記調停ステップは、
前記調停を指定された期間禁止する調停禁止期間を設定し、該調停禁止期間中では、前記複数のアクセス制御ステップのうち指定されたアクセス制御ステップが発行した前記要求のみを受け付け、
該調停禁止期間中に前記指定されたアクセス制御ステップにより前記要求が発行された場合に、該調停禁止期間を停止して該要求を受け付け、該要求の受け付け後に該調停禁止期間を再び開始させる
ことを特徴とするデータ転送方法。
【請求項８】
要求と応答とを分離して処理可能なバスを介して行うデータ転送を制御するデータ転送方法をコンピュータに実行させるためのプログラムであって、
前記要求に応じたデータ転送処理を実行するアクセス制御ステップと、
複数の前記アクセス制御ステップが発行した前記要求の調停を行い、受け付ける該要求を決定する調停ステップと
を備え、
前記調停ステップは、
前記調停を指定された期間禁止する調停禁止期間を設定し、該調停禁止期間中では、前記複数のアクセス制御ステップのうち指定されたアクセス制御ステップが発行した前記要求のみを受け付け、
該調停禁止期間中に前記指定されたアクセス制御ステップにより前記要求が発行された場合に、該調停禁止期間を停止して該要求を受け付け、該要求の受け付け後に該調停禁止期間を再び開始させるデータ転送方法をコンピュータに実行させるためのプログラム。
【請求項９】
画像データを格納する記憶手段と、
前記画像データに従い用紙に対して画像形成を行う画像形成手段と、
前記記憶手段から読み出した前記画像データの前記画像形成手段に対する転送を制御する請求項１乃至請求項６の何れか１項に記載のデータ転送装置と
を備える
ことを特徴とする画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＤＭＡＣ(Direct  Memory  Access  Controller)が１のバスを介して行うデータ転送を制御するデータ転送装置、データ転送方法およびプログラム、ならびに、画像形成装置に関する。
【背景技術】
【０００２】
ＬＳＩ(Large-Scale  Integration)が内部に複数のＤＭＡＣを持ち、当該複数のＤＭＡＣが１のバスにアクセスする場合、ＬＳＩ内部にＤＭＡＣに対する調停機構（アービタ）を設け、ＬＳＩの転送性能を向上させるのが一般的である。また、アービタに対し、ビデオ転送のような、時間制約の厳しいデータ転送を担うＤＭＡＣのリクエスト受付の優先順位を高くし、圧縮伸長処理や回転処理のような、時間制約が緩い、ビデオ転送処理と並行して行われるデータ転送を担うＤＭＡＣのリクエスト受付の優先順位を低くすることで、性能を保証する機構を搭載するのが一般的である。
【０００３】
図１８を用いて、優先順位の異なる複数のＤＭＡＣを用いたデータ転送処理について、概略的に説明する。図１８において、コントローラＬＳＩ３００とＣＰＵ(Central  Processing  Unit)３０２とが例えばＰＣＩ  Ｅｘｐｒｅｓｓ(Peripheral  Component  Interconnect  Bus  Express)規格に準じたバス３０１で接続され、ＣＰＵ３０２とメモリ３０４がバス３０３で接続される。ＰＣＩ  Ｅｘｐｒｅｓｓ規格は、要求と応答とが分離された、スプリットトランザクションに対応しており、応答を待たずに次の要求を発行することができる。
【０００４】
コントローラＬＳＩ３００は、優先順位の異なる複数のＤＭＡＣ３１０ａ、３１０ｂ、３１０ｃおよび３１０ｄを有する。また、コントローラＬＳＩ３００は、これら複数のＤＭＡＣ３１０ａ〜３１０ｄのデータ転送を調停するアービタ３１１と、バス３０１に対するインターフェイスであるＰＣＩｅ  Ｉ／Ｆ３１２と、送信データのバッファリングを行う送信データバッファ３１３とを有する。
【０００５】
例えば、コントローラＬＳＩ３００において、アービタ３１１は、各ＤＭＡＣ３１０ａ〜３１０ｄからのメモリ３０４に対するリード要求を、優先順位に基づき調停してＣＰＵ３０２に対してバス３０１を介して送信する。ＣＰＵ３０２は、この要求に応じてバス３０３を介してメモリ３０４からデータを読み出し、読み出したデータをバス３０１を介してコントローラＬＳＩ３００に対して送信する。
【０００６】
ここで、複数のＤＭＡＣ３１０ａ〜３１０ｄは、スプリットトランザクションに対応するために、応答を待たずに要求を発行（要求先投げ）することができる。正常時のリードデータ転送の際には、図１８に例示されるように、各ＤＭＡＣ３１０ａ〜３１０ｄは、メモリ３０４からリードデータ３３０ａ〜３３０ｄをそれぞれ読み出すための各リード要求３２０ａ〜３２０ｄを、リードデータ３３０ａ〜３３０ｄの応答を待たずに発行することができる。そのため、バス３０１を介したデータ転送を効率的に行うことができる。
【０００７】
また、特許文献１には、優先順位に基づくＤＭＡ(Direct  Memory  Access)調停機構を有し、ＤＭＡ転送開始の要求受信時に他のＤＭＡＣが動作中であった場合に、要求されたＤＭＡ転送の優先順位が高ければ、転送処理の内容と動作中の他のＤＭＡＣの優先順位とに応じて解放するチャネルを選択するようにした記述が記載されている。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところで、従来のアービタ機構では、高優先順位のＤＭＡＣの要求を長期間受けられず、データ転送時間の制約を満たせなくなり、転送データに異常が発生する場合があった。この転送データ異常は、例えば転送データが画像データである場合、画像異常となって現れる。
【０００９】
図１９を用いて、異常画像が発生する場合のデータ転送について、概略的に説明する。上述のスプリットトランザクションにおいて、回路の実装上、応答を待たずに発行できる要求の数（要求先投げ個数）には上限が存在する。したがって、各ＤＭＡＣ３１０ａ〜３１０ｄは、現在の要求先投げ個数が上限に達した状態では、現在応答待ちとなっている要求が完了するまでは、新規の要求をアービタ３１１に対して発行することができない。
【００１０】
そのため、以下の条件（１）および条件（２）が重なった場合に、異常画像が発生する。
条件（１）：ＤＭＡＣ３１０ａ〜３１０ｄのうち高優先順位のＤＭＡＣが新規のリード要求を発行不可となっている状態。
条件（２）：ＤＭＡＣ３１０ａ〜３１０ｄのうち低優先順位のＤＭＡＣが発行したライト要求によるデータ転送サイズが大きいか、または、低優先順位のＤＭＡＣが発行したライト要求が複数存在する。
【００１１】
図１９を参照し、高優先順位のＤＭＡＣ（ＤＭＡＣ３１０ａとする）は、リード要求３４０ａを発行した時点で要求先投げ数が上限に達し、新規のリード要求を発行不可の状態になり、条件（１）が満たされたものとする。ＤＭＡＣ３１０ａは、リード要求３４０ａに対応する応答を受け取ることで、次のリード要求を発行することができる。
【００１２】
この、高優先順位のＤＭＡＣ３１０ａが新規リード要求発行不可の状態において、低優先順位のＤＭＡＣ（ＤＭＡＣ３１０ｂとする）によるライト要求３４１がアービタ３１１により許可されたものとする。ライト要求３４１は、メモリ３０４に書き込むためのライトデータを含むライトデータパケット送信となる。一般的には、ライト要求のデータ転送サイズがリード要求と比較して大きいので、ライト要求パケット内のライトデータサイズが大きい場合に、条件（２）を満たすことになる。
【００１３】
このように条件（１）および条件（２）が満たされた後、高優先順位のＤＭＡＣ３１０ａによるリード要求３４０ａに対する応答（リードデータ３４２ａ）がＤＭＡＣ３１０ａに受け取られると、当該ＤＭＡＣ３１０ａは、次のリード要求３４０ｂを発行可能な状態となり、アービタ３１１により当該リード要求３４０ｂの発行が許可される。一方で、低優先順位のＤＭＡＣ３１０ｂによるライト要求３４１がアービタ３１１により、当該リード要求３４０ｂに対して先行して受け付けられている。そのため、リード要求３４０ｂは、このライト要求３４１の完了を待って発行されることになる。
【００１４】
この状態に一度でもなると、ＤＭＡＣ３１０ｂからのライト要求が続く限り、同じシーケンスを何度も繰り返すこととなる。その結果、高優先順位のＤＭＡＣ３１０ｂによるリード要求に対するデータ転送性能が悪化し、データ転送時間に対する制約が未達となる場合がある。例えば、ＤＭＡＣ３１０ａから先に発行されたリード要求３４０ａによるリードデータ３４２ａと、次に発行されるリード要求３４０ｂによるリードデータ３４２ｂとの連続性が要求されるような場合、リードデータ３４２ａおよび３４２ｂの連続性が失われてしまうことになる。このような問題は、上述した特許文献１においても起こり得るものである。
【００１５】
本発明は、上記に鑑みてなされたものであって、優先順位の高い要求に対するデータ転送性能を保証できるようにすることを目的とする。
【課題を解決するための手段】
【００１６】
上述した課題を解決し、目的を達成するために、第１の発明は、要求と応答とを分離して処理可能なバスを介して行うデータ転送を制御するデータ転送装置であって、要求に応じたデータ転送処理を実行する複数のアクセス制御手段と、複数のアクセス制御手段が発行した要求の調停を行い、受け付ける要求を決定する調停手段とを備え、調停手段は、調停を指定された期間禁止する調停禁止期間を設定し、調停禁止期間中では、複数のアクセス制御手段のうち指定されたアクセス制御手段が発行した要求のみを受け付け、調停禁止期間中に指定されたアクセス制御手段で要求が発行された場合に、調停禁止期間を停止して要求を受け付け、要求の受け付け後に調停禁止期間を再び開始させることを特徴とする。
【００１７】
また、第２の発明は、要求と応答とを分離して処理可能なバスを介して行うデータ転送を制御するデータ転送方法であって、アクセス制御手段が、要求に応じたデータ転送処理を実行するアクセス制御ステップと、調停手段が、複数のアクセス制御ステップが発行した要求の調停を行い、受け付ける要求を決定する調停ステップとを備え、調停ステップは、調停を指定された期間禁止する調停禁止期間を設定し、調停禁止期間中では、複数のアクセス制御ステップのうち指定されたアクセス制御ステップが発行した要求のみを受け付け、調停禁止期間中に指定されたアクセス制御ステップにより要求が発行された場合に、調停禁止期間を停止して要求を受け付け、要求の受け付け後に調停禁止期間を再び開始させることを特徴とする。
【００１８】
また、第３の発明は、要求と応答とを分離して処理可能なバスを介して行うデータ転送を制御するデータ転送方法をコンピュータに実行させるためのプログラムであって、要求に応じたデータ転送処理を実行するアクセス制御ステップと、複数のアクセス制御ステップが発行した要求の調停を行い、受け付ける要求を決定する調停ステップとを備え、調停ステップは、調停を指定された期間禁止する調停禁止期間を設定し、調停禁止期間中では、複数のアクセス制御ステップのうち指定されたアクセス制御ステップが発行した要求のみを受け付け、調停禁止期間中に指定されたアクセス制御ステップにより要求が発行された場合に、調停禁止期間を停止して要求を受け付け、要求の受け付け後に調停禁止期間を再び開始させるデータ転送方法をコンピュータに実行させるためのプログラムである。
【発明の効果】
【００１９】
本発明によれば、優先順位の高い要求に対するデータ転送性能を保証できるという効果を奏する。
【図面の簡単な説明】
【００２０】
【図１】図１は、各実施形態に適用可能な画像形成装置の一例の構成を示すブロック図である。
【図２】図２は、画像形成装置における複写機能実行時のデータフローを概略的に示す略線図である。
【図３】図３は、各実施形態に適用可能なコントローラＬＳＩの一例の構成を示すブロック図である。
【図４】図４は、本発明の各実施形態を適用しない場合のデータ転送処理の例について説明するためのタイムチャートである。
【図５】図５は、本発明の第１の実施形態による第１の機能を説明するための一例のタイムチャートである。
【図６】図６は、本発明の第１の実施形態による第２の機能を説明するための一例のタイムチャートである。
【図７】図７は、本発明の第１の実施形態による第３の機能を説明するための一例のタイムチャートである。
【図８】図８は、本発明の第１の実施形態によるアービタの一例の構成を示すブロック図である。
【図９】図９は、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュールの動作の概要を示す一例のフローチャートである。
【図１０】図１０は、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュールの動作をより詳細に示す一例のフローチャートである。
【図１１】図１１は、調停禁止機能の開始前処理を示す一例のフローチャートである。
【図１２】図１２は、調停禁止機能の開始後処理を示す一例のフローチャートである。
【図１３】図１３は、ａｒｂ＿ｒｅｑ＿ｓｅｌモジュールの動作を示す一例のフローチャートである。
【図１４】図１４は、に含まれるａｒｂ＿ｒｅｑ＿ｃｔｌモジュールの動作を示す一例のフローチャートである。
【図１５】図１５は、ｐｃｉｅ＿ｒｅｑ＿ｃｔｌモジュール４０の動作を示す一例のフローチャートである。
【図１６】図１６は、本発明の第１の実施形態によるアービタの動作時における内部信号の一例のタイムチャートを示す。
【図１７】図１７は、本発明の第２の実施形態による第２の機能を説明するための一例のタイムチャートである。
【図１８】図１８は、優先順位の異なる複数のＤＭＡＣを用いたデータ転送処理について概略的に説明するための略線図である。
【図１９】図１９は、異常画像が発生する場合のデータ転送について概略的に説明するための略線図である。
【発明を実施するための形態】
【００２１】
以下に添付図面を参照して、本発明に係るデータ転送装置の実施形態を詳細に説明する。図１は、各実施形態に適用可能な画像形成装置２００の一例の構成を示す。画像形成装置２００は、スキャナ２１０で原稿を読み取った画像データに対して所定の画像処理を施し、画像処理が施された画像データに基づきプロッタ２１１により用紙に対して画像形成を行う複写機能を有する。
【００２２】
画像処理ＬＳＩ(Large-Scale  Integration)２２０は、画像データに対して所定の画像処理を施す。コントローラＬＳＩ２２２は、画像処理ＬＳＩ２２０とＰＣＩ  Ｅｘｐｒｅｓｓ(Peripheral  Component  Interconnect  Bus  Express)規格に準拠したバス２２１を介して接続されると共に、同じくＰＣＩ  Ｅｘｐｒｅｓｓに準拠したバス２２３を介してＣＰＵ(Central  Processing  Unit)２２４と接続される。ＣＰＵ２２４に対して、バス２２５を介してメモリ２２６が接続される。メモリ２２６は、例えば、画像処理ＬＳＩ２２０で画像処理が施された画像データを一時的に格納するために用いられる。
【００２３】
図２は、この画像形成装置２００における複写機能実行時のデータフローを概略的に示す。なお、図２において、上述した図１と共通する部分には同一の符号を付し、詳細な説明を省略する。画像読み取り時において、経路Ａを参照し、スキャナ２１０は、原稿を読み取って得た画像データを図示されないインターフェイスを介して画像処理ＬＳＩ２２０に転送する。画像処理ＬＳＩ２２０は、転送された画像データに対して所定の画像処理を施してコントローラＬＳＩ２２２に転送する。コントローラＬＳＩ２２２は、画像処理ＬＳＩ２２０から転送された画像データを、所定単位毎に、メモリ２２６に対するライト要求と共にバス２２３を介してＣＰＵ２２４に転送する。ＣＰＵ２２４は、コントローラＬＳＩ２２２から転送されたライト要求に応じて、画像データをメモリ２２６に転送する。
【００２４】
画像形成時において、経路Ｂを参照し、コントローラＬＳＩ２２２は、メモリ２２６に転送された画像データの所定単位毎の読み出しを要求するリード要求を、バス２２３を介してＣＰＵ２２４に転送する。このとき、リード要求は、プロッタ２１１における画像形成動作に同期するように発行および転送する必要がある。ＣＰＵ２２４は、このリード要求に応じて、メモリ２２６からバス２２５を介して所定単位毎に画像データを読み出す。読み出された所定単位毎の画像データは、バス２２３を介してＣＰＵ２２４からコントローラＬＳＩ２２２に転送される。
【００２５】
経路Ｃを参照し、コントローラＬＳＩ２２２は、ＣＰＵ２２４から転送された所定単位の画像データを、バス２２１を介して画像処理ＬＳＩ２２０に転送する。画像処理ＬＳＩ２２０は、転送された画像データに対して所定の画像処理を施し、例えばライン単位で図示されないインターフェイスを介してプロッタ２１１に転送する。プロッタ２１１は、例えば用紙を所定速度で搬送させながら、転送された画像データに従いライン単位で当該用紙に対して画像を形成していく。
【００２６】
このように、画像形成装置２００では、画像形成時におけるメモリ２２６からの画像データの読み出しを、プロッタ２１１の画像形成速度に対して同期的に行う必要がある。したがって、メモリ２２６から読み出された画像データの転送には、データ転送時間に対して制約が存在する。この制約が未達の場合、プロッタ２１１において正常な画像形成が行えなくなるおそれがある。
【００２７】
図３は、各実施形態に適用可能なコントローラＬＳＩ２２２の一例の構成を示す。なお、図３において、上述した図１と共通する部分には同一の符号を付し、詳細な説明を省略する。コントローラＬＳＩ２２２は、複数のＤＭＡＣ２３０ａ、２３０ｂ、２３０ｃおよび２３０ｄと、アービタ２３１と、バス２２３に対するインターフェイスであるＰＣＩｅ  Ｉ／Ｆ２３２とを有する。また、ＰＣＩｅ  Ｉ／Ｆ２３２は、内部に送信データバッファ２３３を有する。
【００２８】
ここで、バス２２３は、上述したようにＰＣＩ  Ｅｘｐｒｅｓｓ規格に準拠している。ＰＣＩ  Ｅｘｐｒｅｓｓ規格は、従来技術でも説明したように、要求と応答とを分離して処理するスプリットトランザクションに対応している。すなわち、バス２２３に対して、前回の要求に対する応答を待たずに次の要求を発行することができる。
【００２９】
ＰＣＩｅ  Ｉ／Ｆ２３２は、バス２２３に対するインターフェイスであり、ＰＣＩ  Ｅｘｐｒｅｓｓ規格によるトランザクションを制御する。このとき、ＰＣＩｅ  Ｉ／Ｆ２３２は、送信データバッファ２３３を用いて、ＰＣＩｅ  Ｉ／Ｆ２３２とアービタ２３１との間で送受信されるデータと、ＰＣＩｅ  Ｉ／Ｆ２３２とバス２２３との間で送受信されるデータとのタイミング差などを吸収する。
【００３０】
各ＤＭＡＣ２３０ａ〜２３０ｄは、それぞれリード／ライト要求を発行してＣＰＵ２２４に対してバス２２３の使用許可をもらい、データ転送に必要な、データ転送元およびデータ転送先のアドレスを生成し、データ転送処理を実行する。ここで、各ＤＭＡＣ２３０ａ〜２３０ｄは、スプリットトランザクションに対応し、回路実装により決定される所定の個数まで、要求先投げ、すなわち、前回の要求に対する応答を待たずに次の要求を発行することができる。
【００３１】
アービタ２３１は、各ＤＭＡＣ２３０ａ〜２３０ｄからの要求を調停する。また、アービタ２３１において、各ＤＭＡＣ２３０ａ〜２３０ｄからの要求に対して優先順位が予め設定される。アービタ２３１は、各ＤＭＡＣ２３０ａ〜２３０ｄから同時に複数の要求が出され、各ＤＭＡＣ２３０ａ〜２３０ｄによる要求が競合した場合に、この優先順位に従い、優先順位の高い要求をＰＣＩｅ  Ｉ／Ｆ２３２に対して発行する。アービタ２３１は、各ＤＭＡＣ２３０ａ〜２３０ｄからの要求が競合しない場合には、受け取った要求をそのままＰＣＩｅ  Ｉ／Ｆ２３２に対して発行する。
【００３２】
次に、図４のタイムチャートを用いて、本発明の各実施形態を適用しない場合のデータ転送処理の例について説明する。要求Ａ、Ｂ、ＣおよびＤは、それぞれアービタ２３１が各ＤＭＡＣ２３０ａ、２３０ｂ、２３０ｃおよび２３０ｄから受信した要求の有無を示す。信号がＨｉｇｈ状態で、各ＤＭＡＣ２３０ａ〜２３０ｄから要求があることを示し、Ｌｏｗ状態で各ＤＭＡＣ２３０ａ〜２３０ｄから要求が無いことを示す。アービタ２３１は、各ＤＭＡＣ２３０ａ〜２３０ｄからの要求を受け付けると、受け付けた要求の信号をＨｉｇｈ状態からＬｏｗ状態に遷移させる。
【００３３】
ここで、ＤＭＡＣ２３０ａを、メモリ２２６からのデータの読み出しを要求するリードＤＭＡＣ（ＲＤＭＡＣ）とし、他のＤＭＡＣ２３０ｂ〜２３０ｄを、メモリ２２６に対するデータの書き込みを要求するライトＤＭＡＣ（ＷＤＭＡＣ）であるものとする。また、アービタ２３１において、各ＤＭＡＣ２３０ａ〜２３０ｄが発行する要求のうち、リードＤＭＡＣであるＤＭＡＣ２３０ａからのリード要求の優先順位は、他のＤＭＡＣ２３０ｂ〜２３０ｄからのライト要求に対して優先順位が高く設定されているものとする。さらに、ライト要求は、ＤＭＡＣ２３０ｂからの要求が最も優先順位が高く、ＤＭＡＣ２３０ｄからの要求が最も優先順位が低いものとする。
【００３４】
以下、適宜、ＤＭＡＣ２３０ａを高優先ＲＤＭＡＣ、ＤＭＡＣ２３０ｂ〜２３０ｄそれぞれを低優先ＷＤＭＡＣと呼ぶ。また、高優先ＲＤＭＡＣから発行されるリード要求を要求Ａ、各低優先ＷＤＭＡＣから発行されるライト要求を、それぞれ要求Ｂ、Ｃ、およびＤと呼ぶ。
【００３５】
送信バスは、バス２２３においてコントローラＬＳＩ２２２からＣＰＵ２２４に対してデータ転送がなされる経路であり、受信バスは、バス２２３においてＣＰＵ２２４からコントローラＬＳＩ２２２に対してデータ転送がなされる経路である。送信バスにおいて、「Ａ」と記されたパケットは、要求Ａによるリード要求パケットであり、「Ｂ」、「Ｃ」および「Ｄ」と記されたパケットは、それぞれ要求Ｂ、ＣおよびＤによるライト要求パケットである。
【００３６】
リード要求パケットは、リード要求のみを内包する。一方、ライト要求パケットは、ライト要求と、このライト要求によってメモリ２２６に書き込むためのライトデータとを内包する。したがって、ライト要求パケットは、一般的に、リード要求パケットと比べてパケットサイズが大きい。
【００３７】
受信バスは、バス２２３においてＣＰＵ２２４からコントローラＬＳＩ２２２に対してデータ転送がなされる経路である。受信バスにおいて「Ａ」と記されたパケットは、高優先ＲＤＭＡＣからのリード要求による送信バスに送信されたリード要求パケットに応答するリードデータパケットである。例えば、リード要求Ａ１００により送信バスに送信されたリード要求パケット１１０に応答して、リードデータパケット１１２が受信バスに対して送信される。
【００３８】
リード要求Ａ１００がアービタ２３１に対して発行されると、リード発行遅延＃１だけ遅延されて、当該要求に対応するリード要求パケット１１０が送信バスに対して送信される。リード要求Ａ１００に対応するリード発行遅延＃１は、アービタ２３１に他の要求が受け付けられておらず、且つ、送信バス上に対してリード要求Ａ１００によるリード要求パケット以外の要求パケット１１０が送信されていない状態での内部遅延である。このリード発行遅延＃１は、コントローラＬＳＩ２２２の内部構成や、バス２２３の混み具合などにより決定される。
【００３９】
一方、受信バスに対して、ＣＰＵ２２４から、高優先ＲＤＭＡＣが既に発行したリード要求（例えばリード要求Ａ１００）に応答したリードデータパケット１１２が送信され、ＰＣＩｅ  Ｉ／Ｆ２３２に受信される。このリードデータパケット１１２の受信に対して最後に要求を発行したタイミングから、ＣＰＵ２２４からの応答待ちとなっている当該要求に対する応答をアービタ２３１が受信した、すなわち、当該要求に対してＣＰＵ２２４が応答したタイミングまでの期間を、リード応答遅延と呼ぶ。
【００４０】
このリード応答遅延の期間中は、高優先ＲＤＭＡＣは、新規のリード要求を発行することができない。例えば、高優先ＲＤＭＡＣは、リード要求Ａ１００からリード応答遅延分遅延してリードデータパケット１１２を受信した後に、次のリード要求Ａ１０２を発行することができる。リード応答遅延は、メモリ２２６に対する他の要求との競合が無い場合、ＣＰＵ２２４および当該ＣＰＵ２２４がアクセスするメモリ２２６のデバイス特性により決まる。
【００４１】
図４において、最初に高優先ＲＤＭＡＣからリード要求Ａ１００が発行された後に、各低優先ＷＤＭＡＣから順次ライト要求Ｂ、Ｃ、Ｄが繰り返し発行される場合について考える。リード要求Ａ１００の発行の後に、低優先ＷＤＭＡＣからライト要求Ｂ１０１が発行され、当該ライト要求Ｂ１０１に対応するライト要求パケット１１１が送信バスに対して送信される。以降続けて、ライト要求Ｃ、Ｄが順次発行され、さらにライト要求Ｂ〜Ｄが順次繰り返し発行される。一方、高優先ＲＤＭＡＣは、リード要求Ａ１００からリード応答遅延分遅延してリードデータパケット１１２を受信した後に、次のリード要求Ａ１０２を発行することができる。
【００４２】
ここで、ライト要求Ｄの発行タイミングに少しだけ遅れて、高優先ＲＤＭＡＣからリード要求Ａ１０２が発行されたものとする。この場合、当該リード要求Ａ１０２の先に低優先ＷＤＭＡＣから発行され、対応するライト要求パケットが送信バスに対して送信されていない、ライト要求Ｃ、Ｄによるライト要求パケットＣ、Ｄの送信バスに対する送信が完了してから、当該リード要求Ａ１０２によるリード要求パケット１１３が送信バスに対して送信されることになる。
【００４３】
そのため、リード要求Ａ１０２に対するリード要求パケット１１３のリード発行遅延＃２は、リード要求Ａ１０２が受け付けられる前にアービタ２３１に受け付けられたライト要求によるライト要求パケットの送信が完了するまでの期間分だけ、上述したリード発行遅延＃１よりも大きくなってしまう。このリード発行遅延＃２は、低優先ＷＤＭＡＣから発行されたライト要求がリード要求Ａ１０２よりも先に受け付けられ、且つ、送信バス上にリード要求パケット以外の要求パケットが送信されている状態での内部遅延である。
【００４４】
このように、高優先ＲＤＭＡＣによるリード要求の発行ができない状態で、低優先ＷＤＭＡＣからライト要求が発行されてしまうと、リード発行遅延が大きくなってしまう。これにより、高優先ＲＤＭＡＣが発行するリード要求に対応するリードデータパケットの受信バスにおける転送レートが低下し、データ転送時間制約が未達となるおそれがある。
【００４５】
（第１の実施形態）
次に、本発明の第１の実施形態について説明する。本第１の実施形態は、低優先順位の要求を受け付ける頻度を低減させるための第１の機能と、第１の機能を実施することにより発生する、高優先順位の要求を受け付ける待ち時間を低減させるための第２の機能とを、少なくとも有する。さらに、第１および第２の機能により抑制された低優先順位の要求による転送を確保するための第３の機能を有する。
【００４６】
第１〜第３の機能について、概略的に説明する。第１の機能は、各ＤＭＡＣからの要求を一定時間の間禁止する調停禁止期間を設け、調停禁止期間と、調停を有効とする調停有効期間とからなる調停禁止サイクルを繰り返す。調停禁止期間は、例えばレジスタに格納する値により指定する。第２の機能は、第１の機能に加え、高優先順位のＤＭＡＣからの要求を、調停禁止期間における調停禁止の対象外とする。例えば、調停禁止対象外の有効／無効を設定する値を格納するレジスタを、各ＤＭＡＣに対応して設ける。調停禁止対象外が有効に設定されたＤＭＡＣは、調停禁止期間であっても調停対象として要求が受け付けられる。第３の機能は、第１および第２の機能に加えて、第１の機能による調停禁止サイクルを有効とする期間を指定し、有効期間を経過後は調停禁止サイクルを無効とする。この有効期間は、例えばレジスタに格納する値により指定する。
【００４７】
（第１の機能）
第１の機能について、より詳細に説明する。第１の機能では、アービタ２３１による、各ＤＭＡＣ２３０ａ〜２３０ｄからの要求に対する調停を禁止する調停禁止機能を用いる。より具体的には、アービタ２３１による各ＤＭＡＣ２３０ａ〜２３０ｄからの要求に対する調停を一定期間禁止する調停禁止期間を含む調停禁止サイクル有効期間を設ける。調停禁止サイクル有効期間において、アービタ２３１は、一定時間の調停禁止期間の終了後に、各ＤＭＡＣ２３０ａ〜２３０ｄからの要求を受け付ける調停有効期間を開始させる。調停有効期間では、各ＤＭＡＣ２３０ａ〜２３０ｄからの要求のうち、最も優先順位の高い要求を１つだけ受け付ける。調停有効期間は、各ＤＭＡＣ２３０ａ〜２３０ｄからの要求を受け付けるまで持続される。要求を受け付けた後、再度、調停禁止期間が開始される。
【００４８】
この第１の機能は、例えば次のように実装することができる。すなわち、調停禁止機能の有効／無効の設定、調停禁止期間および調停禁止サイクル有効期間のそれぞれを指定する値が格納されるレジスタを、アービタ２３１に設ける。また、調停禁止サイクル有効期間の開始を指示する開始ビットを含む信号をアービタ２３１に入力する信号端子と、当該信号端子に入力される信号から当該調停禁止サイクル有効期間の開始トリガとなる開始ビットを選択するための値が格納されるレジスタとをアービタ２３１に設ける。
【００４９】
図５は、第１の機能を説明するための一例のタイムチャートである。なお、図５において、上述の図４と共通する部分には同一の符号および記述を付して、詳細な説明を省略する。図５において、各調停禁止期間２００1、２００2、…を、斜線を付して示している。各調停禁止期間２００1、２００2、…の間が調停有効期間となる。
【００５０】
例えば、アービタ２３１は、調停禁止期間が終了し調停有効期間が開始した際に、調停禁止期間中に発行したＤＭＡＣからの要求が既に存在する場合、その要求のうち最も優先順位の高い要求を１つだけ受け付ける。図５の例では、調停停止期間２００1の終了後の調停有効期間において、調停停止期間２００1において発行したライト要求Ｂ１０１’およびライト要求１０３が存在している。アービタ２３１は、これらの要求のうち、優先順位の高いライト要求Ｂ１０１’を受け付ける。ライト要求Ｂ１０１’が受け付けられると、次の調停禁止期間２００2が開始される。なお、調停有効期間は、１つの要求のみを受け付けるため、１クロック以上の長さとされる。
【００５１】
また、リードデータパケット１１２の受信タイミングに応じて、調停禁止期間２００4においてリード要求Ａ１０２’が発行される。調停禁止期間２００4では、より低優先順位であるライト要求Ｃ１２０が発行されると共に、調停禁止期間２００2で発行された、さらに低優先順位であるライト要求Ｄ１２１が存続している。アービタ２３１は、調停禁止期間２００4が終了した直後の調停有効期間において、これらリード要求Ａ１０２’、ライト要求Ｃ１２０およびライト要求Ｄ１２１のうち最も優先順位の高いリード要求Ａ１０２’のみを受け付け、次の調停禁止期間２００5を開始させる。
【００５２】
この第１の機能によれば、アービタ２３１が各ＤＭＡＣ２３０ａ〜２３０ｄからの要求を受け付けない調停禁止期間を設けているので、高優先順位の要求が常に優先されて受け付けられ、低優先順位の要求の受け付け頻度が下がる。また、調停有効期間では１つの要求しか受け付けられないので、図４に例示したような、低優先順位の要求に応じたライト要求パケットが送信バスに対して連続的に送信されることが抑制される。
【００５３】
その一方で、第１の機能では、高優先順位の要求が一定期間の調停禁止期間が終了しないと受け付けられないため、要求に応じたパケットの送信バスに対する送信が遅延する。図５の例では、リード要求Ａ１０２’に対応するリード要求パケット１１３が、リード要求Ａ１０２’の発行時から、上述したリード発行遅延＃１よりも長いリード発行遅延＃２’の遅延を以て送信バスに対して送信される。
【００５４】
（第２の機能）
第２の機能では、上述の第１の機能に加えて、高優先順位の要求について調停禁止期間を無視することで、高優先順位の要求における遅延を短縮し、当該要求のスループット（要求受け付け待ち時間）を減縮する。この第２の機能は、例えば調停機能対象外の有効／無効を設定するための値が格納されるレジスタを各ＤＭＡＣ２３０ａ〜２３０ｄに対応して設けることで実装できる。
【００５５】
図６は、第２の機能を説明するための一例のタイムチャートである。なお、図６において、上述の図４および図５と共通する部分には同一の符号および記述を付して、詳細な説明を省略する。
【００５６】
図６の例において、リードデータパケット１１２の受信タイミングに応じて、調停禁止期間２００4中に、最も優先順位の高い高優先ＲＤＭＡＣからリード要求Ａ１０２”が発行される。アービタ２３１は、調停禁止期間２００4を無視してこのリード要求Ａ１０２”を受け付け、リード要求パケット１１３’を送信バスに対して送信させる。
【００５７】
一方、アービタ２３１は、それぞれリード要求Ａ１０２”よりも優先順位の低い、調停禁止期間２００4中に発行したライト要求Ｃ１２０と、調停禁止期間２００2中に発行し調停禁止期間２００4において存続しているライト要求Ｄ１２１とに対しては、調停禁止期間２００4が終了するまで受け付けを行わない。図６の例では、調停禁止期間２００4の直後の調停有効期間では、アービタ２３１においてリード要求Ａ１０２”が既に受け付けられているため、これらライト要求Ｃ１２０およびライト要求Ｄ１２１は、受け付けられない。
【００５８】
このように、第２の機能によれば、低優先順位の要求については、調停禁止期間を適用すると共に調停有効期間において最も優先順位の高い要求を受け付けるようにし、高優先順位の要求については、調停禁止期間を無視して要求を受け付けるようにしている。そのため、高優先順位のリード発行遅延が短縮され、転送性能が向上する。図６の例では、リード要求Ａ１０２”に対するリード要求遅延＃３が、リード要求Ａ１００に対するリード要求遅延＃１と略等しくなっている。
【００５９】
（第３の機能）
上述の第２の機能では、低優先順位の要求が調停有効期間毎に１つずつしか受け付けられないため、低優先順位の要求が常に抑制され、低優先順位の要求に対する転送性能が低下するおそれがある。そのため、第３の機能として、調停禁止期間を含まない調停禁止サイクル無効期間を設け、この調停禁止サイクル無効期間を調停禁止サイクル有効期間の後に開始させる機能を、上述の第２の機能に対してさらに追加すると、低優先順位の要求に対する転送性能を向上させることができる。
【００６０】
この第３の機能は、上述した第１の機能と同様に、例えば次のように実装することができる。すなわち、調停禁止機能の有効／無効の設定、調停禁止期間および調停禁止サイクル有効期間のそれぞれを指定する値が格納されるレジスタを、アービタ２３１に設ける。また、調停禁止サイクル有効期間の開始を指示する開始ビットを含む信号をアービタ２３１に入力する信号端子と、当該信号端子に入力される信号から当該調停禁止サイクル有効期間の開始トリガとなる開始ビットを選択するための値が格納されるレジスタとをアービタ２３１に設ける。
【００６１】
図７は、第３の機能を説明するための一例のタイムチャートである。なお、図７において、上述の図４〜図６と共通する部分には同一の符号および記述を付して、詳細な説明を省略する。図７の例では、調停禁止期間２００3の終了と共に調停禁止サイクル有効期間を終了させ、調停禁止サイクル無効期間を開始させている。
【００６２】
この調停禁止サイクル無効期間では、アービタ２３１は、各ＤＭＡＣ２３０ａ〜２３０ｄからの要求を、優先順位および発行順に従い順次受け付ける。図７の例では、調停禁止サイクル無効期間が開始されると、当該調停禁止サイクル無効期間の開始時に存続しているライト要求Ｂ１０４およびライト要求Ｄ１０５が優先順位に従い、アービタ２３１に順次受け付けられ、さらに、新たに発行されたライト要求Ｃ１０６がアービタ２３１に受け付けられる。そして、これらライト要求Ｂ１０４、ライト要求Ｄ１０５およびライト要求Ｃ１０６にそれぞれ対応するライトデータパケット１１６、１１７および１１８が送信バスに対して順次送信される。
【００６３】
このように、第３の機能によれば、低優先順位の抑制期間が調停禁止サイクル無効期間の直前までに限定されるため、転送性能を向上させることができる。
【００６４】
（アービタの詳細）
次に、図８〜図１６を用いて、上述した第１〜第３の機能を実現するためのアービタ２３１の構成および動作について、より詳細に説明する。図８は、本第１の実施形態によるアービタ２３１の一例の構成を示す。
【００６５】
アービタ２３１において、ｒｅｇ＿ｃｔｒｌモジュール１１は、アービタ２３１外部から、アービタ２３１内部に持つ各レジスタ１２〜１８へのアクセスを制御するモジュールである。ｔｒｇ＿ｓｅｌレジスタ１２は、調停禁止サイクル開始トリガを選択するためのレジスタである。以下の項目を調停禁止サイクル開始トリガとして選択可能である。
（１）ｍａｓｋ＿ｔｒｇレジスタ１４の値が「１」になる。
（２）信号ｄｍａ＿ｅｘｅｃ２１の全４ビットのうち、ｔｒｇｍ＿ｓｅｌレジスタ１３にて選択されたビットのアサート。
【００６６】
ｔｒｇｍ＿ｓｅｌレジスタ１３は、ｔｒｇ＿ｓｅｌレジスタ１２にて調停禁止サイクル開始トリガが（２）の「信号ｄｍａ＿ｅｘｅｃ２１のアサート」に設定されている場合、信号ｄｍａ＿ｅｘｅｃ２１の全４ビットのうち、どのビットのアサートを、調停禁止サイクルの開始トリガにするかを選択するためのレジスタである。信号ｄｍａ＿ｅｘｅｃ２１の複数のビットを調停禁止サイクルの開始トリガとして選択することが可能であり、その場合、選択されたビットのうち何れかのビットのアサートが、調停禁止サイクル開始トリガとなる。
【００６７】
ｍａｓｋ＿ｔｒｇレジスタ１４は、ｔｒｇ＿ｓｅｌレジスタ１２にて調停禁止サイクル開始トリガが（１）の「ｍａｓｋ＿ｔｒｇレジスタ１４の値が「１」になる」に設定されている場合、値「１」を書き込まれることにより、調停禁止サイクル開始トリガとなる。
【００６８】
ｍａｓｋ＿ｅｎａｂｌｅレジスタ１５は、調停禁止機能の有効／無効を設定するためのレジスタである。ｃｙｃｌｅ＿ｍａｓｋ＿ｔｉｍｅレジスタ１６は、調停禁止期間を設定するためのレジスタである。ｔｏｔａｌ＿ｍａｓｋ＿ｔｉｍｅレジスタ１７は、調停禁止サイクル有効期間を設定するためのレジスタである。ｍａｓｋ＿ｏｆｆ＿ｓｅｌレジスタ１８は、調停禁止対象外のマスタを選択するためのレジスタである。
【００６９】
インターフェイスｒｅｇ＿ｉｆ１９は、アービタ２３１外部から、アービタ２３１内部に持つレジスタへのアクセスを行うためのインターフェイスである。
【００７０】
ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、レジスタ１２〜１７の値と、信号ｄｍａ＿ｅｘｅｃ２１および信号ａｒｂ＿ｒｅｑ３４の入力とに基づき、調停禁止サイクルを制御する。ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、調停禁止期間中、信号ａｒｂ＿ｍａｓｋ２５をアサートする。
【００７１】
信号ｄｍａ＿ｅｘｅｃ２１は、各ＤＭＡＣ２３０ａ〜２３０ｄに出力される、各ＤＭＡＣ２３０ａ〜２３０ｄが起動中であることを示す信号である。ここでは、説明のため、信号ｄｍａ＿ｅｘｅｃ２１の第０ビット〜第３ビットに対して、それぞれＤＭＡＣ２３０ａ〜２３０ｄの信号がアサインされているものとする。
【００７２】
ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、内部レジスタとしてｍａｓｋ＿ｅｘｅｃレジスタ２２、ｃｙｃｌｅ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２３およびｔｏｔａｌ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２４を有する。ｍａｓｋ＿ｅｘｅｃレジスタ２２は、調停禁止サイクル有効期間であることを示す信号が書き込まれる。ｃｙｃｌｅ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２３は、調停禁止期間のカウント値が格納される。ｔｏｔａｌ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２４は、調停禁止サイクル有効期間のカウント値が格納される。
【００７３】
信号ａｒｂ＿ｍａｓｋ２５は、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０からａｒｂ＿ｍａｉｎ＿ｃｔｌモジュール２６に対して出力される、調停禁止期間であることを示す信号である。
【００７４】
ａｒｂ＿ｍａｉｎ＿ｃｔｌモジュール２６は、内部モジュールとしてａｒｂ＿ｒｅｑ＿ｓｅｌモジュール２７、ａｒｂ＿ｒｅｑ＿ｃｔｌモジュール２８およびｐｃｉｅ＿ｒｅｑ＿ｃｔｌモジュール４０を有し、ｍａｓｋ＿ｏｆｆ＿ｓｅｌレジスタ１８、信号ｄｍａ＿ｒｅｑ３０、信号ａｒｂ＿ｍａｓｋ２５および信号ｐｃｉｅ＿ｂｕｓｙ３３の情報に基づき、各ＤＭＡＣ２３０ａ〜２３０ｄからのデータ転送要求を調停する。
【００７５】
ａｒｂ＿ｒｅｑ＿ｓｅｌモジュール２７は、信号ｄｍａ＿ｒｅｑ３０の中から、ｍａｓｋ＿ｏｆｆ＿ｓｅｌレジスタ１８、信号ａｒｂ＿ｍａｓｋ２５の値に基づき、調停対象（調停禁止対象外）要求を選択する。ａｒｂ＿ｒｅｑ＿ｃｔｌモジュール２８は、調停対象となった要求を調停する。ａｒｂ＿ｒｅｑ＿ｃｔｌモジュール２８は、要求受付対象が確定した場合、信号ａｒｂ＿ｒｅｑ３４をアサートする。
【００７６】
信号ｄｍａ＿ｒｅｑ３０は、各ＤＭＡＣ２３０ａ〜２３０ｄから出力される、各ＤＭＡＣ２３０ａ〜２３０ｄのデータ転送要求を示す信号である。ここでは、説明のため、信号ｄｍａ＿ｒｅｑ３０の第０ビット目〜第３ビット目に対して、それぞれＤＭＡＣ２３０ａ〜２３０ｄの信号がアサインされているものとする。
【００７７】
信号ｄｍａ＿ａｃｋ３１は、ａｒｂ＿ｍａｉｎ＿ｃｔｌモジュール２６から出力され、各ＤＭＡＣ２３０ａ〜２３０ｄのデータ転送要求に対する許可状態を表す。信号ｐｃｉｅ＿ｒｅｑ３２は、ａｒｂ＿ｍａｉｎ＿ｃｔｌモジュール２６からＰＣＩｅ  Ｉ／Ｆ２３２に対して出力される、データ転送パケット発行要求信号である。信号ｐｃｉｅ＿ｂｕｓｙ３３は、ＰＣＩｅ  Ｉ／Ｆ２３２が出力する、パケット要求受付状態を示す信号である。
【００７８】
信号ａｒｂ＿ｒｅｑ３４は、ａｒｂ＿ｍａｉｎ＿ｃｔｌモジュール２６からａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０に対して出力され、要求調停結果を示す。信号ａｒｂ＿ｒｅｑ＿ｓ３５は、ａｒｂ＿ｒｅｑ＿ｃｔｌモジュール２８からａｒｂ＿ｒｅｑ＿ｓｅｌモジュール２７に対して出力され、信号ａｒｂ＿ｒｅｑ３４と同じ値が示される。信号ｄｍａ＿ｒｄｙ３６は、ａｒｂ＿ｒｅｑ＿ｓｅｌモジュール２７からａｒｂ＿ｒｅｑ＿ｃｔｌモジュール２８に対して出力され、調停対象となった要求を表す。ＤＭＡＣ２３０ａの要求が受け付けられた場合、信号ｄｍａ＿ｒｄｙ３６の第０ビット目がアサートされる。
【００７９】
信号ｄｍａ＿ａｃｋ３７は、ａｒｂ＿ｒｅｑ＿ｃｔｌモジュール２８からａｒｂ＿ｒｅｑ＿ｓｅｌモジュール２７に対して出力され、調停対象となった要求の許可状態を表す。信号ａｒｂ＿ｒｅｑ＿ｐ３８は、ａｒｂ＿ｒｅｑ＿ｃｔｌモジュール２８からｐｃｉｅ＿ｒｅｑ＿ｃｔｌモジュール４０に対して出力され、信号ａｒｂ＿ｒｅｑ３４と同じ値が示される。信号ｐｃｉｅ＿ｒｅｑ＿ｗａｉｔ３９は、ｐｃｉｅ＿ｒｅｑ＿ｃｔｌモジュール４０からａｒｂ＿ｒｅｑ＿ｓｅｌモジュール２７に対して出力され、ＰＣＩｅ  Ｉ／Ｆ２３２に対する要求保持状態を表す。
【００８０】
ｐｃｉｅ＿ｒｅｑ＿ｃｔｌモジュール４０は、信号ａｒｂ＿ｒｅｑ＿ｐ３８の値に基づき、ＰＣＩｅ  Ｉ／Ｆ２３２に対するパケット発行要求を制御する。
【００８１】
図９〜図１６を用いて、本第１の実施形態によるアービタ２３１における調停禁止期間の一例の制御について説明する。先ず、図９〜図１２を用いて、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０の動作の例について説明する。
【００８２】
図９は、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０の動作の概要を示す一例のフローチャートである。ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、アービタ２３１による調停処理が開始されると（ステップＳ１０）、調停禁止期間の開始トリガとなる要求を待機する（ステップＳ１１）。開始トリガとなる要求を受け取ったら、調停禁止期間を開始させ、各ＤＭＡＣ２３０ａ〜２３０ｄからの要求に対する調停を禁止する（ステップＳ１２）。そして、次のステップＳ１３で、調停禁止期間のカウントを開始する。カウント値が所定値に達したか否かを判定し（ステップＳ１４）、所定値に達したら調停禁止期間を終了し、各ＤＭＡＣ２３０ａ〜２３０ｄからの要求に対する調停を有効とする（ステップＳ１５）。そして、処理がステップＳ１１に戻され、次の調停禁止期間の開始トリガが待機される。
【００８３】
図１０は、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０の動作をより詳細に示す一例のフローチャートである。なお、以下の各フローチャートにおいて、演算子は、Ｃ言語の記法に従うものとする。例えば、演算子「＝＝」は等価を示し、演算子「！＝」は、非等価を示す。調停処理が開始されると、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、ステップＳ１００で、調停禁止機能が有効か否かを判定する。具体的には、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、ｍａｓｋ＿ｅｎａｂｌｅレジスタ１５を参照し、格納される値が「１」であれば有効、「０」であれば無効であると判定する。
【００８４】
若し、ｍａｓｋ＿ｅｎａｂｌｅレジスタ１５の値が「０」であり調停禁止機能が無効であると判定したら、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、処理をステップＳ１０１に移行させて、初期化処理を行う。初期化処理では、信号ａｒｂ＿ｍａｓｋ２５の値を「０」とすると共に、ｍａｓｋ＿ｅｘｅｃレジスタ２２、ｃｙｃｌｅ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２３およびｔｏｔａｌ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２４にそれぞれ値「０」を格納する。ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、初期化処理の終了後、処理をステップＳ１００に戻す。
【００８５】
一方、ステップＳ１００で、ｍａｓｋ＿ｅｎａｂｌｅレジスタ１５の値が「１」であり調停禁止機能が有効であると判定したら、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、処理をステップＳ１０２に移行させる。ステップＳ１０２で、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、調停禁止期間が無いか否かを判定する。具体的には、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、ｃｙｃｌｅ＿ｍａｓｋ＿ｔｉｍｅレジスタ１６の値が「０」、または、ｔｏｔａｌ＿ｍａｓｋ＿ｔｉｍｅレジスタ１７の値が「０」であれば、調停禁止期間が無いと判定し、処理をステップＳ１０１に移行させる。一方、ｃｙｃｌｅ＿ｍａｓｋ＿ｔｉｍｅレジスタ１６の値が「０」以外、且つｔｏｔａｌ＿ｍａｓｋ＿ｔｉｍｅレジスタ１７の値が「０」以外であれば、調停禁止期間が有ると判定し、処理をステップＳ１０３に移行させる。
【００８６】
ステップＳ１０３で、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、現在が調停禁止機能の開始前であるか否かを判定する。換言すれば、ステップＳ１０３では、現時点で調停禁止機能が開始しているか否かの判別が行われる。具体的には、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、ｍａｓｋ＿ｅｘｅｃレジスタ２２に格納される値が「０」であれば、現在時点で調停禁止機能が開始していない、すなわち調停禁止機能の開始前であると判定し、処理をステップＳ１０５に移行させ、調停禁止機能の開始前処理を行う。一方、ｍａｓｋ＿ｅｘｅｃレジスタ２２に格納される値が「０」以外であれば、現在時点で調停禁止機能が開始していると判定し、処理をステップＳ１０４に移行させ、調停禁止機能の開始後処理を行う。ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、ステップＳ１０４またはステップＳ１０５の処理が終了すると、処理をステップＳ１００に戻す。
【００８７】
図１１は、図１０のステップＳ１０５における調停禁止機能の開始前処理を示す一例のフローチャートである。調停禁止機能の開始前処理が開始されると、ステップＳ１１０で、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、ｍａｓｋ＿ｔｒｇレジスタ１４の値が「１」になることを調停禁止機能開始トリガとするか否かを判定する。具体的には、ｔｒｇ＿ｓｅｌレジスタ１２の値が「０」であれば、ｍａｓｋ＿ｔｒｇレジスタ１４の値が「１」になることを調停禁止機能開始トリガとすると判定し、処理をステップＳ１１３に移行させる。
【００８８】
ステップＳ１１３で、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、調停禁止機能開始処理を行う。具体的には、ｍａｓｋ＿ｔｒｇレジスタ１４の値をｍａｓｋ＿ｅｘｅｃレジスタ２２に書き込むと共に、ｔｏｔａｌ＿ｍａｓｋ＿ｔｉｍｅレジスタ１７の値から「１」を減じた値をｔｏｔａｌ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２４に書き込む。そして、図１１のフローチャートによる一連の処理を終了し、処理を図１０のステップＳ１００に戻す。
【００８９】
一方、ステップＳ１１０で、ｔｒｇ＿ｓｅｌレジスタ１２の値が「０」ではなく、ｍａｓｋ＿ｔｒｇレジスタ１４の値が「１」になることを調停禁止機能開始トリガとしないと判定したら、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、処理をステップＳ１１１に移行させる。そして、ステップＳ１１１で、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、ＤＭＡＣ起動トリガ設定が有効か否かを判定する。具体的には、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、信号ｄｍａ＿ｅｘｅｃ２１の値とｔｒｇｍ＿ｓｅｌレジスタ１３の値とのビット積が「０」でなければ、ＤＭＡＣ起動トリガ設定が有効であると判定し、処理をステップＳ１１４に移行させる。
【００９０】
ステップＳ１１４で、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、調停禁止機能開始処理を行う。具体的には、ｍａｓｋ＿ｅｘｅｃレジスタ２２の値を「１」とすると共に、ｔｏｔａｌ＿ｍａｓｋ＿ｔｉｍｅレジスタ１７の値から「１」を減じた値をｔｏｔａｌ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２４に書き込む。そして、図１１のフローチャートによる一連の処理を終了し、処理を図１０のステップＳ１００に戻す。
【００９１】
一方、ステップＳ１１１で、信号ｄｍａ＿ｅｘｅｃ２１の値とｔｒｇｍ＿ｓｅｌレジスタ１３の値とのビット積が「０」であれば、ＤＭＡＣ起動トリガ設定が無効であると判定し、処理をステップＳ１１２に移行させて、初期化処理を行う。初期化処理では、信号ａｒｂ＿ｍａｓｋ２５の値を「０」とすると共に、ｍａｓｋ＿ｅｘｅｃレジスタ２２、ｃｙｃｌｅ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２３およびｔｏｔａｌ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２４にそれぞれ値「０」を格納する。この初期化により、調停禁止サイクル無効期間が開始される。初期化が終了すると、図１１のフローチャートによる一連の処理を終了し、処理を図１０のステップＳ１００に戻す。
【００９２】
図１２は、図１０のステップＳ１０４における調停禁止機能の開始後処理を示す一例のフローチャートである。調停禁止機能の開始後処理が開始されると、ステップＳ１２０で、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、各ＤＭＡＣ２３０ａ〜２３０ｄから調停対象となる要求を受け付けたか否かを判定する。具体的には、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、信号ａｒｂ＿ｒｅｑ３４の値が「０」であるか否かを判定し、値が「０」以外の場合に、受け付けた要求があると判定し、処理をステップＳ１２５に移行させる。
【００９３】
ステップＳ１２５で、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、調停禁止期間を開始する。具体的には、信号ａｒｂ＿ｍａｓｋ２５の値を「１」とすると共に、ｃｙｃｌｅ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２３の値を、ｃｙｃｌｅ＿ｍａｓｋ＿ｔｉｍｅレジスタ１６の値から「１」を減じた値とする。調停禁止期間が開始されると、処理がステップＳ１２４に移行され、調停禁止サイクル有効期間がカウントされる。具体的には、ｔｏｔａｌ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２４の値が「１」減じられて、新たなｔｏｔａｌ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２４の値とされる。そして、図１２のフローチャートによる一連の処理を終了し、処理を図１０のステップＳ１００に戻す。
【００９４】
一方、ステップＳ１２０で、信号ａｒｂ＿ｒｅｑ３４の値が「０」であり、受け付けた要求が無いと判定したら、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、処理をステップＳ１２１に移行させる。ステップＳ１２１で、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、調停禁止サイクル有効期間が終了したか否かを判定する。具体的には、ｔｏｔａｌ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２４の値が「０」であれば、調停禁止サイクル有効期間が終了したと判定し、処理をステップＳ１２６に移行させる。
【００９５】
ステップＳ１２６で、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、初期化処理を行う。具体的には、信号ａｒｂ＿ｍａｓｋ２５、ｍａｓｋ＿ｅｘｅｃレジスタ２２およびｃｙｃｌｅ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２３それぞれの値を「０」とする。これにより、調停有効期間となり、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、ａｒｂ＿ｍａｉｎ＿ｃｔｌモジュール２６による各ＤＭＡＣ２３０ａ〜２３０ｄからのデータ転送要求の調停が許可される。そして、図１２のフローチャートによる一連の処理を終了し、処理を図１０のステップＳ１００に戻す。
【００９６】
一方、ステップＳ１２１で、ｔｏｔａｌ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２４の値が「０」ではなく、調停禁止サイクル有効期間が終了していないと判定したら、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、処理をステップＳ１２２に移行させる。ステップＳ１２２では、調停禁止期間が終了したか否かが判定される。具体的には、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、ｃｙｃｌｅ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２３の値が「０」であれば調停禁止期間が終了したと判定し、処理をステップＳ１２７に移行させる。ステップＳ１２７で、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、信号ａｒｂ＿ｍａｓｋ２５の値を「０」として、調停禁止期間を終了させる。そして、処理を上述したステップＳ１２４に移行させる。
【００９７】
ステップＳ１２２で、ｃｙｃｌｅ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２３の値が「０」ではなく、調停禁止期間が終了していないと判定したら、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、処理をステップＳ１２３に移行させ、調停禁止期間のカウントを行う。具体的には、ｃｙｃｌｅ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２３の値から「１」を減じた値を新たなｃｙｃｌｅ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２３の値とする。そして、処理を上述したステップＳ１２４に移行させる。
【００９８】
次に、ａｒｂ＿ｍａｉｎ＿ｃｔｌモジュール２６の動作について、図１３〜図１５を用いて説明する。ａｒｂ＿ｍａｉｎ＿ｃｔｌモジュール２６は、既に説明したように、各ＤＭＡＣ２３０ａ〜２３０ｄからのデータ転送要求の調停を行う。このａｒｂ＿ｍａｉｎ＿ｃｔｌモジュール２６の調停動作の有効／無効（禁止）を、上述したａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０からの信号ａｒｂ＿ｍａｓｋ２５により制御することで、調停禁止期間および調停有効期間が実現される。
【００９９】
図１３は、ａｒｂ＿ｍａｉｎ＿ｃｔｌモジュール２６に含まれるａｒｂ＿ｒｅｑ＿ｓｅｌモジュール２７の動作を示す一例のフローチャートである。ａｒｂ＿ｒｅｑ＿ｓｅｌモジュール２７は、ＤＭＡＣ２３０ａ〜２３０ｄから、アービタ２３１の調停対象を選択する（ステップＳ１３０）。
【０１００】
アービタ２３１が４のＤＭＡＣ２３０ａ〜２３０ｄからの要求を調停するこの例では、４ビットの信号ｄｍａ＿ｒｄｙ[３：０]の各ビットを用いて各ＤＭＡＣ２３０ａ〜２３０ｄを示す。信号ｄｍａ＿ｒｄｙ[３：０]の４ビットそれぞれについて、ビットの値が「１」で、対応するＤＭＡＣからの要求が調停対象とされる。なお、ここでは、０ビット目の信号ｄｍａ＿ｒｄｙ[０]が最も優先順位が高いＤＭＡＣを示し、３ビット目の信号ｄｍａ＿ｒｄｙ[３]が最も優先順位が低いＤＭＡＣを示すものとする。
【０１０１】
ａｒｂ＿ｒｅｑ＿ｓｅｌモジュール２７は、ｍａｓｋ＿ｏｆｆ＿ｓｅｌレジスタ１８に格納される、各ビットがＤＭＡＣ２３０ａ〜２３０ｄにそれぞれ対応する４ビットの信号ｍａｓｋ＿ｏｆｆ＿ｓｅｌ[３：０]と、信号ｐｃｉｅ＿ｒｅｑ＿ｗａｉｔ３９と、信号ａｒｂ＿ｍａｓｋ２５と、信号ａｒｂ＿ｒｅｑ＿ｓ３５とに基づき、アービタ２３１の調停対象を選択する。
【０１０２】
具体的には、信号ｍａｓｋ＿ｏｆｆ＿ｓｅｌ[３：０]と信号ａｒｂ＿ｍａｓｋ２５の否定値との論理和と、信号ｐｃｉｅ＿ｒｅｑ＿ｗａｉｔ３９の否定値と、信号ａｒｂ＿ｒｅｑ＿ｓ３５の否定値との論理積を取ったものを、信号ｄｍａ＿ｒｄｙ[３：０]の各ビットについて求め、当該信号ｄｍａ＿ｒｄｙ[３：０]の各ビットの値とする。
【０１０３】
図１４は、ａｒｂ＿ｍａｉｎ＿ｃｔｌモジュール２６に含まれるａｒｂ＿ｒｅｑ＿ｃｔｌモジュール２８の動作を示す一例のフローチャートである。先ず、ステップＳ１４０で、調停対象となるＤＭＡＣが存在するか否かが判定される。具体的には、ａｒｂ＿ｒｅｑ＿ｃｔｌモジュール２８は、信号ｄｍａ＿ｒｄｙ[３：０]の値が「０」でなければ、調停対象のＤＭＡＣが１以上存在すると判定する。若し、信号ｄｍａ＿ｒｄｙ[３：０]の値が「０」であり、調停対象となるＤＭＡＣが存在しないと判定したら、図１４のフローチャートによる一連の処理が終了される。
【０１０４】
一方、信号ｄｍａ＿ｒｄｙ[３：０]の値が「０」でなく、調停対象のＤＭＡＣが１以上存在すると判定した場合は、ａｒｂ＿ｒｅｑ＿ｃｔｌモジュール２８は、処理をステップＳ１４１に移行する。ステップＳ１４１で、ａｒｂ＿ｒｅｑ＿ｃｔｌモジュール２８は、調停対象となるＤＭＡＣに対して調停処理を行い、アービタ２３１が受け付けを許可する要求を決定する。具体的には、信号ａｒｂ＿ｒｅｑ３４、信号ａｒｂ＿ｒｅｑ＿ｐ３８および信号ａｒｂ＿ｒｅｑ＿ｓ３５の値をそれぞれ「１」とする。この調停動作を、予め決められた優先順位に従い、各ＤＭＡＣ２３０ａ〜２３０ｄに対して順次行う。
【０１０５】
図１５は、ａｒｂ＿ｍａｉｎ＿ｃｔｌモジュール２６に含まれるｐｃｉｅ＿ｒｅｑ＿ｃｔｌモジュール４０の動作を示す一例のフローチャートである。先ず、ステップＳ１５０で、ｐｃｉｅ＿ｒｅｑ＿ｃｔｌモジュール４０は、ＰＣＩｅ  Ｉ／Ｆ２３２が要求受け付け可能な状態であるか否かを判定する。具体的には、信号ｐｃｉｅ＿ｂｕｓｙ３３の値が「１」でなければ、要求受け付け可能な状態であると判定し、処理をステップＳ１５２に移行させる。
【０１０６】
ステップＳ１５２で、ｐｃｉｅ＿ｒｅｑ＿ｃｔｌモジュール４０は、バス２２３に対してパケット発行要求を送信する。具体的には、信号ａｒｂ＿ｒｅｑ＿ｐ３８と信号ｐｃｉｅ＿ｒｅｑ＿ｗａｉｔ３９とのビット和を信号ｐｃｉｅ＿ｒｅｑ３２とし、バス２２３に対して送信する。それと共に、信号ｐｃｉｅ＿ｒｅｑ＿ｗａｉｔ３９の値を「０」とする。そして、図１５のフローチャートの一連の処理が終了される。
【０１０７】
一方、ステップＳ１５０で、信号ｐｃｉｅ＿ｂｕｓｙ３３の値が「１」であり、ＰＣＩｅ  Ｉ／Ｆ２３２が要求受け付け可能な状態では無いと判定したら、ｐｃｉｅ＿ｒｅｑ＿ｃｔｌモジュール４０は、処理をステップＳ１５１に移行させる。ステップＳ１５１で、ｐｃｉｅ＿ｒｅｑ＿ｃｔｌモジュール４０は、調停処理の結果、ａｒｂ＿ｒｅｑ＿ｃｔｌモジュール２８において受け付けを許可する要求が決定されたか否かを判定する。具体的には、信号ｐｃｉｅ＿ｂｕｓｙ３３の値が「１」、且つ、信号ａｒｂ＿ｒｅｑ＿ｐ３８の値が「１」であれば、受け付けを許可する要求が決定されたと判定し、処理をステップＳ１５３に移行させる。
【０１０８】
ステップＳ１５３で、ｐｃｉｅ＿ｒｅｑ＿ｃｔｌモジュール４０は、ａｒｂ＿ｒｅｑ＿ｃｔｌモジュール２８において決定された受け付けを許可する要求を一時的に保持すると共に、信号ｐｃｉｅ＿ｒｅｑ＿ｗａｉｔ３９の値を「１」とする。そして、図１５のフローチャートによる一連の処理を終了する。
【０１０９】
図１６は、上述の図９〜図１５のフローチャートに従って動作するアービタ２３１における内部信号の一例のタイムチャートを示す。なお、ここでは、各レジスタ１２〜１８の値が次のように設定されているものとする。すなわち、ｍａｓｋ＿ｅｎａｂｌｅレジスタ１５が値「１」とされ、調停禁止機能が有効に設定される。ｃｙｃｌｅ＿ｍａｓｋ＿ｔｉｍｅレジスタ１６を値「４」、ｔｏｔａｌ＿ｍａｓｋ＿ｔｉｍｅレジスタ１７を値「３０」として、調停禁止期間および調停禁止サイクル有効期間をそれぞれ設定する。ｔｒｇ＿ｓｅｌレジスタ１２を値「１」として、調停禁止サイクル開始トリガをＤＭＡＣ起動トリガに設定する。
【０１１０】
なお、図１６（ａ）、図１６（ｅ）、図１６（ｈ）、図１６（ｊ）および図１６（ｋ）は、それぞれｔｒｇｍ＿ｓｅｌレジスタ１３、ｍａｓｋ＿ｏｆｆ＿ｓｅｌレジスタ１８、ｍａｓｋ＿ｅｘｅｃレジスタ２２、ｃｙｃｌｅ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２３およびｔｏｔａｌ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２４の値を示し、これらのうちｔｒｇｍ＿ｓｅｌレジスタ１３およびｍａｓｋ＿ｏｆｆ＿ｓｅｌレジスタ１８は、それぞれ４ビットの値である。なお、図中、「４’ｂ」の記述は、続く数値が４ビットを２進数表記で記述していることを示し、「４’ｄ」は、続く数値が４ビットを１０進数表記で記述していることを示す。
【０１１１】
また、図１６（ｂ）、図１６（ｃ）、図１６（ｄ）、図１６（ｆ）、図１６（ｇ）および図１６（ｉ）は、それぞれ信号ｄｍａ＿ｅｘｅｃ２１、信号ｄｍａ＿ｒｅｑ３０、信号ｄｍａ＿ａｃｋ３１、信号ｄｍａ＿ｒｄｙ３６、信号ａｒｂ＿ｒｅｑ３４および信号ａｒｂ＿ｍａｓｋ２５の値を示し、これらのうち信号ｄｍａ＿ｅｘｅｃ２１、信号ｄｍａ＿ｒｅｑ３０、信号ｄｍａ＿ａｃｋ３１および信号ｄｍａ＿ｒｄｙ３６は、それぞれ４ビットの値である。
【０１１２】
動作が開始されると、ｔｒｇｍ＿ｓｅｌレジスタ１３の０ビット目の値が「１」とされ、ＤＭＡＣ２３０ａからの要求が起動トリガに設定される。また、ｍａｓｋ＿ｏｆｆ＿ｓｅｌレジスタ１８の０ビット目の値が「１」とされ、ＤＭＡＣ２３０ａからの要求が調停禁止対象外に設定される（図１６（ａ）、図１６（ｅ）参照）。その後、時間Ｔ1でＤＭＡＣ２３０ａからの要求が発行されるまでの間、図１０のステップＳ１００、ステップＳ１０２およびステップＳ１０３を経てステップＳ１０５に処理が移行され、調停禁止機能の開始前処理が実行される。さらに、調停禁止機能の開始前処理において図１１のステップＳ１１０、ステップＳ１１１およびステップＳ１１２を経て、処理が図１０のステップＳ１００に戻される。
【０１１３】
時間Ｔ1において、優先順位が最も高くされた高優先ＲＤＭＡＣであるＤＭＡＣ２３０ａが起動され、信号ｄｍａ＿ｅｘｅｃ２１の０ビット目の値が「１」とされる（図１６（ｂ）参照）。これにより、図１１の調停禁止機能の開始前処理において、処理がステップＳ１１１からステップＳ１１４に移行され、ｔｏｔａｌ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２４に対してｔｏｔａｌ＿ｍａｓｋ＿ｔｉｍｅレジスタ１７の値から「１」を減じた値が書き込まれると共に、ｍａｓｋ＿ｅｘｅｃレジスタ２２の値が「１」とされ、調停禁止サイクル有効期間が開始される（図１６（ｈ）参照）。これにより、図１１のフローチャートを抜けて処理が図１０のステップＳ１００に戻された後に、処理がステップＳ１０３からステップＳ１０４に移行され、調停機能の開始後処理が開始される。
【０１１４】
調停機能の開始後処理において、時間Ｔ1の時点では信号ａｒｂ＿ｒｅｑ３４の値が「０」であるので、処理が図１２のステップＳ１２０からステップＳ１２１に移行され、さらにｔｏｔａｌ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２４の値が「０」ではないので、処理がステップＳ１２６に移行されて初期化処理が行われる。そして、ステップＳ１２４で調停禁止サイクル有効期間がカウントされる（図１６（ｋ）参照）。処理は図１０のステップＳ１００に戻され、ステップＳ１０２およびステップＳ１０３を経て再び図１２の調停禁止機能の開始後処理に移行される。
【０１１５】
時間Ｔ2において、ＤＭＡＣ２３０ａで要求が発行されＤＭＡＣ２３０ａから０ビット目の値が「１」とされた信号ｄｍａ＿ｒｅｑ３０が出力される（図１６（ｃ）参照）。この信号ｄｍａ＿ｒｅｑ３０に応じてａｒｂ＿ｒｅｑ＿ｓｅｌモジュール２７が要求を許可し、信号ｄｍａ＿ｒｄｙ３６の０ビット目の値を「１」とする（図１６（ｆ）参照）。ａｒｂ＿ｒｅｑ＿ｃｔｌモジュール２８は、信号ｄｍａ＿ｒｄｙ３６の値に応じて、信号ａｒｂ＿ｒｅｑ３４の値を「１」とする（図１４のステップＳ１４０、ステップＳ１４１）と共に、許可状態を示す信号ｄｍａ＿ａｃｋ３７の値を「１」とする（図１６（ｇ）、図１６（ｄ）参照）。また、信号ｄｍａ＿ｒｄｙ３６は、値が「０」に戻される。
【０１１６】
ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、信号ａｒｂ＿ｒｅｑ３４の値が「１」なので、図１２において処理をステップＳ１２０からステップＳ１２５に移行させ、信号ａｒｂ＿ｍａｓｋ２５の値を「１（Ｈｉｇｈ）」として（図１６（ｉ）参照）、調停禁止期間を開始させると共に、信号ａｒｂ＿ｒｅｑ３４の値を「０」に戻す。
【０１１７】
さらに、ステップＳ１２５では、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、ｃｙｃｌｅ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２３に対してｃｙｃｌｅ＿ｍａｓｋ＿ｔｉｍｅレジスタ１６の値から１を減じた値を格納する。そして、処理がステップＳ１２４に移行され、処理がステップＳ１２４に移行されて調停禁止サイクル有効期間のカウントがなされる。
【０１１８】
その後、図１０のステップＳ１００に処理が戻され、ステップＳ１０２およびステップＳ１０３を経て図１２の調停禁止機能の開始後処理に移行され、ステップＳ１２０、ステップＳ１２１およびステップＳ１２２を経て処理がステップＳ１２３に移行されて調停禁止期間のカウントが行われ（図１６（ｉ）参照）、さらにステップＳ１２４で調停禁止サイクル有効期間のカウントがなされる（図１６（ｋ）参照）。
【０１１９】
時間Ｔ3において、ＤＭＡＣ２３０ｂで要求が発行されＤＭＡＣ２３０ｂから１ビット目の値が「１」とされた信号ｄｍａ＿ｒｅｑ３０が出力される（図１６（ｃ）参照）。しかしながら、時間Ｔ3は調停禁止期間中であるので（図１６（ｉ）参照）、この要求は許可されない（図１３のステップＳ１３０、図１４のステップＳ１４０）。したがって、信号ｄｍａ＿ｒｄｙ３６は、値が「０」のままである。このＤＭＡＣ２３０ｂで発行された要求は、ａｒｂ＿ｒｅｑ＿ｓｅｌモジュール２７において保持される。
【０１２０】
時間Ｔ4において、ｃｙｃｌｅ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２３のカウント値が「０」となり調停禁止期間が終了し（図１２のステップＳ１２２）、ステップＳ１２７で信号ａｒｂ＿ｍａｓｋ２５の値が「０」とされる。これにより、調停有効期間が開始される（図１６（ｊ）、図１６（ｉ）参照）。調停有効期間となることで、ａｒｂ＿ｒｅｑ＿ｓｅｌモジュール２７において信号ｄｍａ＿ｒｄｙ３６の１ビット目の値が「１」とされ（図１３のステップＳ１３０）、ＤＭＡＣ２３０ｂの要求が許可される。これに応じて、図１４のステップＳ１４０、ステップＳ１４１によりａｒｂ＿ｒｅｑ＿ｃｔｌモジュール２８において信号ａｒｂ＿ｒｅｑ３４の値が「１」とされる。
【０１２１】
ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０は、信号ａｒｂ＿ｒｅｑ３４の値が「１」とされたことに応じて、信号ａｒｂ＿ｍａｓｋ２５の値を「１」として、調停禁止期間を開始させる。調停禁止期間の開始に伴い、当該調停禁止期間のカウントが開始され、ｃｙｃｌｅ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２３の値が、図１２のフローチャートのステップＳ１２３に従い１ずつ減ぜられる（図１６（ｉ）、図１６（ｊ）参照）。
【０１２２】
次に、時間Ｔ5において、ＤＭＡＣ２３０ａおよびＤＭＡＣ２３０ｂそれぞれからの要求が発行され、信号ｄｍａ＿ｒｅｑ３０の０および１ビット目の値が「１」とされる（図１６（ｃ）参照）。時間Ｔ5は、調停禁止期間中なので、調停禁止対象外となっているＤＭＡＣ２３０ａの要求が許可される（図１６（ｅ）、図１６（ｆ）参照）。ＤＭＡＣ２３０ｂの要求は、許可されない。ＤＭＡＣ２３０ａの要求が許可されると、ａｒｂ＿ｒｅｑ＿ｓｅｌモジュール２７において信号ｄｍａ＿ｒｄｙ３６の値が「１」とされ（図１３のステップＳ１３０）、これに応じてａｒｂ＿ｒｅｑ＿ｃｔｌモジュール２８において信号ａｒｂ＿ｒｅｑ３４の値が「１」とされる（図１４のステップＳ１４０およびステップＳ１４１）。
【０１２３】
時間Ｔ6でｔｏｔａｌ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ２４のカウント値が０になると（図１６（ｋ）参照）、調停禁止サイクル有効期間が終了し、図１２のステップＳ１２１からステップＳ１２６に処理が移行されて各値が初期化され、調停禁止サイクル無効期間が開始される（図１６（ｈ）参照）。時間Ｔ7でＤＭＡＣ２３０ｂの要求が発行されると、ａｒｂ＿ｍａｉｎ＿ｃｔｌモジュール２６は、信号ｄｍａ＿ｒｄｙ３６の１ビット目の値を「１」として、当該要求を許可する（図１６（ｆ））。この時点では、調停禁止サイクル無効期間とされているため、調停禁止期間は、開始されない（図１６（ｉ）参照）。
【０１２４】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。上述した第１の実施形態では、第２の機能において、最も優先順位の高いＤＭＡＣからの要求に対して調停禁止機能を無視することで、高優先順位のＤＭＡＣの要求による転送性能を向上させている。本第２の実施形態では、高優先順位のＤＭＡＣからの要求が発行されると、調停禁止期間または調停禁止サイクル有効期間をリセットして当該要求を受け付けるようにしている。当該要求を受け付けた後は、調停禁止期間を再開させる。
【０１２５】
なお、本第２の実施形態では、上述した第１の実施形態で説明した第１および第３の機能については、そのまま適用できるので、ここでの説明を省略する。また、図８を用いて説明したアービタ２３１の構成も、共通して適用することができる。
【０１２６】
図１７は、本第２の実施形態による第２の機能を説明するための一例のタイムチャートである。なお、図１７において、上述の図５と共通する部分には同一の符号および記述を付して、詳細な説明を省略する。図１７の例において、リードデータパケット１１２の受信タイミングに応じて、調停禁止期間２００4’中に、最も優先順位の高い高優先ＲＤＭＡＣからのリード要求Ａ１０２”が発行される。
【０１２７】
このとき、本第２の実施形態では、アービタ２３１は、調停禁止期間２００4’をリセット、すなわち、調停禁止期間２００4’を一旦終了させて当該リード要求Ａ１０２”を受け付け、リード要求パケット１１３’を送信バスに対して送信させる。リード要求Ａ１０２”が受け付けられてからリード要求パケット１１３’が送信されるまでの遅延（リード発行遅延＃４）は、上述した第１の実施形態における第２の機能によるリード発行遅延＃３と略等しくすることができる。リード要求Ａ１０２”が受け付けられると、調停禁止期間を再開させる（調停禁止期間２００5’）。
【０１２８】
このように、本第２の実施形態による第２の機能においても、上述の第１の実施形態による第２の機能と同様に、高優先順位のリード発行遅延が短縮され、転送性能が向上される。
【０１２９】
（他の実施形態）
なお、上述では、各実施形態がハードウェアとしてのコントローラＬＳＩ２２２により実施されるように説明したが、これはこの例に限定されず、各実施形態は、ソフトウェアにより実現してもよい。例えば、ＣＰＵ２２４に対して所定のインターフェイスを介して、または、直接的にＤＭＡ２３０ａ〜ＤＭＡＣ２３０ｄを接続する。ＣＰＵ２２４は、図示されないＲＯＭなどから読み出した転送制御プログラムを、メモリ２２６などをワークメモリとして実行し、図８に示したアービタ２３１の機能を実現する。プログラムは、ＲＯＭから読み出すのに限らず、ＨＤＤやＣＤ、ＤＶＤといった記憶媒体から供給してもよい。
【０１３０】
各実施形態で実行される転送制御プログラムは、上述したａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０およびａｒｂ＿ｍａｉｎ＿ｃｔｌモジュール２６を含むモジュール構成とされる。実際のハードウェアとしては、ＣＰＵ２２４が図示されないＲＯＭやＨＤＤやＣＤ、ＤＶＤといった記憶媒体から転送制御プログラムを読み出して実行することにより、これら各モジュールが主記憶装置（例えばメモリ２２６）上にロードされ、ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール２０およびａｒｂ＿ｍａｉｎ＿ｃｔｌモジュール２６が主記憶装置上に生成されるようになっている。上述した各レジスタおよび各信号は、例えば当該転送制御プログラム上の変数として扱うことができる。
【０１３１】
また、上述では、本発明の各実施形態が画像形成装置に適用されるように説明したが、これはこの例に限定されない。例えば、動画処理など、所定時間内に一定量の画像データを転送する必要のある画像処理を行う画像処理装置に対して、本発明の各実施形態を適用することができる。
【符号の説明】
【０１３２】
１２  ｔｒｇ＿ｓｅｌレジスタ
１３  ｔｒｇｍ＿ｓｅｌレジスタ
１４  ｍａｓｋ＿ｔｒｇレジスタ
１５  ｍａｓｋ＿ｅｎａｂｌｅレジスタ
１６  ｃｙｃｌｅ＿ｍａｓｋ＿ｔｉｍｅレジスタ
１７  ｔｏｔａｌ＿ｍａｓｋ＿ｔｉｍｅレジスタ
１８  ｍａｓｋ＿ｏｆｆ＿ｓｅｌレジスタ
２０  ａｒｂ＿ｍａｓｋ＿ｃｔｌモジュール
２１  信号ｄｍａ＿ｅｘｅｃ
２２  ｍａｓｋ＿ｅｘｅｃレジスタ
２３  ｃｙｃｌｅ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ
２４  ｔｏｔａｌ＿ｍａｓｋ＿ｃｏｕｎｔレジスタ
２５  信号ａｒｂ＿ｍａｓｋ
２６  ａｒｂ＿ｍａｉｎ＿ｃｔｌモジュール
２７  ａｒｂ＿ｒｅｑ＿ｓｅｌモジュール
２８  ａｒｂ＿ｒｅｑ＿ｃｔｌモジュール
３０  信号ｄｍａ＿ｒｅｑ
３１  信号ｄｍａ＿ａｃｋ
３２  信号ｐｃｉｅ＿ｒｅｑ
３３  信号ｐｃｉｅ＿ｂｕｓｙ
３４  信号ａｒｂ＿ｒｅｑ
３６  信号ｄｍａ＿ｒｄｙ
４０  ｐｃｉｅ＿ｒｅｑ＿ｃｔｌモジュール
２００  画像形成装置
２２２  コントローラＬＳＩ
２２３，２２５  バス
２２４  ＣＰＵ
２２６  メモリ
２３０ａ，２３０ｂ，２３０ｃ，２３０ｄ  ＤＭＡＣ
２３１  アービタ
２３２  ＰＣＩｅ  Ｉ／Ｆ
【先行技術文献】
【特許文献】
【０１３３】
【特許文献１】特開２００３−２５６３５９号公報
【図１】
0005565204.tif 000002
【図２】
0005565204.tif 000003
【図３】
0005565204.tif 000004
【図４】
0005565204.tif 000005
【図５】
0005565204.tif 000006
【図６】
0005565204.tif 000007
【図７】
0005565204.tif 000008
【図８】
0005565204.tif 000009
【図９】
0005565204.tif 000010
【図１０】
0005565204.tif 000011
【図１１】
0005565204.tif 000012
【図１２】
0005565204.tif 000013
【図１３】
0005565204.tif 000014
【図１４】
0005565204.tif 000015
【図１５】
0005565204.tif 000016
【図１６】
0005565204.tif 000017
【図１７】
0005565204.tif 000018
【図１８】
0005565204.tif 000019
【図１９】
0005565204.tif 000020