(57)【特許請求の範囲】
【請求項１】
シリアルバスを少なくとも２以上の仮想チャネルに時分割し、仮想チャネル毎にデータを受信する仮想チャネル手段と、
受信バッファであって、第１の仮想チャネルに対応する第１の格納領域と、第２の仮想チャネルに対応する第２の格納領域と、を備えた格納手段と、
受信データを該仮想チャネルに対応する格納領域へ格納する格納制御手段と、
を有し、
前記格納手段において、第１の仮想チャネルからの受信データを格納する格納領域容量が、第２の仮想チャネルからの受信データを格納する格納領域容量よりも小さく、
対向データ転送装置から第１の仮想チャネルのみを介して受信データを受信するとき、
前記格納制御手段は、第１の仮想チャネルを介して受信する受信データの格納領域を、第１の格納領域から、第２の格納領域へ切り替えること、
を特徴とするデータ転送装置。
【請求項２】
前記格納手段は、仮想チャネル毎且つ受信データのトランザクションの種類毎に対応する格納領域を備え、
前記格納制御手段は、受信データを該仮想チャネル及びに該トランザクションの種類に対応する格納領域へ格納すること、
を特徴とする請求項１記載のデータ転送装置。
【請求項３】
前記格納手段は、PCI Express規格で定義されるフローコントロールバッファであって、
前記対向データ転送装置に対し、第２の仮想チャネルに対応する格納領域容量の情報を通知する通知手段と、
を有することを特徴とする請求項１又は２記載のデータ転送装置。
【請求項４】
前記格納手段に供給するクロックを生成するクロック生成手段と、
を有し、
前記クロック生成手段は、前記格納制御手段が、第１の仮想チャネルを介して受信した受信データを第２の仮想チャネルに対応する格納領域へ格納するとき、第１の仮想チャネルに対応する格納領域に対し、クロックの供給を停止すること、
を特徴とする請求項１ないし３何れか一項記載のデータ転送装置。
【請求項５】
画像入力エンジンと、
画像出力エンジンと、
前記画像入力エンジン及び前記画像出力エンジンを制御駆動するコントローラと、
を有し、
前記コントローラは、前記画像入力エンジン及び前記画像出力エンジンとの間を接続する請求項２項記載のデータ転送装置によるシリアルインタフェースと
を有することを特徴とする画像形成システム。
【請求項６】
前記格納手段において、前記画像入力エンジンと接続される第１の仮想チャネルからの画像入力に関するトランザクションデータを格納する格納領域容量は、第２の仮想チャネルからの画像入力に関するトランザクションデータを格納する格納領域容量よりも大きく構成され、
前記格納手段において、前記画像出力エンジンと接続される第２の仮想チャネルからの画像出力に関するトランザクションデータを格納する格納領域容量は、第１の仮想チャネルからの画像出力に関するトランザクションデータを格納する格納領域容量よりも大きく構成され、
対向データ転送装置から前記シリアルインタフェースの第１の仮想チャネルのみを介して画像出力に関するトランザクションデータを受信するとき、
前記格納制御手段は、該第１の仮想チャネルを介して受信する画像出力に関するトランザクションデータを、第２の仮想チャネルからの画像出力に関するトランザクションデータを格納する格納領域へ格納すること、
を特徴とする請求項５記載の画像形成システム。
【請求項７】
シリアルバスを少なくとも２以上の仮想チャネルに時分割し、仮想チャネル毎にデータを送信する仮想チャネル手段と、
送信バッファであって、第１の仮想チャネルに対応する第１の格納領域と、第２の仮想チャネルに対応する第２の格納領域と、を備えた格納手段と、
送信データを該仮想チャネルに対応する格納領域へ格納する格納制御手段と、
を有し、
前記格納手段において、第１の仮想チャネルへの送信データを格納する格納領域容量が、第２の仮想チャネルへの送信データを格納する格納領域容量よりも小さく、
対向データ転送装置に対し第１の仮想チャネルのみを介して送信データを送信するとき、
前記格納制御手段は、第１の仮想チャネルを介して送信する送信データの格納領域を、第１の格納領域から、第２の格納領域へ切り替えること、
を特徴とするデータ転送装置。
【請求項８】
前記格納手段は、仮想チャネル毎且つ送信データのトランザクションの種類毎に対応する格納領域を備え、
前記格納制御手段は、送信データを該仮想チャネル及びに該トランザクションの種類に対応する格納領域へ格納すること、
を特徴とする請求項７記載のデータ転送装置。
【請求項９】
前記格納手段に供給するクロックを生成するクロック生成手段と、
を有し、
前記クロック生成手段は、前記格納制御手段が、第１の仮想チャネルを介して送信する送信データを第２の仮想チャネルに対応する格納領域へ格納するとき、第１の仮想チャネルに対応する格納領域に対し、クロックの供給を停止すること、
を特徴とする請求項７又は８項記載のデータ転送装置。
【請求項１０】
画像入力エンジンと、
画像出力エンジンと、
前記画像入力エンジン及び前記画像出力エンジンを制御駆動するコントローラと、
を有し、
前記コントローラは、前記画像入力エンジン及び前記画像出力エンジンとの間を接続する第１のシリアルインタフェースと、
前記コントローラは、請求項７項記載のデータ転送装置による第２のシリアルインタフェースと、
を有することを特徴とする画像形成システム。
【請求項１１】
前記格納手段において、第１の仮想チャネルへの画像入力に関するトランザクションデータを格納する格納領域容量は、第２の仮想チャネルからの画像入力に関するトランザクションデータを格納する格納領域容量よりも大きく構成され、
前記格納手段において、第２の仮想チャネルへの画像出力に関するトランザクションデータを格納する格納領域容量は、第１の仮想チャネルからの画像出力に関するトランザクションデータを格納する格納領域容量よりも大きく構成され、
対向データ転送装置に対し前記第２のシリアルインタフェースの第１の仮想チャネルのみを介して画像出力に関するトランザクションデータを送信するとき、
前記格納制御手段は、該第１の仮想チャネルを介して送信する画像出力に関するトランザクションデータを、第２の仮想チャネルへの画像出力に関するトランザクションデータを格納する格納領域へ格納すること、
を特徴とする請求項１０記載の画像形成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送装置及び画像形成システムの分野に関する。
【背景技術】
【０００２】
近年、伝送速度が数Gbpsを超え、Ethernet（登録商標）よりも格段に高速なデータ転送が可能な高速シリアル伝送路が実用化されてきており、従来のコンピュータネットワークに近い通信方式をとったローカルI/O（In/Out）の標準規格が普及しつつある。このため、コンピュータネットワークと同様の、シリアル伝送路とスイッチを用いたパケットデータ通信によって、LSI（Large Scale Integration）チップ内、チップ間、ボード間のデータ通信網が、組込み用途の電子機器にも利用されるようになった。
【０００３】
具体的に、PC（Personal Computer）システムをはじめとして画像形成装置（Multi Function Peripheral：以下MFPともいう)などの組込みシステムでも、機器内の大量データ転送のためにPCI Express(登録商標：以下PCIeともいう)が用いられるようになってきている。高速シリアル通信規格であるPCIeのメリットとしては、帯域を広げるためにはレーン数を増やすだけでよく、従来のパラレル通信規格によるPCIよりも帯域の増減が柔軟である。また、実装LSIの端子数を減らせる、実装ボード上の配線数を減らせるなどのメリットがある。PC向けに量産されているので、実装部品の価格が比較的安価であることもそのメリットの一つである。
【０００４】
（仮想チャネル）
ここで、複数のデバイス（データ転送装置）が共通の通信経路を経由して接続され互いにデータ転送を行うデータ転送システムにおいては、異なる種類のトラフィックが同一の通信経路を使用してデータ転送を行うと競合が発生し、トラフィックごとに要求される通信品質(データ転送レートや連続性)が得られなくなることがある。そのため、PCIeのシリアルインタフェースの仮想チャネル（Virtual Channel：以下VCともいう）のアービトレーションのアルゴリズムでは、ＱｏＳ（Quality of Service）を実現するため、シリアルバスを仮想チャネル単位で時分割に使い分けることで複数トラフィックのパケットデータを伝送する仮想チャネル機能と、仮想チャネル毎にパケットデータを発行する優先度を調停するアービトレーション機能とを有する。このような仕組みを有するデータ転送装置では、データ転送の優先度が異なるVCの複数トラフィックのパケットデータをシリアルバスを用いて同時転送させたい場合、トランザクション単位で優先度の調整を行いながらのパケット転送が可能である（例えば特許文献１参照）。
【０００５】
（フローコントロール）
また一方、PCIeによるデータ転送方式では、フローコントロール（Flow Control）の概念があり、PCIeリンク間(自デバイスと直接ポイントツーポイントで接続されたデバイスとの間)では、クレジット（Credit）ベースのフロー制御が行われる。送信側はデータ転送を始める前に、受け取り側のバッファの空き状況を確認するようにして、オーバーフロー、アンダフローが発生しないメカニズムである。
【０００６】
具体的に、リンク初期化時においてリクエストを受信する受信側(ターゲットデバイス)は、Memory WriteやMemory Read等のリクエスト種類毎にリクエストを発行する送信側（マスターデバイス）に対し、どの程度の量のリクエストが受信可能かを示すクレジット情報（クレジット値含む）を通知する。通知は、データリンクレイヤパケット/DLLP（Init FC）と呼ばれる制御パケットにより通知される。PCIe規格に準拠したデバイスでは、トランザクション層にＳＲＡＭ（Static Random Access Memory）等で構成される受信ポートに受信バッファ（PCIeのFlow Control Buffer）が実装されおり、前述のクレジット値は一般に受信側のその受信バッファの空き容量に相当する。
【０００７】
送信側は、通知されたクレジット情報に基づき受信側のバッファ容量に一定の残りがある場合のみパケットを送信する。そして送信側は、自身が送信したパケットのサイズを、通知されたクレジット値から減算する。送信側は受信側のクレジット値を使いきった場合、リクエストを一時停止させる動作を行う。一方、受信側は、受信したパケットの転送処理が完了する毎に送信側に対して、新たに受信可能となったリクエストの量(追加クレジット値)をDLLP（Update FC）により通知する。送信側は、再び受信側で受信可能になったクレジット値分だけ新しくリクエストを発行できるようになる。このようなクレジットベースのフロー制御により、送信側は受信側のバッファ容量を超えてデータ送信を行なうことはないのでパケット転送の再送動作は発生せず、通信路のデータ伝送効率が向上させることができるようになっている。
【０００８】
そしてまた、上述の仮想チャネルが割り当てられている場合には、フローコントロールはVC毎に行われるので、受信バッファもまたVC毎に実装される。また受信バッファは、VCを流れるトランザクションの種類毎に実装される。トランザクションの種類は、Posted Transaction、Non-Posted Transaction、Completions等があるが、このうち特に、Posted Transaction用の受信バッファは、主にメモリライトリクエストをバッファし、Non-Posted Transaction用の受信バッファは、主にメモリリードリクエストをバッファする。
【０００９】
（装置への実装）
さてここで、上述したようにＭＦＰなどの組込みシステムでも機器内の大量データ転送のためにPCIeが用いられるが、ＭＦＰの実装においては、例えばPCIe I/F回路において仮想チャネルをVC0、VC1の２チャネル構成とし、VC0にはスキャナ入力に関するトランザクション、VC1にはプロッタ出力に関するトランザクションを割当てた上、VC1を優先して調停を行うようにしている。
【００１０】
理由としては、プロッタ出力に関するトランザクションはデータを持たないリードリクエストのパケットであり、優先的に発行しても、Tx側のスキャナ入力データの転送を殆ど邪魔することなく、Rx側の伝送路の利用効率を上げられるからである。一方スキャナ入力に関するトランザクションはデータを持っており、Tx側伝送路の利用時間が長い。その為、スキャナ入力に関するトランザクションの優先度を上げてしまうと、Txはスキャナ入力に占有され、プロッタ出力に関するトランザクションがなかなか発行できず、Rx側の伝送路の利用効率が低下してしまうからである。
【００１１】
また、ＭＦＰにおいてはVC毎に転送されるトランザクションの種類が明確に分かれているので、PCIe I/F回路において各々のVC毎に実装される受信バッファは、一律の容量ではなく、機器上想定されるデータ転送に特化して最適化された容量構成で実装される。半導体の集積回路のコストダウンや消費電力の削減等を行いながら、効率良くバッファ容量を利用するためである。
【００１２】
例えばＭＦＰでは、上述の如くVC0にはスキャナ入力に関するトランザクションを想定するため、コントローラ側（受信側）のVC0の受信バッファは、スキャナ側から、メモリへスキャンデータを書き込むためのメモリライトリクエストを主に受信する。よってVC0では、Posted Transaction用の受信バッファの容量を大きく実装するようにする。VC0では、スキャナ側からメモリからデータを読み出すためのメモリリードリクエストは受信しないので、逆にNon-Posted Transaction用の受信バッファは極力小さく実装すればよい（又は殆ど実装しない）。
【００１３】
VC1にはプロッタ出力に関するトランザクションを想定するため、コントローラ側（受信側）のVC1の受信バッファは、プロッタ側から、メモリから印刷データを読み出すためのメモリリードリクエストを主に受信する。よってVC1では、Non-Posted Transaction用の受信バッファの容量を大きく実装するようにする。VC1では、プロッタ側からメモリへデータを書き込むためのメモリライトリクエストは受信しないので、逆にPosted Transaction用の受信バッファは極力小さく実装すればよい（又は殆ど実装しない）。
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかしながら、PCIe I/F回路において、VCの受信バッファが機器上想定されるデータ転送に特化して最適化された容量構成で実装されている場合、このPCIe I/F回路に対し、VC0のみしか有しないPCIe I/F回路が対向に接続されると問題が生じることがある。
【００１５】
具体的に、上述のＭＦＰのコントローラ側のPCIe I/F回路のVCはVC0、VC1の２チャネル構成であるところ、VC0のみしか有しないPCIe I/F回路が対向に接続された場合には、VC0を介してデータ転送が行われる。しかし、コントローラ側のPCIe I/F回路の各VCの受信バッファは、機器上想定されるデータ転送に特化して最適化された容量構成で実装されており、具体的に受信側のVC0ではPosted Transaction用の受信バッファの容量を大きく実装し、Non-Posted Transaction用の受信バッファは極力小さく実装している。従ってVC0のみしか有しないPCIe I/F回路がVC0を介してデータ転送を行う場合、メモリライトリクエストについては、受信側のVC0のPosted Transaction用の受信バッファの容量は大きく実装されているので問題ないが、メモリリードリクエストについては、Non-Posted Transaction用の受信バッファの容量は小さいので、フローコントロールによりトランザクションの発行が滞り、PCIeの帯域が著しく低下してしまう。
【００１６】
また、対向のPCIe I/F回路がVC0のみしか有しない場合であっても帯域を低下させないよう、コントローラ側のVC0に大容量のＳＲＡＭを用いて十分な受信バッファを実装することも可能であるが、この場合、半導体集積回路のコストアップや消費電力増加を招くという問題がある。なおPCIe I/Fのスループットは、世代を重ねる毎に大きく向上しており、これに伴い、受信バッファの容量も大きくする必要があるためコストや消費電力増大の問題は更に顕在化してきている。
【００１７】
そこで本発明では上記のような問題に鑑み、データ転送を行う第１のI/F回路において、仮想チャネル毎に実装されるバッファ容量が、対向の第２のI/F回路の仮想チャネルに対し最適化されていた場合であっても、第１のI/F回路のコストアップ及び消費電力増大を招くことなく、第１のI/F回路と対向の第３のI/F回路との仮想チャネル間スループットを向上させるデータ転送装置及び画像形成システムを提供することを目的とする。
【課題を解決するための手段】
【００１８】
そこで上記課題を解決するため、本発明に係るデータ転送装置は、シリアルバスを少なくとも２以上の仮想チャネルに時分割し、仮想チャネル毎にデータを受信する仮想チャネル手段と、受信バッファであって、仮想チャネル毎に対応する格納領域を備えた格納手段と、受信データを該仮想チャネルに対応する格納領域へ格納する格納制御手段と、を有し、前記格納手段において、第１の仮想チャネルからの受信データを格納する格納領域容量が、第２の仮想チャネルからの受信データを格納する格納領域容量よりも小さく、対向データ転送装置から第１の仮想チャネルのみを介して受信データを受信するとき、前記格納制御手段は、第１の仮想チャネルを介して受信する受信データを第２の仮想チャネルに対応する格納領域へ格納することを特徴とする。
【００１９】
また上記課題を解決するため、本発明に係るデータ転送装置は、シリアルバスを少なくとも２以上の仮想チャネルに時分割し、仮想チャネル毎にデータを送信する仮想チャネル手段と、送信バッファであって、仮想チャネル毎に対応する格納領域を備えた格納手段と、送信データを該仮想チャネルに対応する格納領域へ格納する格納制御手段と、を有し、前記格納手段において、第１の仮想チャネルへの送信データを格納する格納領域容量が、第２の仮想チャネルへの送信データを格納する格納領域容量よりも小さく、対向データ転送装置に対し第１の仮想チャネルのみを介して送信データを送信するとき、前記格納制御手段は、第１の仮想チャネルを介して送信する送信データを第２の仮想チャネルに対応する格納領域へ格納することを特徴とする。
【００２０】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、などに適用したものも本発明の態様として有効である。
【発明の効果】
【００２１】
本発明によれば、データ転送を行う第１のI/F回路において、仮想チャネル毎に実装されるバッファ容量が、対向の第２のI/F回路の仮想チャネルに対し最適化されていた場合であっても、第１のI/F回路のコストアップ及び消費電力増大を招くことなく、第１のI/F回路と対向の第３のI/F回路との仮想チャネル間スループットを向上させるデータ転送装置及び画像形成システムを提供することができる。
【図面の簡単な説明】
【００２２】
【図１】本実施形態におけるPCI Expressシステムの構成を示す図の一例である。
【図２】本実施形態に係るPCI Express I/F１０７のアーキテクチャ概念図である。
【図３】本実施形態に係るＡＳＩＣ−Ａ１０３及びＡＳＩＣ−Ｂ１０５のPCI Express I/F模式図である。
【図４】従来例に係るＡＳＩＣ−Ｃ１１５及びＡＳＩＣ−Ｂ１０５のPCI Express I/F模式図である。
【図５】本実施形態に係るPCI Express I/F１０７の回路図である。
【図６】本実施形態に係るＣＰＵ１０４のPCI Express I/Fに対する制御フローを示したフローチャートである。
【図７】本実施形態に係るＡＳＩＣ−Ｃ１１５及びＡＳＩＣ−Ｂ１０５のPCI Express I/F模式図である。
【図８】本実施形態２におけるPCI Expressシステムの構成を示す図の一例である。
【図９】本実施形態２に係るPCI Express I/F１２１のアーキテクチャ概念図である。
【図１０】本実施形態２に係るＡＳＩＣ−Ｂ１０５及びＭＣＨ１２２のPCI Express I/F模式図である。
【発明を実施するための形態】
【００２３】
本発明を実施するための形態を各実施形態において図面を用いて説明する。以下、PCI Expressによるデータ転送装置を画像形成システムに適用した例を用いて説明を行う。
【００２４】
[実施形態１]
（システム構成）
図１は、本実施形態におけるPCI Expressシステムの構成を示す図の一例である。図示例は、組込みシステムへ適用する一例として、ＭＦＰ（画像形成装置）１へのPCI Express適用例を示す。本実施形態に係るＭＦＰ１は、図中、スキャナ１０１、プロッタ１０２、ＡＳＩＣ−Ａ１０３、ＣＰＵ１０４、ＡＳＩＣ−Ｂ１０５、メモリ１０６を含み構成される。
【００２５】
スキャナ１０１は、画像読取部に相当し、ＭＦＰ１の読み取り面に配置された原稿を光学的に読み取り画像データを生成する画像入力エンジンである。読み取り画像データは、スキャナ１０１からメモリ１０６へ入力され格納される（書き込まれる）。プロッタ１０２は、画像書込部に相当し、例えばメモリ１０６から出力される画像データを読み込んで、例えば電子写真プロセス方式によってそのビットマップイメージを紙媒体（印刷用紙）に印刷する画像出力エンジンである。
【００２６】
ＡＳＩＣ−Ａ１０３及びＡＳＩＣ−Ｂ１０５は、PCI Express I/Fを備えたＡＳＩＣ（Application Specific Integrated Circuit）であり、ＡＳＩＣ−Ａ１０３及びＡＳＩＣ−Ｂ１０５は互いのPCI Express I/Fを介しシリアルバスで接続される。よってデータ転送装置として機能する。ＡＳＩＣ−Ａ１０３は、コントローラ（ＡＳＩＣ−Ｂ１０５、ＣＰＵ１０４、メモリ１０６等）側とスキャナ１０１間、コントローラ側とプロッタ１０２間の接続に利用されるPCI Express Switch（スイッチ）として実装される。ＡＳＩＣ−Ｂ１０５はＣＰＵ１０４、メモリ１０６とともにＭＦＰ１のコントローラを形成する。つまりＣＰＵ１０４の制御の下、スキャナ１０１からの読み取り画像データは、コントローラ側のＡＳＩＣ−Ｂ１０５を介しメモリ１０６へ格納され、プロッタ１０２への画像データは、コントローラ側のＡＳＩＣ−Ｂ１０５を介しメモリ１０６から読み出される。
【００２７】
またＡＳＩＣ−Ｂ１０５は、PCI Express I/F（回路）１０７、メモリアービタ１０８、メモリI/F１０９、ＤＭＡ１１０を含み構成される。そしてこのうちPCI Express I/F１０７は、ＰＨＹ１１１、ＤａｔａＬｉｎｋ層１１２、Ｔｒａｎｓａｃｔｉｏｎ層１１３、レジスタ１１４を含み構成される。また本実施形態に係るＭＦＰ１は、PCI Express I/F１０７において仮想チャネルを構成（仮想チャネル手段）し、その仮想チャネルはVC0、VC1の２チャネル構成としているので、受信バッファは、VC0用の受信バッファと、VC1用の受信バッファとを備える（この点詳細は図２で説明する）。また送信バッファもまたVC0用の送信バッファと、VC1用の送信バッファとを備える。
【００２８】
ＡＳＩＣ−Ａ１０３もまた同様に、ＡＳＩＣ−Ｂ１０５のPCI Express I/F１０７と対向するPCI Express I/Fを有し、その仮想チャネルはVC0、VC1の２チャネル構成として実装される。
【００２９】
図２は、本実施形態に係るPCI Express I/F１０７のアーキテクチャ概念図である。PCI Express I/F１０７は、PCI Expressのアーキテクチャの中心となるTransaction Layer、Data link Layer、Physical Layerの構造を有し、PCI Expressによるデータ通信を担うPCIe通信部である。Ｔｒａｎｓａｃｔｉｏｎ層１１３において、ＳＲＡＭ等で実現される受信バッファ（Flow Control buffers）及び送信バッファ（Transmit buffers）はVC毎に実装されるので、ここではVC0用の受信バッファ及び送信バッファと、VC1用の受信バッファ及び送信バッファとを備えている（格納手段）。
【００３０】
また上述したように、受信バッファ及び送信バッファは、VCを流れるトランザクションの種類毎に実装される。トランザクションの種類は、Posted Transaction、Non-Posted Transaction、Completions等があり、Posted Transaction用の受信バッファは、主にメモリライトリクエストをバッファし、Non-Posted Transaction用の受信バッファは、主にメモリリードリクエストをバッファする。またPCIeはパケットデータにてデータ転送されるので、バッファは更に、パケット情報等が格納されたヘッダをバッファするヘッダ（Header）部用、パケットのペイロードをバッファするデータ（Data）部用に分けられて用意される。以上纏めると、受信バッファ（及び送信バッファ）は１のVC毎に以下６つのバッファから成ることになる。
「PH」：Posted Header
「PD」：Posted Data
「NPH」： Non Posted Header
「NPD」： Non Posted Data
「CPL」： Completion Header
「CPD」： Completion Data
ここで、図中では受信バッファの詳細内訳が示されている（送信バッファは実施形態２で説明する）。VC0用の受信バッファの詳細内訳を参照すると、Posted Transaction用の受信バッファ（「PH」及び「PD」）は、Non-Posted Transaction用の受信バッファ（「NPH」及び「NPD」）と比べ、容量が大きくなっている。ＭＦＰ１では、上述の如くVC0にはスキャナ入力に関するトランザクションを想定するため、コントローラ側（受信側）のVC0の受信バッファは、スキャナ側から、メモリへスキャンデータを書き込むためのメモリライトリクエストを主に受信する。よってVC0では、Posted Transaction用の受信バッファの容量を大きく実装するようにしたためである。VC0では、スキャナ側からメモリからデータを読み出すためのメモリリードリクエストは受信しないので、逆にNon-Posted Transaction用の受信バッファは極力小さく実装すればよい（又は殆ど実装しない）。より具体的に、ＳＲＡＭ全容量が例えば１８コマブロックであるとすると、Posted Transaction用の受信バッファとして、「PH」、「PD」合わせて１０コマブロック分確保している。
【００３１】
また、図中のVC1用の受信バッファの詳細内訳を参照すると、Non-Posted Transaction用の受信バッファ（「NPH」及び「NPD」）は、Posted Transaction用の受信バッファ（「PH」及び「PD」）と比べ、容量が大きくなっている。VC1にはプロッタ出力に関するトランザクションを想定するため、コントローラ側（受信側）のVC1の受信バッファは、プロッタ側から、メモリから印刷データを読み出すためのメモリリードリクエストを主に受信する。よってVC1では、Non-Posted Transaction用の受信バッファの容量を大きく実装するようにしたためである。VC1では、プロッタ側からメモリへデータを書き込むためのメモリライトリクエストは受信しないので、逆にPosted Transaction用の受信バッファは極力小さく実装すればよい（又は殆ど実装しない）。より具体的に、ＳＲＡＭ全容量が例えば１８コマブロックであるとすると、Non-Posted Transaction用の受信バッファとして、１０コマブロック分確保している。なおメモリリードリクエストの場合、そのパケットはデータ部分が殆ど必要ないので、ヘッダ用の「NPH」を特に大きく実装した。
【００３２】
再び図１を参照し、ＡＳＩＣ−Ａ１０３が送信側、ＡＳＩＣ−Ｂ１０５が受信側となる場合、受信側のＡＳＩＣ−Ｂ１０５側から見ると、ＡＳＩＣ−Ａ１０３及びＡＳＩＣ−Ｂ１０５間のPCIeフローコントロールとしては以下のようになる。
【００３３】
例えば、VC0のリンク初期化時においてリクエストを受信する受信側(ＡＳＩＣ−Ｂ１０５)は、スキャナ１０１からのメモリライトリクエスト（Memory Write Request）に対し、どの程度の量のリクエストが受信可能かを示すクレジット情報（クレジット値含む）をDLLP（Init FC）により通知する。ここで、送信側（ＡＳＩＣ−Ａ１０３)へ通知されるクレジット値は、受信側(ＡＳＩＣ−Ｂ１０５)のPosted Transaction用の受信バッファ（「PH」及び「PD」）の空き容量に相当する。
【００３４】
そして本実施形態において、VC0の受信バッファ、つまりPosted Transaction用の受信バッファは、その容量が大きく実装されているので、スキャナ１０１側からのメモリライトリクエストに対し、十分な対応が可能である。
【００３５】
また例えば、VC１のリンク初期化時においてリクエストを受信する受信側(ＡＳＩＣ−Ｂ１０５)は、プロッタ１０２からのメモリリードリクエスト（Memory Read Request）に対し、どの程度の量のリクエストが受信可能かを示すクレジット情報をDLLP（Init FC）により通知する。ここで、送信側（ＡＳＩＣ−Ａ１０３)へ通知されるクレジット値は、受信側(ＡＳＩＣ−Ｂ１０５)のNon-Posted Transaction用の受信バッファ（「PH」及び「PD」）の空き容量に相当する。
【００３６】
そして本実施形態において、VC1の受信バッファ、つまりNon-Posted Transaction用の受信バッファは、その容量が大きく実装されているので、プロッタ１０２側からのメモリリードリクエストに対し、十分な対応が可能である。
【００３７】
なお、逆にＡＳＩＣ−Ａ１０３が受信側、ＡＳＩＣ−Ｂ１０５が送信側となる場合、送信側のＡＳＩＣ−Ｂ１０５側から見ると、ＡＳＩＣ−Ａ１０３及びＡＳＩＣ−Ｂ１０５間のPCIeフローコントロールとしては以下のようになる。
【００３８】
例えば、VC0のリンク初期化時においてリクエストを送信する送信側(ＡＳＩＣ−Ｂ１０５)は、受信側（ＡＳＩＣ−Ａ１０３)からトランザクションの種類に応じて通知されるクレジット情報を受信する。送信側(ＡＳＩＣ−Ｂ１０５)は、通知されたクレジット情報に基づき送信側(ＡＳＩＣ−Ｂ１０５)の受信バッファ容量に一定の残りがある場合のみ、送信バッファを経由してトランザクションの種類に応じたパケットを送信する。そして送信側(ＡＳＩＣ−Ｂ１０５)は、自身が送信したパケットのサイズを、通知されたクレジット値から減算する。送信側(ＡＳＩＣ−Ｂ１０５)は受信側（ＡＳＩＣ−Ａ１０３)のクレジット値を使いきった場合、リクエストを一時停止させる動作を行う。一方、受信側（ＡＳＩＣ−Ａ１０３)は、受信したパケットの転送処理が完了する毎に送信側(ＡＳＩＣ−Ｂ１０５)に対して、新たに受信可能となったリクエストの量(追加クレジット値)をDLLP（Update FC）により通知する。送信側(ＡＳＩＣ−Ｂ１０５)は、再び受信側（ＡＳＩＣ−Ａ１０３)で受信可能になったクレジット値分だけ新しくリクエストを発行できるようになる。
【００３９】
図３は、本実施形態に係るＡＳＩＣ−Ａ１０３及びＡＳＩＣ−Ｂ１０５のPCI Express I/F模式図である。図１と図２を組み合わせて描いた図であり、両ＡＳＩＣ内のPCI Express I/Fに着眼するとともに、特にＡＳＩＣ−Ｂ１０５のＴｒａｎｓａｃｔｉｏｎ層におけるVC0用、VC1用の受信バッファ詳細をあらためて図示した（送信バッファは省略）。
【００４０】
即ちこれまで説明してきたように、コントローラ側のＡＳＩＣ−Ｂ１０５は、受信側としてVC0を介するスキャナ１０１からのメモリライトリクエストに十分対応するため、VC0用の受信バッファにおいて、メモリライトのトランザクションに対応するPosted Transaction用の受信バッファを十分な容量で備えている。またコントローラ側のＡＳＩＣ−Ｂ１０５は、受信側としてVC1を介するプロッタ１０２からのメモリリードリクエストに十分対応するため、VC1用の受信バッファにおいて、メモリリードのトランザクションに対応するNon-Posted Transaction用の受信バッファを十分な容量で備えている。
【００４１】
（VC0のみを有する対向のＡＳＩＣ−Ｃ１１５）
図４は、従来例に係るＡＳＩＣ−Ｃ１１５及びＡＳＩＣ−Ｂ１０５のPCI Express I/F模式図である。図３と比べると、ＡＳＩＣ−Ｂ１０５の対向がＡＳＩＣ−Ａ１０３からＡＳＩＣ−Ｃ１１５へ変更されていることが分かる。ここでＡＳＩＣ−Ｃ１１５は、同様にPCI Express I/F自体は搭載するものの、仮想チャネルはVC0のみの１チャネル構成とするものである。
【００４２】
PCIeは双方のデバイスがサポートする最大のVCで接続されるため、この場合ではVC0のみで接続される（図中の斜線部分は未使用）。しかしながら受信側のＡＳＩＣ−Ｂ１０５のNon-Posted Transaction用の受信バッファ（「PH」及び「PD」）は、これまで説明してきたように極力小さく実装されている（又は実装されない）。このため、ＡＳＩＣ−Ｂ１０５のNon-Posted Transaction用の受信バッファはすぐに一杯になったり、この受信バッファが空くまでは送信側のＡＳＩＣ−Ｃ１１５は次のメモリリードリクエストを発行することができない。PCIeフローコントロールにより受信側（ＡＳＩＣ−Ｂ１０５）から送信側（ＡＳＩＣ−Ｃ１１５）に対して通知されるクレジット情報のクレジット値が小さく、クレジット値の枯渇が起こり易いからである。このときＡＳＩＣ−Ｃ１１５及びＡＳＩＣ−Ｂ１０５間のPCIeスループットは著しく低下し、ＭＦＰ１においては例えば異常画像発生等の一因となりうる。
【００４３】
（ＡＳＩＣ−Ｂ１０５のPCI Express I/F１０７）
図５は、本実施形態に係るPCI Express I/F１０７の回路図である。本実施形態に係るＡＳＩＣ−Ｂ１０５は、VC0のみを有する対向のＡＳＩＣ−Ｃ１１５と接続されたとき、PCIeスループットの低下を回避するため、図に示すPCI Express I/F１０７を有する。
【００４４】
Ｔｒａｎｓａｃｔｉｏｎ層１１３のVC0、VC1には、Non-Posted Transaction用の受信バッファである「NPH」（「NPH」のみ図示）が実装されている。またVC0及びVC1の受信バッファ「NPH」に対し書込みを行うVC0 SRAM制御回路１１６（格納制御手段）は、VC0及びVC1の受信バッファに対し、セレクタ１１８、セレクタ１１９を介し接続される。VC1の「NPH」に対し書込みを行うVC1 SRAM制御回路１１７（格納制御手段）は、VC1の受信バッファに対しセレクタ１１９を介し接続される。またVC0及びVC1の受信バッファ「NPH」は、ＤＭＡ（VC0）１１０に対しセレクタ１２０を介し接続される。なおまたクロック生成回路１１８（クロック生成手段）は、ＣＬＫラインを介し各部へクロックを供給する。
【００４５】
図６は、本実施形態に係るＣＰＵ１０４のPCI Express I/Fに対する制御フローを示したフローチャートである。
【００４６】
まずＡＳＩＣ−Ｂ１０５は、ＡＳＩＣ−Ｃ１１５とのリセットが解除されると（Ｓ１）、PCI Expressの初期化手続きであるリンクトレーニングを開始する（Ｓ１）。
【００４７】
ＣＰＵ１０４は、対向デバイスＡＳＩＣ−Ｃ１１５であるＥｎｄｐｏｉｎｔのコンフィグレジスタを読むことにより、ＡＳＩＣ−Ｃ１１５がサポートするVCのチャネル数を確認する（Ｓ３）。
【００４８】
そしてＡＳＩＣ−Ｃ１１５がサポートするVCのチャネル数の情報をもとに、レジスタ（PCI Expressの規格で定義されたVC Resource Controlレジスタ）１１４において、該当するVCのEnable設定を行うことで、双方が対応可能な最大のチャネル数でVCのデータパスを確立する（Ｓ４）。なおレジスタ１１６の設定をセレクタのセレクト信号として使用する。
【００４９】
ＡＳＩＣ−Ｃ１１５がサポートするVCのチャネル数が２（VC0,VC1）である場合には、レジスタ１１４において、VC0：Enable、VC1：Enableとの設定を行い、ＭＦＰ１においてVC毎に最適化された受信バッファをそのまま利用する。しかしここでは、ＡＳＩＣ−Ｃ１１５がサポートするVCのチャネル数は１であるので、レジスタ１１４において、VC0：Enable、VC1：Disableとの設定を行う。
【００５０】
そしてレジスタ１１４の情報（VC0：Enable、VC1：Disable）に基づいて、セレクタ１１８をＯＦＦ、セレクタ１１９をＯＮする。つまりVC0の受信バッファ「NPH」に対し書込みを行うVC0 SRAM制御回路１１６の接続をVC1の受信バッファ「NPH」に向けて接続を切り替える（Ｓ５）。またセレクタ１２０はVC0の受信バッファ「NPH」からに代え、VC1の受信バッファ「NPH」からＤＭＡ（VC0）１１０に対し接続を切り替える。これにより、VC0 SRAM制御回路１１６は、VC0の受信バッファ「NPH」に対し書き込みを行っているつもりであるが、実際には、容量は十分確保されたVC1の受信バッファ「NPH」に対し書き込みを行うことになる。また併せてセレクト信号により、使用しないVC0の受信バッファ「NPH」に対するクロックの供給を停止（マスク）することにより、消費電力の低減を図ることが可能である。
【００５１】
図７は、本実施形態に係るＡＳＩＣ−Ｃ１１５及びＡＳＩＣ−Ｂ１０５のPCI Express I/F模式図である。図４と比べると、上述の切り替えにより、VC0の受信バッファ「NPH」は無効（図中の斜線部分は未使用）になっており、代わりにVC1の受信バッファ「NPH」が有効になっていることが分かる。そして図に示されるようにVC0の受信バッファ「NPH」よりもVC1の受信バッファ「NPH」の方が容量は大きいので、その結果、VC0のみを有する対向のＡＳＩＣ−Ｃ１１５とのPCIeスループットを向上させることが可能である。
【００５２】
さらにより具体的には、PCI Express I/F１０７のVC0におけるデータ転送において、メモリライトリクエストについては十分な容量が確保されているVC0の受信バッファ「PH」及び「PD」において十分にバッファ可能であり、メモリリードリクエストについては十分な容量が確保されているVC１の受信バッファ「NPH」において十分にバッファ可能である。
【００５３】
以上本実施形態においては、リードアクセスを想定していないVC0の受信バッファ「NPH」の代え、リードアクセスでの性能が出るように最適化されたVC1の受信バッファ「NPH」を利用することで、PCIeスループットを向上させることができる（スループットの低下を回避できる）。またのとき、受信バッファを実現するためのＳＲＡＭを特段増加させる必要もないので、冗長・余分なＳＲＡＭを実装することに伴うコストアップを抑えるとともに、また上述の如く消費電力の削減を行うことも可能である。
【００５４】
なお本実施形態では、VCを2チャネル持つRoot Complex（ＡＳＩＣ−Ｂ１０５）に対し、対向Endpoint（ＡＳＩＣ−Ｃ１１５）がVCを1chしか持たない場合の構成を想定したものであるが、例えば、Root ComplexがVCを3チャネルで対向EndpointがVCを1ch、またもしくはRoot ComplexがVCを3チャネルで対向EndpointがVCを2chを持つ構成においても、上述と同様の考え方で転送効率向上に有利な受信バッファ（Flow Control Buffer）につなぐよう切り替えることも可能である。
【００５５】
また本実施形態では、受信バッファ「NPH」の例を挙げて説明しているが、同様の考え方でユースケースに合わせ「NPH」以外の受信バッファの接続を切り替えることも可能である。例えば、VCの受信バッファ「PD」や「PH」のバッファ容量が小さい場合、受信バッファ「PD」や「PH」のバッファ容量が大きい別のVC に接続を切り替えることができる。
【００５６】
[実施形態２]
上述の実施形態１では、ＡＳＩＣ−Ｂ１０５のPCI Express I/F１０７のＴｒａｎｓａｃｔｉｏｎ層１１３の受信側（Rx側）にある受信バッファ（Flow Control Buffer）に着目し、VCの受信バッファへの接続を切り替える例を示した。具体的に、VC0の受信バッファ「NPH」はＭＦＰ１に特化される形で最適化されたことによりその容量は小さい。一方、VC1の受信バッファ「NPH」はＭＦＰ１に特化される形で最適化されたことによりその容量は大きいので、VC0によるデータ転送時、VC0の受信バッファ「NPH」はVC1の受信バッファ「NPH」へ切り替える、つまりVC0によるデータ転送時であっても、受信バッファ「NPH」はVC1に対し実装されているものを利用するようにした。
【００５７】
本実施形態２ではこれを送信バッファに適用する。つまりPCI Express I/FのＴｒａｎｓａｃｔｉｏｎ層１１３の送信側（Tx側）にある送信バッファ（Transmit Buffer）に着目し、VCの送信バッファの接続を切り替えるようにする。
【００５８】
（システム構成）
図８は、本実施形態２におけるPCI Expressシステムの構成を示す図の一例である。図示例は、組込みシステムへ適用する一例として、ＭＦＰ（画像形成装置）１へのPCI Express適用例を示す。図１と比べ、ＭＣＨ(Memory Controller Hub)１２２が、ＡＳＩＣ−Ｂ１０５と、ＣＰＵ１０４及びメモリ１０６の間に追加されている。従ってスキャナ１０１及びプロッタ１０２からのデータは、PCI Expressのシリアルバスで相互に接続されたＡＳＩＣ−Ａ１０３、ＡＳＩＣ−Ｂ１０５、ＭＣＨ１２２を経て、メモリ１０６へ到達する。
【００５９】
ＡＳＩＣ−Ｂ１０５は、ＭＣＨ１２２が追加されたことによりＭＣＨ１２２とはPCI Expressのシリアルバスで相互に接続される。よって図１と比べ、PCI Express I/F（回路）１２１が追加されていることになる。
【００６０】
PCI Express I/F１２１においては仮想チャネルをVC0、VC1の２チャネル構成としているので、Ｔｒａｎｓａｃｔｉｏｎ層１２６では、受信バッファのみならず、送信バッファもまたVC0用の送信バッファと、VC1用の送信バッファとを備える。この送信バッファは、送信側（ＡＳＩＣ−Ｂ１０５）が受信側（ＭＣＨ１２２）に対しデータ転送を行う場合、例えばリクエストを発行するとき、これから送信しようとするデータをキューイングするためのバッファとして使用される。
【００６１】
ＭＣＨ１２２は、PCI Express I/F（回路）１２３、メモリアービタ１２４、メモリI/F１２５を含み構成される。このうちPCI Express I/F１２３は、ＡＳＩＣ−Ｂ１０５とPCI Expressのシリアルバスで接続される。本実施形態においてＭＣＨ１２２は、PCI Express I/F自体は搭載するものの、仮想チャネルをVC0のみの１チャネル構成とする。PCIeは双方のデバイスがサポートする最大のVCで接続されるため、この場合、ＡＳＩＣ−Ｂ１０５のPCI Express I/F１２１とはVC0のみで接続される。
【００６２】
図９は、本実施形態２に係るPCI Express I/F１２１のアーキテクチャ概念図である。図２が受信バッファの内訳詳細を示したものであるのに対し、図９は送信バッファの内訳詳細を示してある。図に示されるように、送信バッファは、受信バッファと同様、VCを流れるトランザクションの種類毎に実装される。またPCIeはパケットデータにてデータ転送されるので、バッファは更に、パケット情報等が格納されたヘッダをバッファするヘッダ（Header）部用、パケットのペイロードをバッファするデータ（Data）部用に分けられて用意される。以上纏めると、図に示されるように、送信バッファは１のVC毎に６つのバッファ、つまり「PH」、「PD」、「NPH」、「NPD」、「CPL」、「CPD」から成ることになる。
【００６３】
またここで、図中ではトランザクションの種類毎の送信バッファ容量は一律ではなく、ＭＦＰ１に特化される形で最適化されたことにより、VC毎でその容量は大きいもの、小さいものがある。
【００６４】
例えば、VC0用の送信バッファの詳細内訳を参照すると、Posted Transaction用の送信バッファ（「PH」及び「PD」）は、Non-Posted Transaction用の送信バッファ（「NPH」及び「NPD」）と比べ、容量が大きくなっている。ＭＦＰ１では、上述の如くVC0にはスキャナ入力に関するトランザクションを想定する。ＡＳＩＣ−Ｂ１０５は、スキャナ側から、PCI Express I/F１０７にてメモリライトリクエストを主に受信し、追加されたPCI Express I/F１２１にてＭＣＨ１２２に対し、受信したメモリライトリクエストを送信する。よってPCI Express I/F１２１のVC0では、メモリライトリクエストを十分送信できるようにPosted Transaction用の送信バッファの容量を大きく実装するようにした。
【００６５】
また、図中のVC1用の受信バッファの詳細内訳を参照すると、Non-Posted Transaction用の受信バッファ（「NPH」及び「NPD」）は、Posted Transaction用の受信バッファ（「PH」及び「PD」）と比べ、容量が大きくなっている。VC1にはプロッタ出力に関するトランザクションを想定する。ＡＳＩＣ−Ｂ１０５は、プロッタ側から、PCI Express I/F１０７にてメモリリードリクエストを主に受信し、追加されたPCI Express I/F１２１にてＭＣＨ１２２に対し、受信したメモリリードリクエストを送信する。よってPCI Express I/F１２１のVC1では、メモリリードリクエストを十分送信できるようにNon-Posted Transaction用の送信バッファの容量を大きく実装するようにした。
【００６６】
図１０は、本実施形態２に係るＡＳＩＣ−Ｂ１０５及びＭＣＨ１２２のPCI Express I/F模式図である。上述の如く本実施形態２においては、PCI Express I/F１２１のＴｒａｎｓａｃｔｉｏｎ層１２６の送信側（Tx側）にある送信バッファ（Transmit Buffer）に着目し、VCの送信バッファの接続を切り替える。VC0の送信バッファ「NPH」はＭＦＰ１に特化される形で最適化されたことによりその容量は小さい。一方、VC1の送信バッファ「NPH」はＭＦＰ１に特化される形で最適化されたことによりその容量は大きいので、VC0によるデータ転送時、VC0の送信バッファ「NPH」はVC1の送信バッファ「NPH」へ切り替える、つまりVC0によるデータ転送時であっても、送信バッファ「NPH」はVC1に対し実装されているものを利用する。
【００６７】
従って図に示されるように、この切り替えにより、VC0の送信バッファ「NPH」は無効（図中の斜線部分は未使用）になっており、代わりにVC1の送信バッファ「NPH」が有効になっていることが分かる。そして図に示されるようにVC0の送信バッファ「NPH」よりもVC1の送信バッファ「NPH」の方が容量は大きいので、その結果、VC0のみを有する対向のＭＣＨ１２２とのPCIeスループットを向上させることが可能である。
【００６８】
さらにより具体的には、PCI Express I/F１２１のVC0におけるデータ転送において、メモリライトリクエストについては十分な容量が確保されているVC0の送信バッファ「PH」及び「PD」において十分にキューイング可能であり、メモリリードリクエストについては十分な容量が確保されているVC１の送信バッファ「NPH」において十分にキューイング可能である。
【００６９】
以上本実施形態においては、リードアクセスを想定していないVC0の送信バッファ「NPH」の代え、リードアクセスでの性能が出るように最適化されたVC1の送信バッファ「NPH」を利用することで、PCIeスループットを向上させることができる（スループットの低下を回避できる）。またのとき、送信バッファを実現するためのＳＲＡＭを特段増加させる必要もないので、冗長・余分なＳＲＡＭを実装することに伴うコストアップを抑えるとともに、使用しないVC0の送信バッファ「NPH」において消費電力の削減を行うことも可能である。
【００７０】
[総括]
以上本実施形態によれば、データ転送を行う第１のI/F回路において、仮想チャネル毎に実装されるバッファ容量が、対向の第２のI/F回路の仮想チャネルに対し最適化されていた場合であっても、第１のI/F回路のコストアップ及び消費電力増大を招くことなく、第１のI/F回路と対向の第３のI/F回路との仮想チャネル間スループットを向上させるデータ転送装置及び画像形成システムを提供することが可能となる。
【００７１】
なお、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００７２】
１            ＭＦＰ
１０１        スキャナ
１０２        プロッタ
１０３        ＡＳＩＣ−Ａ
１０４        ＣＰＵ
１０５        ＡＳＩＣ−Ｂ
１０６        メモリ
１０７        PCI Express I/F
１０８        メモリアービタ
１０９        メモリI/F
１１０        ＤＭＡ
１１１        ＰＨＹ
１１２        ＤａｔａＬｉｎｋ層
１１３        Ｔｒａｎｓａｃｔｉｏｎ層
１１４        レジスタ
１１５        ＡＳＩＣ−Ｃ
１１６        VC0 SRAM制御回路
１１７        VC1 SRAM制御回路
１１８−１２０    セレクタ
１２１        PCI Express I/F（回路）１２１が追加されていることになる。
１２２        ＭＣＨ
１２３        PCI Express I/F
１２４        メモリアービタ
１２５        メモリI/F
１２６        Ｔｒａｎｓａｃｔｉｏｎ層
【先行技術文献】
【特許文献】
【００７３】
【特許文献１】特開２００６−９２２８６号公報
【図１】
0005966265.tif 000002
【図２】
0005966265.tif 000003
【図３】
0005966265.tif 000004
【図４】
0005966265.tif 000005
【図５】
0005966265.tif 000006
【図６】
0005966265.tif 000007
【図７】
0005966265.tif 000008
【図８】
0005966265.tif 000009
【図９】
0005966265.tif 000010
【図１０】
0005966265.tif 000011