説明

データ転送装置、データ転送方法およびプログラム、ならびに、画像形成装置

【課題】優先順位の高い要求に対するデータ転送性能を保証できるようにする。
【解決手段】アービタによる複数のDMACが発行した要求の調停を禁止する調停禁止期間と、調停を禁止しない調停有効期間とを設け、調停禁止期間と調停有効期間とを繰り返す。アービタは、高優先度のDMACが発行した要求に対して、調停禁止期間を無視して当該要求を受け付ける。また、調停禁止期間と調停有効期間とが繰り返される調停禁止サイクル有効期間と、調停有効期間のみを含む調停禁止サイクル無効期間とを設け、調停禁止サイクル有効期間の終了後に調停禁止サイクル無効期間を開始させ、低優先度のDMACが発行した要求を受け付ける。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のDMAC(Direct Memory Access Controller)が1のバスを介して行うデータ転送を制御するデータ転送装置、データ転送方法およびプログラム、ならびに、画像形成装置に関する。
【背景技術】
【0002】
LSI(Large-Scale Integration)が内部に複数のDMACを持ち、当該複数のDMACが1のバスにアクセスする場合、LSI内部にDMACに対する調停機構(アービタ)を設け、LSIの転送性能を向上させるのが一般的である。また、アービタに対し、ビデオ転送のような、時間制約の厳しいデータ転送を担うDMACのリクエスト受付の優先順位を高くし、圧縮伸長処理や回転処理のような、時間制約が緩い、ビデオ転送処理と並行して行われるデータ転送を担うDMACのリクエスト受付の優先順位を低くすることで、性能を保証する機構を搭載するのが一般的である。
【0003】
図18を用いて、優先順位の異なる複数のDMACを用いたデータ転送処理について、概略的に説明する。図18において、コントローラLSI300とCPU(Central Processing Unit)302とが例えばPCI Express(Peripheral Component Interconnect Bus Express)規格に準じたバス301で接続され、CPU302とメモリ304がバス303で接続される。PCI Express規格は、要求と応答とが分離された、スプリットトランザクションに対応しており、応答を待たずに次の要求を発行することができる。
【0004】
コントローラLSI300は、優先順位の異なる複数のDMAC310a、310b、310cおよび310dを有する。また、コントローラLSI300は、これら複数のDMAC310a〜310dのデータ転送を調停するアービタ311と、バス301に対するインターフェイスであるPCIe I/F312と、送信データのバッファリングを行う送信データバッファ313とを有する。
【0005】
例えば、コントローラLSI300において、アービタ311は、各DMAC310a〜310dからのメモリ304に対するリード要求を、優先順位に基づき調停してCPU302に対してバス301を介して送信する。CPU302は、この要求に応じてバス303を介してメモリ304からデータを読み出し、読み出したデータをバス301を介してコントローラLSI300に対して送信する。
【0006】
ここで、複数のDMAC310a〜310dは、スプリットトランザクションに対応するために、応答を待たずに要求を発行(要求先投げ)することができる。正常時のリードデータ転送の際には、図18に例示されるように、各DMAC310a〜310dは、メモリ304からリードデータ330a〜330dをそれぞれ読み出すための各リード要求320a〜320dを、リードデータ330a〜330dの応答を待たずに発行することができる。そのため、バス301を介したデータ転送を効率的に行うことができる。
【0007】
また、特許文献1には、優先順位に基づくDMA(Direct Memory Access)調停機構を有し、DMA転送開始の要求受信時に他のDMACが動作中であった場合に、要求されたDMA転送の優先順位が高ければ、転送処理の内容と動作中の他のDMACの優先順位とに応じて解放するチャネルを選択するようにした記述が記載されている。
【発明の概要】
【発明が解決しようとする課題】
【0008】
ところで、従来のアービタ機構では、高優先順位のDMACの要求を長期間受けられず、データ転送時間の制約を満たせなくなり、転送データに異常が発生する場合があった。この転送データ異常は、例えば転送データが画像データである場合、画像異常となって現れる。
【0009】
図19を用いて、異常画像が発生する場合のデータ転送について、概略的に説明する。上述のスプリットトランザクションにおいて、回路の実装上、応答を待たずに発行できる要求の数(要求先投げ個数)には上限が存在する。したがって、各DMAC310a〜310dは、現在の要求先投げ個数が上限に達した状態では、現在応答待ちとなっている要求が完了するまでは、新規の要求をアービタ311に対して発行することができない。
【0010】
そのため、以下の条件(1)および条件(2)が重なった場合に、異常画像が発生する。
条件(1):DMAC310a〜310dのうち高優先順位のDMACが新規のリード要求を発行不可となっている状態。
条件(2):DMAC310a〜310dのうち低優先順位のDMACが発行したライト要求によるデータ転送サイズが大きいか、または、低優先順位のDMACが発行したライト要求が複数存在する。
【0011】
図19を参照し、高優先順位のDMAC(DMAC310aとする)は、リード要求340aを発行した時点で要求先投げ数が上限に達し、新規のリード要求を発行不可の状態になり、条件(1)が満たされたものとする。DMAC310aは、リード要求340aに対応する応答を受け取ることで、次のリード要求を発行することができる。
【0012】
この、高優先順位のDMAC310aが新規リード要求発行不可の状態において、低優先順位のDMAC(DMAC310bとする)によるライト要求341がアービタ311により許可されたものとする。ライト要求341は、メモリ304に書き込むためのライトデータを含むライトデータパケット送信となる。一般的には、ライト要求のデータ転送サイズがリード要求と比較して大きいので、ライト要求パケット内のライトデータサイズが大きい場合に、条件(2)を満たすことになる。
【0013】
このように条件(1)および条件(2)が満たされた後、高優先順位のDMAC310aによるリード要求340aに対する応答(リードデータ342a)がDMAC310aに受け取られると、当該DMAC310aは、次のリード要求340bを発行可能な状態となり、アービタ311により当該リード要求340bの発行が許可される。一方で、低優先順位のDMAC310bによるライト要求341がアービタ311により、当該リード要求340bに対して先行して受け付けられている。そのため、リード要求340bは、このライト要求341の完了を待って発行されることになる。
【0014】
この状態に一度でもなると、DMAC310bからのライト要求が続く限り、同じシーケンスを何度も繰り返すこととなる。その結果、高優先順位のDMAC310bによるリード要求に対するデータ転送性能が悪化し、データ転送時間に対する制約が未達となる場合がある。例えば、DMAC310aから先に発行されたリード要求340aによるリードデータ342aと、次に発行されるリード要求340bによるリードデータ342bとの連続性が要求されるような場合、リードデータ342aおよび342bの連続性が失われてしまうことになる。このような問題は、上述した特許文献1においても起こり得るものである。
【0015】
本発明は、上記に鑑みてなされたものであって、優先順位の高い要求に対するデータ転送性能を保証できるようにすることを目的とする。
【課題を解決するための手段】
【0016】
上述した課題を解決し、目的を達成するために、第1の発明は、要求と応答とを分離して処理可能なバスを介して行うデータ転送を制御するデータ転送装置であって、要求に応じたデータ転送処理を実行する複数のアクセス制御手段と、複数のアクセス制御手段が発行した要求の調停を行い、受け付ける要求を決定する調停手段とを備え、調停手段は、調停を指定された期間禁止する調停禁止期間を設定し、調停禁止期間中では、複数のアクセス制御手段のうち指定されたアクセス制御手段が発行した要求のみを受け付けることを特徴とする。
【0017】
また、第2の発明は、要求と応答とを分離して処理可能なバスを介して行うデータ転送を制御するデータ転送方法であって、アクセス制御手段が、要求に応じたデータ転送処理を実行するアクセス制御ステップと、調停手段が、複数のアクセス制御ステップが発行した要求の調停を行い、受け付ける要求を決定する調停ステップとを備え、調停ステップは、調停を指定された期間禁止する調停禁止期間を設定し、調停禁止期間中では、複数のアクセス制御ステップのうち指定されたアクセス制御ステップが発行した要求のみを受け付けることを特徴とする。
【0018】
また、第3の発明は、要求と応答とを分離して処理可能なバスを介して行うデータ転送を制御するデータ転送方法をコンピュータに実行させるためのプログラムであって、要求に応じたデータ転送処理を実行するアクセス制御ステップと、複数のアクセス制御ステップが発行した要求の調停を行い、受け付ける要求を決定する調停ステップとを備え、調停ステップは、調停を指定された期間禁止する調停禁止期間を設定し、調停禁止期間中では、複数のアクセス制御ステップのうち指定されたアクセス制御ステップが発行した要求のみを受け付けるデータ転送方法をコンピュータに実行させるためのプログラムである。
【発明の効果】
【0019】
本発明によれば、優先順位の高い要求に対するデータ転送性能を保証できるという効果を奏する。
【図面の簡単な説明】
【0020】
【図1】図1は、各実施形態に適用可能な画像形成装置の一例の構成を示すブロック図である。
【図2】図2は、画像形成装置における複写機能実行時のデータフローを概略的に示す略線図である。
【図3】図3は、各実施形態に適用可能なコントローラLSIの一例の構成を示すブロック図である。
【図4】図4は、本発明の各実施形態を適用しない場合のデータ転送処理の例について説明するためのタイムチャートである。
【図5】図5は、本発明の第1の実施形態による第1の機能を説明するための一例のタイムチャートである。
【図6】図6は、本発明の第1の実施形態による第2の機能を説明するための一例のタイムチャートである。
【図7】図7は、本発明の第1の実施形態による第3の機能を説明するための一例のタイムチャートである。
【図8】図8は、本発明の第1の実施形態によるアービタの一例の構成を示すブロック図である。
【図9】図9は、arb_mask_ctlモジュールの動作の概要を示す一例のフローチャートである。
【図10】図10は、arb_mask_ctlモジュールの動作をより詳細に示す一例のフローチャートである。
【図11】図11は、調停禁止機能の開始前処理を示す一例のフローチャートである。
【図12】図12は、調停禁止機能の開始後処理を示す一例のフローチャートである。
【図13】図13は、arb_req_selモジュールの動作を示す一例のフローチャートである。
【図14】図14は、に含まれるarb_req_ctlモジュールの動作を示す一例のフローチャートである。
【図15】図15は、pcie_req_ctlモジュール40の動作を示す一例のフローチャートである。
【図16】図16は、本発明の第1の実施形態によるアービタの動作時における内部信号の一例のタイムチャートを示す。
【図17】図17は、本発明の第2の実施形態による第2の機能を説明するための一例のタイムチャートである。
【図18】図18は、優先順位の異なる複数のDMACを用いたデータ転送処理について概略的に説明するための略線図である。
【図19】図19は、異常画像が発生する場合のデータ転送について概略的に説明するための略線図である。
【発明を実施するための形態】
【0021】
以下に添付図面を参照して、本発明に係るデータ転送装置の実施形態を詳細に説明する。図1は、各実施形態に適用可能な画像形成装置200の一例の構成を示す。画像形成装置200は、スキャナ210で原稿を読み取った画像データに対して所定の画像処理を施し、画像処理が施された画像データに基づきプロッタ211により用紙に対して画像形成を行う複写機能を有する。
【0022】
画像処理LSI(Large-Scale Integration)220は、画像データに対して所定の画像処理を施す。コントローラLSI222は、画像処理LSI220とPCI Express(Peripheral Component Interconnect Bus Express)規格に準拠したバス221を介して接続されると共に、同じくPCI Expressに準拠したバス223を介してCPU(Central Processing Unit)224と接続される。CPU224に対して、バス225を介してメモリ226が接続される。メモリ226は、例えば、画像処理LSI220で画像処理が施された画像データを一時的に格納するために用いられる。
【0023】
図2は、この画像形成装置200における複写機能実行時のデータフローを概略的に示す。なお、図2において、上述した図1と共通する部分には同一の符号を付し、詳細な説明を省略する。画像読み取り時において、経路Aを参照し、スキャナ210は、原稿を読み取って得た画像データを図示されないインターフェイスを介して画像処理LSI220に転送する。画像処理LSI220は、転送された画像データに対して所定の画像処理を施してコントローラLSI222に転送する。コントローラLSI222は、画像処理LSI220から転送された画像データを、所定単位毎に、メモリ226に対するライト要求と共にバス223を介してCPU224に転送する。CPU224は、コントローラLSI222から転送されたライト要求に応じて、画像データをメモリ226に転送する。
【0024】
画像形成時において、経路Bを参照し、コントローラLSI222は、メモリ226に転送された画像データの所定単位毎の読み出しを要求するリード要求を、バス223を介してCPU224に転送する。このとき、リード要求は、プロッタ211における画像形成動作に同期するように発行および転送する必要がある。CPU224は、このリード要求に応じて、メモリ226からバス225を介して所定単位毎に画像データを読み出す。読み出された所定単位毎の画像データは、バス223を介してCPU224からコントローラLSI222に転送される。
【0025】
経路Cを参照し、コントローラLSI222は、CPU224から転送された所定単位の画像データを、バス221を介して画像処理LSI220に転送する。画像処理LSI220は、転送された画像データに対して所定の画像処理を施し、例えばライン単位で図示されないインターフェイスを介してプロッタ211に転送する。プロッタ211は、例えば用紙を所定速度で搬送させながら、転送された画像データに従いライン単位で当該用紙に対して画像を形成していく。
【0026】
このように、画像形成装置200では、画像形成時におけるメモリ226からの画像データの読み出しを、プロッタ211の画像形成速度に対して同期的に行う必要がある。したがって、メモリ226から読み出された画像データの転送には、データ転送時間に対して制約が存在する。この制約が未達の場合、プロッタ211において正常な画像形成が行えなくなるおそれがある。
【0027】
図3は、各実施形態に適用可能なコントローラLSI222の一例の構成を示す。なお、図3において、上述した図1と共通する部分には同一の符号を付し、詳細な説明を省略する。コントローラLSI222は、複数のDMAC230a、230b、230cおよび230dと、アービタ231と、バス223に対するインターフェイスであるPCIe I/F232とを有する。また、PCIe I/F232は、内部に送信データバッファ233を有する。
【0028】
ここで、バス223は、上述したようにPCI Express規格に準拠している。PCI Express規格は、従来技術でも説明したように、要求と応答とを分離して処理するスプリットトランザクションに対応している。すなわち、バス223に対して、前回の要求に対する応答を待たずに次の要求を発行することができる。
【0029】
PCIe I/F232は、バス223に対するインターフェイスであり、PCI Express規格によるトランザクションを制御する。このとき、PCIe I/F232は、送信データバッファ233を用いて、PCIe I/F232とアービタ231との間で送受信されるデータと、PCIe I/F232とバス223との間で送受信されるデータとのタイミング差などを吸収する。
【0030】
各DMAC230a〜230dは、それぞれリード/ライト要求を発行してCPU224に対してバス223の使用許可をもらい、データ転送に必要な、データ転送元およびデータ転送先のアドレスを生成し、データ転送処理を実行する。ここで、各DMAC230a〜230dは、スプリットトランザクションに対応し、回路実装により決定される所定の個数まで、要求先投げ、すなわち、前回の要求に対する応答を待たずに次の要求を発行することができる。
【0031】
アービタ231は、各DMAC230a〜230dからの要求を調停する。また、アービタ231において、各DMAC230a〜230dからの要求に対して優先順位が予め設定される。アービタ231は、各DMAC230a〜230dから同時に複数の要求が出され、各DMAC230a〜230dによる要求が競合した場合に、この優先順位に従い、優先順位の高い要求をPCIe I/F232に対して発行する。アービタ231は、各DMAC230a〜230dからの要求が競合しない場合には、受け取った要求をそのままPCIe I/F232に対して発行する。
【0032】
次に、図4のタイムチャートを用いて、本発明の各実施形態を適用しない場合のデータ転送処理の例について説明する。要求A、B、CおよびDは、それぞれアービタ231が各DMAC230a、230b、230cおよび230dから受信した要求の有無を示す。信号がHigh状態で、各DMAC230a〜230dから要求があることを示し、Low状態で各DMAC230a〜230dから要求が無いことを示す。アービタ231は、各DMAC230a〜230dからの要求を受け付けると、受け付けた要求の信号をHigh状態からLow状態に遷移させる。
【0033】
ここで、DMAC230aを、メモリ226からのデータの読み出しを要求するリードDMAC(RDMAC)とし、他のDMAC230b〜230dを、メモリ226に対するデータの書き込みを要求するライトDMAC(WDMAC)であるものとする。また、アービタ231において、各DMAC230a〜230dが発行する要求のうち、リードDMACであるDMAC230aからのリード要求の優先順位は、他のDMAC230b〜230dからのライト要求に対して優先順位が高く設定されているものとする。さらに、ライト要求は、DMAC230bからの要求が最も優先順位が高く、DMAC230dからの要求が最も優先順位が低いものとする。
【0034】
以下、適宜、DMAC230aを高優先RDMAC、DMAC230b〜230dそれぞれを低優先WDMACと呼ぶ。また、高優先RDMACから発行されるリード要求を要求A、各低優先WDMACから発行されるライト要求を、それぞれ要求B、C、およびDと呼ぶ。
【0035】
送信バスは、バス223においてコントローラLSI222からCPU224に対してデータ転送がなされる経路であり、受信バスは、バス223においてCPU224からコントローラLSI222に対してデータ転送がなされる経路である。送信バスにおいて、「A」と記されたパケットは、要求Aによるリード要求パケットであり、「B」、「C」および「D」と記されたパケットは、それぞれ要求B、CおよびDによるライト要求パケットである。
【0036】
リード要求パケットは、リード要求のみを内包する。一方、ライト要求パケットは、ライト要求と、このライト要求によってメモリ226に書き込むためのライトデータとを内包する。したがって、ライト要求パケットは、一般的に、リード要求パケットと比べてパケットサイズが大きい。
【0037】
受信バスは、バス223においてCPU224からコントローラLSI222に対してデータ転送がなされる経路である。受信バスにおいて「A」と記されたパケットは、高優先RDMACからのリード要求による送信バスに送信されたリード要求パケットに応答するリードデータパケットである。例えば、リード要求A100により送信バスに送信されたリード要求パケット110に応答して、リードデータパケット112が受信バスに対して送信される。
【0038】
リード要求A100がアービタ231に対して発行されると、リード発行遅延#1だけ遅延されて、当該要求に対応するリード要求パケット110が送信バスに対して送信される。リード要求A100に対応するリード発行遅延#1は、アービタ231に他の要求が受け付けられておらず、且つ、送信バス上に対してリード要求A100によるリード要求パケット以外の要求パケット110が送信されていない状態での内部遅延である。このリード発行遅延#1は、コントローラLSI222の内部構成や、バス223の混み具合などにより決定される。
【0039】
一方、受信バスに対して、CPU224から、高優先RDMACが既に発行したリード要求(例えばリード要求A100)に応答したリードデータパケット112が送信され、PCIe I/F232に受信される。このリードデータパケット112の受信に対して最後に要求を発行したタイミングから、CPU224からの応答待ちとなっている当該要求に対する応答をアービタ231が受信した、すなわち、当該要求に対してCPU224が応答したタイミングまでの期間を、リード応答遅延と呼ぶ。
【0040】
このリード応答遅延の期間中は、高優先RDMACは、新規のリード要求を発行することができない。例えば、高優先RDMACは、リード要求A100からリード応答遅延分遅延してリードデータパケット112を受信した後に、次のリード要求A102を発行することができる。リード応答遅延は、メモリ226に対する他の要求との競合が無い場合、CPU224および当該CPU224がアクセスするメモリ226のデバイス特性により決まる。
【0041】
図4において、最初に高優先RDMACからリード要求A100が発行された後に、各低優先WDMACから順次ライト要求B、C、Dが繰り返し発行される場合について考える。リード要求A100の発行の後に、低優先WDMACからライト要求B101が発行され、当該ライト要求B101に対応するライト要求パケット111が送信バスに対して送信される。以降続けて、ライト要求C、Dが順次発行され、さらにライト要求B〜Dが順次繰り返し発行される。一方、高優先RDMACは、リード要求A100からリード応答遅延分遅延してリードデータパケット112を受信した後に、次のリード要求A102を発行することができる。
【0042】
ここで、ライト要求Dの発行タイミングに少しだけ遅れて、高優先RDMACからリード要求A102が発行されたものとする。この場合、当該リード要求A102の先に低優先WDMACから発行され、対応するライト要求パケットが送信バスに対して送信されていない、ライト要求C、Dによるライト要求パケットC、Dの送信バスに対する送信が完了してから、当該リード要求A102によるリード要求パケット113が送信バスに対して送信されることになる。
【0043】
そのため、リード要求A102に対するリード要求パケット113のリード発行遅延#2は、リード要求A102が受け付けられる前にアービタ231に受け付けられたライト要求によるライト要求パケットの送信が完了するまでの期間分だけ、上述したリード発行遅延#1よりも大きくなってしまう。このリード発行遅延#2は、低優先WDMACから発行されたライト要求がリード要求A102よりも先に受け付けられ、且つ、送信バス上にリード要求パケット以外の要求パケットが送信されている状態での内部遅延である。
【0044】
このように、高優先RDMACによるリード要求の発行ができない状態で、低優先WDMACからライト要求が発行されてしまうと、リード発行遅延が大きくなってしまう。これにより、高優先RDMACが発行するリード要求に対応するリードデータパケットの受信バスにおける転送レートが低下し、データ転送時間制約が未達となるおそれがある。
【0045】
(第1の実施形態)
次に、本発明の第1の実施形態について説明する。本第1の実施形態は、低優先順位の要求を受け付ける頻度を低減させるための第1の機能と、第1の機能を実施することにより発生する、高優先順位の要求を受け付ける待ち時間を低減させるための第2の機能とを、少なくとも有する。さらに、第1および第2の機能により抑制された低優先順位の要求による転送を確保するための第3の機能を有する。
【0046】
第1〜第3の機能について、概略的に説明する。第1の機能は、各DMACからの要求を一定時間の間禁止する調停禁止期間を設け、調停禁止期間と、調停を有効とする調停有効期間とからなる調停禁止サイクルを繰り返す。調停禁止期間は、例えばレジスタに格納する値により指定する。第2の機能は、第1の機能に加え、高優先順位のDMACからの要求を、調停禁止期間における調停禁止の対象外とする。例えば、調停禁止対象外の有効/無効を設定する値を格納するレジスタを、各DMACに対応して設ける。調停禁止対象外が有効に設定されたDMACは、調停禁止期間であっても調停対象として要求が受け付けられる。第3の機能は、第1および第2の機能に加えて、第1の機能による調停禁止サイクルを有効とする期間を指定し、有効期間を経過後は調停禁止サイクルを無効とする。この有効期間は、例えばレジスタに格納する値により指定する。
【0047】
(第1の機能)
第1の機能について、より詳細に説明する。第1の機能では、アービタ231による、各DMAC230a〜230dからの要求に対する調停を禁止する調停禁止機能を用いる。より具体的には、アービタ231による各DMAC230a〜230dからの要求に対する調停を一定期間禁止する調停禁止期間を含む調停禁止サイクル有効期間を設ける。調停禁止サイクル有効期間において、アービタ231は、一定時間の調停禁止期間の終了後に、各DMAC230a〜230dからの要求を受け付ける調停有効期間を開始させる。調停有効期間では、各DMAC230a〜230dからの要求のうち、最も優先順位の高い要求を1つだけ受け付ける。調停有効期間は、各DMAC230a〜230dからの要求を受け付けるまで持続される。要求を受け付けた後、再度、調停禁止期間が開始される。
【0048】
この第1の機能は、例えば次のように実装することができる。すなわち、調停禁止機能の有効/無効の設定、調停禁止期間および調停禁止サイクル有効期間のそれぞれを指定する値が格納されるレジスタを、アービタ231に設ける。また、調停禁止サイクル有効期間の開始を指示する開始ビットを含む信号をアービタ231に入力する信号端子と、当該信号端子に入力される信号から当該調停禁止サイクル有効期間の開始トリガとなる開始ビットを選択するための値が格納されるレジスタとをアービタ231に設ける。
【0049】
図5は、第1の機能を説明するための一例のタイムチャートである。なお、図5において、上述の図4と共通する部分には同一の符号および記述を付して、詳細な説明を省略する。図5において、各調停禁止期間2001、2002、…を、斜線を付して示している。各調停禁止期間2001、2002、…の間が調停有効期間となる。
【0050】
例えば、アービタ231は、調停禁止期間が終了し調停有効期間が開始した際に、調停禁止期間中に発行したDMACからの要求が既に存在する場合、その要求のうち最も優先順位の高い要求を1つだけ受け付ける。図5の例では、調停停止期間2001の終了後の調停有効期間において、調停停止期間2001において発行したライト要求B101’およびライト要求103が存在している。アービタ231は、これらの要求のうち、優先順位の高いライト要求B101’を受け付ける。ライト要求B101’が受け付けられると、次の調停禁止期間2002が開始される。なお、調停有効期間は、1つの要求のみを受け付けるため、1クロック以上の長さとされる。
【0051】
また、リードデータパケット112の受信タイミングに応じて、調停禁止期間2004においてリード要求A102’が発行される。調停禁止期間2004では、より低優先順位であるライト要求C120が発行されると共に、調停禁止期間2002で発行された、さらに低優先順位であるライト要求D121が存続している。アービタ231は、調停禁止期間2004が終了した直後の調停有効期間において、これらリード要求A102’、ライト要求C120およびライト要求D121のうち最も優先順位の高いリード要求A102’のみを受け付け、次の調停禁止期間2005を開始させる。
【0052】
この第1の機能によれば、アービタ231が各DMAC230a〜230dからの要求を受け付けない調停禁止期間を設けているので、高優先順位の要求が常に優先されて受け付けられ、低優先順位の要求の受け付け頻度が下がる。また、調停有効期間では1つの要求しか受け付けられないので、図4に例示したような、低優先順位の要求に応じたライト要求パケットが送信バスに対して連続的に送信されることが抑制される。
【0053】
その一方で、第1の機能では、高優先順位の要求が一定期間の調停禁止期間が終了しないと受け付けられないため、要求に応じたパケットの送信バスに対する送信が遅延する。図5の例では、リード要求A102’に対応するリード要求パケット113が、リード要求A102’の発行時から、上述したリード発行遅延#1よりも長いリード発行遅延#2’の遅延を以て送信バスに対して送信される。
【0054】
(第2の機能)
第2の機能では、上述の第1の機能に加えて、高優先順位の要求について調停禁止期間を無視することで、高優先順位の要求における遅延を短縮し、当該要求のスループット(要求受け付け待ち時間)を減縮する。この第2の機能は、例えば調停機能対象外の有効/無効を設定するための値が格納されるレジスタを各DMAC230a〜230dに対応して設けることで実装できる。
【0055】
図6は、第2の機能を説明するための一例のタイムチャートである。なお、図6において、上述の図4および図5と共通する部分には同一の符号および記述を付して、詳細な説明を省略する。
【0056】
図6の例において、リードデータパケット112の受信タイミングに応じて、調停禁止期間2004中に、最も優先順位の高い高優先RDMACからリード要求A102”が発行される。アービタ231は、調停禁止期間2004を無視してこのリード要求A102”を受け付け、リード要求パケット113’を送信バスに対して送信させる。
【0057】
一方、アービタ231は、それぞれリード要求A102”よりも優先順位の低い、調停禁止期間2004中に発行したライト要求C120と、調停禁止期間2002中に発行し調停禁止期間2004において存続しているライト要求D121とに対しては、調停禁止期間2004が終了するまで受け付けを行わない。図6の例では、調停禁止期間2004の直後の調停有効期間では、アービタ231においてリード要求A102”が既に受け付けられているため、これらライト要求C120およびライト要求D121は、受け付けられない。
【0058】
このように、第2の機能によれば、低優先順位の要求については、調停禁止期間を適用すると共に調停有効期間において最も優先順位の高い要求を受け付けるようにし、高優先順位の要求については、調停禁止期間を無視して要求を受け付けるようにしている。そのため、高優先順位のリード発行遅延が短縮され、転送性能が向上する。図6の例では、リード要求A102”に対するリード要求遅延#3が、リード要求A100に対するリード要求遅延#1と略等しくなっている。
【0059】
(第3の機能)
上述の第2の機能では、低優先順位の要求が調停有効期間毎に1つずつしか受け付けられないため、低優先順位の要求が常に抑制され、低優先順位の要求に対する転送性能が低下するおそれがある。そのため、第3の機能として、調停禁止期間を含まない調停禁止サイクル無効期間を設け、この調停禁止サイクル無効期間を調停禁止サイクル有効期間の後に開始させる機能を、上述の第2の機能に対してさらに追加すると、低優先順位の要求に対する転送性能を向上させることができる。
【0060】
この第3の機能は、上述した第1の機能と同様に、例えば次のように実装することができる。すなわち、調停禁止機能の有効/無効の設定、調停禁止期間および調停禁止サイクル有効期間のそれぞれを指定する値が格納されるレジスタを、アービタ231に設ける。また、調停禁止サイクル有効期間の開始を指示する開始ビットを含む信号をアービタ231に入力する信号端子と、当該信号端子に入力される信号から当該調停禁止サイクル有効期間の開始トリガとなる開始ビットを選択するための値が格納されるレジスタとをアービタ231に設ける。
【0061】
図7は、第3の機能を説明するための一例のタイムチャートである。なお、図7において、上述の図4〜図6と共通する部分には同一の符号および記述を付して、詳細な説明を省略する。図7の例では、調停禁止期間2003の終了と共に調停禁止サイクル有効期間を終了させ、調停禁止サイクル無効期間を開始させている。
【0062】
この調停禁止サイクル無効期間では、アービタ231は、各DMAC230a〜230dからの要求を、優先順位および発行順に従い順次受け付ける。図7の例では、調停禁止サイクル無効期間が開始されると、当該調停禁止サイクル無効期間の開始時に存続しているライト要求B104およびライト要求D105が優先順位に従い、アービタ231に順次受け付けられ、さらに、新たに発行されたライト要求C106がアービタ231に受け付けられる。そして、これらライト要求B104、ライト要求D105およびライト要求C106にそれぞれ対応するライトデータパケット116、117および118が送信バスに対して順次送信される。
【0063】
このように、第3の機能によれば、低優先順位の抑制期間が調停禁止サイクル無効期間の直前までに限定されるため、転送性能を向上させることができる。
【0064】
(アービタの詳細)
次に、図8〜図16を用いて、上述した第1〜第3の機能を実現するためのアービタ231の構成および動作について、より詳細に説明する。図8は、本第1の実施形態によるアービタ231の一例の構成を示す。
【0065】
アービタ231において、reg_ctrlモジュール11は、アービタ231外部から、アービタ231内部に持つ各レジスタ12〜18へのアクセスを制御するモジュールである。trg_selレジスタ12は、調停禁止サイクル開始トリガを選択するためのレジスタである。以下の項目を調停禁止サイクル開始トリガとして選択可能である。
(1)mask_trgレジスタ14の値が「1」になる。
(2)信号dma_exec21の全4ビットのうち、trgm_selレジスタ13にて選択されたビットのアサート。
【0066】
trgm_selレジスタ13は、trg_selレジスタ12にて調停禁止サイクル開始トリガが(2)の「信号dma_exec21のアサート」に設定されている場合、信号dma_exec21の全4ビットのうち、どのビットのアサートを、調停禁止サイクルの開始トリガにするかを選択するためのレジスタである。信号dma_exec21の複数のビットを調停禁止サイクルの開始トリガとして選択することが可能であり、その場合、選択されたビットのうち何れかのビットのアサートが、調停禁止サイクル開始トリガとなる。
【0067】
mask_trgレジスタ14は、trg_selレジスタ12にて調停禁止サイクル開始トリガが(1)の「mask_trgレジスタ14の値が「1」になる」に設定されている場合、値「1」を書き込まれることにより、調停禁止サイクル開始トリガとなる。
【0068】
mask_enableレジスタ15は、調停禁止機能の有効/無効を設定するためのレジスタである。cycle_mask_timeレジスタ16は、調停禁止期間を設定するためのレジスタである。total_mask_timeレジスタ17は、調停禁止サイクル有効期間を設定するためのレジスタである。mask_off_selレジスタ18は、調停禁止対象外のマスタを選択するためのレジスタである。
【0069】
インターフェイスreg_if19は、アービタ231外部から、アービタ231内部に持つレジスタへのアクセスを行うためのインターフェイスである。
【0070】
arb_mask_ctlモジュール20は、レジスタ12〜17の値と、信号dma_exec21および信号arb_req34の入力とに基づき、調停禁止サイクルを制御する。arb_mask_ctlモジュール20は、調停禁止期間中、信号arb_mask25をアサートする。
【0071】
信号dma_exec21は、各DMAC230a〜230dに出力される、各DMAC230a〜230dが起動中であることを示す信号である。ここでは、説明のため、信号dma_exec21の第0ビット〜第3ビットに対して、それぞれDMAC230a〜230dの信号がアサインされているものとする。
【0072】
arb_mask_ctlモジュール20は、内部レジスタとしてmask_execレジスタ22、cycle_mask_countレジスタ23およびtotal_mask_countレジスタ24を有する。mask_execレジスタ22は、調停禁止サイクル有効期間であることを示す信号が書き込まれる。cycle_mask_countレジスタ23は、調停禁止期間のカウント値が格納される。total_mask_countレジスタ24は、調停禁止サイクル有効期間のカウント値が格納される。
【0073】
信号arb_mask25は、arb_mask_ctlモジュール20からarb_main_ctlモジュール26に対して出力される、調停禁止期間であることを示す信号である。
【0074】
arb_main_ctlモジュール26は、内部モジュールとしてarb_req_selモジュール27、arb_req_ctlモジュール28およびpcie_req_ctlモジュール40を有し、mask_off_selレジスタ18、信号dma_req30、信号arb_mask25および信号pcie_busy33の情報に基づき、各DMAC230a〜230dからのデータ転送要求を調停する。
【0075】
arb_req_selモジュール27は、信号dma_req30の中から、mask_off_selレジスタ18、信号arb_mask25の値に基づき、調停対象(調停禁止対象外)要求を選択する。arb_req_ctlモジュール28は、調停対象となった要求を調停する。arb_req_ctlモジュール28は、要求受付対象が確定した場合、信号arb_req34をアサートする。
【0076】
信号dma_req30は、各DMAC230a〜230dから出力される、各DMAC230a〜230dのデータ転送要求を示す信号である。ここでは、説明のため、信号dma_req30の第0ビット目〜第3ビット目に対して、それぞれDMAC230a〜230dの信号がアサインされているものとする。
【0077】
信号dma_ack31は、arb_main_ctlモジュール26から出力され、各DMAC230a〜230dのデータ転送要求に対する許可状態を表す。信号pcie_req32は、arb_main_ctlモジュール26からPCIe I/F232に対して出力される、データ転送パケット発行要求信号である。信号pcie_busy33は、PCIe I/F232が出力する、パケット要求受付状態を示す信号である。
【0078】
信号arb_req34は、arb_main_ctlモジュール26からarb_mask_ctlモジュール20に対して出力され、要求調停結果を示す。信号arb_req_s35は、arb_req_ctlモジュール28からarb_req_selモジュール27に対して出力され、信号arb_req34と同じ値が示される。信号dma_rdy36は、arb_req_selモジュール27からarb_req_ctlモジュール28に対して出力され、調停対象となった要求を表す。DMAC230aの要求が受け付けられた場合、信号dma_rdy36の第0ビット目がアサートされる。
【0079】
信号dma_ack37は、arb_req_ctlモジュール28からarb_req_selモジュール27に対して出力され、調停対象となった要求の許可状態を表す。信号arb_req_p38は、arb_req_ctlモジュール28からpcie_req_ctlモジュール40に対して出力され、信号arb_req34と同じ値が示される。信号pcie_req_wait39は、pcie_req_ctlモジュール40からarb_req_selモジュール27に対して出力され、PCIe I/F232に対する要求保持状態を表す。
【0080】
pcie_req_ctlモジュール40は、信号arb_req_p38の値に基づき、PCIe I/F232に対するパケット発行要求を制御する。
【0081】
図9〜図16を用いて、本第1の実施形態によるアービタ231における調停禁止期間の一例の制御について説明する。先ず、図9〜図12を用いて、arb_mask_ctlモジュール20の動作の例について説明する。
【0082】
図9は、arb_mask_ctlモジュール20の動作の概要を示す一例のフローチャートである。arb_mask_ctlモジュール20は、アービタ231による調停処理が開始されると(ステップS10)、調停禁止期間の開始トリガとなる要求を待機する(ステップS11)。開始トリガとなる要求を受け取ったら、調停禁止期間を開始させ、各DMAC230a〜230dからの要求に対する調停を禁止する(ステップS12)。そして、次のステップS13で、調停禁止期間のカウントを開始する。カウント値が所定値に達したか否かを判定し(ステップS14)、所定値に達したら調停禁止期間を終了し、各DMAC230a〜230dからの要求に対する調停を有効とする(ステップS15)。そして、処理がステップS11に戻され、次の調停禁止期間の開始トリガが待機される。
【0083】
図10は、arb_mask_ctlモジュール20の動作をより詳細に示す一例のフローチャートである。なお、以下の各フローチャートにおいて、演算子は、C言語の記法に従うものとする。例えば、演算子「==」は等価を示し、演算子「!=」は、非等価を示す。調停処理が開始されると、arb_mask_ctlモジュール20は、ステップS100で、調停禁止機能が有効か否かを判定する。具体的には、arb_mask_ctlモジュール20は、mask_enableレジスタ15を参照し、格納される値が「1」であれば有効、「0」であれば無効であると判定する。
【0084】
若し、mask_enableレジスタ15の値が「0」であり調停禁止機能が無効であると判定したら、arb_mask_ctlモジュール20は、処理をステップS101に移行させて、初期化処理を行う。初期化処理では、信号arb_mask25の値を「0」とすると共に、mask_execレジスタ22、cycle_mask_countレジスタ23およびtotal_mask_countレジスタ24にそれぞれ値「0」を格納する。arb_mask_ctlモジュール20は、初期化処理の終了後、処理をステップS100に戻す。
【0085】
一方、ステップS100で、mask_enableレジスタ15の値が「1」であり調停禁止機能が有効であると判定したら、arb_mask_ctlモジュール20は、処理をステップS102に移行させる。ステップS102で、arb_mask_ctlモジュール20は、調停禁止期間が無いか否かを判定する。具体的には、arb_mask_ctlモジュール20は、cycle_mask_timeレジスタ16の値が「0」、または、total_mask_timeレジスタ17の値が「0」であれば、調停禁止期間が無いと判定し、処理をステップS101に移行させる。一方、cycle_mask_timeレジスタ16の値が「0」以外、且つtotal_mask_timeレジスタ17の値が「0」以外であれば、調停禁止期間が有ると判定し、処理をステップS103に移行させる。
【0086】
ステップS103で、arb_mask_ctlモジュール20は、現在が調停禁止機能の開始前であるか否かを判定する。換言すれば、ステップS103では、現時点で調停禁止機能が開始しているか否かの判別が行われる。具体的には、arb_mask_ctlモジュール20は、mask_execレジスタ22に格納される値が「0」であれば、現在時点で調停禁止機能が開始していない、すなわち調停禁止機能の開始前であると判定し、処理をステップS105に移行させ、調停禁止機能の開始前処理を行う。一方、mask_execレジスタ22に格納される値が「0」以外であれば、現在時点で調停禁止機能が開始していると判定し、処理をステップS104に移行させ、調停禁止機能の開始後処理を行う。arb_mask_ctlモジュール20は、ステップS104またはステップS105の処理が終了すると、処理をステップS100に戻す。
【0087】
図11は、図10のステップS105における調停禁止機能の開始前処理を示す一例のフローチャートである。調停禁止機能の開始前処理が開始されると、ステップS110で、arb_mask_ctlモジュール20は、mask_trgレジスタ14の値が「1」になることを調停禁止機能開始トリガとするか否かを判定する。具体的には、trg_selレジスタ12の値が「0」であれば、mask_trgレジスタ14の値が「1」になることを調停禁止機能開始トリガとすると判定し、処理をステップS113に移行させる。
【0088】
ステップS113で、arb_mask_ctlモジュール20は、調停禁止機能開始処理を行う。具体的には、mask_trgレジスタ14の値をmask_execレジスタ22に書き込むと共に、total_mask_timeレジスタ17の値から「1」を減じた値をtotal_mask_countレジスタ24に書き込む。そして、図11のフローチャートによる一連の処理を終了し、処理を図10のステップS100に戻す。
【0089】
一方、ステップS110で、trg_selレジスタ12の値が「0」ではなく、mask_trgレジスタ14の値が「1」になることを調停禁止機能開始トリガとしないと判定したら、arb_mask_ctlモジュール20は、処理をステップS111に移行させる。そして、ステップS111で、arb_mask_ctlモジュール20は、DMAC起動トリガ設定が有効か否かを判定する。具体的には、arb_mask_ctlモジュール20は、信号dma_exec21の値とtrgm_selレジスタ13の値とのビット積が「0」でなければ、DMAC起動トリガ設定が有効であると判定し、処理をステップS114に移行させる。
【0090】
ステップS114で、arb_mask_ctlモジュール20は、調停禁止機能開始処理を行う。具体的には、mask_execレジスタ22の値を「1」とすると共に、total_mask_timeレジスタ17の値から「1」を減じた値をtotal_mask_countレジスタ24に書き込む。そして、図11のフローチャートによる一連の処理を終了し、処理を図10のステップS100に戻す。
【0091】
一方、ステップS111で、信号dma_exec21の値とtrgm_selレジスタ13の値とのビット積が「0」であれば、DMAC起動トリガ設定が無効であると判定し、処理をステップS112に移行させて、初期化処理を行う。初期化処理では、信号arb_mask25の値を「0」とすると共に、mask_execレジスタ22、cycle_mask_countレジスタ23およびtotal_mask_countレジスタ24にそれぞれ値「0」を格納する。この初期化により、調停禁止サイクル無効期間が開始される。初期化が終了すると、図11のフローチャートによる一連の処理を終了し、処理を図10のステップS100に戻す。
【0092】
図12は、図10のステップS104における調停禁止機能の開始後処理を示す一例のフローチャートである。調停禁止機能の開始後処理が開始されると、ステップS120で、arb_mask_ctlモジュール20は、各DMAC230a〜230dから調停対象となる要求を受け付けたか否かを判定する。具体的には、arb_mask_ctlモジュール20は、信号arb_req34の値が「0」であるか否かを判定し、値が「0」以外の場合に、受け付けた要求があると判定し、処理をステップS125に移行させる。
【0093】
ステップS125で、arb_mask_ctlモジュール20は、調停禁止期間を開始する。具体的には、信号arb_mask25の値を「1」とすると共に、cycle_mask_countレジスタ23の値を、cycle_mask_timeレジスタ16の値から「1」を減じた値とする。調停禁止期間が開始されると、処理がステップS124に移行され、調停禁止サイクル有効期間がカウントされる。具体的には、total_mask_countレジスタ24の値が「1」減じられて、新たなtotal_mask_countレジスタ24の値とされる。そして、図12のフローチャートによる一連の処理を終了し、処理を図10のステップS100に戻す。
【0094】
一方、ステップS120で、信号arb_req34の値が「0」であり、受け付けた要求が無いと判定したら、arb_mask_ctlモジュール20は、処理をステップS121に移行させる。ステップS121で、arb_mask_ctlモジュール20は、調停禁止サイクル有効期間が終了したか否かを判定する。具体的には、total_mask_countレジスタ24の値が「0」であれば、調停禁止サイクル有効期間が終了したと判定し、処理をステップS126に移行させる。
【0095】
ステップS126で、arb_mask_ctlモジュール20は、初期化処理を行う。具体的には、信号arb_mask25、mask_execレジスタ22およびcycle_mask_countレジスタ23それぞれの値を「0」とする。これにより、調停有効期間となり、arb_mask_ctlモジュール20は、arb_main_ctlモジュール26による各DMAC230a〜230dからのデータ転送要求の調停が許可される。そして、図12のフローチャートによる一連の処理を終了し、処理を図10のステップS100に戻す。
【0096】
一方、ステップS121で、total_mask_countレジスタ24の値が「0」ではなく、調停禁止サイクル有効期間が終了していないと判定したら、arb_mask_ctlモジュール20は、処理をステップS122に移行させる。ステップS122では、調停禁止期間が終了したか否かが判定される。具体的には、arb_mask_ctlモジュール20は、cycle_mask_countレジスタ23の値が「0」であれば調停禁止期間が終了したと判定し、処理をステップS127に移行させる。ステップS127で、arb_mask_ctlモジュール20は、信号arb_mask25の値を「0」として、調停禁止期間を終了させる。そして、処理を上述したステップS124に移行させる。
【0097】
ステップS122で、cycle_mask_countレジスタ23の値が「0」ではなく、調停禁止期間が終了していないと判定したら、arb_mask_ctlモジュール20は、処理をステップS123に移行させ、調停禁止期間のカウントを行う。具体的には、cycle_mask_countレジスタ23の値から「1」を減じた値を新たなcycle_mask_countレジスタ23の値とする。そして、処理を上述したステップS124に移行させる。
【0098】
次に、arb_main_ctlモジュール26の動作について、図13〜図15を用いて説明する。arb_main_ctlモジュール26は、既に説明したように、各DMAC230a〜230dからのデータ転送要求の調停を行う。このarb_main_ctlモジュール26の調停動作の有効/無効(禁止)を、上述したarb_mask_ctlモジュール20からの信号arb_mask25により制御することで、調停禁止期間および調停有効期間が実現される。
【0099】
図13は、arb_main_ctlモジュール26に含まれるarb_req_selモジュール27の動作を示す一例のフローチャートである。arb_req_selモジュール27は、DMAC230a〜230dから、アービタ231の調停対象を選択する(ステップS130)。
【0100】
アービタ231が4のDMAC230a〜230dからの要求を調停するこの例では、4ビットの信号dma_rdy[3:0]の各ビットを用いて各DMAC230a〜230dを示す。信号dma_rdy[3:0]の4ビットそれぞれについて、ビットの値が「1」で、対応するDMACからの要求が調停対象とされる。なお、ここでは、0ビット目の信号dma_rdy[0]が最も優先順位が高いDMACを示し、3ビット目の信号dma_rdy[3]が最も優先順位が低いDMACを示すものとする。
【0101】
arb_req_selモジュール27は、mask_off_selレジスタ18に格納される、各ビットがDMAC230a〜230dにそれぞれ対応する4ビットの信号mask_off_sel[3:0]と、信号pcie_req_wait39と、信号arb_mask25と、信号arb_req_s35とに基づき、アービタ231の調停対象を選択する。
【0102】
具体的には、信号mask_off_sel[3:0]と信号arb_mask25の否定値との論理和と、信号pcie_req_wait39の否定値と、信号arb_req_s35の否定値との論理積を取ったものを、信号dma_rdy[3:0]の各ビットについて求め、当該信号dma_rdy[3:0]の各ビットの値とする。
【0103】
図14は、arb_main_ctlモジュール26に含まれるarb_req_ctlモジュール28の動作を示す一例のフローチャートである。先ず、ステップS140で、調停対象となるDMACが存在するか否かが判定される。具体的には、arb_req_ctlモジュール28は、信号dma_rdy[3:0]の値が「0」でなければ、調停対象のDMACが1以上存在すると判定する。若し、信号dma_rdy[3:0]の値が「0」であり、調停対象となるDMACが存在しないと判定したら、図14のフローチャートによる一連の処理が終了される。
【0104】
一方、信号dma_rdy[3:0]の値が「0」でなく、調停対象のDMACが1以上存在すると判定した場合は、arb_req_ctlモジュール28は、処理をステップS141に移行する。ステップS141で、arb_req_ctlモジュール28は、調停対象となるDMACに対して調停処理を行い、アービタ231が受け付けを許可する要求を決定する。具体的には、信号arb_req34、信号arb_req_p38および信号arb_req_s35の値をそれぞれ「1」とする。この調停動作を、予め決められた優先順位に従い、各DMAC230a〜230dに対して順次行う。
【0105】
図15は、arb_main_ctlモジュール26に含まれるpcie_req_ctlモジュール40の動作を示す一例のフローチャートである。先ず、ステップS150で、pcie_req_ctlモジュール40は、PCIe I/F232が要求受け付け可能な状態であるか否かを判定する。具体的には、信号pcie_busy33の値が「1」でなければ、要求受け付け可能な状態であると判定し、処理をステップS152に移行させる。
【0106】
ステップS152で、pcie_req_ctlモジュール40は、バス223に対してパケット発行要求を送信する。具体的には、信号arb_req_p38と信号pcie_req_wait39とのビット和を信号pcie_req32とし、バス223に対して送信する。それと共に、信号pcie_req_wait39の値を「0」とする。そして、図15のフローチャートの一連の処理が終了される。
【0107】
一方、ステップS150で、信号pcie_busy33の値が「1」であり、PCIe I/F232が要求受け付け可能な状態では無いと判定したら、pcie_req_ctlモジュール40は、処理をステップS151に移行させる。ステップS151で、pcie_req_ctlモジュール40は、調停処理の結果、arb_req_ctlモジュール28において受け付けを許可する要求が決定されたか否かを判定する。具体的には、信号pcie_busy33の値が「1」、且つ、信号arb_req_p38の値が「1」であれば、受け付けを許可する要求が決定されたと判定し、処理をステップS153に移行させる。
【0108】
ステップS153で、pcie_req_ctlモジュール40は、arb_req_ctlモジュール28において決定された受け付けを許可する要求を一時的に保持すると共に、信号pcie_req_wait39の値を「1」とする。そして、図15のフローチャートによる一連の処理を終了する。
【0109】
図16は、上述の図9〜図15のフローチャートに従って動作するアービタ231における内部信号の一例のタイムチャートを示す。なお、ここでは、各レジスタ12〜18の値が次のように設定されているものとする。すなわち、mask_enableレジスタ15が値「1」とされ、調停禁止機能が有効に設定される。cycle_mask_timeレジスタ16を値「4」、total_mask_timeレジスタ17を値「30」として、調停禁止期間および調停禁止サイクル有効期間をそれぞれ設定する。trg_selレジスタ12を値「1」として、調停禁止サイクル開始トリガをDMAC起動トリガに設定する。
【0110】
なお、図16(a)、図16(e)、図16(h)、図16(j)および図16(k)は、それぞれtrgm_selレジスタ13、mask_off_selレジスタ18、mask_execレジスタ22、cycle_mask_countレジスタ23およびtotal_mask_countレジスタ24の値を示し、これらのうちtrgm_selレジスタ13およびmask_off_selレジスタ18は、それぞれ4ビットの値である。なお、図中、「4’b」の記述は、続く数値が4ビットを2進数表記で記述していることを示し、「4’d」は、続く数値が4ビットを10進数表記で記述していることを示す。
【0111】
また、図16(b)、図16(c)、図16(d)、図16(f)、図16(g)および図16(i)は、それぞれ信号dma_exec21、信号dma_req30、信号dma_ack31、信号dma_rdy36、信号arb_req34および信号arb_mask25の値を示し、これらのうち信号dma_exec21、信号dma_req30、信号dma_ack31および信号dma_rdy36は、それぞれ4ビットの値である。
【0112】
動作が開始されると、trgm_selレジスタ13の0ビット目の値が「1」とされ、DMAC230aからの要求が起動トリガに設定される。また、mask_off_selレジスタ18の0ビット目の値が「1」とされ、DMAC230aからの要求が調停禁止対象外に設定される(図16(a)、図16(e)参照)。その後、時間T1でDMAC230aからの要求が発行されるまでの間、図10のステップS100、ステップS102およびステップS103を経てステップS105に処理が移行され、調停禁止機能の開始前処理が実行される。さらに、調停禁止機能の開始前処理において図11のステップS110、ステップS111およびステップS112を経て、処理が図10のステップS100に戻される。
【0113】
時間T1において、優先順位が最も高くされた高優先RDMACであるDMAC230aが起動され、信号dma_exec21の0ビット目の値が「1」とされる(図16(b)参照)。これにより、図11の調停禁止機能の開始前処理において、処理がステップS111からステップS114に移行され、total_mask_countレジスタ24に対してtotal_mask_timeレジスタ17の値から「1」を減じた値が書き込まれると共に、mask_execレジスタ22の値が「1」とされ、調停禁止サイクル有効期間が開始される(図16(h)参照)。これにより、図11のフローチャートを抜けて処理が図10のステップS100に戻された後に、処理がステップS103からステップS104に移行され、調停機能の開始後処理が開始される。
【0114】
調停機能の開始後処理において、時間T1の時点では信号arb_req34の値が「0」であるので、処理が図12のステップS120からステップS121に移行され、さらにtotal_mask_countレジスタ24の値が「0」ではないので、処理がステップS126に移行されて初期化処理が行われる。そして、ステップS124で調停禁止サイクル有効期間がカウントされる(図16(k)参照)。処理は図10のステップS100に戻され、ステップS102およびステップS103を経て再び図12の調停禁止機能の開始後処理に移行される。
【0115】
時間T2において、DMAC230aで要求が発行されDMAC230aから0ビット目の値が「1」とされた信号dma_req30が出力される(図16(c)参照)。この信号dma_req30に応じてarb_req_selモジュール27が要求を許可し、信号dma_rdy36の0ビット目の値を「1」とする(図16(f)参照)。arb_req_ctlモジュール28は、信号dma_rdy36の値に応じて、信号arb_req34の値を「1」とする(図14のステップS140、ステップS141)と共に、許可状態を示す信号dma_ack37の値を「1」とする(図16(g)、図16(d)参照)。また、信号dma_rdy36は、値が「0」に戻される。
【0116】
arb_mask_ctlモジュール20は、信号arb_req34の値が「1」なので、図12において処理をステップS120からステップS125に移行させ、信号arb_mask25の値を「1(High)」として(図16(i)参照)、調停禁止期間を開始させると共に、信号arb_req34の値を「0」に戻す。
【0117】
さらに、ステップS125では、arb_mask_ctlモジュール20は、cycle_mask_countレジスタ23に対してcycle_mask_timeレジスタ16の値から1を減じた値を格納する。そして、処理がステップS124に移行され、処理がステップS124に移行されて調停禁止サイクル有効期間のカウントがなされる。
【0118】
その後、図10のステップS100に処理が戻され、ステップS102およびステップS103を経て図12の調停禁止機能の開始後処理に移行され、ステップS120、ステップS121およびステップS122を経て処理がステップS123に移行されて調停禁止期間のカウントが行われ(図16(i)参照)、さらにステップS124で調停禁止サイクル有効期間のカウントがなされる(図16(k)参照)。
【0119】
時間T3において、DMAC230bで要求が発行されDMAC230bから1ビット目の値が「1」とされた信号dma_req30が出力される(図16(c)参照)。しかしながら、時間T3は調停禁止期間中であるので(図16(i)参照)、この要求は許可されない(図13のステップS130、図14のステップS140)。したがって、信号dma_rdy36は、値が「0」のままである。このDMAC230bで発行された要求は、arb_req_selモジュール27において保持される。
【0120】
時間T4において、cycle_mask_countレジスタ23のカウント値が「0」となり調停禁止期間が終了し(図12のステップS122)、ステップS127で信号arb_mask25の値が「0」とされる。これにより、調停有効期間が開始される(図16(j)、図16(i)参照)。調停有効期間となることで、arb_req_selモジュール27において信号dma_rdy36の1ビット目の値が「1」とされ(図13のステップS130)、DMAC230bの要求が許可される。これに応じて、図14のステップS140、ステップS141によりarb_req_ctlモジュール28において信号arb_req34の値が「1」とされる。
【0121】
arb_mask_ctlモジュール20は、信号arb_req34の値が「1」とされたことに応じて、信号arb_mask25の値を「1」として、調停禁止期間を開始させる。調停禁止期間の開始に伴い、当該調停禁止期間のカウントが開始され、cycle_mask_countレジスタ23の値が、図12のフローチャートのステップS123に従い1ずつ減ぜられる(図16(i)、図16(j)参照)。
【0122】
次に、時間T5において、DMAC230aおよびDMAC230bそれぞれからの要求が発行され、信号dma_req30の0および1ビット目の値が「1」とされる(図16(c)参照)。時間T5は、調停禁止期間中なので、調停禁止対象外となっているDMAC230aの要求が許可される(図16(e)、図16(f)参照)。DMAC230bの要求は、許可されない。DMAC230aの要求が許可されると、arb_req_selモジュール27において信号dma_rdy36の値が「1」とされ(図13のステップS130)、これに応じてarb_req_ctlモジュール28において信号arb_req34の値が「1」とされる(図14のステップS140およびステップS141)。
【0123】
時間T6でtotal_mask_countレジスタ24のカウント値が0になると(図16(k)参照)、調停禁止サイクル有効期間が終了し、図12のステップS121からステップS126に処理が移行されて各値が初期化され、調停禁止サイクル無効期間が開始される(図16(h)参照)。時間T7でDMAC230bの要求が発行されると、arb_main_ctlモジュール26は、信号dma_rdy36の1ビット目の値を「1」として、当該要求を許可する(図16(f))。この時点では、調停禁止サイクル無効期間とされているため、調停禁止期間は、開始されない(図16(i)参照)。
【0124】
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。上述した第1の実施形態では、第2の機能において、最も優先順位の高いDMACからの要求に対して調停禁止機能を無視することで、高優先順位のDMACの要求による転送性能を向上させている。本第2の実施形態では、高優先順位のDMACからの要求が発行されると、調停禁止期間または調停禁止サイクル有効期間をリセットして当該要求を受け付けるようにしている。当該要求を受け付けた後は、調停禁止期間を再開させる。
【0125】
なお、本第2の実施形態では、上述した第1の実施形態で説明した第1および第3の機能については、そのまま適用できるので、ここでの説明を省略する。また、図8を用いて説明したアービタ231の構成も、共通して適用することができる。
【0126】
図17は、本第2の実施形態による第2の機能を説明するための一例のタイムチャートである。なお、図17において、上述の図5と共通する部分には同一の符号および記述を付して、詳細な説明を省略する。図17の例において、リードデータパケット112の受信タイミングに応じて、調停禁止期間2004’中に、最も優先順位の高い高優先RDMACからのリード要求A102”が発行される。
【0127】
このとき、本第2の実施形態では、アービタ231は、調停禁止期間2004’をリセット、すなわち、調停禁止期間2004’を一旦終了させて当該リード要求A102”を受け付け、リード要求パケット113’を送信バスに対して送信させる。リード要求A102”が受け付けられてからリード要求パケット113’が送信されるまでの遅延(リード発行遅延#4)は、上述した第1の実施形態における第2の機能によるリード発行遅延#3と略等しくすることができる。リード要求A102”が受け付けられると、調停禁止期間を再開させる(調停禁止期間2005’)。
【0128】
このように、本第2の実施形態による第2の機能においても、上述の第1の実施形態による第2の機能と同様に、高優先順位のリード発行遅延が短縮され、転送性能が向上される。
【0129】
(他の実施形態)
なお、上述では、各実施形態がハードウェアとしてのコントローラLSI222により実施されるように説明したが、これはこの例に限定されず、各実施形態は、ソフトウェアにより実現してもよい。例えば、CPU224に対して所定のインターフェイスを介して、または、直接的にDMA230a〜DMAC230dを接続する。CPU224は、図示されないROMなどから読み出した転送制御プログラムを、メモリ226などをワークメモリとして実行し、図8に示したアービタ231の機能を実現する。プログラムは、ROMから読み出すのに限らず、HDDやCD、DVDといった記憶媒体から供給してもよい。
【0130】
各実施形態で実行される転送制御プログラムは、上述したarb_mask_ctlモジュール20およびarb_main_ctlモジュール26を含むモジュール構成とされる。実際のハードウェアとしては、CPU224が図示されないROMやHDDやCD、DVDといった記憶媒体から転送制御プログラムを読み出して実行することにより、これら各モジュールが主記憶装置(例えばメモリ226)上にロードされ、arb_mask_ctlモジュール20およびarb_main_ctlモジュール26が主記憶装置上に生成されるようになっている。上述した各レジスタおよび各信号は、例えば当該転送制御プログラム上の変数として扱うことができる。
【0131】
また、上述では、本発明の各実施形態が画像形成装置に適用されるように説明したが、これはこの例に限定されない。例えば、動画処理など、所定時間内に一定量の画像データを転送する必要のある画像処理を行う画像処理装置に対して、本発明の各実施形態を適用することができる。
【符号の説明】
【0132】
12 trg_selレジスタ
13 trgm_selレジスタ
14 mask_trgレジスタ
15 mask_enableレジスタ
16 cycle_mask_timeレジスタ
17 total_mask_timeレジスタ
18 mask_off_selレジスタ
20 arb_mask_ctlモジュール
21 信号dma_exec
22 mask_execレジスタ
23 cycle_mask_countレジスタ
24 total_mask_countレジスタ
25 信号arb_mask
26 arb_main_ctlモジュール
27 arb_req_selモジュール
28 arb_req_ctlモジュール
30 信号dma_req
31 信号dma_ack
32 信号pcie_req
33 信号pcie_busy
34 信号arb_req
36 信号dma_rdy
40 pcie_req_ctlモジュール
200 画像形成装置
222 コントローラLSI
223,225 バス
224 CPU
226 メモリ
230a,230b,230c,230d DMAC
231 アービタ
232 PCIe I/F
【先行技術文献】
【特許文献】
【0133】
【特許文献1】特開2003−256359号公報

【特許請求の範囲】
【請求項1】
要求と応答とを分離して処理可能なバスを介して行うデータ転送を制御するデータ転送装置であって、
前記要求に応じたデータ転送処理を実行する複数のアクセス制御手段と、
前記複数のアクセス制御手段が発行した前記要求の調停を行い、受け付ける該要求を決定する調停手段と
を備え、
前記調停手段は、
前記調停を指定された期間禁止する調停禁止期間を設定し、該調停禁止期間中では、前記複数のアクセス制御手段のうち指定されたアクセス制御手段が発行した前記要求のみを受け付ける
ことを特徴とするデータ転送装置。
【請求項2】
前記調停手段は、
前記調停禁止期間中に前記指定されたアクセス制御手段で前記要求が発行された場合に、該調停禁止期間を無視して該要求を受け付ける
ことを特徴とする請求項1に記載のデータ転送装置。
【請求項3】
前記調停手段は、
前記調停禁止期間中に前記指定されたアクセス制御手段で前記要求が発行された場合に、該調停禁止期間を停止して該要求を受け付け、該要求の受け付け後に該調停禁止期間を再び開始させる
ことを特徴とする請求項1に記載のデータ転送装置。
【請求項4】
前記調停手段は、
前記調停禁止期間と、前記調停を禁止しない調停有効期間とを繰り返す
ことを特徴とする請求項1乃至請求項3の何れか1項に記載のデータ転送装置。
【請求項5】
前記調停手段は、
前記調停禁止期間と前記調停有効期間とを繰り返す調停禁止サイクル有効期間と、該調停有効期間のみを含む調停禁止サイクル無効期間とを設け、該調停禁止サイクル有効期間の終了後に該調停禁止サイクル無効期間を開始させる
ことを特徴とする請求項4に記載のデータ転送装置。
【請求項6】
前記調停手段は、
前記複数のアクセス制御手段のうち優先順位の最も高い前記要求を発行させるアクセス制御手段を、前記指定されたアクセス制御手段とする
ことを特徴とする請求項1乃至請求項5の何れか1項に記載のデータ転送装置。
【請求項7】
前記調停手段は、
前記調停有効期間で前記要求を受け付けた時点で、前記調停禁止期間を開始させる
ことを特徴とする請求項4の記載のデータ転送装置。
【請求項8】
要求と応答とを分離して処理可能なバスを介して行うデータ転送を制御するデータ転送方法であって、
アクセス制御手段が、前記要求に応じたデータ転送処理を実行するアクセス制御ステップと、
調停手段が、複数の前記アクセス制御ステップが発行した前記要求の調停を行い、受け付ける該要求を決定する調停ステップと
を備え、
前記調停ステップは、
前記調停を指定された期間禁止する調停禁止期間を設定し、該調停禁止期間中では、前記複数のアクセス制御ステップのうち指定されたアクセス制御ステップが発行した前記要求のみを受け付ける
ことを特徴とするデータ転送方法。
【請求項9】
要求と応答とを分離して処理可能なバスを介して行うデータ転送を制御するデータ転送方法をコンピュータに実行させるためのプログラムであって、
前記要求に応じたデータ転送処理を実行するアクセス制御ステップと、
複数の前記アクセス制御ステップが発行した前記要求の調停を行い、受け付ける該要求を決定する調停ステップと
を備え、
前記調停ステップは、
前記調停を指定された期間禁止する調停禁止期間を設定し、該調停禁止期間中では、前記複数のアクセス制御ステップのうち指定されたアクセス制御ステップが発行した前記要求のみを受け付けるデータ転送方法をコンピュータに実行させるためのプログラム。
【請求項10】
画像データを格納する記憶手段と、
前記画像データに従い用紙に対して画像形成を行う画像形成手段と、
前記記憶手段から読み出した前記画像データの前記画像形成手段に対する転送を制御する請求項1乃至請求項7の何れか1項に記載のデータ転送装置と
を備える
ことを特徴とする画像形成装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2012−43375(P2012−43375A)
【公開日】平成24年3月1日(2012.3.1)
【国際特許分類】
【出願番号】特願2010−186551(P2010−186551)
【出願日】平成22年8月23日(2010.8.23)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】