(57)【要約】【課題】対向デバイスのシリアルインタフェースのバーチャルチャネルの数が、単一であっても複数であってもデータ転送を可能とすること。【解決手段】データ転送装置は、シリアルインタフェースを用いて複数のデータの転送を行い、前記複数のデータの転送先装置のバーチャルチャネルに関する情報を設定する設定部と、前記複数のデータを単一のバーチャルチャネルを使用して送受信する第１の通信部と、前記複数のデータを複数のバーチャルチャネルを使用して送受信する第２の通信部と、前記転送先装置のバーチャルチャネルに関する情報に基づいて、第１の通信部と、第２の通信部とのいずれを使用するか切り替える。【選択図】図１２
2019016063.tif 000002
【特許請求の範囲】
【請求項１】
シリアルインタフェースを用いて複数のデータの転送を行うデータ転送装置であって、
前記複数のデータの転送先装置のバーチャルチャネルに関する情報を設定する設定部と、
前記複数のデータを単一のバーチャルチャネルを使用して送受信する第１の通信部と、
前記複数のデータを複数のバーチャルチャネルを使用して送受信する第２の通信部と、
前記転送先装置のバーチャルチャネルに関する情報に基づいて、第１の通信部と、第２の通信部とのいずれを使用するか切り替えるデータ転送装置。
【請求項２】
前記第１の通信部は、前記複数のデータのそれぞれに優先度を付与し、前記優先度に基づいて、前記複数のデータの転送順を決定する請求項１記載のデータ転送装置。
【請求項３】
前記第１の通信部又は前記第２の通信部に前記データの送信をさせる読み込み転送コマンドと、前記第１の通信部又は前記第２の通信部に前記データの受信をさせる書き込み転送コマンドとを発行する発行部をさらに有し、
前記第１の通信部又は前記第２の通信部は、前記書き込み転送コマンドが複数発行された場合、前記書き込み転送コマンドの応答として受信された複数のデータの解析を行い、前記応答として受信されたデータがいずれの前記書き込み転送コマンドによるものか決定する請求項１又は２記載のデータ転送装置。
【請求項４】
前記発行部は、前記書き込み転送コマンドの発行を抑制する請求項３記載のデータ転送装置。
【請求項５】
前記発行部は、書き込み転送コマンドを発行してから、次の書き込み転送コマンドを発行するまでの期間を設定可能である請求項４記載のデータ転送装置。
【請求項６】
前記第２の通信部が送受信を行うために、前記発行部は、前記第１の通信部が使用する単一のバーチャルチャネルに、前記読み込み転送コマンドを発行し、前記単一のバーチャルチャネルとは異なるバーチャルチャネルに、前記書き込み転送コマンドを発行し、前記複数のデータに優先度を付与せず転送順を変更しない請求項３に記載のデータ転送装置。
【請求項７】
シリアルインタフェースを用いて複数のデータの転送を行うデータ転送方法であって、
前記複数のデータの転送先装置のバーチャルチャネルに関する情報を設定する設定手順と、
前記複数のデータを単一のバーチャルチャネルを使用して送受信する第１の通信手順と、
前記複数のデータを複数のバーチャルチャネルを使用して送受信する第２の通信手順と、
前記転送先装置のバーチャルチャネルに関する情報に基づいて、第１の通信手順と、第２の通信手順とのいずれを使用するか切り替えるデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送装置及びデータ転送方法に関する。
【背景技術】
【０００２】
画像形成装置の画像データの転送性能を向上させるために高速シリアルインタフェースを用いることが増えている。代表的な高速シリアルインタフェースとして、ＰＣＩ  Ｅｘｐｒｅｓｓがある。ＰＣＩ  Ｅｘｐｒｅｓｓの転送は、パケット単位で行われる。当該パケットの制御にはバーチャルチャネル（ＶＣ）と呼ばれる同一リンクを共用する複数のデータフローバッファを使用するメカニズムが使われる。各バーチャルチャネルは独立したバッファ等のリソースを持ち、リンク上で独立した制御が行われる。バーチャルチャネルにはトラフィッククラス（ＴＣ）が関連付けられる。トラフィッククラスによりバーチャルチャネルに優先度を付与することができる。
【０００３】
バーチャルチャネルは規格上、８つまで使用可能であるが、１つのバーチャルチャネルは必須であり、その他のチャネルはオプションである。ＰＣＩ  Ｅｘｐｒｅｓｓの仕様としてＶＣ０とＴＣ０は固定して関連付けられている。ＶＣとＴＣを関連付ける仕組みを用いてＬＳＩ等のデバイスにトラフィッククラスごとに異なるバーチャルチャネルの割り当てを行い、データ転送の優先順位をつける技術は既に知られている（例えば特許文献１）。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のＰＣＩ  Ｅｘｐｒｅｓｓのインタフェースを搭載したデバイスで複数のバーチャルチャネルを使用する構成は、対向デバイスの仕様によってデータ通信が成立せず、システムとして破綻することがある。例えば、あるデバイスが２ｃｈのバーチャルチャネルを有し、ＶＣ０に読み取りデータの転送、ＶＣ１に書き込みデータの転送が固定で割り当て転送を行う仕様の場合、対向デバイスも必ず、２ｃｈのバーチャルチャネルをサポートしなければならない。また、多くの汎用ＳｏＣ（System On Chip）はＶＣ０のみ（１ｃｈのみ）サポートする仕様である。そのため、対向デバイスの仕様により、データ転送が成立しないという問題がある。
【０００５】
本発明は上記の点に鑑みてなされたものであって、対向デバイスのシリアルインタフェースのバーチャルチャネルの数が、単一であっても複数であってもデータ転送を可能とすることを目的とする。
【課題を解決するための手段】
【０００６】
そこで上記課題を解決するため、データ転送装置は、シリアルインタフェースを用いて複数のデータの転送を行い、前記複数のデータの転送先装置のバーチャルチャネルに関する情報を設定する設定部と、前記複数のデータを単一のバーチャルチャネルを使用して送受信する第１の通信部と、前記複数のデータを複数のバーチャルチャネルを使用して送受信する第２の通信部と、前記転送先装置のバーチャルチャネルに関する情報に基づいて、第１の通信部と、第２の通信部とのいずれを使用するか切り替える。
【発明の効果】
【０００７】
対向デバイスのシリアルインタフェースのバーチャルチャネルの数が、単一であっても複数であってもデータ転送を可能とすることができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施の形態における画像形成装置１０００のシステム構成例を示す図である。
【図２】本発明の実施の形態におけるシステムコントローラ１０の構成例を示すブロック図である。
【図３】ＰＣＩ  Ｅｘｐｒｅｓｓシステムの構成例を示す図である。
【図４】ＰＣＩ  Ｅｘｐｒｅｓｓの階層構造を示す図である。
【図５】ＰＣＩ  Ｅｘｐｒｅｓｓのトランザクションパケットのフォーマットを示す図である。
【図６】ＰＣＩ  Ｅｘｐｒｅｓｓのバーチャルチャネルの構成を示す図である。
【図７】バーチャルチャネル２ｃｈを用いた構成例を示す図である。
【図８】バーチャルチャネル２ｃｈ構成時の動作を説明するためのフローチャートである。
【図９】バーチャルチャネル１ｃｈを用いた構成例を示す図である。
【図１０】バーチャルチャネル１ｃｈ構成時の動作を説明するためのフローチャートである。
【図１１】本発明の実施の形態におけるバーチャルチャネルの設定を行うレジスタの例を示す図である。
【図１２】本発明の実施の形態におけるバーチャルチャネル設定による転送切り替え動作を説明するための図である。
【図１３】本発明の実施の形態におけるバーチャルチャネル１ｃｈ時の転送コマンド・データ制御部の構成例を示す図である。
【図１４】本発明の実施の形態における転送優先度設定部の設定を行うレジスタの例を示す図である。
【図１５】本発明の実施の形態における対向デバイスの受信コマンドバッファの例を示す図である。
【図１６】本発明の実施の形態におけるＷＲ＿ＣＭＤの間隔を調整する機能を有効化／無効化するレジスタの例を示す図である。
【図１７】本発明の実施の形態におけるＷＲ＿ＣＭＤの間隔を指定するレジスタの例を示す図である。
【図１８】本発明の実施の形態におけるバーチャルチャネル２ｃｈ時の転送コマンド・データ制御部の構成例を示す図である。
【図１９】本発明の実施の形態におけるバーチャルチャネルの切替を実施する動作を説明するためのフローチャートである。
【発明を実施するための形態】
【０００９】
以下、図面に基づいて本発明の実施の形態を説明する。
【００１０】
図１は、本発明の実施の形態における画像形成装置１０００のシステム構成例を示す図である。図１に示されるように、画像形成装置１０００は、システムコントローラ１０、画像メモリ１１、ＰＣＩｅバス（Peripheral Component Interconnect express Bus）１２、スキャナユニット２００、ＡＤＦ（Auto Document Feeder）２０１、プリンタ２０２、ソータ２０３、操作ボード２０４及びファクシミリボード２０５を有する。
【００１１】
システムコントローラ１０は、画像形成装置１０００全体を制御する。システムコントローラ１０には、オペレータに対して表示機能と機能設定機能と情報入力機能とを提供する操作ボード２０４が接続されている。また、システムコントローラ１０は、通常のコピー処理に関する制御の他に、ＬＡＮ（Local Area Network）を介してＰＣ（Personal Computer）３００等の外部機器から画像データ又はプリント指示コマンド等を受信し、画像データをプリントアウトする印刷制御も行う。さらに、システムコントローラ１０は、画像データ及びコマンドをＬＡＮ及びパラレルＩ／Ｆを介して受信して動作するために、ＬＡＮのコントローラ及びパラレルＩ／Ｆ等を備える。
【００１２】
ファクシミリボード２０５は、ファクシミリ送信指示があるときに、システムコントローラ１０を介してスキャナユニット２００を駆動して原稿の画像を読み込み、当該画像のデータをＰＢＸ（Private Branch eXchange）経由でファクシミリ通信回線に送信する。また、ファクシミリボード２０５は、通信回線からのファクシミリ呼び出しに応じて画像データを受信し、システムコントローラ１０を介して画像形成装置１０００を駆動し、受信した画像データをプリントアウトできる。
【００１３】
スキャナユニット２００及びプリンタユニット２０２は、汎用バスであるＰＣＩｅバス１２を介して相互に通信を行う。スキャナユニット２００は、内部の画像処理ユニット（ＩＰＵ、Image Processing Unit）によって、読み取り画像デ−タの光学系及びデジタル信号への量子化に伴う信号劣化を補正し、画像デ−タをプリンタユニット２０２に送信し、システムコントローラ１０に接続された画像メモリ１１に書き込む。
【００１４】
また、画像データを画像メモリ１１に蓄積し、画像処理を行う場合は、システムコントローラ１０において、画像メモリ１１のアクセス制御、ホストＰＣ３００のプリント用データの展開（文字コ−ド／キャラクタビット変換）、メモリ有効活用のための画像データの圧縮／伸張、画像補正等の画像処理が行われる。
【００１５】
上記のような画像データの流れにおいて、システムコントローラ１０のバス制御によるＰＣＩｅバス１２上のデータ転送により、画像形成装置１０００の複合機能を実現する。複合機能の１つであるＦＡＸ送信機能は、スキャナユニット２００の読み取り画像データを、ＰＣＩｅバス１２を経由してファクシミリボード２０５へ転送する。システムコントローラ１０は、当該バス制御機能によって、画像データ処理に係る各ジョブにおいて、スキャナユニット２００、プリンタユニット２０２、画像メモリ１１及びファクシミリボード２０５へのＰＣＩｅバス１２の使用権を割り振る。
【００１６】
ＡＤＦ２０１は、自動原稿送り装置であり、原稿を自動的に給紙する装置である。ソータ２０３は、複数ページを複数部で印刷する場合、１部ごとに揃った状態で出力する装置である。
【００１７】
図２は、本発明の実施の形態におけるシステムコントローラ１０の構成例を示すブロック図である。図２に示されるように、システムコントローラ１０は、内部バス５１、ＣＰＵ(Central Processing Unit)５２、ＲＯＭ（Read Only Memory）／ＲＡＭ（Random Access Memory）５３、外部メモリＩ／Ｆ部５４、通信系Ｉ／Ｆ部５５、内部バスＩ／Ｆ部５６、ＰＣＩｅＩ／Ｆ部５７、画像出力用ＤＭＡＣ（Direct Memory Access Controller）５８、圧縮伸長器５９及び画像処理部６０を有する。
【００１８】
システムコントローラ１０では、内部バス５１を介して、ＣＰＵ５２、ＲＯＭ／ＲＡＭ５３、外部メモリＩ／Ｆ部５４及び通信系Ｉ／Ｆ部５５が相互に接続されている。また、内部バス５１は、内部バスＩ／Ｆ部５６及びＰＣＩｅＩ／Ｆ部５７を介してシステムコントローラ１０をＰＣＩｅバス１２に接続させている。さらに、システムコントローラ１０は、内部バス５１に加えてＰＣＩｅＩ／Ｆ部５７にも接続された画像出力用ＤＭＡＣ５８及び画像処理部６０も内蔵している。画像出力用ＤＭＡＣ５８及び画像処理部６０は、内部バス５１を介してＣＰＵ５２や外部メモリＩ／Ｆ部５４等に接続されている。
【００１９】
ＣＰＵ５２は、各種演算処理を実行し、システムの全ての設定及び画像出力用ＤＭＡＣ５８、圧縮／伸長器５９、画像処理部６０の起動を制御する。また、ＣＰＵ５２はホストＰＣ３００からの画像データの受信時には、プリンタ言語に基づいて外部メモリＩ／Ｆ部５４を介して画像メモリ１１に描画を行う。
【００２０】
ＲＯＭ／ＲＡＭ５３のＲＯＭ部には、主にＣＰＵ５２のための動作制御プログラムが格納されている。ＲＯＭ／ＲＡＭ５３のＲＡＭ部は、画像保存用のメモリとして機能する他に、ＣＰＵ５２の演算結果又は種々のデータの一次的な記憶場所としても使用される。記憶用メモリとしては、外部メモリＩ／Ｆ部５４を経由して画像メモリ１１も使用される。
【００２１】
通信系Ｉ／Ｆ部５５は、ホストＰＣ３００、操作ボード２０４及びファクシミリボード２０５と、システムコントローラ１０との間のＩ／Ｆ部であり、送受信されたデータは、画像メモリ１１経由あるいは内部レジスタ経由でＣＰＵ５２と交信される。
【００２２】
内部バスＩ／Ｆ部５６は、ＰＣＩｅ  Ｉ／Ｆ部５７と内部バス５１との間のインタフェースであり、ＰＣＩｅバス１２のマスタから指定されたアドレス及びデータを受けて、外部メモリＩ／Ｆ部５４を経由して外部メモリに入出力を行う。
【００２３】
ＰＣＩｅ  Ｉ／Ｆ部５７は、ＰＣＩｅバス１２のプロトコルに準じて、ＰＣＩｅバスマスタとデータのやりとりを行う。
【００２４】
画像出力用ＤＭＡコントローラ５８は、印刷時のＤＭＡコントローラとして機能する。すなわち、ＣＰＵ５２により起動され、予め指定された領域の外部メモリから画像データを読み出してＰＣＩｅ  Ｉ／Ｆ部５７に随時ハンドシェークを行い画像データを出力する。
【００２５】
圧縮／伸長器５９は、ＣＰＵ５２によって起動され、様々なデータの圧縮または伸長に使用されて省メモリ化のために利用される。
【００２６】
画像処理部６０は、エッジ強調処理等の処理に加えて、画像データのスキュー又は歪みを補正する仕組みを持つ。
【００２７】
図３は、ＰＣＩ  Ｅｘｐｒｅｓｓシステムの構成例を示す図である。図３に示されるように、ＣＰＵに接続されるルートコンプレックスは、システムのＩ／Ｏ階層で最上位に位置する。ルートコンプレックスは、複数のＰＣＩ  Ｅｘｐｒｅｓｓポートを持ち、メモリに接続される。エンドポイントは、ＰＣＩ  ＥｘｐｒｅｓｓのＩ／Ｏ構造で末端に位置するデバイスである。スイッチは、ＰＣＩ  Ｅｘｐｒｅｓｓのポートを拡張するために使用される。ＰＣＩｅグラフィックスは、例えば、ＰＣ等に使用されるグラフィックスボードである。ＰＣＩブリッジは、従来のバス規格であるＰＣＩと接続するために使用される。レガシーエンドポイントは、従来のバス規格であるＰＣＩによって接続されるデバイスである。
【００２８】
図４は、ＰＣＩ  Ｅｘｐｒｅｓｓの階層構造を示す図である。図４に示されるように、ＰＣＩ  Ｅｘｐｒｅｓｓでは階層構造を採用し、各層ごとに仕様を定義している。トランザクション層は、送信又は受信のメッセージ及び割り込みを規定している。データリンク層は、ＣＲＣ（Cyclic Redundancy Check）及びエラー時のリトライについて規定している。物理層では、最小転送単位であるパケットの送受信、初期化及びコンフィグレーションを規定している。階層構造とすることで、層単位でのアップグレードが可能である。例えば、物理層のアップグレードは、他の層に影響を与えることなく可能である。
【００２９】
図５は、ＰＣＩ  Ｅｘｐｒｅｓｓのトランザクションパケットのフォーマットを示す図である。ＰＣＩ  Ｅｘｐｒｅｓｓは、パケット単位で通信を行う。図５は、トランザクションパケットのフォーマットを示している。トランザクションパケットは、物理層から転送されるときに、データリンク層パケットに分割される。パケットは、レーンと呼ばれる通信路で転送される。図５に示されるように、物理層は、トランザクションパケットのフォーマット全体に対応し、データリンク層は、シーケンスＮｏ、ヘッダ、データ、ＬＣＲＣ（Ｌｉｎｋ  ＣＲＣ）に対応し、トランザクション層は、ヘッダ及びデータに対応する。
【００３０】
図６は、ＰＣＩ  Ｅｘｐｒｅｓｓのバーチャルチャネルの構成を示す図である。ＰＣＩ  Ｅｘｐｒｅｓｓは、パケットのフロー制御を行うためにバーチャルチャネルの概念を用いる。バーチャルチャネルは、異なるサービス品質のトラフィックを提供するための仕組みで、各バーチャルチャネルは独立したリソース（バッファ又はキュー）を持ち、独立した制御が行われる。当該制御によって、特定のバーチャルチャネルのバッファがフルになっても、他のバーチャルチャネルの転送を行うことができる。すなわち、ＰＣＩ  Ｅｘｐｒｅｓｓは、物理的には１つのリンクを仮想的に複数に分けて使用することができる。図６Ａの破線の楕円で囲った部分を示したものが、図６Ｂである。図６Ｂは、ｎ個のバーチャルチャネルが一つのリンクを共用する例である。
【００３１】
ＰＣＩ  Ｅｘｐｒｅｓｓの規格上、最大で８つまでバーチャルチャネルを持つことができる。１ｃｈのバーチャルチャネルの使用は必須でありその他はオプションである。そのため、対向デバイスの仕様を検討してシステムとしてバーチャルチャネル数が決定される必要がある。ただし、汎用のＳｏＣは、バーチャルチャネルを１ｃｈのみしかサポートしていないものが多い。
【００３２】
図７は、バーチャルチャネル２ｃｈを用いた構成例を示す図である。図７は、画像形成装置においてバーチャルチャネル２ｃｈを使用した画像データ転送システムの実装例である。図７に示される数字はそれぞれの転送順序を示しており、ＶＣ０とＶＣ１で独立して動作する。図２に示されるＰＣＩｅ  Ｉ／Ｆ部５７に含まれるＰＣＩ  Ｅｘｐｒｅｓｓのプロトコル制御部は、転送コマンド・データ制御部及びＩＰ部を有する。一般にＰＣＩ  Ｅｘｐｒｅｓｓのインタフェースの実装には、ＩＰ  Ｃｏｒｅ（Intellectual Property Core）がＩＰ部に用いられる。図７に示される例では、プロトコル制御部は、読み取りデータをＶＣ０に、書き込みデータをＶＣ１に、アサインしている。これにより転送コマンド・データ制御部は、読み取りデータと書き込みデータを独立して制御することができる。この例では、ＶＣ０に対しては読み取りデータ転送のためのコマンドを発行している（１）。転送コマンド・データ制御部は、当該コマンドに対する応答を受けると実際のデータ転送（送信動作）を開始する（２）。同じように、ＶＣ１ｃｈに対しては書き込みデータ転送のためのコマンドを発行する（１）。当該コマンドに対する応答を受け、対向デバイスからデータが転送されてくると転送コマンド・データ制御部は、書き込みデータを受信する（２）。プロトコル制御部は、これらのコマンド又はデータ転送をそれぞれのＶＣで独立に実行することができる。
【００３３】
パケットが、どのバーチャルチャネルを使用するかはトラフィッククラス（ＴＣ）によって決まる。バーチャルチャネルとトラフィッククラスのマッピングはソフトウェアによって設定することができるが、ハードウェアの規格上、マッピングは対向デバイスと一致している必要がある。上記の場合ＶＣ０にＴＣ０（ＶＣ０とＴＣ０は仕様で固定）、ＶＣ１にＴＣ１をアサインしたマッピングは、対向デバイスも同様である必要がある。すなわち、対向デバイスは、２ｃｈのバーチャルチャネルをサポートしている必要がある。したがって、バーチャルチャネルを１ｃｈしかサポートしていないことの多い汎用ＳｏＣを対向デバイスとして用いてシステムを構築することは困難である。
【００３４】
図８は、バーチャルチャネル２ｃｈ構成時の動作を説明するためのフローチャートである。ＶＣ２ｃｈ構成時は、読み取りデータ転送と書き込みデータ転送は並列させて動作することができる。図８のＳ１０１から開始されるフローが読み取りデータ転送時のフロー、図８のＳ２０１から開始されるフローが書き込みデータ転送時のフローを示す。
【００３５】
読み取りデータ転送の場合は、ステップＳ１０１において、転送コマンド・データ制御部は、読み取りデータ転送コマンドをＩＰ部に発行する。当該コマンドに対する受付応答がＩＰ部から返ってくるまで、待ちのステータスが継続される（Ｓ１０２のＮＯ）。応答を受信した場合（Ｓ１０２のＹＥＳ）、転送コマンド・データ制御部は、読み取りデータの転送を開始する（Ｓ１０３）。データ転送中、ＩＰ部がデータ受付できないとき（Ｓ１０４のＮＯ）には受付可能になる（Ｓ１０４のＹＥＳ）まで待つ。全データを送信完了（Ｓ１０５のＹＥＳ）するまで送信動作を繰り返して（Ｓ１０５のＮＯ）転送終了（Ｓ１０６）となる。
【００３６】
書き込みデータ転送の場合は、ステップＳ２０１において、転送コマンド・データ制御部は、ＩＰ部に書き込みデータ転送コマンドをＩＰ部に発行する。当該コマンドに対する受付応答がＩＰ部から返ってくるまで、待ちのステータスが継続される（Ｓ２０２のＮＯ）。応答を受信した場合（Ｓ２０２のＹＥＳ）、書き込みデータの転送が始まる（Ｓ２０３）。ＩＰ部から有効データが返ってきたら（Ｓ２０４のＹＥＳ）後段に転送する。全データを受信完了（Ｓ２０５のＹＥＳ）するまで受信動作を繰り返して（Ｓ２０５のＮＯ）転送終了（Ｓ２０６）となる。ＶＣ２ｃｈ構成のため、プロトコル制御部は、読み取り及び書き込みの二つの動作を、並行して実行することができる。
【００３７】
図９は、バーチャルチャネル１ｃｈを用いた構成例を示す図である。図９は、画像形成装置においてバーチャルチャネルを１ｃｈのみ使用した画像データ転送システムの実装例である。図９に示される数字は、コマンド又はデータのやりとりの順序を示している。当該順序は一例であり、要求に応じて順序は変わることがある。転送コマンド・データ制御部は、読み取りデータ転送又は書き込みデータの転送要求を受けてコマンドを発行する。この例では、転送コマンド・データ制御部は、最初に書き込みデータ転送のためのコマンドを発行する（１）。当該書き込みコマンドに対する受付応答を受信すると、転送コマンド・データ制御部は、書き込みデータの受信待ちの状態となる。この状態で読み取りデータの転送要求を受けると、読み取りデータ転送コマンドを発行する（２）。当該読み取りコマンドに対する応答が受信されると読み取りデータを送信する（３）。一方、書き込みデータが、転送コマンド・データ制御部から返ってきたら、当該書き込みデータを受信して（４）後段に出力する。
【００３８】
上記の動作を可能にするため、転送コマンド・データ制御部では、読み取りデータ転送要求と書き込みデータ転送要求の調停を行う。また、ＩＰ部に対するコマンドラインは共用しているが、送信又は受信のデータラインは個別に持っているため、読み取りデータの送信中に書き込みデータを受信した場合であっても転送は成立する。ＶＣ０はＰＣＩ  Ｅｘｐｒｅｓｓの規格上必ずサポートされるため、当該構成であれば対向デバイスによらず、システムが成立する。本発明の実施の形態では、図７のような複数のバーチャルチャネルを使用した構成と、図９のような単一のバーチャルチャネルを使用した構成とを共存させ、切替可能な構成を実現することができる。
【００３９】
図１０は、バーチャルチャネル１ｃｈ構成時の動作を説明するためのフローチャートである。ステップＳ３０１において、転送コマンド・データ制御部は、転送要求を受け、当該要求が読み取りデータの転送要求（Ｓ３０２のＹＥＳ）か、書き込みデータの転送要求（Ｓ３０２のＮＯ）かを判断し、要求に応じた転送コマンドを発行する。転送コマンド・データ制御部は、ＶＣ１ｃｈのみの構成のため、いずれのコマンドもＶＣ０に対して出力する。書き込みデータの転送コマンド（受信転送要求）（Ｓ３０３）の場合には、当該書き込みコマンドに対する受付応答（Ｓ３０４のＹＥＳ）を待った（Ｓ３０４のＮＯ）後、転送コマンド・データ制御部は、次のコマンドを発行可能な状態になる（Ｓ３０５）。発行したコマンドに対する応答は、対向デバイスのレイテンシ後にＩＰ部に返ってくる。書き込みデータを受信するパスは独立して存在するため、転送コマンド・データ制御部は、ＩＰ部によるコマンド受付後に次の動作に移行することができる。
【００４０】
一方、読み取りデータ転送（送信転送要求）（Ｓ３０６）はコマンド受付後、ＶＣ２ｃｈ構成時と同様にデータを転送する。すなわち、ステップＳ３０６からステップＳ３０７は、図８に示されるステップＳ１０１からステップＳ１０２と同様である。ステップＳ３０８において、ＩＰ部による転送コマンドの受付が完了すると、ステップＳ３０９からステップＳ３１２は、図８に示されるステップＳ１０３からステップＳ１０６と同様である。当該送信転送が完了すると、転送コマンド・データ制御部は、次の転送要求コマンドを発行することができる（Ｓ３１３のＹＥＳ）。
【００４１】
図１１は、本発明の実施の形態におけるバーチャルチャネルの設定を行うレジスタの例を示す図である。ＰＣＩｅＩ／Ｆ部５７でサポートされているバーチャルチャネルは、ソフトウェアにより図１１に示されるレジスタで設定が可能である。ＰＣＩｅＩ／Ｆ部５７に含まれるプロトコル制御部のＩＰ部は、図１１に示されるレジスタを、サポートするバーチャルチャネルの数だけ有している。図１１に示される例では、レジスタのＡＤＤＲＥＳＳ３１に該当するリード及びライト可の「ｖｃ＿ｅｎａｂｌｅ」でバーチャルチャネルをイネーブルとするかディセーブルとするかを設定する。また、レジスタのＡＤＤＲＥＳＳ１６〜１８に該当するリードオンリーの「ｖｃ＿ｉｄ」は、ＶＣを識別するＩＤである。当該ＩＤにより、ＶＣ０〜ＶＣ８のいずれかが設定される。また、レジスタのＡＤＤＲＥＳＳ０７〜００に該当するリード及びライト可の「ｖｃ＿ｔｃ＿ｍａｐ」でＶＣ及びＴＣのマッピングを行う。当該マッピングが、対向デバイスと一致している必要がある。
【００４２】
例えば、ＶＣ０のレジスタの「ｖｃ＿ｔｃ＿ｍａｐ」に対して８'ｂ００００＿０００１と設定した場合、ＶＣ０にＴＣ０がマッピングされる。なお、ＰＣＩ  Ｅｘｐｒｅｓｓの規格上、ＶＣ０に対してはＴＣ０が、固定して関連付けられている。ＶＣ０のレジスタの「ｖｃ＿ｔｃ＿ｍａｐ」に対して８'ｂ００００＿００１１と設定した場合、ＶＣ０にＴＣ０とＴＣ１の複数のＴＣがマッピングされる。同様に、ＶＣ１のレジスタの「ｖｃ＿ｔｃ＿ｍａｐ」に対して８'ｂ００００＿００１０と設定すれば、ＶＣ１にＴＣ１がマッピングされる。ただし規格上、一つのＴＣを複数のＶＣにマッピングすることはできない。
【００４３】
図１２は、本発明の実施の形態におけるバーチャルチャネル設定による転送切り替え動作を説明するための図である。ＰＣＩｅＩ／Ｆ部５７に含まれるプロトコル制御部は、ソフトウェアによって、図１１に示されるレジスタにＶＣ及びＴＣを設定されると、当該設定に基づいて、転送先バーチャルチャネルの切り替えを行う。転送コマンド・データ制御部は、ＩＰ部から当該設定に係るＶＣ情報を受け取り、転送コマンドを送出するＶＣを決定する。図１２に示されるＶＣ情報に基づく転送切り替え動作において、読み取りデータの転送は、ＶＣ２ｃｈ構成でもＶＣ１ｃｈ構成でもＶＣ０で実行される。一方、書き込みデータの転送は、ＶＣ２ｃｈ構成のときはＶＣ１で行い、ＶＣ１ｃｈ構成のときはＶＣ０で行う。このように、図１１に示されるレジスタに設定されたＶＣ情報から、転送コマンド・データ制御部は、コマンド発行先を変更して転送に使用するＶＣの切り替えを行うことができる。
【００４４】
図１３は、本発明の実施の形態におけるバーチャルチャネル１ｃｈ時の転送コマンド・データ制御部の構成例を示す図である。転送コマンド・データ制御部は、調停部、転送優先度設定部、読み取りデータ転送部、書き込みデータ転送部及び応答データ解析部を有する。
【００４５】
図１３においては、ＶＣが１ｃｈのみに設定された場合の動作を示している。ＶＣが１ｃｈであるか否かは、ＩＰ部から受けるＶＣ情報により判断する。当該ＶＣ情報は、転送コマンド・データ制御部内の各子モジュール、すなわち、調停部、転送優先度設定部、読み取りデータ転送部、書き込みデータ転送部及び応答データ解析部に伝えられる。ＶＣが１ｃｈのみしかない場合、読み取りデータ（送信データ）及び書き込みデータ（受信データ）のコマンド発行は、同一のパスを用いて実行される必要がある。読み取りデータ又は書き込みデータの転送要求があった場合に、読み取りデータ転送部及び書き込みデータ転送部は、それぞれ転送コマンドを送出する。送出された転送コマンドに転送優先度設定部は、当該転送コマンドの優先度情報を付加する。例えば、書き込みデータの読み出しが優先、といった情報を付加して調停部に出力する。調停部では、受信したコマンドの転送優先度の情報を参照して、書き込みデータの転送コマンドを発行する。
【００４６】
転送コマンドが、読み取りデータのライトの場合には、調停部は、転送コマンドに続いてデータを送出する。一方、書き込みデータのリードの転送要求の場合には、調停部が転送コマンド発行後、対向デバイスのレイテンシ分遅れて応答データが受信される。当該応答データは、応答データ解析部を経由して書き込みデータ転送部へ入力される。対向デバイスに対してデータの要求をする時に、一つ目の要求に対する応答データが返る前に、二つ目の要求を発行する場合、又は、異なるイニシエータ（マスタ）から複数のリード要求を発行する場合は、応答データがどの要求に対するものであるかの解析が必要となる。当該解析の機能を担うのが、応答データ解析部で、コマンド発行時に付加したタグと呼ばれる情報を管理して応答データの判別を行う。なお、転送優先度設定部が設定する優先度は図１４のようなレジスタによって優先度の変更を行うこともできる。
【００４７】
図１４は、本発明の実施の形態における転送優先度設定部の設定を行うレジスタの例を示す図である。図１４に示される例では、レジスタのＡＤＤＲＥＳＳ００及び０１に該当するリード及びライト可の「ｐｒｉｏｒｉｔｙ」で、転送優先度設定部が転送コマンドに付加する優先度を設定する。例えば、レジスタのＡＤＤＲＥＳＳ００及び０１に、下記のように設定してもよい。
２'ｂ００：書き込みデータのリード動作を優先する。
２'ｂ０１：読み取りデータのライト動作を優先する。
２'ｂ１０：書き込みデータと読み取りデータの優先度を均等にする。
【００４８】
図１３に戻る。上述のように、単一のバーチャルチャネルで複数の種類のデータ転送を行うとき、競合するデータを調停することができる。各データに優先度を付与することができるので要求される転送性能に応じてデータの調停を行うことができる。当該優先度を変更可能にすることで効率のよい転送を実現する。
【００４９】
また、複数のイニシエータ（マスタ）から受信転送の要求コマンドを出した場合又は要求に対して応答データが返ってくる前に次の要求コマンドを出した場合に、どの要求コマンドに対する応答データかを判断することができる。
【００５０】
図１５は、本発明の実施の形態における対向デバイスの受信コマンドバッファの例を示す図である。図１５に示されるように、発行されたコマンドは、受信する対向デバイスのコマンドバッファに蓄積される。図１５は、対向デバイスにとってＷＲ＿ＣＭＤ（送信転送コマンド）がバッファに滞留している状態で、ＲＤ＿ＣＭＤ（受信転送コマンド）を受けた状態を示している。プロトコル制御部から出力されたコマンドは、対向デバイス側ではこのように滞留するケースも想定される。ＷＲ＿ＣＭＤが滞留している状況で、ＲＤ＿ＣＭＤが受信されてもＷＲ＿ＣＭＤの処理が終わるまでＲＤ＿ＣＭＤがバッファから出力されない。その場合、転送優先度設定部で優先度をつけて調停をしても応答データがなかなか返ってこないケースが生じ、転送性能に悪影響を及ぼす恐れもある。
【００５１】
そこで、プロトコル制御部は一度、ＷＲ＿ＣＭＤを発行した後、指定された時間だけ、次のＷＲ＿ＣＭＤを発行しない機能を有する。当該機能は、極端に偏ってＷＲ＿ＣＭＤのみ、あるいはＲＤ＿ＣＭＤのみが続くことで、本来の転送優先度（転送性能に寄与）に影響を及ぼすことを防止する。状況によってＲＤ＿ＣＭＤが連続で出力される場合はあるが、ＷＲ＿ＣＭＤ側にコマンド発行間隔を制御できる機能が入っているため、当該間隔を調整することで、ＷＲ＿ＣＭＤとＲＤ＿ＣＭＤのバランスを取ることが可能である。したがって、対向デバイスのコマンドバッファにＷＲ＿ＣＭＤ（送信転送コマンド）のコマンドばかりが滞留することを抑制することができ、要求に対してレイテンシのかかる受信転送に悪影響を及ぼすことを防止することができる。当該機能のイネーブル／ディセーブルの切替及び次のコマンド発行までの間隔は、図１６及び図１７に示される図１１と同様の構成のレジスタに値を設定して指定することができる。
【００５２】
図１６は、本発明の実施の形態におけるＷＲ＿ＣＭＤの間隔を調整する機能を有効化／無効化するレジスタの例を示す図である。図１６に示されるように、レジスタのＡＤＤＲＥＳＳ００に該当するリード及びライト可の「ｗｒ＿ｃｍｄ＿ｃｔｌ」で、ＷＲ＿ＣＭＤの間隔を調整する機能をイネーブルとするかディセーブルとするかを設定する。
【００５３】
図１７は、本発明の実施の形態におけるＷＲ＿ＣＭＤの間隔を指定するレジスタの例を示す図である。図１７に示されるように、レジスタのＡＤＤＲＥＳＳ００〜３１に該当するリード及びライト可の「ｗｒ＿ｃｍｄ＿ｉｎｔｅｒｖａｌ」で、ＷＲ＿ＣＭＤの間隔を設定する。図１６に示される「ｗｒ＿ｃｍｄ＿ｃｔｌ」が有効に設定されている場合、「ｗｒ＿ｃｍｄ＿ｉｎｔｅｒｖａｌ」に設定されているＷＲ＿ＣＭＤの間隔は有効となる。
【００５４】
図１３に戻る。図１３において、ＶＣが１ｃｈのみの場合を示したが、仮に２ｃｈの構成で対向デバイスとシステムを成立させる場合には、調停部及び転送優先度設定部の機能をＯＦＦにして転送を実施する。当該機能によりＰＣＩｅＩ／Ｆ部５７は、対向デバイスの仕様に応じて、ＶＣの構成を変更可能なハードウェアを実現できる。また、これによってＶＣ１ｃｈのみしかサポートしない汎用ＳｏＣとの接続が可能となり、専用の対向ＬＳＩがなくてもシステム構築が可能となる。汎用ＳｏＣとの接続が可能になることで特定機能にスペックを絞り、安価なシステムの構築又は特別な対応も可能となる。
【００５５】
図１８は、本発明の実施の形態におけるバーチャルチャネル２ｃｈ時の転送コマンド・データ制御部の構成例を示す図である。図１６は、ＶＣが２ｃｈのときの動作のイメージを示している。ＶＣ２ｃｈであるかの判断はＶＣ１ｃｈ時と同様で、ＩＰ部から受けるＶＣ情報により判断する。図１６に示されるように、ＶＣ２ｃｈ構成の時には、転送コマンド又は転送データは、グレーアウトした転送優先度設定部と調停部をスルーして、対向デバイスに送信される。転送優先度設定部と調停部は、ＶＣ１ｃｈ時には機能する。
【００５６】
図１９は、本発明の実施の形態におけるバーチャルチャネルの切替を実施する動作を説明するためのフローチャートである。
【００５７】
ステップＳ４０１において、ソフトウェアによりＶＣの設定を図１１に示されるレジスタに対して行う。当該設定によって、各ＶＣのイネーブル及びＴＣマッピングが決まる。当該設定の情報、すなわちＶＣ情報を転送コマンド・データ制御部が受信する（Ｓ４０２）。ＶＣ／ＴＣマッピングは、対向デバイスの設定と一致している必要がある。
【００５８】
ここでＶＣが複数（２ｃｈ）イネーブルされている場合（Ｓ４０３のＮＯ）には、転送コマンド・データ制御部は、読み取りデータをＶＣ０、書き込みデータをＶＣ１でそれぞれのデータ転送を実施し（Ｓ４１０）、転送サイズ分のパケットを転送して（Ｓ４１１）転送終了となる。
【００５９】
一方、ＶＣ１ｃｈのみがイネーブルされている場合（Ｓ４０３のＹＥＳ）は、ステップＳ４０４に進み、読み取りデータの転送開始手順を行う。ここでは、書き込みデータが、読み取りデータよりも優先度が高い場合を示す。転送優先度設定部は、読み取りデータに書き込みデータよりも低い転送優先度を設定する（Ｓ４０５）。調停部は、読み込みコマンドを受信したときに、書き込みデータの転送がある場合（Ｓ４０６のＹＥＳ）には、当該書き込みデータの転送が終わるまで、読み取りデータのパケット送信を待つ。すなわち、調停部は、書き込みデータの転送が実行されていないタイミング（Ｓ４０６のＮＯ）で、読み取りデータのパケットを送信する（Ｓ４０７）。再び、書き込みデータとバスの競合が生じた場合には、調停部は、パケット単位で調停を行う。転送サイズ分のパケットを転送するまでこの動作を繰り返し（Ｓ４０８のＮＯ）、転送が終了する（Ｓ４０８のＹＥＳ、Ｓ４０９）。
【００６０】
なお、図１９に示されるフローチャートにおいて、ＶＣ１ｃｈ及びＶＣ２ｃｈの場合を説明したが、ＶＣ２ｃｈはさらに多くのチャネルであってもよい。例えば、ＶＣ１ｃｈ及びＶＣ４ｃｈ等であってもよく、ＶＣ４ｃｈの場合、読み取りデータはＶＣ０及びＶＣ１、書き込みデータはＶＣ２及びＶＣ３で、データ転送が行われてもよい。
【００６１】
上述のように、本発明の実施の形態によれば、バーチャルチャネルの有効又は無効を設定して、バーチャルチャネル数を可変にすることにより、対向デバイスとの通信を成立させることができる。すなわち、対向デバイスのシリアルインタフェースのバーチャルチャネルの数が単一でも複数でもデータ転送を可能とすることができる。
【００６２】
なお、本発明の実施の形態において、画像形成装置１０００は、データ転送装置の一例である。対向デバイスは、転送先装置の一例である。ＩＰ部は、設定部の一例である。プロトコル制御部は、第１の通信部又は第２の通信部の一例である。転送コマンド・データ制御部は、発行部の一例である。ＷＲ＿ＣＭＤは、書き込み転送コマンドの一例である。ＲＤ＿ＣＭＤは、読み込み転送コマンドの一例である。
【００６３】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００６４】
１０００    画像形成装置
１０        システムコントローラ
１１        画像メモリ
１２        ＰＣＩｅバス
２００      スキャナ
２０１      ＡＤＦ
２０２      プリンタ
２０３      ソータ
２０４      操作ボード
２０５      ファクシミリボード
３００      ＰＣ
５１        内部バス
５２        ＣＰＵ
５３        ＲＯＭ／ＲＡＭ
５４        外部メモリＩ／Ｆ部
５５        通信系Ｉ／Ｆ部
５６        内部バスＩ／Ｆ部
５７        ＰＣＩｅＩ／Ｆ部
５８        画像出力用ＤＭＡＣ
５９        圧縮／伸長器
６０        画像処理部
【先行技術文献】
【特許文献】
【００６５】
【特許文献１】特開２００７−２７２８７１号公報
【図１】
2019016063.tif 000003
【図２】
2019016063.tif 000004
【図３】
2019016063.tif 000005
【図４】
2019016063.tif 000006
【図５】
2019016063.tif 000007
【図６】
2019016063.tif 000008
【図７】
2019016063.tif 000009
【図８】
2019016063.tif 000010
【図９】
2019016063.tif 000011
【図１０】
2019016063.tif 000012
【図１１】
2019016063.tif 000013
【図１２】
2019016063.tif 000014
【図１３】
2019016063.tif 000015
【図１４】
2019016063.tif 000016
【図１５】
2019016063.tif 000017
【図１６】
2019016063.tif 000018
【図１７】
2019016063.tif 000019
【図１８】
2019016063.tif 000020
【図１９】
2019016063.tif 000021