説明

データ通信装置

【課題】要求コマンドと、それに対する応答とが分離されていて、要求コマンドに対する応答を待つことなく、次々と要求コマンドを発行可能なバスにおいて、転送レートの最悪値を保証する必要のある要求源に対し、高い保証値を達成するデータ通信装置を提供する。
【解決手段】スピリット・トランザクションのプロトコルを用いるインタフェースを介してデータ転送を行うデータ通信装置において、DMACの設定情報から先行してメモリアクセス要求を発行し、対象DMACの正常及び異常終了により先行リードアクセスしていたデータを無効化する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、スピリット・トランザクションのプロトコルを用いるインタフェースを介したデータ転送を制御するデータ通信装置に関する。
【背景技術】
【0002】
従来のPCIバスなどのパラレル方式のバスでは、複数のデータビットの同期合わせや、クロストークの発生により、高速化が難しいという問題があるが、シリアル方式では、これらの問題に対して有利であり、パラレル方式のバスよりも、高速化しやすくなっている。
【0003】
また、これとは別に、PCI Expressなどの新規のバスでは、要求コマンドと、それに対する応答とが分離されており、要求コマンドに対する応答を待つことなく、次々と要求コマンドを発行できるので、バスの使用効率を向上できることが既に知られている。
【0004】
PCI Expressは、PC(Personal Computer)等で使用されることが多いが、最近では、デジタル複写機や複合機(MFP:Multi Function Peripheral)等の画像処理装置におけるデバイス間のインタフェースに使用され始めている。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、PCI Expressなどの新規のバスでは、転送レートの最悪値を保証する必要のある要求源に対し、その保証値を高くできないという問題があった。要求源の例としては、ビデオ出力データの入出力のDMAC(Direct Memory Access Controller)などが挙げられ、単位時間あたりの転送レートを維持できないと異常画像となる。
【0006】
すなわち、PCI Expressなどの新規のバスでは、要求コマンドに対する応答を待つことなく、次々と要求コマンドを発行することができるという特性を有効に利用するため、要求コマンドを保持しておくためのバッファ(キュー)を持ち、発行された要求コマンドを、このキューに一時的に蓄えられる構成としている。
【0007】
このような構成とすることで、PCI Expressなどに対し、高い要求コマンド発行レートを達成することが可能となったが、要求源側としては、常にこのレートで要求を発行するわけではない。優先順位の高いDMACであっても、既に、必要としているリード(read)/ライト(write)アクセス要求と、現在処理を実行している処理対処のアドレスデータから、単純増加/減少により算出できるアドレスに対する要求を発行する程度である。
【0008】
このため、高優先順位の要求源からの要求が不参加の状態で、バス調停が行われることとなる。
【0009】
このとき、低優先順位の要求源からの要求が多数許可されてしまい、キューに積まれ、実行待ちの状態となる。
【0010】
その後、高優先順位の要求源からの要求が発行され、その要求に対する許可が与えられ、キューに積まれることになる。しかし、このアクセス実行には、それ以前にキューに積まれている実行を待つ必要があり、不本意のバス調停がされて、キューの積まれている要求の実行時間分を考慮して保証値とする必要がある。よって、その保証値を高くできないという問題があった。
【0011】
なお、本発明に関連する従来例として、特許文献1(特開2007−249816号公報)がある。この特許文献1の発明は、トランザクション層の送信バッファが介在している場合であっても、アービタの設定と実際のトラフィックのプライオリティの整合性を維持しつつ優先度の調停を行うことができるものであり、統計情報生成手段を持ち、その結果に応じてリアルタイムにアービトレーションテーブルを変更することでそれを実現している。
【0012】
しかし、この特許文献1の発明は、実際のパケットデータの統計情報を使用してアービタを調整するものであり、その精度が未知であり、転送レートの最悪値を保証する必要のある要求源に対し、保証値の設定が容易ではない。
【0013】
本発明は、上記事情に鑑みてなされたものであり、要求コマンドと、それに対する応答とが分離されていて、要求コマンドに対する応答を待つことなく、次々と要求コマンドを発行可能なバスにおいて、転送レートの最悪値を保証する必要のある要求源に対し、高い保証値を達成するデータ通信装置を提供することを目的とする。
【課題を解決するための手段】
【0014】
かかる目的を達成するために、本発明のデータ通信装置は、スピリット・トランザクションのプロトコルを用いるインタフェースを介してデータ転送を行うデータ通信装置において、DMACの設定情報から先行してメモリアクセス要求を発行し、対象DMACの正常及び異常終了により先行リードアクセスしていたデータを無効化することを特徴とする。
【0015】
本発明のデータ通信装置において、先行リード対象DMACに対し、それとは別のDMACのライトが、先行リード対象アドレス領域に行われるまで、先行リードアクセスを実行しないことを特徴とする。
【0016】
本発明のデータ通信装置において、先行リードアクセスしたデータを保持しておくメモリの分割方法をプログラマブルとしたことを特徴とする。
【0017】
本発明のデータ通信装置において、DMACからのライトアクセスを、それとは別のDMACが、その対象アドレス領域に対して行われるまで、ライトアクセスを実行しないことを特徴とする。
【0018】
本発明のデータ通信装置において、アービタの調停方式として、ラウンドロビン方式で調停を行うことを特徴とする。
【0019】
本発明のデータ通信装置において、要求源からのアクセス要求が存在しないことを理由に、要求源に許可を与えない場合、要求源のアクセス要求に対し、依存関係のあるDMACからのアクセス要求源に対して許可を与えることを特徴とする。
【発明の効果】
【0020】
本発明によれば、要求コマンドと、それに対する応答とが分離されていて、要求コマンドに対する応答を待つことなく、次々と要求コマンドを発行可能なバスにおいて、転送レートの最悪値を保証する必要のある要求源に対し、高い保証値を達成することができる。
【図面の簡単な説明】
【0021】
【図1】本発明の一実施形態に係る複合機(MFP)の構成例を示す概念図である。
【図2】本発明の一実施形態に係るコントローラASIC部分の構成例を示すブロック図である。
【図3】本発明の一実施形態に係るPCI Expressのエンドポイントの内部構成を示すブロック図である。
【図4】PCIバスなどで採用されているインタロック型バスの転送について示す図である。
【図5】PCI Expressなどに採用されているスピリット・トランザクション型バスの転送を示す図である。
【図6】スピリット・トランザクション型バスでの従来の転送の様子を示す図である。
【図7】本発明の一実施形態に係る先読み制御回路の構成を示すブロック図である。
【図8】本発明の一実施形態に係る先読み制御回路を設けた場合におけるデータの流れを示す図である。
【図9】本発明の一実施形態に係る先読み制御回路内の各部(対象DMACパラメータレジスタ、カレントDMACパラメータレジスタ、リクエストパラメータレジスタ、リクエストバッファ、バッファメモリ管理レジスタ)の詳細を示す図である。
【図10】本発明の一実施形態に係るリクエストパラメータレジスタの動作例を示すフローチャートである。
【図11】本発明の一実施形態に係る先読み制御回路を用いたときの転送の様子を示す図である。
【図12】本発明の一実施形態に係る先読み制御回路のDMA連携の動作を示すフローチャートである。
【図13】本発明の一実施形態に係るアービタの調停の様子を示す図である。
【発明を実施するための形態】
【0022】
以下、本発明を実施するための形態(実施形態)について添付図面を参照して詳細に説明する。
【0023】
図1は、本発明の画像処理装置の一実施形態である複合機(MFP)の構成を示す概念図である。図1に示すように、本実施形態の画像処理装置は、原稿を読み取るスキャナユニット101、印字出力するプロッタユニット102、スキャナユニット101とプロッタユニット102を制御するためのエンジン制御ASIC(Application Specific Integrated Circuit)103、複合機全体を制御するためのコントローラASIC(Application Specific Integrated Circuit)104、複合機全体を制御するためのCPU(Central Processing Unit)105、CPU105が動作するためのプログラムやデータ及び画像データなどを記憶しておくためのメモリ106、エンジン制御ASIC103とコントローラASIC104間のインタフェースであるPCI Express107、コントローラASIC104とCPU105間のインタフェースであるPCI Express108、CPU105とメモリ106間のインタフェースであるSSTL108を備える。メモリ106は、CPU105に内蔵しているメモリコントローラにて制御されており、SSTL規格でインタフェースされている。
【0024】
図2は、図1におけるコントローラASIC104(本発明のデータ通信装置の一実施形態)の部分の構成例を記載したものである。
【0025】
201は、PCI Expressのルートコンプレックスである。PCI Expressのルートコンプレックスは、システムのI/O階層で最上位に位置するものであり、末端としては、図1におけるエンジン制御ASIC103となる。
【0026】
一方、202は、PCI Expressのエンドポイントである。PCI Expressのエンドポイントは、PCI ExpressのI/O構造で末端に位置するものである。これに対するPCI Expressルートコンプレックスは、図1におけるCPU105である。これにより、コントローラASIC104は、エンジン制御ASIC103、CPU105とインタフェースする。
【0027】
203〜206は、印字データを出力制御するためのビデオ出力コントローラであり、0〜3までの4ch分ある。これらは、リードDMAC207〜210を持ち、コントローラASIC外部のメモリからデータをリードする。
【0028】
211は、ビデオ入力コントローラであり、スキャナでの読み取りデータを制御する。PCI Express228を介し、エンジン制御ASIC103からのスキャナデータを、PCI Expressのルートコンプレックス201を介して受け取る。このビデオ入力コントローラ211は、ライトDMAC212を持ち、コントローラASIC104外部のメモリへデータをライトする。
【0029】
213〜216は、圧縮データの伸張器などのコントローラユニット0〜3であり、各コントローラユニット0〜3は、コントローラASIC104外部のメモリから元データを読み出すためのリードDMAC217〜220と、処理済みのデータをコントローラASIC104外部のメモリにライトするためのライトDMAC221〜224を持つ。
【0030】
226は、アービタであり、リード/ライトDMACからのコントローラASIC104外部のメモリのアクセス要求を調停する。調停方式としてはラウンドロビンで行う。
【0031】
225は、先読み制御回路であり、DMACに設定された設定情報から、今後必要となるメモリアクセスを検知し、先行してメモリに対してリードを実行する。また、ライト要求に対しても、それとは別のDMACがその対象アドレス領域に対して行われるまで、ライトアクセスを実行しない制御も行う。
【0032】
227は、セレクタであり、PCI Expressのルートコンプレックス201でエンジン制御ASIC103に出力するデータを選択する。
【0033】
図3は、図2のPCI Expressのエンドポイント202の内部構成を示すブロック図である。図3に示すように、PCI Expressのエンドポイント202は、Transaction Layer、 Data Link Layer 、Physical MAC Layerの3つの層に分けることができる。
【0034】
Transaction Layerには、送信用バッファ及び受信用のバッファがあり、要求コマンドやデータを一時的に蓄えることができるようになっている。このため、送信用バッファ、受信用バッファ効果により、転送効率を高めるという効果があるが、逆に、転送レートの最悪値を保証する必要のある要求源に対し、その保証値を高くできないという問題があった。
【0035】
図4は、PCIバスなどで採用されているインタロック型バスの転送について示している。リード要求発行後、それに対するリードデータを受け取るまで、次の要求コマンドを発行できない。
【0036】
一方、図5は、PCI Expressなどに採用されているスピリット・トランザクション型バスの転送を示している。こちらは、リード要求に対する応答を待つことなく、次の要求コマンドを発行することができる。このため、同じ、リードレイテンシであっても、スピリット・トランザクション型バスの方が転送レートを高めることができる。
【0037】
図6は、スピリット・トランザクション型バスでの従来の転送の様子を示している。t0時刻で、AとBとCの要求源から要求が発行されている。ここで、AとBが優先順位が高く、Cが優先順位の低い要求源である。アービタは、Aからの要求に対し許可を与え、受付済みコマンドのバッファにAからの要求R_A0(Aからの0番目のリード要求)を積む。
【0038】
t1時刻で、アービタは、Bからの要求に対し許可を与え、受付済みコマンドのバッファにBからの要求R_B0(Bからの0番目のリード要求)を積む。また、この時刻に、先ほどバッファに積んだR_A0が送信側伝送路に転送される。
【0039】
t2時刻で、アービタは、Aからの要求に対し許可を与え、受付済みコマンドのバッファにAからの要求R_A1(Aからの1番目のリード要求)を積む。アービタの優先順位の関係で、Cには許可を与えない。また、この時刻に、先ほどバッファに積んだR_B0が送信側伝送路に転送される。また、この時刻では、受信側伝送路に、R_A0要求に対するリードデータが転送される。但し、転送データ量の関係から、リードコマンドの転送に比べ、リードデータの転送に要する時間が長く、そのことを図6のサイズの違いで表している。
【0040】
この様にして転送を実施していくと、自分自身が発行したリードコマンドに対する未完了状態で発行できるリードコマンドの数が有限(図6ではそれぞれ2個)であるために、要求を発行したくても発行できない状態が発生する。Aからの要求は、t4でR_A0に対するリードデータが帰ったことで発行可能となっている(t8でも、R_A1に対するリードデータが帰ったことで発行可能となっている)。
【0041】
Bについても同様である。この状態となると、A、Bとも、要求を発行したくても、発行できない状態となり、この隙間に、Cからの要求を許可してしまう。このCからの要求がライト要求の場合、コマンドとライトデータを送信側伝送路で送るため、転送に要する時間が長く、その伝送が終わってから、次に許可されたコマンドを送信側伝送路で送ることになり、高い優先順位の要求源であっても、リードレイテンシが長くなる。
【0042】
以上のことから、本実施形態では、図2の先読み制御回路225を設けて対応する。図7は、その先読み制御回路の構造を示すブロック図である。
【0043】
先読み制御回路225は、図7に示すように、対象DMACパラメータレジスタ、リクエストパラメータレジスタ、バッファメモリ管理レジスタ、カレントDMACパラメータレジスタ、リクエストバッファ、先読み制御回路全体制御、及び、バッファメモリコントローラ、バッファメモリにて構成される。
【0044】
図8は、先読み制御回路を設けた場合におけるデータの流れを示す図である。なお、図8で説明するデータの流れは、図1において、コントローラASIC104内のDMACが、メモリ106に存在するディスクリプタ(DMAC実行のパラメータ)及びデータをリードしてきて、処理を実行するまでの様子を示している。以下、図8を参照して説明する。
【0045】
execは、DMAC毎に存在する起動レジスタフラグで、1の場合起動、0の場合終了となる。
【0046】
param(dmac)は、dmacに持つパラメータレジスタの状態を示しており、破線で、パラメータレジスタ内容が無効であることを示している。
【0047】
req(dmac)は、dmacからのメモリアクセス要求の状態を示している。
【0048】
r_descは、メモリに存在する、ディスクリプタ内容のリード要求を示し、r_L0_0は、メモリに存在する、ライン0の0番目のデータのリード要求を示している。同様に、r_L0_1は、メモリに存在する、ライン0の1番目のデータのリード要求となる。
【0049】
data(dmac)は、前述のreq(dmac)のリード要求に対するリードデータを示しており、先読み制御回路と、dmacとの間を専用のデータラインとして設けている。
【0050】
ここでは、説明を単純にするため、メモリアクセス要求が全てリード要求となる例を示している。ライトが必要となる場合には、これとは別のデータラインを設けても良い。
【0051】
descはディスクリプタデータ(r_descに対する応答データ)、d_L0_0はライン0の0番目データのリードデータ(r_L0_0に対する応答データ)という意味となる。
【0052】
param(pr)は、先読み制御回路のパラメータレジスタの状態を示しており、破線で、パラメータレジスタ内容が無効であることを示している。
【0053】
req(pr)は、先読み制御回路からのメモリアクセス要求の状態を示している。r_L0_0は、メモリに存在する、ライン0の0番目のデータのリード要求を示している。
【0054】
基本的に、dmacからのリード要求に比べ、先行して同じアドレスのデータをリード要求することになる。
【0055】
data(pr)は、前述のreq(pr)のリード要求に対するリードデータを示している。
【0056】
buff(pr)は、前述のdata(pr)で受け取ったリードデータを保持しておくバッファであり、dmacからのリード要求に応じて、バッファ内のデータをdmacに受け渡すことで、そのデータをバッファから削除する。
【0057】
また、execが0となると、バッファ内に保持していたデータは、全て破棄される。
【0058】
以下、図8において、時間の経過にあわせて動作を説明する。
【0059】
t1において、execが1に設定される(CPUによるソフト設定)。
【0060】
req(dmac)にr_descを示し、dmacがディスクリプタのリード要求を発行する。
【0061】
これは先読み制御回路に入力され、先読み制御回路にて、data(pr)にr_descを示し、ディスクリプタのリード要求を発行する。
【0062】
t2において、メモリから読み出されたデータは、data(pr)に乗せられ、先読み制御回路に入力される。
【0063】
このデータは、dmacにも入力され、t3にて、先読み制御回路、および、dmacのそれぞれのパラメータレジスタに設定される。
【0064】
図8において、t3のタイミングで、param(dmac)、param(pr)が、無効状態から確定状態に変化している箇所がこのことを示している。
【0065】
t4において、設定されたパラメータ情報を元に、DMACが使用する最初のデータ(ライン0の0番目のデータ)を、dmac、先読み制御回路の双方が要求する。
【0066】
t5において、DMACが使用するその次のデータ(ライン0の1番目のデータ)を、dmac、先読み制御回路の双方が要求する。
【0067】
dmacからのリード要求データは、先読み制御回路に入力されるのみであり、先読み制御回路からのリード要求に対する応答データを先読み制御回路が受け取り、これをdmacに渡すことで、dmacからのリード要求に答える。
【0068】
t6では、メモリからのリードデータを先読み制御回路に入力される(r_L0_0に対する応答データ、d_L0_0)。
【0069】
t7では、data(pr)のデータラインに存在するd_L0_0を、先読み制御回路のバッファに入力する。
【0070】
t8では、先読み制御回路のバッファに入力したd_L0_0データを、data(dmac)に乗せ、dmacに受け渡す。
【0071】
この様にして、dmacからのリード要求データは、先読み制御回路を介して、dmacに受け渡される。
【0072】
t9からt11のタイミングのおいても同様である。
【0073】
t9では、メモリからのリードデータを先読み制御回路に入力される(r_L0_1に対する応答データ、d_L0_1)。
【0074】
t10では、data(pr)のデータラインに存在するd_L0_1を、先読み制御回路のバッファに入力する。
【0075】
t11では、先読み制御回路のバッファに入力したd_L0_1データを、data(dmac)に乗せ、dmacに受け渡す。
【0076】
t12では、dmacが受け取ったデータをある程度消費したため、後続のデータを新規にリード要求する。req(dmac)にr_L0_2を示す。
【0077】
t13では、t12で要求したリードデータが、先読み制御回路のバッファに存在するため、ここからdmacに受け渡す。
【0078】
t14、t15でも同様に、dmacがリード要求するデータが先読み制御回路のバッファに存在するため、ここからdmacに受け渡す。
【0079】
t16では、CPUによりexecに0が設定(強制終了)されたので、先読み制御回路のバッファ内のデータがクリアされた。
【0080】
図9は、図7に示す先読み制御回路の各部、すなわち、対象DMACパラメータレジスタ、カレントDMACパラメータレジスタ、リクエストパラメータレジスタ、リクエストバッファ、バッファメモリ管理レジスタの詳細について、それぞれ示している。
【0081】
対象DAMCパラメータレジスタでは、先読み制御の対象となるDMACのパラメータを、そのDMACに設定されるものと同じものを保持する。
【0082】
具体的には、本実施形態において、SA:メモリから読み出すスタートアドレス、MW:メモリ幅(2次元転送時の次のラインまでのメモリ幅)、IW:イメージライン幅、LC:処理ライン数を持つ。このパラメータを持つことで、DMA転送が可能となる。
【0083】
カレントDMACパラメータレジスタは、先読み制御回路が、先読み実行中のパラメータを保持しておくもので、先読みを要求するごとに、値を更新させ、次に要求するアドレス、サイズを算出するために使用される。
【0084】
本実施形態においては、C_SA:現在のスタートアドレス、C_MW:メモリ幅(2次元転送時の次のラインまでのメモリ幅)、C_IW:イメージライン幅、C_LC:現在の残り処理ライン数、L_SA:現在のラインに対するスタートアドレスを保持している。
【0085】
リクエストパラメータレジスタは、DMAC毎に算出された、要求スタートアドレスと、要求サイズ、及び、それをID管理するためのIDを保持する。
【0086】
リクエストバッファは、許可された要求をバッファリングしておき、リード応答が帰ったときに、IDにて、要求内容との対応付けを行うための情報を保持している。
【0087】
本実施形態においては、ID、R_SA:要求スタートアドレス、R_IW:要求サイズの情報を保持する。
【0088】
リード応答されたデータは、ID情報を元に、要求内と対応付けがなされ、DMAC毎に、バッファメモリ管理レジスタで管理されて、バッファメモリに保持される。
【0089】
本実施形態におけるバッファメモリ管理レジスタの構成について、図9を参照して以下に説明する。
【0090】
Buf_SA:バッファメモリの使用方法を制御するもので、そのDMACに対するバッファメモリの使用開始アドレスを保持する。
【0091】
Buf_EA:バッファメモリの使用方法を制御するもので、そのDMACに対するバッファメモリの使用終了アドレスを保持する。
【0092】
Buf_SA、Buf_EAは、CPUから設定可能な構成となっている。
【0093】
Data_SA:バッファメモリ中に、そのDMACに対する有効なデータが記憶されているスタートのアドレスを示す。
【0094】
Data_EA:バッファメモリ中に、そのDMACに対する有効なデータが記憶されている終了のアドレスを示す。
【0095】
Data_EA<Data_SAの関係となる場合もある。この場合は、Data_SAからBuf_EAまで有効なデータが記憶されていて、その後のデータは、Buf_SAからData_EAに記憶されていることを意味する。
【0096】
PH_SA0:2次元DMAC時に意味を持つ値で、バッファメモリ中に記憶されているデータの0番目のラインのスタートアドレス(バッファメモリのアドレスではなく、DMACが要求するアドレス)を保持する。
【0097】
SIZE0:PH_SA0が示すスタートアドレスに対し、そのラインの先頭のアドレスからどれだけ分のデータがバッファメモリに記憶されたかを示す値を保持する。
【0098】
PH_SA1:2次元DMAC時に意味を持つ値で、バッファメモリ中に記憶されているデータの1番目のラインのスタートアドレス(バッファメモリのアドレスではなく、DMACが要求するアドレス)を保持する。
【0099】
SIZE0:PH_SA1が示すスタートアドレスに対し、そのラインの先頭のアドレスからどれだけ分のデータがバッファメモリに記憶されたかを示す値を保持する。
【0100】
なお、PH_SA1、SIZE1は、常に有効な値が入っているわけではなく、バッファメモリに2ライン分のデータを保持している場合にのみ有となる。
【0101】
図10は、図9のリクエストパラメータレジスタにて、R_SA(要求スタートアドレス)とR_IW(要求サイズ)及びIDを生成する方法を示している。これは、図8において、execが1となって、ディスクリプタ読み出しが行われ、先読み制御回路のパラメータレジスタ設定完了後の、先読み制御回路がDMACの先読みを実行するための要求生成となる。
【0102】
最初にIDを0で初期化する(S1)。
【0103】
次に、現在値の対象DMACパラメータレジスタの値を、C_SA(スタートアドレスの現在値)、C_MW(メモリ幅の現在値)、C_IW(イメージ幅の現在値)、C_LC(現在の残り処理ライン数)、L_SA(現在のラインに対するスタートアドレス)に設定する(S2)。
【0104】
C_LC(現在の残り処理ライン数)が0であれば(S3/YES)、処理終了でENDに進む。
【0105】
C_LCが0でなければ(S3/NO)、R_SAにC_SAを要求スタートアドレスとして代入する(S4)。
【0106】
次に、C_IW(現在の残り処理イメージ・ライン数)が、257より小さいかどうかを調べる(S5)。
【0107】
C_IWが257より小さければ(S5/YES)、R_IWにはC_IW、C_IWにはIW、C_LCにはC_LC-1、C_SAにはL_SA+MW、L_SAにはC_SAをそれぞれ代入する(S6)。
【0108】
C_IWが257以上の場合には(S5/NO)、サイズを256として処理する(S8)。
【0109】
次に、IDをインクリメントし(S7)、S3に戻る。
【0110】
この様な処理を行うことで、要求スタートアドレス、要求アクセスサイズ、及び、それに対するIDが生成できる。
【0111】
図11は、本実施形態における転送の様子を示す図である。
【0112】
上述したように、従来例における図6では、自分自身が発行したリードコマンドに対する未完了状態で発行できるリードコマンドの数が有限(図6ではそれぞれ2個)であるために、要求を発行できない状態に陥り、その隙間に、低い優先順位の要求(特にライト要求)が入りこみ、その後に発行された高優先順位の要求実行が遅延されてしまっていた。
【0113】
しかしながら、本実施形態における図11では、先読み制御回路を持ち、ここに大容量のリードデータを保持することができるようになっていて、必要な量のデータを先行して読み出すため、低い優先順位の要求が不本意に許可され、高優先順位の要求が大幅に待たされるということがない。勿論、高優先順位の要求のアクセスが不要となった場合には、低い優先順位の要求に許可を出す。この場合、再度、高優先順次の要求源のアクセスが必要となったときには、最初のリードデータのリードレイテンシにおいて、本発明を適用しなかった場合同様に遅延量が増加することがある。しかしながら、この場合には、先行して読み出しを行っているため、時間的に余裕がある(リードしたデータをすぐに使用するわけではなく、先行して読みだしているデータを消費してから使用するなどの状態である)ため、これによる影響は問題とならない。
【0114】
図12は、DMA連携の処理動作を示すフローチャートである。DMA連携には、対象DMACが、リードを行う場合とライトを行う場合の2種類がある。対象DMACがリードを行う場合、連携対象のDMACがその読み出しデータに対し、有効なデータをライトすることを待って、読み出し要求を発行するものである。一方、対象DMACがライトを行う場合、連携対象のDMACがそのライト領域に対し、既にリードを完了することを待って、ライト要求を発行するものである。
【0115】
図12に示すように、連携対象DMACとのアドレスの比較にて判断を行う。DMA連携が有効ではない場合は(S11/NO)、そのままアクセス要求の発行となる(S14)。
【0116】
一方、DMA連携が有効である場合は(S11/YES)、リード要求である場合(S12/YES)とライト要求である場合(S12/NO)に分かれる。
【0117】
リード要求である場合(S12/YES)は次のようになる。すなわち、リード要求のアドレスが、ライト側DMACでライト済みのアドレス範囲内であれば(S13/YES)、アクセス要求の発行となり、そうでなければ(S13/NO)、処理終了となる。
【0118】
同様に、ライト要求である場合(S12/NO)も次のようになる。すなわち、ライト要求のアドレスが、リード側DMACでリード済みのアドレス範囲内であれば(S15/YES)、アクセス要求の発行となり、そうでなければ(S15/NO)、処理終了となる。
【0119】
なお、DMA連携処理は、先読み制御回路の処理となり、図11で示した、要求スタートアドレス、要求アクセスサイズ、及び、それに対するIDが生成後、その要求を実際にPCI Expressのアービタに要求するかどうかの判断に使用される。
【0120】
図13は、アービタの調停の様子(ラウンドロビン方式)を示している。このアービタを使用することで、DMAC連携を行った場合、アクセスが最適に実行される。以下、図13を用いて説明する。
【0121】
t1の状態での優先順位が示されている。E/Fは、EまたはFを示しており、EとFとの間でどちらが高い優先順位になるかを順番に切り替える。
【0122】
t1では上から要求のあるもの、もしくは、それ自体は要求を発行していないが、連携先のDMACが要求を発行しているかを見ていき、最初のその条件が成立したものに許可を与える。
【0123】
t1の例では、Bに許可が与えられ、t2での優先順位が、Bを一番高い優先順位にして、入れ替える。
【0124】
t3では、G、H、Cとも要求を出していないが、Cの連携先DMACであるJが要求を発行している例である。
【0125】
この場合、Jが許可され、Cが許可された場合と同様に、I/Jを一番高い優先順位にして、入れ替える(t4参照)。
【0126】
以上の様に入れ替えることで、連携先のDMACの処理待ちが原因で、要求を発行できない要求源の処理効率を改善する。
【0127】
以上説明したように、本実施形態によれば、例えばPCI Expressなどのような、要求コマンドと、それに対する応答とが分離されていて、要求コマンドに対する応答を待つことなく、次々と要求コマンドを発行可能なバスにおいて、転送レートの最悪値を保証する必要のある要求源に対し、高い保証値を達成することができる。
【0128】
従来、PCI Expressの様に、要求コマンドと、それに対する応答とが分離されているバスにおいても、PCIバス等に最適な従来の調停方法をそのまま使用していた。
【0129】
PCI Expressの様に、要求コマンドと、それに対する応答とが分離されているバスにおいては、応答を待たずにバス調停を行うので、高優先順位の要求源からの要求の隙間をついて、低優先順位の要求源からの要求が多数許可され、キューに積まれ処理待ちとなってしまうので、その後に許可された高優先順位の要求源に対する実行が遅延することとなる。
【0130】
特に、この遅延時間の変動幅が大きく、最悪ケースでもカバーできるよう充分大きな値を設定し、その値を用いて機器の設計を行っていた。このため、高優先順位の要求源に対して、高い転送レートを実現することができなかった。
【0131】
そこで、本実施形態では、計画的に調停可能な環境を構築し、その環境下で想定どおりの調停を行っていくので、最悪値を保証する必要のある要求源に対し、そのバスが持つ転送能力を無駄なく割り当てることができ、高い保証値を達成することができる。
【0132】
以上、本発明の実施形態について説明したが、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変形が可能である。
【0133】
例えば、上述した実施形態における動作は、ハードウェア、または、ソフトウェア、あるいは、両者の複合構成によって実行することも可能である。
【0134】
ソフトウェアによる処理を実行する場合には、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれているコンピュータ内のメモリにインストールして実行させてもよい。あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させてもよい。
【0135】
例えば、プログラムは、記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことが可能である。あるいは、プログラムは、CD−ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的、あるいは、永続的に格納(記録)しておくことが可能である。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することが可能である。
【0136】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送してもよい。または、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送してもよい。コンピュータでは、転送されてきたプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることが可能である。
【0137】
また、上記実施形態で説明した処理動作に従って時系列的に実行されるのみならず、処理を実行する装置の処理能力、あるいは、必要に応じて並列的にあるいは個別に実行するように構築することも可能である。
【産業上の利用可能性】
【0138】
本発明は、要求コマンドと、それに対する応答とが分離されていて、要求コマンドに対する応答を待つことなく、次々と要求コマンドを発行可能なバスを利用してデータ転送を行う装置・機器、システム、方法、プログラム等に適用できる。
【符号の説明】
【0139】
101 スキャナユニット
102 プロッタユニット
103 エンジン制御ASIC
104 コントローラASIC
105 CPU
106 メモリ
107 PCI Express
108 PCI Express
109 SSTL
201 PCI Expressのルートコンプレックス
202 PCI Expressのエンドポイント
203〜206 ビデオ出力コントローラ
207〜210 リードDMAC
211 ビデオ入力コントローラ
212 ライトDMAC
213〜216 コントローラユニット
217〜220 リードDMAC
221〜224 ライトDMAC
225 先読み制御回路
226 アービタ
227 セレクタ
228 PCI Express
【先行技術文献】
【特許文献】
【0140】
【特許文献1】特開2007−249816号公報

【特許請求の範囲】
【請求項1】
スピリット・トランザクションのプロトコルを用いるインタフェースを介してデータ転送を行うデータ通信装置において、
DMACの設定情報から先行してメモリアクセス要求を発行し、対象DMACの正常及び異常終了により先行リードアクセスしていたデータを無効化することを特徴とするデータ通信装置。
【請求項2】
先行リード対象DMACに対し、それとは別のDMACのライトが、先行リード対象アドレス領域に行われるまで、先行リードアクセスを実行しないことを特徴とする請求項1のデータ通信装置。
【請求項3】
先行リードアクセスしたデータを保持しておくメモリの分割方法をプログラマブルとしたことを特徴とする請求項1又は2記載のデータ通信装置。
【請求項4】
DMACからのライトアクセスを、それとは別のDMACが、その対象アドレス領域に対して行われるまで、前記ライトアクセスを実行しないことを特徴とする請求項1から3のいずれか1項に記載のデータ通信装置。
【請求項5】
アービタの調停方式として、ラウンドロビン方式で調停を行うことを特徴とする請求項1から4のいずれか1項に記載のデータ通信装置。
【請求項6】
要求源からのアクセス要求が存在しないことを理由に、前記要求源に許可を与えない場合、前記要求源のアクセス要求に対し、依存関係のあるDMACからのアクセス要求源に対して許可を与えることを特徴とする請求項1から5のいずれか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


【公開番号】特開2011−53895(P2011−53895A)
【公開日】平成23年3月17日(2011.3.17)
【国際特許分類】
【出願番号】特願2009−201876(P2009−201876)
【出願日】平成21年9月1日(2009.9.1)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】