JP2008198126A - データ通信システム、データ通信プログラム、データ受信装置、データ受信プログラム、及び、データ受信方法 - Google Patents

データ通信システム、データ通信プログラム、データ受信装置、データ受信プログラム、及び、データ受信方法 Download PDF

Info

Publication number
JP2008198126A
JP2008198126A JP2007035349A JP2007035349A JP2008198126A JP 2008198126 A JP2008198126 A JP 2008198126A JP 2007035349 A JP2007035349 A JP 2007035349A JP 2007035349 A JP2007035349 A JP 2007035349A JP 2008198126 A JP2008198126 A JP 2008198126A
Authority
JP
Japan
Prior art keywords
data
storage
transfer
data element
storage means
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007035349A
Other languages
English (en)
Other versions
JP5029053B2 (ja
Inventor
Hiroshi Okubo
宏 大久保
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP2007035349A priority Critical patent/JP5029053B2/ja
Priority to US11/930,824 priority patent/US20080201498A1/en
Publication of JP2008198126A publication Critical patent/JP2008198126A/ja
Application granted granted Critical
Publication of JP5029053B2 publication Critical patent/JP5029053B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】受信したデータを一時的に格納する二段階の記憶領域が設けられている構成の下で、二段目の記憶領域に起因した通信効率を高める。
【解決手段】二段目の記憶領域に設定するバッファの個数とサイズを変更しながら(S52,54,60,62)、USBのバルクアウト転送を行う(S56)。そして、各個数およびサイズについて、NYETハンドシェークが発行された回数および処理時間をストアする(S58)。最適値判定処理(S64)では、この結果に基づいて、通信効率を高めることができるバッファの個数とサイズを判定する。
【選択図】図12

Description

本発明は、データ通信システム、データ通信プログラム、データ受信装置、データ受信プログラム、または、データ受信方法に関する。
装置間における通信は、一般に、何らかの規格に基づいて行われる。例えば、シリアル通信においては、IEEE(InstituteofElectricalandElectronicEngineers)1394やUSB(UniversalSerialBus)が広く用いられている。IEEE1394は、100Mbps,200Mbps,400Mbpsの転送速度が定められた規格である。また、USBは、USB1.1で採用された最大12Mbpsの転送速度をもつFS(フルスピード)モードや、USB2.0で追加された最大480Mbsの転送速度をもつHS(ハイスピード)モードなどが定められた規格である。
下記特許文献1には、USBコントローラ内のエンドポイントにおけるデータのバッファとして、各エンドポイントが専用で用いるバッファと、専用のバッファが空でないときに使用できる共用バッファとを設けることで、バッファの容量の縮小と通信の高速化とを目指す技術が開示されている。
下記特許文献2には、1パケット分の容量をもつ受信バッファを複数個備えたUSBターゲットデバイスにおいて、受信バッファが一つでも空けばホストにデータ送信を許可する通信モードと、受信バッファが所定数空くのを待ってからホストに連続的なデータ送信を許可する通信モードとを設定する技術が開示されている。
特許第3415567号公報 特開2003−234796号公報
本発明は、受信したデータを一時的に格納する二段階の記憶領域が設けられている構成の下で、二段目の記憶領域に起因した通信効率の問題点を把握することが可能となるデータ通信システム、データ通信プログラム、データ受信装置、データ受信プログラム、または、データ受信方法を提供することを目的とする。
請求項1に記載のデータ通信システムの発明は、通信対象のデータをデータ要素毎に受信する受信手段と、受信されたデータ要素を一時的に格納する第1格納手段と、前記第1格納手段に格納されたデータ要素を転送する第1転送手段と、前記第1転送手段により転送されたデータ要素を一時的に格納する第2格納手段と、前記第2格納手段に格納されたデータ要素を転送する第2転送手段と、前記第2転送手段により転送された各データ要素を取得して、前記データを格納する第3格納手段と、前記第2格納手段におけるデータ要素の格納能力を変更する変更手段と、前記変更手段により変更された複数の格納能力の下において、前記データに対する通信効率を診断する診断手段と、を備え、前記受信手段は、前記第1格納手段におけるデータ要素の格納可能状況に基づいて、次のデータ要素の受信を制御し、前記第1転送手段は、前記第2格納手段におけるデータ要素の格納可能状況に基づいて、前記第1格納手段から前記第2格納手段へのデータ要素の転送を制御する。
請求項2に記載のデータ通信システムの発明は、請求項1に記載のデータ通信システムにおいて、当該データ通信システムは、さらに、前記診断手段の診断結果に基づいて、前記第2格納手段に設定すべき格納能力を判定する判定手段を備え、前記変更手段は、前記判定手段の判定結果に基づいて、前記第2格納手段におけるデータ要素の格納能力を再変更する。
請求項3に記載のデータ通信システムの発明は、請求項1に記載のデータ通信システムにおいて、当該データ通信システムは、データの書き換えが可能な記憶領域を備え、前記第2格納手段は、一つのデータ要素を格納する小領域を前記記憶領域に一又は二以上設けることで構築され、前記変更手段は、前記小領域の個数または前記小領域の容量を変更し、これにより前記格納能力を変更することを特徴とする。
請求項4に記載のデータ通信システムの発明は、請求項3に記載のデータ通信システムにおいて、前記診断手段は、前記第2格納手段が使用する記憶領域の容量に基づいて、前記通信効率を診断する。
請求項5に記載のデータ通信システムの発明は、請求項1に記載のデータ通信システムにおいて、前記診断手段は、前記データの通信において計測された所要時間に基づいて、前記通信効率を診断する。
請求項6に記載のデータ通信システムの発明は、請求項1に記載のデータ通信システムにおいて、前記受信手段は、送信側との間でなされる対話に基づいて、各データ要素の受信時期を調整する調整手段を備え、前記診断手段は、前記対話の解析に基づいて、前記通信効率を診断する。
請求項7に記載のデータ通信システムの発明は、請求項1,5または6に記載のデータ通信システムにおいて、当該データ通信システムは、前記データをデータ要素毎に送信する送信装置を備え、前記診断手段は、前記送信装置に設けられる。
請求項8に記載のデータ通信プログラムの発明は、コンピュータを、通信対象のデータをデータ要素毎に受信する受信手段と、受信されたデータ要素を一時的に格納する第1格納手段と、前記第1格納手段に格納されたデータ要素を転送する第1転送手段と、前記第1転送手段により転送されたデータ要素を一時的に格納する第2格納手段と、前記第2格納手段に格納されたデータ要素を転送する第2転送手段と、前記第2転送手段により転送された各データ要素を取得して、前記データを格納する第3格納手段と、前記第2格納手段におけるデータ要素の格納能力を変更する変更手段と、前記変更手段により変更された複数の格納能力の下において、前記データに対する通信効率を診断する診断手段と、として機能させ、ここで、前記受信手段は、前記第1格納手段におけるデータ要素の格納可能状況に基づいて、次のデータ要素の受信を制御し、前記第1転送手段は、前記第2格納手段におけるデータ要素の格納可能状況に基づいて、前記第1格納手段から前記第2格納手段へのデータ要素の転送を制御する。
請求項9に記載のデータ受信装置の発明は、通信対象のデータをデータ要素毎に受信する受信手段と、受信されたデータ要素を一時的に格納する第1格納手段と、前記第1格納手段に格納されたデータ要素を転送する第1転送手段と、データの書き換えが可能な記憶領域にデータ要素を記憶する領域を確保して、前記第1転送手段により転送されたデータ要素を一時的に格納する第2格納手段と、前記第2格納手段に格納されたデータ要素を転送する第2転送手段と、前記第2転送手段により転送された各データ要素を取得して、前記データを格納する第3格納手段と、前記第2格納手段におけるデータ要素の格納能力を設定する設定手段と、を備え、前記受信手段は、前記第1格納手段におけるデータ要素の格納可能状況に基づいて、次のデータ要素の受信を制御し、前記第1転送手段は、前記第2格納手段におけるデータ要素の格納可能状況に基づいて、前記第1格納手段からのデータの転送を制御し、前記第2格納手段は、前記設定手段の設定に基づいて、記憶領域に確保する領域の仕様を変更する。
請求項10に記載のデータ受信装置の発明は、請求項9に記載のデータ受信装置において、前記設定手段による設定は、前記データが受信される度に実行可能である。
請求項11に記載のデータ受信プログラムの発明は、コンピュータを、通信対象のデータをデータ要素毎に受信する受信手段と、受信されたデータ要素を一時的に格納する第1格納手段と、前記第1格納手段に格納されたデータ要素を転送する第1転送手段と、データの書き換えが可能な記憶領域にデータ要素を記憶する領域を確保して、前記第1転送手段により転送されたデータ要素を一時的に格納する第2格納手段と、前記第2格納手段に格納されたデータ要素を転送する第2転送手段と、前記第2転送手段により転送された各データ要素を取得して、前記データを格納する第3格納手段と、前記第2格納手段におけるデータ要素の格納能力を設定する設定手段と、として機能させ、ここで、前記受信手段は、前記第1格納手段におけるデータ要素の格納可能状況に基づいて、次のデータ要素の受信を制御し、前記第1転送手段は、前記第2格納手段におけるデータ要素の格納可能状況に基づいて、前記第1格納手段からのデータの転送を制御し、前記第2格納手段は、前記設定手段の設定に基づいて、記憶領域に確保する領域の仕様を変更する。
請求項12に記載のデータ受信方法の発明は、通信対象のデータをデータ要素毎に受信する受信手順と、受信されたデータ要素を一時的に格納する第1格納手順と、前記第1格納手順において格納されたデータ要素を転送する第1転送手順と、データの書き換えが可能な記憶領域にデータ要素を記憶する領域を確保して、前記第1転送手順において転送されたデータ要素を一時的に格納する第2格納手順と、前記第2格納手順において格納されたデータ要素を転送する第2転送手順と、前記第2転送手順において転送された各データ要素を取得して、前記データを格納する第3格納手順と、前記第2格納手順におけるデータ要素の格納能力を設定する設定手順と、を含み、前記受信手順においては、前記第1格納手順におけるデータ要素の格納可能状況に基づいて、次のデータ要素の受信を制御し、前記第1転送手順においては、前記第2格納手順において格納するデータ要素の格納可能状況に基づいて、前記第1格納手順において格納されたデータの転送を制御し、前記第2格納手順においては、前記設定手順における設定に基づいて、記憶領域に確保する領域の仕様を変更する。
請求項1の本発明により、データ転送において、受信したデータを一時的に格納する二段階の記憶領域が設けられている構成の下で、二段目の記憶領域に起因した通信効率の問題点を把握することが可能となる。
請求項2の本発明により、本発明の態様を用いない場合に比べ、通信効率を高めることが可能となる。
請求項3の本発明により、各データ要素を格納するための小領域を記憶領域に設ける場合の通信効率の診断が可能となる。
請求項4の本発明により、記憶領域に使用される容量も考慮して、通信効率の診断が行われる。
請求項5の本発明により、実測された通信所要時間に基づいて、通信効率を診断することが可能となる。
請求項6の本発明により、受信側と送信側とで行われる対話を利用することで、本発明の態様を用いない場合に比べ、通信効率の診断が簡易化される。
請求項7の本発明により、送信装置において、受信側に起因する通信効率を診断することが可能となる。
請求項8の本発明により、受信したデータを一時的に格納する二段階の記憶領域が設けられている構成の下で、二段目の記憶領域に起因した通信効率の問題点を把握することが可能となるデータ通信プログラムが提供される。
請求項9の本発明により、受信したデータを一時的に格納する二段階の記憶領域が設けられている構成の下で、本発明の態様を用いない場合に比べて、二段目の記憶領域に起因した通信効率を高めることが可能となる。
請求項10の本発明により、本発明の態様を用いない場合に比べて、通信効率をきめ細かに変更することが可能となる。
請求項11の本発明により、受信したデータを一時的に格納する二段階の記憶領域が設けられている構成の下で、本発明の態様を用いない場合に比べて、二段目の記憶領域に起因した通信効率を高めることが可能となるデータ受信プログラムが提供される。
請求項12の本発明により、受信したデータを一時的に格納する二段階の記憶領域が設けられている構成の下で、本発明の態様を用いない場合に比べて、二段目の記憶領域に起因した通信効率を高めることが可能となるデータ受信方法が提供される。
以下に本実施の形態を例示する。
図1は、本実施の形態にかかるUSB通信システム10のハードウエア構成の概略を説明する図である。このUSB通信システム10は、USBの規格に基づくデータ通信システムの一例である。USB通信システム10には、USBのホストとしてのPC(パーソナルコンピュータ)20と、ターゲットデバイスとしての画像処理装置50、及びこれらを接続するUSBケーブル90が含まれている。また、PC20と画像処理装置50は、インターネット等のネットワーク100にも接続されている。
PC20は、汎用的なコンピュータであり、ここでは所有者によって携帯されるノート型であることを想定している。PC20には、内部通信路としてのバス22が設けられ、バス22には、CPU(中央処理装置)24、メモリ26、UI(ユーザインタフェース)32、ネットワークIF(インタフェース)34、USBホストコントローラ36、及びCDD(コンパクトディスクドライブ)46の各装置が接続されている。
CPU24は、メモリ26に格納されたプログラム(ソフトウエア)に従って演算や制御を実行する装置であり、バス22を通じて、各装置の動作を制御したり、各装置間あるいは外部との通信を制御したりもする。メモリ26は、半導体あるいは磁気ディスクなどによって形成された記憶領域を備える記憶装置である。メモリ26には、OS(オペレーションシステム)、デバイスドライバ、アプリケーションプログラム、各種のデータなどが格納される(以下では、通信対象となるプログラムコードなどもデータと呼ぶ場合がある)。なお、メモリ26の記憶領域のどこに何を格納するかは、OSなどによって制御されることが一般的であり、例えば、メモリ26には、OSやデバイスドライバが使用するカーネル領域28や、アプリケーションプログラムが使用するユーザ領域30が構築される。
UI32は、キーボードやトラックポイントなどで作られる入力装置と、液晶ディスプレイ等で作られる表示装置とを備える。入力装置からは、ユーザからの指示を受け付け、表示装置には、ユーザに対して提示すべきデータを表示する。ネットワークIF34は、ネットワーク100と接続するためのインタフェースであり、これにより、PC20は、外部装置との間でプログラムやデータの送受信を行うことが可能となる。一例としては、PC20を制御するプログラム(CPU24の制御プログラムや、USBホストコントローラ36の制御プログラムなど)をネットワーク100を通じて取得する態様を挙げることができる。
USBホストコントローラ36は、USB通信を制御し、USBケーブル90を通じてターゲットデバイスとのデータの送信及び受信を可能にする通信制御装置である。USBホストコントローラ36は、バッファメモリ38、USBIF(USBインタフェース)40、及び制御部42を備えている。バッファメモリ38は、半導体メモリを用いて構成された先入れ先出し方式の記憶装置であり、入力または出力するデータを一時的に格納する。また、USBIF40は、USBケーブル90を接続するインタフェースである。制御部42は、演算処理機能を備え、USBホストコントローラ36を制御する装置である。制御部42は、CPU24の指示の下、バッファメモリ38やUSBIF40を制御する。この制御部42には、DMA(DirectMemoryAccess)44が設けられている。DMA44は、バッファメモリ38とメモリ26との間のデータ通信を制御する装置であり、CPU24を介在せずに直接的にバッファメモリ38とメモリ26との通信制御を行うことができる。
CDD46は、記憶媒体としてのCD(コンパクトディスク)との間で、データの入出力を行う装置である。例えば、PC20を制御するプログラム(CPU24の制御プログラムや、USBホストコントローラ36の制御プログラムなど)を記録したCDを用いて提供することが可能である。この場合CDD46を通じてそのプログラムを取得することができる。
画像処理装置50は、画像処理機能が強化されたコンピュータシステムである。画像処理装置50は、内部通信路としてのバス52と、バス52に接続されたCPU54、メモリ56、UI62、ネットワークIF64、USBターゲットコントローラ66、スキャナ76、及びプリンタ78を含んでいる。このうち、バス52、CPU54、メモリ56、ネットワークIF64は、PC20とほぼ同様にして構成されており、メモリ56にカーネル領域58とユーザ領域60を設けることができる点も同様である。UI62は、入力装置及び表示装置を備える点ではPC20と同様であるが、入力装置が主としてボタンやタッチパネルで構成される点で異なっている。また、USBターゲットコントローラ66は、USBホストコントローラ36とほぼ同様にして構成されているが、USB通信におけるターゲットデバイスとして用いられる点で異なる。つまり、USBターゲットコントローラ66では、USBIF70や制御部72などが、受信手段として構築されている。スキャナ76は、用紙を読み取って画像データを生成する読み取り装置であり、プリンタ78は、画像データに基づいて用紙に印刷を行う印刷装置である。画像処理装置50は、内蔵されたスキャナ76とプリンタ78が連携して動作されることで、複写を行うことができる。
ユーザは、画像処理装置50の保守を行ったり、画像処理装置50のプリンタ78を利用した印刷を行ったりするために、例えばノート型のPC20をUSBケーブル90を通じて画像処理装置50に接続することができる。USBによる通信では、接続された二つの装置は対等ではなく、一方がホストで、他方がターゲットデバイスとなる。図1の例では、PC20がホストとなり、画像処理装置50がターゲットとなっている。通常、、ホストとしては低機能から高機能までの装置が選ばれる。それに対して、ターゲットの装置は性能が固定されていることが多い。また、画像処理装置50をホストとし、PC20をターゲットとするように設定することも可能である。
続いて、図2を用いて、USBによる通信について説明する。図2は、USBでの通信におけるホスト(PC20)とターゲットデバイス(画像処理装置50)のソフトウェアとハードウェアの階層を示す図である。図では、ホスト及びターゲットデバイスの構成を、アプリケーションレベル、デバイスドライバレベル、及び、ハードウエアレベルの三つの階層に分けている。ホストにおいては、アプリケーションレベルは、アプリケーション110のプログラムによって構成され、デバイスドライバレベルは、汎用的な上位ドライバとしてのクラスドライバ112と、USB固有のプロトコルを実装するバスドライバ及びUSBホストコントローラ36を抽象化したホストコントロールドライバ(これらをホストコントロール/バスドライバ114と呼ぶ)によって構成され、ハードウエアレベルは、図1で説明したUSBホストコントローラ36によって構成される。また、ターゲットデバイスでは、アプリケーションレベルは、アプリケーション120のプログラムによって構成され、デバイスドライバレベルは、H/W(ハードウエア)非依存部122及びH/W依存部124をもつソフトウエアによって構成され、ハードウエアレベルは、図1で説明したUSBターゲットコントローラ66によって構成される。なお、デバイスドライバレベルにおいて、H/W(ハードウエア)非依存部122とH/W依存部124に分離しているのは、USBターゲットコントローラ66を別のものに取り替えた場合の影響を少なくすることを考慮したためであるが、もちろん、両者を一体化することも可能である。
USBでは、デフォルトタイプのコントロール転送の他に、大容量データを転送するためのバルク転送、小容量データを周期的に転送するためのインタラプト転送、一定時間内の転送データ量が補償されたアイソクロナス転送が定められている。以下では、バルク転送をホストからターゲットに行うバルクアウト転送をHSモードで行う例について説明する。このような転送は、例えば、PC20から画像処理装置50に対して、印刷用の画像データを転送する場合や、制御用のプログラムを転送する場合に採用される。
ホストのアプリケーション110が、通信対象となるデータをターゲットコントローラのアプリケーション120にバルクアウト送信する場合には、まず、アプリケーション110からクラスドライバ(プリンタクラスなど)112にデータが転送される。続いて、クラスドライバ112が、ホストコントロール/バスドライバ114にデータを転送する。そして、ホストコントロール/バスドライバ114は、USB2.0の規格にもとづいて512byteのパケット(これは、データ転送の単位となるデータ要素である)にデータを分割し、USBホストコントローラ36を用いてOUTトランザクションとして送信を行う。
送信される各データパケットは、USBケーブル90を経由して、ターゲットデバイスのUSBターゲットコントローラ66に到達する。USBターゲットコントローラ66は、データパケットを受信して、バッファメモリ68に一時的に格納する。具体的には、バッファメモリ68は、データパケット1個(USB2.0では最大512byte)を格納できるFIFO(先入れ先出し方式の格納部)によって構成されており、ここにデータパケットが格納される。1つのターゲットデバイスとホスト間には、複数の論理的な通信路(パイプ)を設定することが可能である。各パイプのターゲットデバイス側の端は、エンドポイントと呼ばれ、通常は、物理的にはデータパケット1個を格納できるFIFOが設けられる。FIFOの個数は固定であってもよいし、変更可能であってもよい。一般的には、FIFOの個数が多い方がデータ転送を高速化できる余地が高まる。なおここでエンドポイントを複数可能の意味は、例えばバルクアウト1及びバルクアウト2のエンドポイントを持てる意味であり、バルクアウト1とバルクアウト2は全く関係がなく別のアプリケーションが実行している状態のことを意味する。以下では、バッファメモリ68には、FIFOが2個設けられているものとして説明を行う。
ここで、図3を用いて、バルクアウト転送トランザクションにおいて、USBホストコントローラ36とUSBターゲットコントローラ66との間でやりとりされているパケットのフォーマットを示す。USBホストコントローラ36は、バルクアウト転送の開始を通知するために、まず、OUTトークンパケット130を送信する。これにより、USBターゲットコントローラ66は、これから行われる転送がバルクアウト転送であることを認識し、バルクアウト用のエンドポイントにデータパケットを格納するFIFOを用意する。続いて、USBホストコントローラ36は、DATA0というデータパケット132を通じて送信する。そして、USBターゲットコントローラ66は、DATA0のデータパケットを受信して、このパイプのエンドポイントに設けられたFIFOに格納する。この時点では、2つのFIFOのうち、他方のFIFOは使用可能である。そこで、USBターゲットコントローラ66は、次のデータパケット132を受信できる旨を示すACKハンドシェーク142をUSBホストコントローラ36に送信する。 USBホストコントローラ36は、ACKハンドシェーク142を受信すると、引き続きOUTトークンパケット130と、DATA1というデータパケット132を送信する。そして、USBターゲットコントローラ66は、このデータパケット132を受信して、他方のFIFOに格納する。
この段階で、先にDATA0のデータパケット132を格納したFIFOが空である場合、つまり後段の装置に既にデータ転送が行われており、新たなるデータパケットが格納可能な状況にある場合には、USBターゲットコントローラ66は、次のデータパケット132を受信可能である旨を示すACKハンドシェーク142を送信する。他方、先にDATA0のデータパケット132を格納したFIFOが使用中である場合、つまり後段の装置にデータ転送が行われていない場合には、USBターゲットコントローラ66は、次のデータパケットを受信できない旨を表すNYETハンドシェーク140をUSBホストコントローラ36に送信する。
図4は、USBホストコントローラ36が、NYETハンドシェーク140を受信した場合のパケットのやりとりを示す図である。この場合、USBホストコントローラ36は、OUTトークンパケット130の代わりにPINGトークンパケット150を発行する。そして、USBターゲットコントローラ66は、DATA0のデータパケット132を保持するFIFOが使用不可能な場合にはNAKハンドシェーク144を、使用可能な場合にはACKハンドシェーク142をUSBホストコントローラ36に送信する。USBホストコントローラ36は、ACKハンドシェーク142を受信した場合には、OUTトランザクションを再開するために、図3に示したOUTトークンパケット130を発行する。他方、USBホストコントローラ36は、NAKハンドシェーク144を受信した場合には、再びPINGトークンパケット150を発行する。このPINGトークンパケット150の発行は、USBターゲットコントローラ66からACKハンドシェーク142を受信するまで継続される。なお、USBターゲットコントローラ66は、動作不能な状態のときにはSTALLハンドシェーク146を返信する。ここで説明した各ハンドシェークは、ターゲットデバイスとホストとの間で、コネション型の通信を行う(対話的に通信を行う)ためのパケットである。
図5は、一連のデータ送信におけるパケットの流れを示す図である。図においては、USBケーブル90を流れるパケットが、時系列順に左側から右側へと記されている。この例では、まず、OUTトークンパケット、DATA0のデータパケット、ACKハンドシェーク、OUTトークンパケット、DATA1のデータパケット、ACKハンドシェーク、のようにパケットの通信が行われ、512byteのDATA0とDATA1が繰り返し送信されている。そして、ある段階でFIFOに空きがなくなる(格納不可能な状況になる)と、NYETハンドシェークがUSBホストコントローラ36に送信され、USBホストコントローラ36がPINGトークンパケットを発行し、USBターゲットコントローラ66がNAKハンドシェークを返すという通信が、短い間隔で繰り返される。やがて、FIFOに空きができると、USBターゲットコントローラ66はACKハンドシェークを送信する。USBホストコントローラ36は、これを受けて、OUTトークンパケットとDATA0のデータパケットの送信を再開する。
次に、図6を用いて、USBターゲットコントローラ66が受信した後のデータパケットの流れについて説明する。図6は、図1に示したPC20(ホスト)からHSモードのバルクアウト転送(データパケットは512byte)が行われる場合に、画像処理装置50(ターゲットデバイス)の中で、どのようにデータパケットが転送されていくかを示す図である。なお、ここでいうデータパケットの転送とは、データパケットが前段から後段に伝達されることをいう。すなわち、前段にデータパケットを残しながら後段にデータパケット書き込む(コピー)ものであってもよいし、前段のデータパケットを消去しつつ後段にデータパケットを渡すものであってもよい。
USBターゲットコントローラ66のUSBIF70で受信されたデータパケットは、データパケット毎に、エンドポイントに設定されたFIFO180,182のいずれかに一時的に格納される。FIFO180,182は、USBターゲットコントローラ66内のバッファメモリ68に確保された領域であり、第1格納手段としての役割を果たしている。
FIFO180,182に格納されたデータパケットは、USBターゲットコントローラ66内のDMA74によって、メモリ56内のカーネル領域58に転送される。カーネル領域58には、FIFO180,182から転送されるデータパケットを一時的に格納するためのバッファ190,192,194が確保されている。各バッファ190,192,194のサイズ(容量)は、それぞれ少なくとも一つ以上のデータパケットを格納できるように設定されている。そして、DMA74は、バッファ190,192,194のいずれかに空きがある場合に、FIFO180,182のいずれかに格納されていたデータパケットの転送を行う。バッファ190,192,194は、第2格納手段としての役割を果たしており、DMA74は、第1格納手段から第2格納手段にデータパケットの転送を行う第1転送手段として機能している。
カーネル領域58に格納されたデータパケットは、ユーザ領域60に確保されたバッファ200に転送される。バッファ200は、データ全体を格納できるサイズをもっており、ここで各データパケットの統合が行われる。こうして復元されたデータは、アプリケーションによって管理・利用されることになる。カーネル58からユーザ領域60へのデータパケットの転送は、CPU54によって行われる。CPU54は、第2格納手段からデータパケットの転送を行う第2転送手段としての役割を果たしており、また、アプリケーションは、第2転送手段から転送されたデータを格納する第3格納手段として機能している。
図6においては、カーネル領域58内に三つのバッファ190,192,194を設ける例を示した。しかし、カーネル領域58内に設けるバッファの数及びサイズは動的に変更可能である。すなわち、バッファの仕様を設定し、仕様に従ってバッファの仕様を変更するプログラム(このプログラムは、典型的にはCPU54によって実行され、これによりCPU54は設定手段あるいは変更手段として機能する)の再コンパイルを行う必要はなく、プログラムの実行時に変更を行うことができる。以下では、変更を行う具体例を、図7乃至図11を用いて説明する。
図7は、ターゲットデバイスにおける内部処理の流れを、図2に示したソフトウエア及びハードウエアの構造と関連づけて説明する図である。この図においては、図2に示したH/W非依存部122とH/W依存部124とを繋ぐソフトウエアとして、API(アプリケーションプログラムインタフェース)123を追加的に記載している。
H/W非依存部122は、ioctl()及びread()などの一般的なシステムコールのルーチンを管理しており、これらのルーチンがアプリケーション120からの呼び出された場合には、API123を通じて、H/W依存部124に対応する処理を命じる。ここで、ioctl()は、カーネル領域58にもうけるバッファの個数及びサイズを設定するためのファンクションをサポートするルーチンであり、read()は、データの読み込みを行うためのルーチンである。
アプリケーション120は、まず、ioctl()の引数にファンクション値とその属性等の値を設定することで、現在設定されているバッファの個数とサイズを、新たに設定したバッファの個数(例えば3個)とサイズ(例えば4Kbyte)に変更するように指示する(S10)。そして、ioctl()は、指示に従って、バッファと同個数のIOリクエスト構造体を生成し、バッファのサイズに合わせた設定を行う。
図8は、IOリクエスト構造体210について説明する図である。IOリクエスト構造体210は、カーネル領域58に確保されるバッファ毎に設定される構造体であり、バッファへのポインタ212、バッファのサイズ214、コールバックルーチンへのポインタ216、データサイズ218、及びリストポインタ220の各フィールドをもつ。バッファへのポインタ212は、カーネル領域58に確保されるバッファ230のアドレスを表し、バッファのサイズ214は、バッファ230のサイズを表す。また、コールバックルーチンへのポインタ216は、H/W依存部124からIOリクエストが完了した旨の通知をもらうために設定されるアドレスである。そして、データサイズ218は、実際にバッファに格納されるデータのサイズを表し、リストポインタ220は、複数のIOリクエスト構造体210の並びを制御するために設定される。
H/W非依存部122において、ioctl()は、IOリクエスト構造体210の各フィールドに値を設定する。このとき、リストポインタ220はNULLで初期化され、データサイズ218は0で初期化される。また、ioctl()からの指示に基づいて、H/W依存部124が管理するリクエスト待ちキューがNULLで初期化される。
ホストからのデータを受信する場合には、図7で示すようにアプリケーション120は、H/W非依存部122が提供するread()をコールする(S12)。すると、H/W非依存部122は、バッファの個数分のIOリクエストをAPI123を通じて、H/W依存部124に対し順次発行する(S14)。H/W依存部124は、発行されたIOリクエストを順次処理するためにIOリクエスト待ちキューを管理しており、発行されたIOリクエストに対応するIOリクエスト構造体210を順次IOリクエスト待ちキューに繋ぐ処理を行う。図9は、この様子を説明する図であり、発行された3個のIOリクエスト240,242,244がIOリクエスト待ちキュー246に繋がれている。
DMA74は、バッファメモリ68に設けられたFIFO180あるいはFIFO182に格納されたデータパケットを、IOリクエスト待ちキュー246の先頭のIOリクエストに対応するバッファ(このIOリクエストに対応するIOリクエスト構造体210によって確保されたバッファ)に転送する。そして、バッファへの転送が完了すると、そのIOリクエスト構造体210を完了キュー250の最後尾に繋げ、そのIOリクエスト構造体210に設定されたコールバックルーチンへのポインタ216に従って、H/W非依存部122のコールバックルーチンがコールされる(S16,S30)。
続いて、コールされたコールバックルーチンは、図10に示すIOリクエスト完了キュー250をチェックする。そして、IOリクエスト完了キュー250の先頭のIOリクエストをキューから外し、対応するIOリクエスト構造体210のデータサイズ218に設定された値が0か否かを確認する。その結果、設定値が0、すなわち0byteパケットを表す場合には、受信したデータパケットはもう存在しないため、IOリクエストの取消処理を行い、これによりIOリクエスト待ちキュー246に繋がれている不要なIOリクエスト構造体210を外す(S40)。
これに対し、0でない場合には、IOリクエスト構造体210のバッファへのポインタ212に設定されたバッファから、ユーザ領域60のバッファ200へ、IOリクエスト構造体210のデータサイズ218に設定されたサイズのデータパケットをコピーする。そして、この値がバッファサイズと等しいかどうかをチェックし、バッファサイズに等しくない場合には、ホストからのデータパケットはもう存在しないため、IOリクエストの取消処理を行い、IOリクエスト待ちキュー246に繋がれている不要なIOリクエスト構造体210を外す。他方、バッファサイズに等しい場合には、ホストからのデータパケットがまだ存在するため、使用済みとなったIOリクエスト構造体210を使用してIOリクエストを再度発行し(S18,S32)、再度待ち状態に入る前にIOリクエスト完了キュー250をチェックする。以降、同様な処理を繰り返す。
図11は、IOリクエストについての処理の流れを示すフローチャートである。ここでは、カーネル領域58に設定されるバッファの個数をn個として説明を行う。まず、アプリケーション120がioctl()を用いてバッファの個数(n個)とサイズを指示すると、ioctl()は、n個のIOリクエスト領域の獲得及び初期化を行う(S70,S72,S74)。続いて、H/W非依存部122からH/W依存部124に対し、n個のIOリクエストの発行が行われる(S76,S78,S80)。そして、IOリクエスト完了キューが空か否かを調べ、空である場合には次のデータパケットの入力を待つ待ち処理に入る(S84)。
他方、IOリクエスト完了キューが空でない場合には、先頭のIOリクエストをキューから外し、対応するリクエスト構造体のデータサイズフィールドの値が0か否かを確認する(S86)。そして、0でない場合には、ユーザ領域のバッファにデータパケットをコピーし(S88)、さらに、IOリクエスト構造体のデータサイズフィールドの値が、バッファサイズと同じであるか判定する(S90)。その結果、同じである場合には、次のIOリクエストの発行を行って(S92)、ステップS82以下の処理を繰り返す。これに対し、同じでない場合、あるいは、ステップS86でデータサイズフィールドの値が0である場合には、データ転送が終了したと判断し、IOリクエストの取り消し処理を行う(S94)。そして、n個のIOリクエスト構造体が確保していたIOリクエスト領域を開放する(S96,S98,S100)。
なお、ここでは、ターゲットデバイスのアプリケーション120の指示に基づいて、カーネル領域58のバッファの個数あるいはサイズを変更する方式を示したが、デバイスドライバのH/W非依存部122の指示に基づいて変更する方式を採用することも可能である。
以上に説明したように、USBターゲットコントローラ66のバッファメモリ68に対しては、動的にバッファを設定することができる。しかし、バッファの個数及びサイズには設定の任意性がある。そこで、以下では、通信効率を診断し、診断された通信効率に基づいて、設定すべきバッファの個数及びサイズを判定する処理について説明する。ここで、バッファの個数やサイズは、いかなるサイズのデータを何個格納できるかというバッファの格納能力を決める要素である。また、通信効率に基づくとは、通信の高速性と、ハードウエア資源の有効利用性とを両立させるように定めることを言う。一般に、バッファの個数とサイズを増やした場合には、データ転送がスムーズに行われるが、単純にバッファの個数とサイズを増やしたのでは、メモリ56が無駄に使われたり、メモリ56の不足を招いたりしてしまう。そこで、本実施の形態においては、通信効率を高めるような、あるいは、通信効率を最適にするようなバッファの個数及びサイズを判定し、その設定を行う。通信効率が最適な状態とは、通信効率を最も高めた状態をいい、例えば、メモリ56の無駄使いの低減と、通信の高速性のバランスが、設定された評価基準の下で最も良い評価値を示す状態、あるいは最も良いカテゴリに属す状態として定義することができる。
なお、通信効率の診断と判定は、ターゲットデバイスのCPU54あるいは制御部72で行ってもよいし、ホストのCPU24あるいは制御部42により行われてもよい。また、診断をホストで行い判定をターゲットデバイスで行うなどの分散処理をおこなってもよい。例えば、ターゲットデバイスのCPU54により診断と判定を行う場合には、メモリ56に格納された診断と判定用のプログラムがCPU54により実行されることになる。これにより、CPU54は、診断手段及び判定手段として機能する。
図12は、カーネル領域58のバッファの個数およびサイズの最適値を求める処理手順を記したフローチャートである。ここでは、バッファの個数を変更する外側ループを初期値1個、最大値4個、増分1個として設定し(S52,S62)、バッファのサイズを変更する内側ループを初期値1Kbyte、最大値8Kbyte、増分1Kbyteとして設定する(S54,S60)。そして、各個数及び各サイズに対して、バルクアウト転送の処理を実行し(S56)、処理中に発生したNYETハンドシェークの数、転送に要した処理時間を記録する処理が行われる。この処理は、複数の格納能力の下でデータの通信効率を診断する診断手段による処理の例である。
最適値判定処理(S64)では、この結果をもとに、最適なバッファの個数及びサイズを判定する。なお、この例では、NYETハンドシェークの数と処理時間とに基づいて最適な値を判定しているが、NYETハンドシェークの数のみに基づいて最適な値を判定することも可能であるし、処理時間のみに基づいて最適な値を判定することも可能である。この最適値判定処理は、判定手段による判定処理の例である。
NYETハンドシェークは、図3乃至図5を用いて説明したように、バッファメモリ68に設けられたエンドポイントのFIFOが空ではない場合に送信される。そして、一旦、NYETハンドシェークが送信された後、FIFOが空ではない状態が継続している間は、NYETハンドシェークに代わってNAKハンドシェークが繰り返し送信される。つまり、NYETハンドシェークの数は、FIFOが空でない一連の状況が、何回発生したかを表す指標であり、データ転送の速度と対応づけられる。
また、NAKハンドシェークの数を、NYETハンドシェークの代わりに用いることも可能である。NAKハンドシェークの数は、FIFOが空でない状況がどのくらい持続したかを表す指標であり、データ転送の速度と対応づけられるからである。ただし、一般に、NYETハンドシェークよりも桁違いに大きくなるので注意が必要である。
なお、処理時間、NYETハンドシェーク、NAKハンドシェークは、ターゲットデバイス側で測定することも可能であるし、ホスト側で測定することも可能である。ホスト側で測定した場合には、その結果をターゲットデバイス側に通知し、ターゲットデバイス側のバッファ構成を変更する仕組みを設ければよい。
図13は、処理時間の測定あるいはNAKハンドシェークの測定を行う範囲について説明する図である。図には、ホストとターゲットの間で送受信されるパケットが、図の上から下に伸びる時間軸上に矢印で記されている。ここでは、ホストのアプリケーション110が起動してホスト側処理開始された後、しばらくは、ターゲットデバイスのアプリケーション120が起動していない場合を想定している。このため、通信当初は、ホストからはターゲットデバイスへPINGトークンパケットが送られ、ターゲットデバイスからホストにNAKハンドシェークが返される過程が繰り返される。やがて、ターゲットデバイスのアプリケーション120が起動すると、ターゲットデバイス側の処理が開始される。すなわち、ターゲットデバイスからホストにACKハンドシェークが返され、ホストからターゲットデバイスに対し、OUTトークンパケットとDATA0のデータパケット、あるいは、OUTトークンパケットとDATA1のデータパケットが送信される過程が繰り返される。また、この過程で、NYETハンドシェーク、PINGトークンパケット、NAKハンドシェークなどが送受信されることは、前述の通りである。
この一連の通信においては、ターゲットデバイスのアプリケーション120が起動していない時間は、データ転送の効率性とは関係していない。このような段階を排除するためには、OUTトークンパケットの通信がはじめて行われた時点から測定を開始すればよい。また、測定の終了は、例えば、カーネル領域58のバッファ内のデータパケットが、全て、ユーザ領域60に書き込まれた時点を採用することができる。
図14は、図12のS58において実測された結果を模式的に示す図である。この図は、説明の簡単のため、バッファのサイズを一定にした条件の下で、バッファの個数(横軸)と処理時間(縦軸)の関係を示したものである。この例では、バッファの個数が1,2,3,4と増えるにつれ、処理時間はt1,t2,t3,t4と減少しており、かつ、処理時間の減少率も小さくなっている。
図12のS64においては、処理時間の短さと、バッファを増やすことの有効性を勘案して最適なバッファ数を判定する。具体例としては、処理時間が最短となるのはバッファ数が4個の場合であるが、t3からt4への減少率(例えば、(t3−t4)/t3によって表される)が所定の閾値(例えば0.05)より小さく飽和状態にあるため、最適なバッファ数を3個であると判定する態様を挙げることができる。バッファのサイズを変化させる場合についても同様に判定を行うことができる。なお、処理時間とNYETハンドシェーク数の両方を考慮する場合には、両者の測定結果に重みをつけて総合的に評価するようにしてもよい。
最適なバッファの個数やサイズは、ホスト側の装置構成や、ターゲットデバイス側の装置構成(USBターゲットコントローラのFIFOの数、DMAの性能、CPUの性能、メモリの性能など)によっても変化する可能性がある。そこで、最適なバッファの個数やサイズを、装置構成毎に求めるようにしてもよい。
図15は、ターゲットデバイスとホストの機種の組合せに対して、最適なバッファの個数及びバッファのサイズを求めて作成した模式的な表を示している。具体的には、A機種とB機種のターゲットデバイスに対し、α機種、β機種、γ機種のホストからデータを送信した場合に、バッファの個数及びバッファのサイズをどのように設定するとよいかが示されている。このような表は、例えば、メーカによって作成される。また、表に基づくバッファの個数やサイズの設定は、管理者やサービスマンがターゲットデバイスのUIから入力することにより受け付けられてもよいし、ネットワーク上に置かれた表を参照して自動設定するようにプログラムされてもよい。
これに対し、ホストやターゲットデバイスに応じた最適なバッファの個数やサイズを、通信を繰り返す中で見つけ出し、その結果に基づいて設定を動的に変更するようにしてもよい。この場合には、図12の例のように多数のパラメータについて実験的な通信を行ったのでは、通信に差し支える場合がある。そこで、初期に設定されたパラメータの周辺で通信速度についての測定を行い、バッファの個数やサイズを改良するようにしてもよい。具体的には、初期に設定されたバッファの数を一つ増やした場合に、通信速度が閾値を上回る程度に高速化されたか否かを判定し、判定結果に基づいてバッファの個数を再変更する態様が挙げられる。
以上の説明では、USB2.0のHSモードにおけるバルクアウト転送を例に挙げた。しかし、USBにおける他のモードや他の転送の場合にも、同様にして、カーネル領域58のバッファを最適化することが可能である。また、有線、無線を問わず他のシリアル通信や、パラレル通信においても、同様にして、本実施の形態を適用することができる。
また、以上の説明においては、USBターゲットコントローラ66で受信され一時的に格納されたデータパケットを、カーネル領域に転送し、さらにユーザ領域へと転送する態様について示した。このような2段階の転送態様は、LinuxのようなカーネルモードとユーザモードをもつOSでは一般的に行われているものである。すなわち、ユーザモードでデータ転送が行われる場合には、カーネル領域(これはカーネルモードが管理する)に格納されたデータパケットは、アプリケーションが指示するユーザモードの領域にコピーされることになる。
さらに、以上の説明では、2段階に転送されたデータが、ユーザ領域のバッファのような記憶領域にある程度長期にわたって格納されることを想定した。しかし、2段階に転送されたデータは、記憶領域に格納されることなく処理に供されても良い。具体例としては、画像データの変換処理や表示処理などがリアルタイムで行われる態様を挙げることができる。
USB通信システムのハードウエア構成例を示す図である。 USB通信システムのソフトウエアとハードウエアの階層を示す図である。 バルクアウト転送において送受信されるパケットを説明する図である。 バルクアウト転送において送受信されるパケットを説明する図である。 バルクアウト転送において送受信されるパケットを説明する図である。 ターゲットデバイス内部におけるデータ転送について説明する図である。 カーネル領域のバッファに関する処理の流れを示す図である。 IOリクエスト構造体の構造を示す図である。 IOリクエストとIOリクエスト待ちキューについて説明する図である。 IOリクエストとIOリクエスト完了キューについて説明する図である。 カーネル領域のバッファ設定処理を示すフローチャートである。 最適なバッファ設定を見つける処理を示すフローチャートである。 処理速度の実測範囲について説明する図である。 バッファ個数と処理時間との関係を示す模式図である。 ターゲットデバイスとホストの機種の組合せに対するバッファの最適値を示す表である。
符号の説明
10 USB通信システム、20 PC、22,52 バス、24,54 CPU、26,56 メモリ、28,58 カーネル領域、30,60 ユーザ領域、32,62 UI、34,64 ネットワークIF、36 USBホストコントローラ、38,68 バッファメモリ、40,70 USBIF、42,72 制御部、44,74 DMA 、50 画像処理装置、66 USBターゲットコントローラ、76 スキャナ、78 プリンタ、90 USBケーブル、100 ネットワーク、110,120 アプリケーション、112 クラスドライバ、114 バスドライバ、122 H/W非依存部、123 API、124 H/W依存部、130 OUTトークンパケット、132 データパケット、140 NYETハンドシェーク、142 ACKハンドシェーク、144 NAKハンドシェーク、146 STALLハンドシェーク、150 PINGトークンパケット、180,182 FIFO、190,192,194,200 バッファ、210 IOリクエスト構造体。

Claims (12)

  1. 通信対象のデータをデータ要素毎に受信する受信手段と、
    受信されたデータ要素を一時的に格納する第1格納手段と、
    前記第1格納手段に格納されたデータ要素を転送する第1転送手段と、
    前記第1転送手段により転送されたデータ要素を一時的に格納する第2格納手段と、
    前記第2格納手段に格納されたデータ要素を転送する第2転送手段と、
    前記第2転送手段により転送された各データ要素を取得して、前記データを格納する第3格納手段と、
    前記第2格納手段におけるデータ要素の格納能力を変更する変更手段と、
    前記変更手段により変更された複数の格納能力の下において、前記データに対する通信効率を診断する診断手段と、
    を備え、
    前記受信手段は、前記第1格納手段におけるデータ要素の格納可能状況に基づいて、次のデータ要素の受信を制御し、
    前記第1転送手段は、前記第2格納手段におけるデータ要素の格納可能状況に基づいて、前記第1格納手段から前記第2格納手段へのデータ要素の転送を制御することを特徴とするデータ通信システム。
  2. 請求項1に記載のデータ通信システムにおいて、
    当該データ通信システムは、さらに、前記診断手段の診断結果に基づいて、前記第2格納手段に設定すべき格納能力を判定する判定手段を備え、
    前記変更手段は、前記判定手段の判定結果に基づいて、前記第2格納手段におけるデータ要素の格納能力を再変更することを特徴とするデータ通信システム。
  3. 請求項1に記載のデータ通信システムにおいて、
    当該データ通信システムは、データの書き換えが可能な記憶領域を備え、
    前記第2格納手段は、一つのデータ要素を格納する小領域を前記記憶領域に一又は二以上設けることで構築され、
    前記変更手段は、前記小領域の個数または前記小領域の容量を変更し、これにより前記格納能力を変更することを特徴とするデータ通信システム。
  4. 請求項3に記載のデータ通信システムにおいて、
    前記診断手段は、前記第2格納手段が使用する記憶領域の容量に基づいて、前記通信効率を診断することを特徴とするデータ通信システム。
  5. 請求項1に記載のデータ通信システムにおいて、
    前記診断手段は、前記データの通信において計測された所要時間に基づいて、前記通信効率を診断することを特徴とするデータ通信システム。
  6. 請求項1に記載のデータ通信システムにおいて、
    前記受信手段は、送信側との間でなされる対話に基づいて、各データ要素の受信時期を調整する調整手段を備え、
    前記診断手段は、前記対話の解析に基づいて、前記通信効率を診断することを特徴とするデータ通信システム。
  7. 請求項1,5または6に記載のデータ通信システムにおいて、
    当該データ通信システムは、前記データをデータ要素毎に送信する送信装置を備え、
    前記診断手段は、前記送信装置に設けられることを特徴とするデータ通信システム。
  8. コンピュータを、
    通信対象のデータをデータ要素毎に受信する受信手段と、
    受信されたデータ要素を一時的に格納する第1格納手段と、
    前記第1格納手段に格納されたデータ要素を転送する第1転送手段と、
    前記第1転送手段により転送されたデータ要素を一時的に格納する第2格納手段と、
    前記第2格納手段に格納されたデータ要素を転送する第2転送手段と、
    前記第2転送手段により転送された各データ要素を取得して、前記データを格納する第3格納手段と、
    前記第2格納手段におけるデータ要素の格納能力を変更する変更手段と、
    前記変更手段により変更された複数の格納能力の下において、前記データに対する通信効率を診断する診断手段と、
    として機能させ、ここで、
    前記受信手段は、前記第1格納手段におけるデータ要素の格納可能状況に基づいて、次のデータ要素の受信を制御し、
    前記第1転送手段は、前記第2格納手段におけるデータ要素の格納可能状況に基づいて、前記第1格納手段から前記第2格納手段へのデータ要素の転送を制御する、
    ことを特徴とするデータ通信プログラム。
  9. 通信対象のデータをデータ要素毎に受信する受信手段と、
    受信されたデータ要素を一時的に格納する第1格納手段と、
    前記第1格納手段に格納されたデータ要素を転送する第1転送手段と、
    データの書き換えが可能な記憶領域にデータ要素を記憶する領域を確保して、前記第1転送手段により転送されたデータ要素を一時的に格納する第2格納手段と、
    前記第2格納手段に格納されたデータ要素を転送する第2転送手段と、
    前記第2転送手段により転送された各データ要素を取得して、前記データを格納する第3格納手段と、
    前記第2格納手段におけるデータ要素の格納能力を設定する設定手段と、
    を備え、
    前記受信手段は、前記第1格納手段におけるデータ要素の格納可能状況に基づいて、次のデータ要素の受信を制御し、
    前記第1転送手段は、前記第2格納手段におけるデータ要素の格納可能状況に基づいて、前記第1格納手段からのデータの転送を制御し、
    前記第2格納手段は、前記設定手段の設定に基づいて、記憶領域に確保する領域の仕様を変更することを特徴とするデータ受信装置。
  10. 請求項9に記載のデータ受信装置において、
    前記設定手段による設定は、前記データが受信される度に実行可能であることを特徴とするデータ受信装置。
  11. コンピュータを、
    通信対象のデータをデータ要素毎に受信する受信手段と、
    受信されたデータ要素を一時的に格納する第1格納手段と、
    前記第1格納手段に格納されたデータ要素を転送する第1転送手段と、
    データの書き換えが可能な記憶領域にデータ要素を記憶する領域を確保して、前記第1転送手段により転送されたデータ要素を一時的に格納する第2格納手段と、
    前記第2格納手段に格納されたデータ要素を転送する第2転送手段と、
    前記第2転送手段により転送された各データ要素を取得して、前記データを格納する第3格納手段と、
    前記第2格納手段におけるデータ要素の格納能力を設定する設定手段と、
    として機能させ、ここで、
    前記受信手段は、前記第1格納手段におけるデータ要素の格納可能状況に基づいて、次のデータ要素の受信を制御し、
    前記第1転送手段は、前記第2格納手段におけるデータ要素の格納可能状況に基づいて、前記第1格納手段からのデータの転送を制御し、
    前記第2格納手段は、前記設定手段の設定に基づいて、記憶領域に確保する領域の仕様を変更することを特徴とするデータ受信プログラム。
  12. 通信対象のデータをデータ要素毎に受信する受信手順と、
    受信されたデータ要素を一時的に格納する第1格納手順と、
    前記第1格納手順において格納されたデータ要素を転送する第1転送手順と、
    データの書き換えが可能な記憶領域にデータ要素を記憶する領域を確保して、前記第1転送手順において転送されたデータ要素を一時的に格納する第2格納手順と、
    前記第2格納手順において格納されたデータ要素を転送する第2転送手順と、
    前記第2転送手順において転送された各データ要素を取得して、前記データを格納する第3格納手順と、
    前記第2格納手順におけるデータ要素の格納能力を設定する設定手順と、
    を含み、
    前記受信手順においては、前記第1格納手順におけるデータ要素の格納可能状況に基づいて、次のデータ要素の受信を制御し、
    前記第1転送手順においては、前記第2格納手順において格納するデータ要素の格納可能状況に基づいて、前記第1格納手順において格納されたデータの転送を制御し、
    前記第2格納手順においては、前記設定手順における設定に基づいて、記憶領域に確保する領域の仕様を変更することを特徴とするデータ受信方法。
JP2007035349A 2007-02-15 2007-02-15 データ通信システム及びデータ通信プログラム Expired - Fee Related JP5029053B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007035349A JP5029053B2 (ja) 2007-02-15 2007-02-15 データ通信システム及びデータ通信プログラム
US11/930,824 US20080201498A1 (en) 2007-02-15 2007-10-31 Data communication system, data communication program recording medium, data communication method, data receiving device, and data receiving program recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007035349A JP5029053B2 (ja) 2007-02-15 2007-02-15 データ通信システム及びデータ通信プログラム

Publications (2)

Publication Number Publication Date
JP2008198126A true JP2008198126A (ja) 2008-08-28
JP5029053B2 JP5029053B2 (ja) 2012-09-19

Family

ID=39707618

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007035349A Expired - Fee Related JP5029053B2 (ja) 2007-02-15 2007-02-15 データ通信システム及びデータ通信プログラム

Country Status (2)

Country Link
US (1) US20080201498A1 (ja)
JP (1) JP5029053B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012215861A (ja) * 2011-03-28 2012-11-08 Yamaha Corp オーディオデータ入力装置および出力装置
JP2016071448A (ja) * 2014-09-26 2016-05-09 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078856B1 (en) * 2007-12-07 2011-12-13 American Megatrends, Inc. Power-on self-test data notification
JP2010033125A (ja) * 2008-07-25 2010-02-12 Hitachi Ltd ストレージ装置及びデータ転送方法
US8972923B2 (en) * 2011-02-08 2015-03-03 Maxeler Technologies Ltd. Method and apparatus and software code for generating a hardware stream processor design
US11366706B2 (en) * 2020-03-25 2022-06-21 Kyocera Document Solutions Inc. Data linkage system and API platform

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH066387A (ja) * 1992-06-16 1994-01-14 Hitachi Ltd データ転送制御方法および装置
JP2001217981A (ja) * 2000-02-01 2001-08-10 Murata Mach Ltd 通信端末装置
JP2001268123A (ja) * 2000-03-23 2001-09-28 Matsushita Electric Ind Co Ltd ネットワーク出力装置
JP2001337913A (ja) * 2000-05-25 2001-12-07 Hitachi Ltd データ転送システムとそのデバイス
JP2002009849A (ja) * 2000-06-21 2002-01-11 Nec Microsystems Ltd Usb転送制御方法およびusbコントローラ
JP2003256355A (ja) * 2002-02-27 2003-09-12 Canon Inc Dma制御装置、印刷装置、及びdma制御方法
JP2004280199A (ja) * 2003-03-12 2004-10-07 Ricoh Co Ltd データ通信システム
JP2005202794A (ja) * 2004-01-16 2005-07-28 Ricoh Co Ltd データ通信システム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5613162A (en) * 1995-01-04 1997-03-18 Ast Research, Inc. Method and apparatus for performing efficient direct memory access data transfers
US6185641B1 (en) * 1997-05-01 2001-02-06 Standard Microsystems Corp. Dynamically allocating space in RAM shared between multiple USB endpoints and USB host
US6279052B1 (en) * 1998-01-13 2001-08-21 Intel Corporation Dynamic sizing of FIFOs and packets in high speed serial bus applications
US7054790B1 (en) * 2000-05-18 2006-05-30 Maxtor Corporation Method and apparatus for storage device performance measurement
US6898751B2 (en) * 2002-07-31 2005-05-24 Transdimension, Inc. Method and system for optimizing polling in systems using negative acknowledgement protocols
US7107362B2 (en) * 2003-05-19 2006-09-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Integrated circuit with configuration based on parameter measurement
KR100557215B1 (ko) * 2003-08-19 2006-03-10 삼성전자주식회사 유에스비 디바이스의 엔드포인트 제어 장치 및 그 방법
US20050289254A1 (en) * 2004-06-28 2005-12-29 Chih-Feng Chien Dynamic buffer allocation method

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH066387A (ja) * 1992-06-16 1994-01-14 Hitachi Ltd データ転送制御方法および装置
JP2001217981A (ja) * 2000-02-01 2001-08-10 Murata Mach Ltd 通信端末装置
JP2001268123A (ja) * 2000-03-23 2001-09-28 Matsushita Electric Ind Co Ltd ネットワーク出力装置
JP2001337913A (ja) * 2000-05-25 2001-12-07 Hitachi Ltd データ転送システムとそのデバイス
JP2002009849A (ja) * 2000-06-21 2002-01-11 Nec Microsystems Ltd Usb転送制御方法およびusbコントローラ
JP3415567B2 (ja) * 2000-06-21 2003-06-09 エヌイーシーマイクロシステム株式会社 Usb転送制御方法およびusbコントローラ
JP2003256355A (ja) * 2002-02-27 2003-09-12 Canon Inc Dma制御装置、印刷装置、及びdma制御方法
JP2004280199A (ja) * 2003-03-12 2004-10-07 Ricoh Co Ltd データ通信システム
JP2005202794A (ja) * 2004-01-16 2005-07-28 Ricoh Co Ltd データ通信システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012215861A (ja) * 2011-03-28 2012-11-08 Yamaha Corp オーディオデータ入力装置および出力装置
JP2016071448A (ja) * 2014-09-26 2016-05-09 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム

Also Published As

Publication number Publication date
JP5029053B2 (ja) 2012-09-19
US20080201498A1 (en) 2008-08-21

Similar Documents

Publication Publication Date Title
US7028109B2 (en) Data transfer control device including buffer controller with plurality of pipe regions allocated to plurality of endpoints
JP3649226B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP4988678B2 (ja) Pciエキスプレス帯域幅を動的に平衡化するためのシステム
JP5029053B2 (ja) データ通信システム及びデータ通信プログラム
JP4837659B2 (ja) 分割トランザクションを処理するためのバス・コントローラ
JP4706720B2 (ja) Dma制御システム、印刷装置、および転送指示プログラム
JP4855451B2 (ja) 記憶装置のアクセス方法及び装置
JP2004070571A (ja) データ転送制御システム、電子機器、プログラム及びデータ転送制御方法
JP4412191B2 (ja) データ転送制御装置及び電子機器
TWI416418B (zh) 資料傳輸控制器、裝置及其方法
US7469304B2 (en) Data transfer control device, electronic equipment, and method for a data transfer through a bus, the data transfer control device including a register and a packet buffer that are commonly used during a host operation and a peripheral operation
US7428600B2 (en) Data transfer control device, electronic equipment, and data transfer control method
US7039746B2 (en) Interface circuit, disc controller, disc drive apparatus and interface control method
KR100633742B1 (ko) 주변 장치로부터 데이터 전송 크기를 자동으로 갱신하는직접 메모리 액세스 제어 장치 및 방법
JP4218034B2 (ja) データ通信システムおよびデータ通信方法、データ通信プログラム
US20100152866A1 (en) Information processing apparatus, information processing method and computer-readable medium having an information processing program
JP5652242B2 (ja) データ転送制御装置及びプログラム
JP2009059276A (ja) 情報処理装置およびプログラム
JP4551657B2 (ja) 電子回路におけるデータ転送方法、電子回路及び関連装置
JP4499509B2 (ja) ユビキタスアプリケーション提供システム、コンピュータ、ユビキタスアプリケーション提供方法およびプログラム
JP5359309B2 (ja) 電子機器
JP2008299747A (ja) Usbホストシステム及び転送データの転送方法
JP2011198314A (ja) データ受信装置及びプログラム
JP4127071B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP2005309511A (ja) 情報処理装置、ステータス取得方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100121

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111122

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120118

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120529

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120611

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150706

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees