(57)【要約】【課題】要求コマンドと、それに対する応答とが分離されていて、要求コマンドに対する応答を待つことなく、次々と要求コマンドを発行可能なバスにおいて、転送レートの最悪値を保証する必要のある要求源に対し、高い保証値を達成するデータ通信装置を提供する。【解決手段】スピリット・トランザクションのプロトコルを用いるインタフェースを介してデータ転送を行うデータ通信装置において、DMACの設定情報から先行してメモリアクセス要求を発行し、対象DMACの正常及び異常終了により先行リードアクセスしていたデータを無効化する。【選択図】図２
2011053895.tif 000002
【特許請求の範囲】
【請求項１】
スピリット・トランザクションのプロトコルを用いるインタフェースを介してデータ転送を行うデータ通信装置において、
DMACの設定情報から先行してメモリアクセス要求を発行し、対象DMACの正常及び異常終了により先行リードアクセスしていたデータを無効化することを特徴とするデータ通信装置。
【請求項２】
先行リード対象DMACに対し、それとは別のDMACのライトが、先行リード対象アドレス領域に行われるまで、先行リードアクセスを実行しないことを特徴とする請求項１のデータ通信装置。
【請求項３】
先行リードアクセスしたデータを保持しておくメモリの分割方法をプログラマブルとしたことを特徴とする請求項１又は２記載のデータ通信装置。
【請求項４】
DMACからのライトアクセスを、それとは別のDMACが、その対象アドレス領域に対して行われるまで、前記ライトアクセスを実行しないことを特徴とする請求項１から３のいずれか１項に記載のデータ通信装置。
【請求項５】
アービタの調停方式として、ラウンドロビン方式で調停を行うことを特徴とする請求項１から４のいずれか１項に記載のデータ通信装置。
【請求項６】
要求源からのアクセス要求が存在しないことを理由に、前記要求源に許可を与えない場合、前記要求源のアクセス要求に対し、依存関係のあるDMACからのアクセス要求源に対して許可を与えることを特徴とする請求項１から５のいずれか１項に記載のデータ通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スピリット・トランザクションのプロトコルを用いるインタフェースを介したデータ転送を制御するデータ通信装置に関する。
【背景技術】
【０００２】
従来のPCIバスなどのパラレル方式のバスでは、複数のデータビットの同期合わせや、クロストークの発生により、高速化が難しいという問題があるが、シリアル方式では、これらの問題に対して有利であり、パラレル方式のバスよりも、高速化しやすくなっている。
【０００３】
また、これとは別に、PCI Expressなどの新規のバスでは、要求コマンドと、それに対する応答とが分離されており、要求コマンドに対する応答を待つことなく、次々と要求コマンドを発行できるので、バスの使用効率を向上できることが既に知られている。
【０００４】
PCI Expressは、PC（Personal Computer）等で使用されることが多いが、最近では、デジタル複写機や複合機（MFP:Multi Function Peripheral）等の画像処理装置におけるデバイス間のインタフェースに使用され始めている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、PCI Expressなどの新規のバスでは、転送レートの最悪値を保証する必要のある要求源に対し、その保証値を高くできないという問題があった。要求源の例としては、ビデオ出力データの入出力のDMAC（Direct Memory Access Controller）などが挙げられ、単位時間あたりの転送レートを維持できないと異常画像となる。
【０００６】
すなわち、PCI Expressなどの新規のバスでは、要求コマンドに対する応答を待つことなく、次々と要求コマンドを発行することができるという特性を有効に利用するため、要求コマンドを保持しておくためのバッファ（キュー）を持ち、発行された要求コマンドを、このキューに一時的に蓄えられる構成としている。
【０００７】
このような構成とすることで、PCI Expressなどに対し、高い要求コマンド発行レートを達成することが可能となったが、要求源側としては、常にこのレートで要求を発行するわけではない。優先順位の高いDMACであっても、既に、必要としているリード（read）／ライト（write）アクセス要求と、現在処理を実行している処理対処のアドレスデータから、単純増加／減少により算出できるアドレスに対する要求を発行する程度である。
【０００８】
このため、高優先順位の要求源からの要求が不参加の状態で、バス調停が行われることとなる。
【０００９】
このとき、低優先順位の要求源からの要求が多数許可されてしまい、キューに積まれ、実行待ちの状態となる。
【００１０】
その後、高優先順位の要求源からの要求が発行され、その要求に対する許可が与えられ、キューに積まれることになる。しかし、このアクセス実行には、それ以前にキューに積まれている実行を待つ必要があり、不本意のバス調停がされて、キューの積まれている要求の実行時間分を考慮して保証値とする必要がある。よって、その保証値を高くできないという問題があった。
【００１１】
なお、本発明に関連する従来例として、特許文献１（特開２００７−２４９８１６号公報）がある。この特許文献１の発明は、トランザクション層の送信バッファが介在している場合であっても、アービタの設定と実際のトラフィックのプライオリティの整合性を維持しつつ優先度の調停を行うことができるものであり、統計情報生成手段を持ち、その結果に応じてリアルタイムにアービトレーションテーブルを変更することでそれを実現している。
【００１２】
しかし、この特許文献１の発明は、実際のパケットデータの統計情報を使用してアービタを調整するものであり、その精度が未知であり、転送レートの最悪値を保証する必要のある要求源に対し、保証値の設定が容易ではない。
【００１３】
本発明は、上記事情に鑑みてなされたものであり、要求コマンドと、それに対する応答とが分離されていて、要求コマンドに対する応答を待つことなく、次々と要求コマンドを発行可能なバスにおいて、転送レートの最悪値を保証する必要のある要求源に対し、高い保証値を達成するデータ通信装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
かかる目的を達成するために、本発明のデータ通信装置は、スピリット・トランザクションのプロトコルを用いるインタフェースを介してデータ転送を行うデータ通信装置において、DMACの設定情報から先行してメモリアクセス要求を発行し、対象DMACの正常及び異常終了により先行リードアクセスしていたデータを無効化することを特徴とする。
【００１５】
本発明のデータ通信装置において、先行リード対象DMACに対し、それとは別のDMACのライトが、先行リード対象アドレス領域に行われるまで、先行リードアクセスを実行しないことを特徴とする。
【００１６】
本発明のデータ通信装置において、先行リードアクセスしたデータを保持しておくメモリの分割方法をプログラマブルとしたことを特徴とする。
【００１７】
本発明のデータ通信装置において、DMACからのライトアクセスを、それとは別のDMACが、その対象アドレス領域に対して行われるまで、ライトアクセスを実行しないことを特徴とする。
【００１８】
本発明のデータ通信装置において、アービタの調停方式として、ラウンドロビン方式で調停を行うことを特徴とする。
【００１９】
本発明のデータ通信装置において、要求源からのアクセス要求が存在しないことを理由に、要求源に許可を与えない場合、要求源のアクセス要求に対し、依存関係のあるDMACからのアクセス要求源に対して許可を与えることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、要求コマンドと、それに対する応答とが分離されていて、要求コマンドに対する応答を待つことなく、次々と要求コマンドを発行可能なバスにおいて、転送レートの最悪値を保証する必要のある要求源に対し、高い保証値を達成することができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の一実施形態に係る複合機（MFP）の構成例を示す概念図である。
【図２】本発明の一実施形態に係るコントローラASIC部分の構成例を示すブロック図である。
【図３】本発明の一実施形態に係るPCI Expressのエンドポイントの内部構成を示すブロック図である。
【図４】PCIバスなどで採用されているインタロック型バスの転送について示す図である。
【図５】PCI Expressなどに採用されているスピリット・トランザクション型バスの転送を示す図である。
【図６】スピリット・トランザクション型バスでの従来の転送の様子を示す図である。
【図７】本発明の一実施形態に係る先読み制御回路の構成を示すブロック図である。
【図８】本発明の一実施形態に係る先読み制御回路を設けた場合におけるデータの流れを示す図である。
【図９】本発明の一実施形態に係る先読み制御回路内の各部（対象DMACパラメータレジスタ、カレントDMACパラメータレジスタ、リクエストパラメータレジスタ、リクエストバッファ、バッファメモリ管理レジスタ）の詳細を示す図である。
【図１０】本発明の一実施形態に係るリクエストパラメータレジスタの動作例を示すフローチャートである。
【図１１】本発明の一実施形態に係る先読み制御回路を用いたときの転送の様子を示す図である。
【図１２】本発明の一実施形態に係る先読み制御回路のDMA連携の動作を示すフローチャートである。
【図１３】本発明の一実施形態に係るアービタの調停の様子を示す図である。
【発明を実施するための形態】
【００２２】
以下、本発明を実施するための形態（実施形態）について添付図面を参照して詳細に説明する。
【００２３】
図１は、本発明の画像処理装置の一実施形態である複合機（MFP）の構成を示す概念図である。図１に示すように、本実施形態の画像処理装置は、原稿を読み取るスキャナユニット１０１、印字出力するプロッタユニット１０２、スキャナユニット１０１とプロッタユニット１０２を制御するためのエンジン制御ASIC（Application Specific Integrated Circuit）１０３、複合機全体を制御するためのコントローラASIC（Application Specific Integrated Circuit）１０４、複合機全体を制御するためのCPU（Central Processing Unit）１０５、CPU１０５が動作するためのプログラムやデータ及び画像データなどを記憶しておくためのメモリ１０６、エンジン制御ASIC１０３とコントローラASIC１０４間のインタフェースであるPCI Express１０７、コントローラASIC１０４とCPU１０５間のインタフェースであるPCI Express１０８、CPU１０５とメモリ１０６間のインタフェースであるSSTL１０８を備える。メモリ１０６は、CPU１０５に内蔵しているメモリコントローラにて制御されており、SSTL規格でインタフェースされている。
【００２４】
図２は、図１におけるコントローラASIC１０４（本発明のデータ通信装置の一実施形態）の部分の構成例を記載したものである。
【００２５】
２０１は、PCI Expressのルートコンプレックスである。PCI Expressのルートコンプレックスは、システムのI/O階層で最上位に位置するものであり、末端としては、図１におけるエンジン制御ASIC１０３となる。
【００２６】
一方、２０２は、PCI Expressのエンドポイントである。PCI Expressのエンドポイントは、PCI ExpressのI/O構造で末端に位置するものである。これに対するPCI Expressルートコンプレックスは、図１におけるCPU１０５である。これにより、コントローラASIC１０４は、エンジン制御ASIC１０３、CPU１０５とインタフェースする。
【００２７】
２０３〜２０６は、印字データを出力制御するためのビデオ出力コントローラであり、０〜３までの４ｃｈ分ある。これらは、リードDMAC２０７〜２１０を持ち、コントローラASIC外部のメモリからデータをリードする。
【００２８】
２１１は、ビデオ入力コントローラであり、スキャナでの読み取りデータを制御する。PCI Express２２８を介し、エンジン制御ASIC１０３からのスキャナデータを、PCI Expressのルートコンプレックス２０１を介して受け取る。このビデオ入力コントローラ２１１は、ライトDMAC２１２を持ち、コントローラASIC１０４外部のメモリへデータをライトする。
【００２９】
２１３〜２１６は、圧縮データの伸張器などのコントローラユニット０〜３であり、各コントローラユニット０〜３は、コントローラASIC１０４外部のメモリから元データを読み出すためのリードDMAC２１７〜２２０と、処理済みのデータをコントローラASIC１０４外部のメモリにライトするためのライトDMAC２２１〜２２４を持つ。
【００３０】
２２６は、アービタであり、リード／ライトDMACからのコントローラASIC１０４外部のメモリのアクセス要求を調停する。調停方式としてはラウンドロビンで行う。
【００３１】
２２５は、先読み制御回路であり、DMACに設定された設定情報から、今後必要となるメモリアクセスを検知し、先行してメモリに対してリードを実行する。また、ライト要求に対しても、それとは別のDMACがその対象アドレス領域に対して行われるまで、ライトアクセスを実行しない制御も行う。
【００３２】
２２７は、セレクタであり、PCI Expressのルートコンプレックス２０１でエンジン制御ASIC１０３に出力するデータを選択する。
【００３３】
図３は、図２のPCI Expressのエンドポイント２０２の内部構成を示すブロック図である。図３に示すように、PCI Expressのエンドポイント２０２は、Transaction Layer、 Data Link Layer 、Physical MAC Layerの３つの層に分けることができる。
【００３４】
Transaction Layerには、送信用バッファ及び受信用のバッファがあり、要求コマンドやデータを一時的に蓄えることができるようになっている。このため、送信用バッファ、受信用バッファ効果により、転送効率を高めるという効果があるが、逆に、転送レートの最悪値を保証する必要のある要求源に対し、その保証値を高くできないという問題があった。
【００３５】
図４は、PCIバスなどで採用されているインタロック型バスの転送について示している。リード要求発行後、それに対するリードデータを受け取るまで、次の要求コマンドを発行できない。
【００３６】
一方、図５は、PCI Expressなどに採用されているスピリット・トランザクション型バスの転送を示している。こちらは、リード要求に対する応答を待つことなく、次の要求コマンドを発行することができる。このため、同じ、リードレイテンシであっても、スピリット・トランザクション型バスの方が転送レートを高めることができる。
【００３７】
図６は、スピリット・トランザクション型バスでの従来の転送の様子を示している。ｔ０時刻で、ＡとＢとＣの要求源から要求が発行されている。ここで、ＡとＢが優先順位が高く、Ｃが優先順位の低い要求源である。アービタは、Ａからの要求に対し許可を与え、受付済みコマンドのバッファにＡからの要求R_A0（Ａからの０番目のリード要求）を積む。
【００３８】
ｔ１時刻で、アービタは、Ｂからの要求に対し許可を与え、受付済みコマンドのバッファにＢからの要求R_B0（Ｂからの０番目のリード要求）を積む。また、この時刻に、先ほどバッファに積んだR_A0が送信側伝送路に転送される。
【００３９】
ｔ２時刻で、アービタは、Ａからの要求に対し許可を与え、受付済みコマンドのバッファにＡからの要求R_A１（Ａからの１番目のリード要求）を積む。アービタの優先順位の関係で、Ｃには許可を与えない。また、この時刻に、先ほどバッファに積んだR_B0が送信側伝送路に転送される。また、この時刻では、受信側伝送路に、R_A0要求に対するリードデータが転送される。但し、転送データ量の関係から、リードコマンドの転送に比べ、リードデータの転送に要する時間が長く、そのことを図６のサイズの違いで表している。
【００４０】
この様にして転送を実施していくと、自分自身が発行したリードコマンドに対する未完了状態で発行できるリードコマンドの数が有限（図６ではそれぞれ２個）であるために、要求を発行したくても発行できない状態が発生する。Ａからの要求は、ｔ４でR_A0に対するリードデータが帰ったことで発行可能となっている（ｔ８でも、R_A1に対するリードデータが帰ったことで発行可能となっている）。
【００４１】
Ｂについても同様である。この状態となると、Ａ、Ｂとも、要求を発行したくても、発行できない状態となり、この隙間に、Ｃからの要求を許可してしまう。このＣからの要求がライト要求の場合、コマンドとライトデータを送信側伝送路で送るため、転送に要する時間が長く、その伝送が終わってから、次に許可されたコマンドを送信側伝送路で送ることになり、高い優先順位の要求源であっても、リードレイテンシが長くなる。
【００４２】
以上のことから、本実施形態では、図２の先読み制御回路２２５を設けて対応する。図７は、その先読み制御回路の構造を示すブロック図である。
【００４３】
先読み制御回路２２５は、図７に示すように、対象DMACパラメータレジスタ、リクエストパラメータレジスタ、バッファメモリ管理レジスタ、カレントDMACパラメータレジスタ、リクエストバッファ、先読み制御回路全体制御、及び、バッファメモリコントローラ、バッファメモリにて構成される。
【００４４】
図８は、先読み制御回路を設けた場合におけるデータの流れを示す図である。なお、図８で説明するデータの流れは、図１において、コントローラASIC１０４内のDMACが、メモリ１０６に存在するディスクリプタ（DMAC実行のパラメータ）及びデータをリードしてきて、処理を実行するまでの様子を示している。以下、図８を参照して説明する。
【００４５】
execは、DMAC毎に存在する起動レジスタフラグで、１の場合起動、０の場合終了となる。
【００４６】
param(dmac)は、dmacに持つパラメータレジスタの状態を示しており、破線で、パラメータレジスタ内容が無効であることを示している。
【００４７】
req(dmac)は、dmacからのメモリアクセス要求の状態を示している。
【００４８】
r_descは、メモリに存在する、ディスクリプタ内容のリード要求を示し、r_L0_0は、メモリに存在する、ライン０の０番目のデータのリード要求を示している。同様に、r_L0_1は、メモリに存在する、ライン０の１番目のデータのリード要求となる。
【００４９】
data(dmac)は、前述のreq(dmac)のリード要求に対するリードデータを示しており、先読み制御回路と、dmacとの間を専用のデータラインとして設けている。
【００５０】
ここでは、説明を単純にするため、メモリアクセス要求が全てリード要求となる例を示している。ライトが必要となる場合には、これとは別のデータラインを設けても良い。
【００５１】
descはディスクリプタデータ（r_descに対する応答データ）、d_L0_0はライン０の０番目データのリードデータ（r_L0_0に対する応答データ）という意味となる。
【００５２】
param(pr)は、先読み制御回路のパラメータレジスタの状態を示しており、破線で、パラメータレジスタ内容が無効であることを示している。
【００５３】
req(pr)は、先読み制御回路からのメモリアクセス要求の状態を示している。r_L0_0は、メモリに存在する、ライン０の０番目のデータのリード要求を示している。
【００５４】
基本的に、dmacからのリード要求に比べ、先行して同じアドレスのデータをリード要求することになる。
【００５５】
data(pr)は、前述のreq(pr)のリード要求に対するリードデータを示している。
【００５６】
buff(pr)は、前述のdata(pr)で受け取ったリードデータを保持しておくバッファであり、dmacからのリード要求に応じて、バッファ内のデータをdmacに受け渡すことで、そのデータをバッファから削除する。
【００５７】
また、execが０となると、バッファ内に保持していたデータは、全て破棄される。
【００５８】
以下、図８において、時間の経過にあわせて動作を説明する。
【００５９】
ｔ１において、execが１に設定される（CPUによるソフト設定）。
【００６０】
req(dmac)にr_descを示し、dmacがディスクリプタのリード要求を発行する。
【００６１】
これは先読み制御回路に入力され、先読み制御回路にて、data(pr)にr_descを示し、ディスクリプタのリード要求を発行する。
【００６２】
ｔ２において、メモリから読み出されたデータは、data(pr)に乗せられ、先読み制御回路に入力される。
【００６３】
このデータは、dmacにも入力され、t３にて、先読み制御回路、および、dmacのそれぞれのパラメータレジスタに設定される。
【００６４】
図８において、ｔ３のタイミングで、param(dmac)、param(pr)が、無効状態から確定状態に変化している箇所がこのことを示している。
【００６５】
ｔ４において、設定されたパラメータ情報を元に、DMACが使用する最初のデータ（ライン０の０番目のデータ）を、dmac、先読み制御回路の双方が要求する。
【００６６】
ｔ５において、DMACが使用するその次のデータ（ライン０の１番目のデータ）を、dmac、先読み制御回路の双方が要求する。
【００６７】
dmacからのリード要求データは、先読み制御回路に入力されるのみであり、先読み制御回路からのリード要求に対する応答データを先読み制御回路が受け取り、これをdmacに渡すことで、dmacからのリード要求に答える。
【００６８】
ｔ６では、メモリからのリードデータを先読み制御回路に入力される（r_L0_0に対する応答データ、d_L0_0）。
【００６９】
ｔ７では、data(pr)のデータラインに存在するd_L0_0を、先読み制御回路のバッファに入力する。
【００７０】
ｔ８では、先読み制御回路のバッファに入力したd_L0_0データを、data(dmac)に乗せ、dmacに受け渡す。
【００７１】
この様にして、dmacからのリード要求データは、先読み制御回路を介して、dmacに受け渡される。
【００７２】
ｔ９からｔ１１のタイミングのおいても同様である。
【００７３】
ｔ９では、メモリからのリードデータを先読み制御回路に入力される（r_L0_１に対する応答データ、d_L0_１）。
【００７４】
ｔ１０では、data(pr)のデータラインに存在するd_L0_１を、先読み制御回路のバッファに入力する。
【００７５】
ｔ１１では、先読み制御回路のバッファに入力したd_L0_１データを、data(dmac)に乗せ、dmacに受け渡す。
【００７６】
ｔ１２では、dmacが受け取ったデータをある程度消費したため、後続のデータを新規にリード要求する。req(dmac)にr_L0_2を示す。
【００７７】
ｔ１３では、ｔ１２で要求したリードデータが、先読み制御回路のバッファに存在するため、ここからdmacに受け渡す。
【００７８】
ｔ１４、ｔ１５でも同様に、dmacがリード要求するデータが先読み制御回路のバッファに存在するため、ここからdmacに受け渡す。
【００７９】
ｔ１６では、CPUによりexecに０が設定（強制終了）されたので、先読み制御回路のバッファ内のデータがクリアされた。
【００８０】
図９は、図７に示す先読み制御回路の各部、すなわち、対象DMACパラメータレジスタ、カレントDMACパラメータレジスタ、リクエストパラメータレジスタ、リクエストバッファ、バッファメモリ管理レジスタの詳細について、それぞれ示している。
【００８１】
対象DAMCパラメータレジスタでは、先読み制御の対象となるDMACのパラメータを、そのDMACに設定されるものと同じものを保持する。
【００８２】
具体的には、本実施形態において、SA：メモリから読み出すスタートアドレス、MW：メモリ幅（２次元転送時の次のラインまでのメモリ幅）、IW：イメージライン幅、LC：処理ライン数を持つ。このパラメータを持つことで、DMA転送が可能となる。
【００８３】
カレントDMACパラメータレジスタは、先読み制御回路が、先読み実行中のパラメータを保持しておくもので、先読みを要求するごとに、値を更新させ、次に要求するアドレス、サイズを算出するために使用される。
【００８４】
本実施形態においては、C_SA：現在のスタートアドレス、C_MW：メモリ幅（２次元転送時の次のラインまでのメモリ幅）、C_IW:イメージライン幅、C_LC：現在の残り処理ライン数、L_SA：現在のラインに対するスタートアドレスを保持している。
【００８５】
リクエストパラメータレジスタは、DMAC毎に算出された、要求スタートアドレスと、要求サイズ、及び、それをID管理するためのIDを保持する。
【００８６】
リクエストバッファは、許可された要求をバッファリングしておき、リード応答が帰ったときに、IDにて、要求内容との対応付けを行うための情報を保持している。
【００８７】
本実施形態においては、ID、R_SA：要求スタートアドレス、R_IW：要求サイズの情報を保持する。
【００８８】
リード応答されたデータは、ID情報を元に、要求内と対応付けがなされ、DMAC毎に、バッファメモリ管理レジスタで管理されて、バッファメモリに保持される。
【００８９】
本実施形態におけるバッファメモリ管理レジスタの構成について、図９を参照して以下に説明する。
【００９０】
Buf_SA：バッファメモリの使用方法を制御するもので、そのDMACに対するバッファメモリの使用開始アドレスを保持する。
【００９１】
Buf_EA：バッファメモリの使用方法を制御するもので、そのDMACに対するバッファメモリの使用終了アドレスを保持する。
【００９２】
Buf_SA、Buf_EAは、CPUから設定可能な構成となっている。
【００９３】
Data_SA：バッファメモリ中に、そのDMACに対する有効なデータが記憶されているスタートのアドレスを示す。
【００９４】
Data_EA：バッファメモリ中に、そのDMACに対する有効なデータが記憶されている終了のアドレスを示す。
【００９５】
Data_EA＜Data_SAの関係となる場合もある。この場合は、Data_SAからBuf_EAまで有効なデータが記憶されていて、その後のデータは、Buf_SAからData_EAに記憶されていることを意味する。
【００９６】
PH_SA0：２次元DMAC時に意味を持つ値で、バッファメモリ中に記憶されているデータの０番目のラインのスタートアドレス（バッファメモリのアドレスではなく、DMACが要求するアドレス）を保持する。
【００９７】
SIZE0：PH_SA0が示すスタートアドレスに対し、そのラインの先頭のアドレスからどれだけ分のデータがバッファメモリに記憶されたかを示す値を保持する。
【００９８】
PH_SA１：２次元DMAC時に意味を持つ値で、バッファメモリ中に記憶されているデータの１番目のラインのスタートアドレス（バッファメモリのアドレスではなく、DMACが要求するアドレス）を保持する。
【００９９】
SIZE0：PH_SA１が示すスタートアドレスに対し、そのラインの先頭のアドレスからどれだけ分のデータがバッファメモリに記憶されたかを示す値を保持する。
【０１００】
なお、PH_SA1、SIZE1は、常に有効な値が入っているわけではなく、バッファメモリに２ライン分のデータを保持している場合にのみ有となる。
【０１０１】
図１０は、図９のリクエストパラメータレジスタにて、R_SA（要求スタートアドレス）とR_IW（要求サイズ）及びIDを生成する方法を示している。これは、図８において、execが１となって、ディスクリプタ読み出しが行われ、先読み制御回路のパラメータレジスタ設定完了後の、先読み制御回路がDMACの先読みを実行するための要求生成となる。
【０１０２】
最初にIDを０で初期化する（Ｓ１）。
【０１０３】
次に、現在値の対象DMACパラメータレジスタの値を、C_SA（スタートアドレスの現在値）、C_MW（メモリ幅の現在値）、C_IW（イメージ幅の現在値）、C_LC（現在の残り処理ライン数）、L_SA（現在のラインに対するスタートアドレス）に設定する（Ｓ２）。
【０１０４】
C_LC（現在の残り処理ライン数）が０であれば（Ｓ３／ＹＥＳ）、処理終了でENDに進む。
【０１０５】
C_LCが０でなければ（Ｓ３／ＮＯ）、R_SAにC_SAを要求スタートアドレスとして代入する（Ｓ４）。
【０１０６】
次に、C_IW（現在の残り処理イメージ・ライン数）が、２５７より小さいかどうかを調べる（Ｓ５）。
【０１０７】
C_IWが２５７より小さければ（Ｓ５／ＹＥＳ）、R_IWにはC_IW、C_IWにはIW、C_LCにはC_LC-1、C_SAにはL_SA+MW、L_SAにはC_SAをそれぞれ代入する（Ｓ６）。
【０１０８】
C_IWが２５７以上の場合には（Ｓ５／ＮＯ）、サイズを２５６として処理する（Ｓ８）。
【０１０９】
次に、IDをインクリメントし（Ｓ７）、Ｓ３に戻る。
【０１１０】
この様な処理を行うことで、要求スタートアドレス、要求アクセスサイズ、及び、それに対するIDが生成できる。
【０１１１】
図１１は、本実施形態における転送の様子を示す図である。
【０１１２】
上述したように、従来例における図６では、自分自身が発行したリードコマンドに対する未完了状態で発行できるリードコマンドの数が有限（図６ではそれぞれ２個）であるために、要求を発行できない状態に陥り、その隙間に、低い優先順位の要求（特にライト要求）が入りこみ、その後に発行された高優先順位の要求実行が遅延されてしまっていた。
【０１１３】
しかしながら、本実施形態における図１１では、先読み制御回路を持ち、ここに大容量のリードデータを保持することができるようになっていて、必要な量のデータを先行して読み出すため、低い優先順位の要求が不本意に許可され、高優先順位の要求が大幅に待たされるということがない。勿論、高優先順位の要求のアクセスが不要となった場合には、低い優先順位の要求に許可を出す。この場合、再度、高優先順次の要求源のアクセスが必要となったときには、最初のリードデータのリードレイテンシにおいて、本発明を適用しなかった場合同様に遅延量が増加することがある。しかしながら、この場合には、先行して読み出しを行っているため、時間的に余裕がある（リードしたデータをすぐに使用するわけではなく、先行して読みだしているデータを消費してから使用するなどの状態である）ため、これによる影響は問題とならない。
【０１１４】
図１２は、DMA連携の処理動作を示すフローチャートである。DMA連携には、対象DMACが、リードを行う場合とライトを行う場合の２種類がある。対象DMACがリードを行う場合、連携対象のDMACがその読み出しデータに対し、有効なデータをライトすることを待って、読み出し要求を発行するものである。一方、対象DMACがライトを行う場合、連携対象のDMACがそのライト領域に対し、既にリードを完了することを待って、ライト要求を発行するものである。
【０１１５】
図１２に示すように、連携対象DMACとのアドレスの比較にて判断を行う。DMA連携が有効ではない場合は（Ｓ１１／ＮＯ）、そのままアクセス要求の発行となる（Ｓ１４）。
【０１１６】
一方、DMA連携が有効である場合は（Ｓ１１／ＹＥＳ）、リード要求である場合（Ｓ１２／ＹＥＳ）とライト要求である場合（Ｓ１２／ＮＯ）に分かれる。
【０１１７】
リード要求である場合（Ｓ１２／ＹＥＳ）は次のようになる。すなわち、リード要求のアドレスが、ライト側DMACでライト済みのアドレス範囲内であれば（Ｓ１３／ＹＥＳ）、アクセス要求の発行となり、そうでなければ（Ｓ１３／ＮＯ）、処理終了となる。
【０１１８】
同様に、ライト要求である場合（Ｓ１２／ＮＯ）も次のようになる。すなわち、ライト要求のアドレスが、リード側DMACでリード済みのアドレス範囲内であれば（Ｓ１５／ＹＥＳ）、アクセス要求の発行となり、そうでなければ（Ｓ１５／ＮＯ）、処理終了となる。
【０１１９】
なお、DMA連携処理は、先読み制御回路の処理となり、図１１で示した、要求スタートアドレス、要求アクセスサイズ、及び、それに対するIDが生成後、その要求を実際にPCI Expressのアービタに要求するかどうかの判断に使用される。
【０１２０】
図１３は、アービタの調停の様子（ラウンドロビン方式）を示している。このアービタを使用することで、DMAC連携を行った場合、アクセスが最適に実行される。以下、図１３を用いて説明する。
【０１２１】
ｔ１の状態での優先順位が示されている。Ｅ／Ｆは、ＥまたはＦを示しており、ＥとＦとの間でどちらが高い優先順位になるかを順番に切り替える。
【０１２２】
ｔ１では上から要求のあるもの、もしくは、それ自体は要求を発行していないが、連携先のDMACが要求を発行しているかを見ていき、最初のその条件が成立したものに許可を与える。
【０１２３】
ｔ１の例では、Ｂに許可が与えられ、ｔ２での優先順位が、Ｂを一番高い優先順位にして、入れ替える。
【０１２４】
ｔ３では、Ｇ、Ｈ、Ｃとも要求を出していないが、Ｃの連携先DMACであるＪが要求を発行している例である。
【０１２５】
この場合、Ｊが許可され、Ｃが許可された場合と同様に、Ｉ／Ｊを一番高い優先順位にして、入れ替える（ｔ４参照）。
【０１２６】
以上の様に入れ替えることで、連携先のDMACの処理待ちが原因で、要求を発行できない要求源の処理効率を改善する。
【０１２７】
以上説明したように、本実施形態によれば、例えばPCI Expressなどのような、要求コマンドと、それに対する応答とが分離されていて、要求コマンドに対する応答を待つことなく、次々と要求コマンドを発行可能なバスにおいて、転送レートの最悪値を保証する必要のある要求源に対し、高い保証値を達成することができる。
【０１２８】
従来、PCI Expressの様に、要求コマンドと、それに対する応答とが分離されているバスにおいても、PCIバス等に最適な従来の調停方法をそのまま使用していた。
【０１２９】
PCI Expressの様に、要求コマンドと、それに対する応答とが分離されているバスにおいては、応答を待たずにバス調停を行うので、高優先順位の要求源からの要求の隙間をついて、低優先順位の要求源からの要求が多数許可され、キューに積まれ処理待ちとなってしまうので、その後に許可された高優先順位の要求源に対する実行が遅延することとなる。
【０１３０】
特に、この遅延時間の変動幅が大きく、最悪ケースでもカバーできるよう充分大きな値を設定し、その値を用いて機器の設計を行っていた。このため、高優先順位の要求源に対して、高い転送レートを実現することができなかった。
【０１３１】
そこで、本実施形態では、計画的に調停可能な環境を構築し、その環境下で想定どおりの調停を行っていくので、最悪値を保証する必要のある要求源に対し、そのバスが持つ転送能力を無駄なく割り当てることができ、高い保証値を達成することができる。
【０１３２】
以上、本発明の実施形態について説明したが、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変形が可能である。
【０１３３】
例えば、上述した実施形態における動作は、ハードウェア、または、ソフトウェア、あるいは、両者の複合構成によって実行することも可能である。
【０１３４】
ソフトウェアによる処理を実行する場合には、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれているコンピュータ内のメモリにインストールして実行させてもよい。あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させてもよい。
【０１３５】
例えば、プログラムは、記録媒体としてのハードディスクやＲＯＭ（Read Only Memory）に予め記録しておくことが可能である。あるいは、プログラムは、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory），ＭＯ（Magneto optical）ディスク，ＤＶＤ（Digital Versatile Disc）、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的、あるいは、永続的に格納（記録）しておくことが可能である。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することが可能である。
【０１３６】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送してもよい。または、ＬＡＮ（Local Area Network）、インターネットといったネットワークを介して、コンピュータに有線で転送してもよい。コンピュータでは、転送されてきたプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることが可能である。
【０１３７】
また、上記実施形態で説明した処理動作に従って時系列的に実行されるのみならず、処理を実行する装置の処理能力、あるいは、必要に応じて並列的にあるいは個別に実行するように構築することも可能である。
【産業上の利用可能性】
【０１３８】
本発明は、要求コマンドと、それに対する応答とが分離されていて、要求コマンドに対する応答を待つことなく、次々と要求コマンドを発行可能なバスを利用してデータ転送を行う装置・機器、システム、方法、プログラム等に適用できる。
【符号の説明】
【０１３９】
１０１    スキャナユニット
１０２    プロッタユニット
１０３    エンジン制御ASIC
１０４    コントローラASIC
１０５    CPU
１０６    メモリ
１０７    PCI Express
１０８    PCI Express
１０９    SSTL
２０１    PCI Expressのルートコンプレックス
２０２    PCI Expressのエンドポイント
２０３〜２０６    ビデオ出力コントローラ
２０７〜２１０    リードDMAC
２１１    ビデオ入力コントローラ
２１２    ライトDMAC
２１３〜２１６    コントローラユニット
２１７〜２２０    リードDMAC
２２１〜２２４    ライトDMAC
２２５    先読み制御回路
２２６    アービタ
２２７    セレクタ
２２８    PCI Express
【先行技術文献】
【特許文献】
【０１４０】
【特許文献１】特開２００７−２４９８１６号公報
【図１】
2011053895.tif 000003
【図２】
2011053895.tif 000004
【図３】
2011053895.tif 000005
【図４】
2011053895.tif 000006
【図５】
2011053895.tif 000007
【図６】
2011053895.tif 000008
【図７】
2011053895.tif 000009
【図８】
2011053895.tif 000010
【図９】
2011053895.tif 000011
【図１０】
2011053895.tif 000012
【図１１】
2011053895.tif 000013
【図１２】
2011053895.tif 000014
【図１３】
2011053895.tif 000015