JP4617440B2 - データ通信システムまたはその方法 - Google Patents

データ通信システムまたはその方法 Download PDF

Info

Publication number
JP4617440B2
JP4617440B2 JP2007259008A JP2007259008A JP4617440B2 JP 4617440 B2 JP4617440 B2 JP 4617440B2 JP 2007259008 A JP2007259008 A JP 2007259008A JP 2007259008 A JP2007259008 A JP 2007259008A JP 4617440 B2 JP4617440 B2 JP 4617440B2
Authority
JP
Japan
Prior art keywords
peripheral device
data
request packet
input
output request
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.)
Active
Application number
JP2007259008A
Other languages
English (en)
Other versions
JP2008090847A (ja
Inventor
啓二 奥間
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.)
Silex Technology Inc
Original Assignee
Silex Technology Inc
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 Silex Technology Inc filed Critical Silex Technology Inc
Publication of JP2008090847A publication Critical patent/JP2008090847A/ja
Application granted granted Critical
Publication of JP4617440B2 publication Critical patent/JP4617440B2/ja
Active 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/387Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system

Description

等時性(アイソクロナス)データポートを持つUSB機器(Universal Serial Bus Device)をPC(Personal Computer)と接続する場合に、USB機器とPCとを互いに遠くに離して設置することができない。一般的にUSB機器は、長くとも数メートルのケーブルを用いて、PCに接続される。USB機器をアイソクロナスデータポートで、PCからより長い距離を置いて配置するためには、USBバスをネットワークケーブル、又は光ファイバーケーブルで置き換えるための装置があるが、これは1対1の接続であるため、ネットワークに接続することはできない(特許文献1参照)。
特開2002-542527号公報 また、ネットワーククライアントからネットワークを介して、USB機器の接続された周辺装置サーバに対して、USB機器を制御する技術もある。本願の出願人である、サイレックス・テクノロジー株式会社による、USB機器サーバの以下のウエブサイトにおける考察を参照。
www.silex.jp/japan/products/network/what/index3.html(日本語)
www.silexamerica.com/us/products/network/what/index3.html(英語)
上記USB機器サーバは、特定の性質を備えている。図1に概略が示されているように、周辺機器ドライバモジュールは、IRP(I/O Request Packet:入出力要求パケット)を、事前にネットワーククライアントにインストールされている周辺機器サーバドライバモジュールに送信する。周辺機器サーバドライバモジュールは、IRPをキューに記憶し、IRPの全部又は一部をカプセル化し、それをネットワークに渡す。ネットワーク通信の受信側の周辺機器サーバは、受信したカプセル化されたデータから送信されたデータを取り出す処理(デカプセル化)を行い、それによりデータを再構築して周辺機器に送信する。逆方向の応答データ通信は同様にカプセル化され、周辺機器から周辺機器サーバを介して、ネットワーク上で、周辺機器サーバドライバモジュールに送信される。周辺機器サーバドライバモジュールは、受信されたカプセル化データから応答データを取り出す(デカプセル化)。このとき、応答データは事前に記憶されたIRPに記憶され、IRPは周辺機器ドライバモジュールに戻され、このキューエントリは削除される。この処理の結果として、ユーザは周辺機器サーバに接続された周辺機器を、あたかも、直接ネットワーククライアントに接続されたかのように使用できる。
しかし、上記したような、アイソクロナスデータポートを備える周辺機器がネットワークを介して、ネットワーククライアントに接続されている場合、以下のようないくつかの問題点が存在した。
ネットワーククライアント及び周辺機器は、ネットワークを介して互いに通信するため、周辺機器ドライバモジュールにより発行された要求は、ネットワークを介して周辺機器に送信され、その結果、周辺機器から周辺機器ドライバモジュールへ応答が送信されるのに時間がかかる。従来、アイソクロナスデータポートを備える周辺機器が周辺機器サーバを介してネットワークに接続されている場合、ネットワーククライアントに内蔵される周辺機器ドライバモジュールが、ネットワーククライアントに直接接続されていることを前提として接続が確立されるため、USB周辺機器がネットワークを介して使用された場合、要求に対する応答の遅延処理に問題があった。
かかる遅延の内容は、図1及び図2に示す通信シーケンス図を用いて示される。図1は、アイソクロナスデータの送信(アイソクロナスOUT)に関する、従来技術の通信シーケンスを示している。図1を参照すると、各々の矢印に付与された番号は、周辺機器サーバドライバモジュールによって各IRPに付与されたフレーム番号である。図示のごとく、周辺機器ドライバモジュールは、まずフレーム(1)(2)(3)に対応するIRPをまとめて発行し、これらを周辺機器サーバドライバモジュールに送信する。発行されたIRPの数は一般的には、周辺機器サーバドライバモジュールによって決定されるのではなく、ネットワーククライアントのオペレーティングシステムに組み込まれているドライバなど、外部要因により決定される。次に、発行されたIRPを受け取った周辺機器サーバドライバモジュールは、IRPに含まれるデータをカプセル化し、ネットワークを介して周辺機器サーバに送信する。この時点で、周辺機器サーバドライバモジュールは、送信されたIRPをキューに記憶する。
周辺機器サーバは、受信したデータが周辺機器で処理されるよう、周辺機器に送信する。データ処理が完了すると、周辺機器サーバは周辺機器サーバドライバモジュールに、データ処理が完了したことを通知し、この通知を検出した周辺機器サーバドライバモジュールは、キューに記憶されたIRPを完了する。かかる手法によるIRPの完了の結果により、周辺機器ドライバモジュールは次に新たなIRPを発行してもよい。通常の動作では、周辺機器ドライバモジュールは以前発行したIRPが完了するまでは、新たなIRPは発行しない。
図1では、周辺機器サーバドライバモジュールは、処理はフレーム(1)について完了することを示す、フレームG(1)を周辺機器サーバから受け取り、フレームG(1)のIRPが完了する。その後、新たなIRPフレーム(4)が、周辺機器ドライバモジュールから発行される。かかる通信方法は、周辺機器が直接ネットワーククライアントに接続されている場合には、問題を生じさせない一方で、USB周辺機器がネットワークを介して接続されている場合、フレームG(1)により示される完了の遅れにより、次のIRPフレーム(4)発行が遅れ、周辺機器へのデータ送信の遅延が結果として生じる。
図2は、アイソクロナスデータの受信(アイソクロナスIN)に関する、従来技術の通信シーケンスを示している。基本的な通信フローは、上述したアイソクロナスOUTの通信フローと類似する一方で、これは本件に記載されたアイソクロナスINシーケンスであり、従って、周辺機器ドライバモジュールから発行されたIRPはデータに対する要求であり、受信データはフレームG(1)からフレームG(5)に含まれている。図2から明らかなように、周辺機器に対するデータ要求であるフレーム(4)、(5)は、フレームG(1)、G(2)のIRPが各々完了するまでは、発行されない。この場合においても、アイソクロナスOUTの場合と同様に、ネットワークにおける遅延により、フレームG(1)、G(2)の到着が遅れ、そのことが次のIRPであるフレームG(4)、G(5)の発行に遅延を生じさせ、最終的には周辺機器ドライバモジュールにより受け取られるべきフレームG(4)、G(5)のデータに遅延が生じる。
また、アイソクロナスデータ転送は、周辺機器が直接ネットワーククライアントに接続されている場合、データが転送されるバスのフレームの単位の時間で管理されるため、タイミングを管理するのは、ネットワーククライアント自身である。
しかし、アイソクロナスデータポートを備える周辺機器が周辺機器サーバに接続されると、たとえアイソクロナスデータがより早期に転送される準備が整っていても、周辺機器が従うタイミングは、周辺機器サーバから与えられ、結果として、ネットワーククライアントと周辺機器サーバは各々、ベースの異なるクロックを内部に保持することになる。このため、時間はミリ秒ごとの同期化ができず、従ってアイソクロナスデータ転送を管理するタイミングが、ネットワーククライアントと周辺機器サーバの間でずれる、という問題があった。
かかる問題は、アイソクロナスデータ転送を備えるUSB機器のみならず、特定のコンピュータ間において、開始されるべき時間に基づいて、アイソクロナスデータを管理し、かつ処理する周辺機器においても発生する。
本明細書に記載され、又は以前から当業者に公知の技術及び実践の他の態様も、本発明を理解するのに有用であろう。
本件発明は、上記問題を軽減または解決し、周辺機器サーバを利用する特定のコンピュータ間におけるアイソクロナスデータ転送を通して、周辺機器の使用を促進することを目的とする。
1)本発明にかかる等時性出力転送を行うデータ通信システムは、A)等時性通信規格で通信を行う1または2以上の周辺機器、B)前記1または2以上の周辺機器が接続されるとともに、クライアントコンピュータがネットワーク接続された周辺機器サーバであって、いずれかの周辺機器が特定されたデータが前記クライアントコンピュータから与えられると、等時性通信規格にて、前記周辺機器に送信するとともに、当該送信したデータに対する応答データを、当該クライアントコンピュータに前記ネットワークを介してカプセル化して送信する周辺機器サーバ、C)前記周辺機器との間でデータを送受信するコンピュータであって、以下の手段c1),c2)を備えたクライアントコンピュータ、c1)入出力要求パケットデータを出力し、これに対する応答データを受け取ると、次の入出力要求パケットデータを出力する周辺機器制御手段、c2)前記周辺機器制御手段が出力した入出力要求パケットデータをカプセル化し、前記周辺機器サーバにネットワーク送信を行い、前記周辺機器サーバから、カプセル化された応答データを受け取ると、これをデカプセル化して前記入出力要求パケットデータに対応する応答データとして前記周辺機器制御手段に与える周辺機器サーバ制御手段、D)を備えた等時性出力転送を行うデータ通信システムにおいて、E)前記周辺機器サーバ制御手段は、前記周辺機器制御手段からの入出力要求パケットデータを前記周辺機器サーバに送信してから所定時間経過するか否か判断し、所定時間経過しても前記入出力要求パケットデータに対応する応答データを前記周辺機器サーバより受け取らなかった場合には、前記入出力要求パケットデータに対応するダミー応答データを前記周辺機器制御手段に与えるダミー応答出力手段を備えている。
したがって、入出力要求パケットデータを出力し、これに対する応答データを受け取ると、次の入出力要求パケットデータを出力する周辺機器制御手段であっても、前記周辺機器制御手段に次入出力要求パケットデータをダミー配信することができる。これにより、前記周辺機器サーバを介して前記周辺機器によるアイソクロナスアウトのネットワーク通信が可能となる。
2)本発明にかかる等時性入力転送を行うデータ通信システムは、A)等時性通信規格で通信を行う1または2以上の周辺機器、B)前記1または2以上の周辺機器が接続されるとともに、クライアントコンピュータがネットワーク接続された周辺機器サーバであって、いずれかの周辺機器が特定されたデータが前記クライアントコンピュータから与えられると、等時性通信規格にて、前記周辺機器に送信するとともに、当該送信したデータに対する応答データを、当該クライアントコンピュータに前記ネットワークを介してカプセル化して送信する周辺機器サーバ、C)前記周辺機器との間でデータを送受信するコンピュータであって、以下の手段c1),c2)を備えたクライアントコンピュータ、c1)入出力要求パケットデータを出力し、これに対する応答データを受け取ると、次の入出力要求パケットデータを出力する周辺機器制御手段、c2)前記周辺機器制御手段が出力した入出力要求パケットデータをカプセル化し、前記周辺機器サーバネットワーク送信を行い、前記周辺機器サーバから、カプセル化された応答データを受け取ると、これをデカプセル化して前記入出力要求パケットデータに対応する応答データとして前記周辺機器制御手段に与える周辺機器サーバ制御手段、D)を備えた等時性入力転送を行うデータ通信システムにおいて、E)前記周辺機器サーバ制御手段は、前記周辺機器制御手段からの入出力要求パケットデータを前記周辺機器サーバに送信してから所定時間経過するか否か判断し、所定時間経過しても前記周辺機器サーバに送信すべき次の入出力要求パケットを前記周辺機器制御手段から受け取らなかった場合には、ダミーの入出力要求パケットデータを前記周辺機器サーバに与えるダミー要求出力手段を備えている。
このように、前記入出力要求パケットデータを送信後、所定時間経過しても前記周辺機器サーバに送信すべき次の入出力要求パケットを前記周辺機器制御手段から受け取らなかった場合には、ダミーの入出力要求パケットデータを前記周辺機器サーバに与える。したがって、入出力要求パケットを出力し、これに対する応答データを受け取ると、次の入出力要求パケットを出力する等時性通信規格で通信を行う周辺機器であっても、前記周辺機器サーバを介して前記周辺機器のアイソクロナスインのネットワーク通信が可能となる。

3)本発明にかかる等時性出力転送を行うデータ通信システムにおいては、前記周辺機器サーバ制御手段は、さらに、前記周辺機器サーバから前記入出力要求パケットデータに対応する応答データを受け取るまでは、前記ダミー応答データに対して前記周辺機器制御手段から次の入出力要求パケットデータが与えられても、この入出力要求パケットデータの前記周辺機器サーバへの送信を留保する留保手段、を有しており、
前記周辺機器サーバ制御手段は、前記ダミー応答データを前記周辺機器制御手段に与えてから所定時間経過したか否か判断し、所定時間経過しても前記入出力要求パケットデータに対応する応答データを前記周辺機器サーバより受け取らなかった場合には、前記周辺機器制御手段に前記ダミー応答データを与える処理を前記周辺機器サーバから応答データを受け取るまで繰り返す
このように、前記ダミー応答データを与えつつ、入出力要求パケットデータを送信後、前記周辺機器制御手段から次の入出力要求パケットデータが与えられると、これを、前記周辺機器サーバに送信しないという処理を、前記周辺機器サーバからの入出力要求パケットデータに対応する応答データを受け取るまで繰り返すことにより、所定時間内に前記応答データを受け取らないと、タイムアウト等の処理を行う等時性通信規格で通信を行う周辺機器であっても、前記周辺機器サーバを介したネットワーク通信が可能となる。

4)本発明にかかる等時性入力転送を行うデータ通信システムにおいては、前記周辺機器サーバ制御手段は、前記周辺機器制御手段からの入出力要求パケットデータを前記周辺機器サーバに送信してから所定時間経過するか否か判断し、所定時間経過しても前記入出力要求パケットデータに対応する応答データを前記周辺機器サーバより受け取らなかった場合には、前記入出力要求パケットデータに対応するダミー応答データを前記周辺機器制御手段に与えるダミー応答出力手段、前記周辺機器サーバから前記入出力要求パケットデータに対応する応答データを受け取るまでは、前記ダミー応答データに対して前記周辺機器制御手段から次の入出力要求パケットデータが与えられても、この入出力要求パケットデータの前記周辺機器サーバへの送信を留保する留保手段、を有しており、前記周辺機器サーバ制御手段は、前記ダミー応答データを前記周辺機器制御手段に与えてから所定時間経過したか否か判断し、所定時間経過しても前記入出力要求パケットデータに対応する応答データを前記周辺機器サーバより受け取らなかった場合には、前記周辺機器制御手段に前記ダミー応答データを与える処理を前記周辺機器サーバから応答データを受け取るまで繰り返す。
このように、前記ダミー応答データを与えつつ、入出力要求パケットデータを送信後、前記周辺機器制御手段から次の入出力要求パケットデータが与えられると、これを、前記周辺機器サーバに送信しないという処理を、前記周辺機器サーバからの入出力要求パケットデータに対応する応答データを受け取るまで繰り返すことにより、所定時間内に前記応答データを受け取らないと、タイムアウト等の処理を行う等時性通信規格で通信を行う周辺機器であっても、前記周辺機器サーバを介したネットワーク通信が可能となる。


5)本発明にかかる等時性出力通信を行うデータ通信システムまたは等時性入力通信を行うデータ通信システムにおいては、前記留保手段は前記入出力要求パケットデータを送信した時系列順に記憶しており、前記ダミー応答制御手段は、前記ダミー応答データを送ると、前記周辺機器サーバから応答データを受け取るまで、前記応答待ち通信のうち、送信時が古いものを削除するとともに、残っている応答待ち通信の順位を繰り上げる。したがって、記憶手段の容量を所定量の範囲に保つことができる。
前記ダミー応答データをエラーメッセージとしてもよい。これにより、アイソクロナスイン通信においても、つぎの要求を、前記周辺機器制御プログラムが発することができる。



6)本発明にかかる周辺機器サーバ制御プログラムは、等時性データ通信でデータ通信を行う周辺機器が接続された周辺機器サーバとの間でデータ転送するためのクライアントコンピュータの周辺機器サーバ制御プログラムであって、
前記クライアントコンピュータには、入出力要求パケットデータを出力した後、これに対する応答データを受け取ると、次の入出力要求パケットデータを出力する周辺機器制御プログラムがインストールされており、前記クライアントコンピュータに以下の手段を実現させるための周辺機器サーバ制御プログラムである。前記周辺機器制御プログラムから与えられた入出力要求パケットデータをカプセル化し、カプセル化した入出力要求パケットデータを前記周辺機器サーバにネットワーク送信する送信手段、前記周辺機器サーバからネットワーク送信された前記入出力要求パケットデータに対応する応答データを受信すると、前記周辺機器制御プログラムに与える受信手段、前記周辺機器制御プログラムからの入出力要求パケットデータを前記送信手段によって前記周辺機器サーバに送信してから、所定時間経過したか否か判断する判断手段、前記所定時間経過しても前記入出力要求パケットデータに対応する応答データを前記周辺機器サーバより受け取らなかった場合には、前記入出力要求パケットデータに対応するダミー応答データを前記周辺機器制御プログラムに与えるダミー応答出力手段。
このように、前記要求を送信後、所定時間経過すると、ダミー応答データを前記周辺機器制御プログラムに与えることにより、応答データを受け取らない限りつぎの要求をおこなわない等時性通信規格で通信を行う周辺機器制御プログラムをタイムアウト等の処理から防ぐことができる。これにより、前記周辺機器サーバを介して前記周辺機器のアイソクロナスアウトのネットワーク通信が可能となる。

7)本発明にかかる周辺機器サーバ制御プログラムは、さらに、前記周辺機器サーバとの間のネットワークの混雑度を計測する混雑度計測手段、前記計測された混雑度に応じて、前記ダミー応答の出力タイミングを変更する変更手段、をクライアントコンピュータにより、さらに実現させるためのプログラムである。したがって、混雑度に応じて、次の要求を配信するタイミングを制御することができる。

8)本発明にかかる周辺機器サーバ制御プログラムは、等時性データ通信でデータ通信を行う周辺機器が接続された周辺機器サーバとの間でデータ転送するためのクライアントコンピュータの周辺機器サーバ制御プログラムであって、前記クライアントコンピュータには、入出力要求パケットデータを出力し、これに対する応答データを受け取ると、次の入出力要求パケットデータを出力する周辺機器制御プログラムがインストールされており、前記クライアントコンピュータに以下の手段を実現させるための周辺機器サーバ制御プログラム。前記周辺機器制御プログラムから与えられた入出力要求パケットデータをカプセル化し、カプセル化した入出力要求パケットデータを前記周辺機器サーバにネットワーク送信する送信手段、 前記周辺機器サーバからネットワーク送信された前記入出力要求パケットデータに対応する応答データを受信すると、前記周辺機器制御プログラムに与える受信手段、前記周辺機器制御プログラムからの入出力要求パケットデータを前記送信手段によって前記周辺機器サーバに送信してから、所定時間経過したか否か判断する判断手段、前記所定時間経過しても前記周辺機器サーバに送信すべき次の入出力要求パケットを前記周辺機器制御手段から受け取らなかった場合には、ダミーの入出力要求パケットデータを前記周辺機器サーバに与えるダミー要求出力手段。
このように、前記要求を送信後、所定時間経過すると、ダミーの入出力要求パケットデータを前記周辺機器サーバに与えることにより、入出力要求パケットデータを受け取らない限り、これに対する応答データを応答しない等時性通信規格で通信を行う周辺機器であっても、応答データを前記周辺機器制御手段に配信することができる。これにより、前記周辺機器サーバを介して前記周辺機器のアイソクロナスインのネットワーク通信が可能となる。

9)本発明にかかる周辺機器サーバ制御プログラムにおいては、前記ダミー要求出力手段は、直前に前記周辺機器サーバに送った入出力要求パケットデータをダミーの入出力要求パケットデータとして、前記周辺機器サーバに与える。したがって、入出力要求パケットデータを受け取らない限り、応答しない等時性通信規格で通信を行う周辺機器であっても、前記応答データを前記周辺機器制御手段に配信することができる。これにより、前記周辺機器サーバを介して前記周辺機器のアイソクロナスインのネットワーク通信が可能となる。

10)本発明にかかる周辺機器サーバ制御プログラムにおいては、前記周辺機器サーバとの間のネットワークの混雑度を計測する混雑度計測手段、前記計測された混雑度に応じて、前記ダミー応答の出力タイミングを変更する変更手段をクライアントコンピュータにより、さらに実現させるためのプログラムである。したがって、混雑度に応じて、次の要求を配信するタイミングを制御することができる。

11)本発明にかかる通信装置は、等時性データ通信でデータ通信を行う周辺機器が接続された周辺機器サーバとの間でデータ転送する通信装置であって、1)前記周辺機器サーバに対して入出力要求パケットデータを出力し、これに対する応答データを受け取ると、次の入出力要求パケットデータを出力する周辺機器制御手段、2)前記周辺機器制御手段が出力した入出力要求パケットデータをカプセル化し、前記周辺機器サーバにネットワーク送信を行い、前記周辺機器サーバから、カプセル化された応答データを受け取ると、これをデカプセル化して前記入出力要求パケットデータに対応する応答データとして前記周辺機器制御手段に与える周辺機器サーバ制御手段、を備え、前記周辺機器サーバ制御手段は、前記周辺機器制御手段からの入出力要求パケットデータを前記周辺機器サーバに送信してから所定時間経過するか否か判断し、所定時間経過しても前記入出力要求パケットデータに対応する応答データを前記周辺機器サーバより受け取らなかった場合には、前記入出力要求パケットデータに対応するダミー応答データを前記周辺機器制御手段に与えるダミー応答出力手段を有する。
このように、前記入出力要求パケットデータを送信後、所定時間経過すると、ダミー応答データを前記周辺機器制御手段に与えることにより、前記周辺機器制御手段は応答データを受け取らない限り、次の要求を配信しない等時性通信規格で通信を行う周辺機器であっても、前記周辺機器制御手段から、次の要求を配信することができる。これにより、前記周辺機器サーバを介して前記周辺機器によるアイソクロナスアウトのネットワーク通信が可能となる。

12)本発明にかかる通信装置は、等時性データ通信でデータ通信を行う周辺機器が接続された周辺機器サーバとの間でデータ転送する通信装置であって、1)前記周辺機器サーバに入出力要求パケットデータを出力し、これに対する応答データを受け取ると、次の入出力要求パケットデータを出力する周辺機器制御手段、2)前記周辺機器制御手段が出力した入出力要求パケットデータをカプセル化し、前記周辺機器サーバにネットワーク送信を行い、前記周辺機器サーバから、カプセル化された応答データを受け取ると、これをデカプセル化して前記入出力要求パケットデータに対応する応答データとして前記周辺機器制御手段に与える周辺機器サーバ制御手段、を備え、前記周辺機器サーバ制御手段は、前記周辺機器制御手段からの入出力要求パケットデータを前記周辺機器サーバに送信してから所定時間経過するか否か判断し、所定時間経過しても前記周辺機器サーバに送信すべき次の入出力要求パケットを前記周辺機器制御手段から受け取らなかった場合には、ダミーの入出力要求パケットデータを前記周辺機器サーバに与えるダミー要求出力手段を有する。

このように、前記入出力要求パケットデータを送信後、所定時間経過すると、ダミー要求を前記周辺機器サーバに与えることにより、入出力要求パケットデータを受け取らない限り、応答しない等時性通信規格で通信を行う周辺機器であっても、応答データを前記周辺機器制御手段に配信することができる。これにより、前記周辺機器サーバを介して前記周辺機器のアイソクロナスインのネットワーク通信が可能となる。

13)本発明にかかるネットワーク通信方法は、等時性通信規格で通信を行う1または2以上の周辺機器を、クライアントコンピュータがネットワーク接続された周辺機器サーバに接続して、いずれかの周辺機器が特定されたデータが前記クライアントコンピュータから与えられると、等時性通信規格にて、前記周辺機器に送信するとともに、当該送信したデータに対する応答データを、当該クライアントコンピュータに前記ネットワークを介してカプセル化して送信するネットワーク通信方法であって、前記クライアントコンピュータは、1)入出力要求パケットデータを出力し、これに対する応答データを受け取ると、次の入出力要求パケットデータを出力する周辺機器制御手段が出力した入出力要求パケットデータをカプセル化して前記周辺機器サーバにネットワーク送信を行い、2)前記周辺機器サーバから、カプセル化された応答データを受け取ると、これをデカプセル化して前記入出力要求パケットデータに対応する応答データとして前記周辺機器制御手段に与え、3)前記周辺機器制御手段からの入出力要求パケットデータを前記周辺機器サーバに送信してから所定時間経過するか否か判断し、所定時間経過しても前記入出力要求パケットデータに対応する応答データを前記周辺機器サーバより受け取らなかった場合には、前記入出力要求パケットデータに対応するダミー応答データを前記周辺機器制御手段に与える。

このように、前記入出力要求パケットデータを送信後、所定時間経過すると、ダミー応答データを前記周辺機器制御手段に与えることにより、前記周辺機器制御手段は応答データを受け取らない限り次の要求を配信しない等時性通信規格で通信を行う周辺機器であっても、前記周辺機器制御手段から、次の要求を配信することができる。これにより、前記周辺機器サーバを介して前記周辺機器によるアイソクロナスアウトのネットワーク通信が可能となる。

14)本発明にかかるネットワーク通信方法は、等時性通信規格で通信を行う1または2以上の周辺機器を、クライアントコンピュータがネットワーク接続された周辺機器サーバに接続して、いずれかの周辺機器が特定されたデータが前記クライアントコンピュータから与えられると、等時性通信規格にて、前記周辺機器に送信するとともに、当該送信したデータに対する応答データを、当該クライアントコンピュータに前記ネットワークを介してカプセル化して送信するネットワーク通信方法であって、前記クライアントコンピュータは、1)入出力要求パケットを出力し、これに対する応答データを受け取ると、次の入出力要求パケットを出力する周辺機器制御手段が出力した入出力要求パケットデータをカプセル化し、これを前記周辺機器サーバネットワーク送信を行い、2)前記周辺機器サーバから、カプセル化された応答データを受け取ると、これをデカプセル化して前記入出力要求パケットデータに対応する応答データとして前記周辺機器制御手段に与え、3)前記周辺機器制御手段からの入出力要求パケットデータを前記周辺機器サーバに送信してから所定時間経過するか否か判断し、所定時間経過しても前記周辺機器サーバに送信すべき次の入出力要求パケットを前記周辺機器制御手段から受け取らなかった場合には、ダミーの入出力要求パケットデータを前記周辺機器サーバに与える。

このように、前記要求を送信後、所定時間経過すると、ダミーの入出力要求パケットデータを前記周辺機器サーバに与えることにより、要求を受け取らない限り、応答しない等時性通信規格で通信を行う周辺機器であっても、応答データを前記周辺機器制御手段に配信することができる。これにより、前記周辺機器サーバを介して前記周辺機器のアイソクロナスインのネットワーク通信が可能となる。

15)本発明にかかるプログラムは、前記混雑度計測手段が計測した混雑度が、所定の混雑度を超えた場合には、さらに、下記の手段による制御を行うためのプログラムである。前記判断手段による前記所定時間経過した旨の判断が与えられると、ダミー応答データを前記周辺機器制御プログラムに与え、前記ダミー応答データに対して、前記周辺機器制御プログラムから、次の入出力要求パケットデータが与えられると、これを、前記周辺機器サーバに送信することなく記憶するステップを前記周辺機器サーバから応答データを受け取るまで繰り返す繰り返し手段。

したがって、混雑度計測手段が計測した混雑度が、所定の混雑度を超えるか否かで処理を変更することができる。
16)本発明にかかる等時性入力通信を行うデータ通信システムまたは通信装置においては、前記ダミー要求出力手段は、直前に前記周辺機器サーバに送った入出力要求パケットデータをダミーの入出力要求パケットデータとして、前記周辺機器サーバに与える。
したがって、入出力要求パケットデータを受け取らない限り、応答しない等時性通信規格で通信を行う周辺機器であっても、前記応答データを前記周辺機器制御手段に配信することができる。これにより、前記周辺機器サーバを介して前記周辺機器のアイソクロナスインのネットワーク通信が可能となる。

実施形態においては、「要求を送信後、所定時間経過する」を計測するのに、送信時から所定時間経過した所定時刻(相対または絶対時刻)を記憶しておき、前記所定時刻になると、ダミー通信を与えるようにしたが、要求を送信後、所定時間経過したか否かを計測できれば、公知のどの様な方法をも用いることができる。
「周辺機器制御手段」とは、実施形態では、周辺機器ドライバモジュール402によるCPUの処理が該当する。
「周辺機器サーバ制御手段」とは、実施形態では、周辺機器サーバドライバモジュール404によるCPUの処理が該当する。
「ダミー応答出力手段」とは、実施形態では、周辺機器ドライバモジュール402にダミー応答を与えるCPUの処理(第1実施形態ではステップ1304〜1308)、(第3実施形態ではステップ1906〜1910)が該当する。
「ダミー要求出力手段」とは、実施形態では、周辺機器ドライバモジュール402によるCPUの処理が該当する。
「留保手段」とは、実施形態では、ステップ1806によるCPUの処理が該当する。
「周辺機器サーバ制御プログラム」とは、実施形態では、周辺機器サーバドライバモジュール404が該当する。
「周辺機器制御プログラム」とは、実施形態では、周辺機器ドライバモジュール402が該当する。
「送受信制御手段」とは、周辺機器サーバドライバモジュール404によるCPUの処理のうち、ステップ1902,1904が該当する。
「通信装置」「ダミー通信処理機能付き通信装置」とは、クライアント304が該当する。
本発明のいくつかの実施形態は、アイソクロナス入力通信を促進する方法を含んでおり、USB周辺装置などの少なくとも一つの周辺装置について第1の通信を周辺装置ドライバから受信するステップと、周辺装置に対して、ネットワークを介して前記第1の通信からのデータを送信するステップと、周辺装置ドライバから第2の通信を受信することなく、所定間隔が経過したことを記録するステップと、ダミーの通信を生成し、かつそれをネットワークを介して周辺装置に送信し、それにより周辺装置に対する通信のアイソクロナスシーケンスの送信を維持するステップ等を有する。ダミーの通信を生成するステップでは、周辺装置ドライバから直近に受信した通信からのダミーの通信データにコピーすることができる。
いくつかの実施形態では、前記方法は、ダミーの通信に応答する応答通信をネットワークを介して受信し、周辺装置ドライバに前記応答通信からのデータを送信するステップを含む。
いくつかの実施形態では、前記方法は、周辺装置サーバドライバモジュール内に、周辺装置ドライバモジュールからのデータを、当該データを遠隔周辺装置に送信するのに代えて保持するステップと、送信されたデータに応答して、周辺装置からの通信を受信した後に、周辺装置ドライバモジュールに、保持されたデータを送り戻すステップを含む。
いくつかの実施形態では、ネットワークを介して送信された通信が周辺装置サーバにバッファリングされ、前記方法は前記所定の間隔を変更し、それによりバッファリングされる通信の数を変更する。
本発明のいくつかの実施形態は、アイソクロナス出力通信を促進する方法を含んでおり、一つの周辺装置について第1の通信を周辺装置ドライバから受信するステップと、前記周辺装置に対して、ネットワークを介して前記第1の通信からのデータを送信するステップと、前記第1の通信に応答して前記周辺装置から応答通信をネットワークを介して受信することなく、所定間隔が経過したことを記録するステップと、ダミーの通信を生成し、かつそれを周辺装置ドライバに送信し、それにより周辺装置ドライバに対する通信のアイソクロナスシーケンスの送信を維持するステップ等を有する。前記第1の通信は、たとえば周辺装置ドライバからの入出力要求パケットを含んでいてもよい。
いくつかの実施形態では、前記方法は、ネットワークを介して、かつ前記所定間隔の経過後、前記第1の通信に応答する、応答通信を受信するステップと、周辺装置ドライバにそれを送信することなく、当該応答通信を放棄するステップとを含む。いくつかの実施形態では、前記方法は、前記第1の通信に応答する応答通信が受信されるまで、周辺装置ドライバに対するダミーの通信を送信するステップと、次に前記応答通信からのデータを周辺装置ドライバに送信するステップとを反復するステップを含む。
本発明のいくつかの実施形態は、アイソクロナス通信のためのシステムを含み、周辺装置サーバドライバモジュールと、周辺装置サーバドライバモジュールにより生成され、周辺装置サーバドライバモジュールから送信されるダミーの通信等の構成要素とを備え、それにより他の場所で生成され、周辺装置サーバドライバモジュールに送信された時機に適った通信が存在しない場合に、アイソクロナス通信を維持することができる。
いくつかの実施形態では、周辺装置サーバドライバモジュールは、アイソクロナス通信を表す、スケジューリング待ち行列と、更にスケジューリング待ち行列を管理する管理構成要素も備える。
いくつかの実施形態では、周辺装置サーバドライバモジュールがネットワークを介して周辺装置から応答通信が到着するのを待つ間、周辺装置ドライバモジュールがタイムアウトになることを阻止するために、周辺装置サーバドライバモジュールは、周辺装置ドライバモジュールに対するダミーの通信を反復して生成するための遅延制御構成要素を備える。
いくつかの実施形態では、周辺装置サーバドライバモジュールは、ネットワークを介した周辺装置ドライバモジュールから周辺装置へのアイソクロナス入力通信を維持するのを補助するための、アイソクロナス入力通信手段と、ネットワークを介した周辺装置から周辺装置ドライバモジュールへのアイソクロナス出力通信を維持するのを補助するための、アイソクロナス出力通信手段と、あるいはこれらの手段の双方を備えている。
いくつかの実施形態では、前記システムは、アイソクロナス通信を保持するためのバッファを有する周辺装置サーバを備えており、また前記システムは、アイソクロナス通信の送信間の間隔を変更することにより、バッファリングされたアイソクロナス通信の数を変更するための手段をも備えている。
本明細書で与えられた多くの実施例は方法であるが、本発明は、一般に対応する装置、システム、構成されたコンピュータ読み取り可能な記憶媒体、信号、及びプロセスプロダクト、並びに方法を提供する。
本発明の利点及び特徴が得られる方法を記載するために、本発明の説明は、添付図面との関連で述べられる。これらの図面は、本発明の選択された態様を図示するのみであり、本発明の範囲を完全に画定するものではない。
〔第1の実施形態〕
本発明は、具体的な実施例により本文及び図面に例示されているが、本発明の他の実施形態がこれらの実施例から逸脱する可能性があることは理解されるであろう。たとえば、ある実施例の特定の特徴は、削除され、新たに名前を付され、異なるグループ化がなされ、反復され、異なるハードウエア及び/又はソフトウエア内で例示化され、異なる順番で実行されてもよいし、又は2つ以上の実施例に現れる特徴の混合であってもよい。参照は、図面全体を通して、参照符号によりなされる。図面又は本文中の付与された参照符号と関連した表現における明らかな矛盾は、単に当該符号により参照されるものの範囲を広げるものとして理解されるべきである。
文言の定義は、明示的にかつ黙示的に本書面を通して与えられる。文言は本明細書では、必ずしも一般の用法、特定の産業の用法、特定の辞書、又は一連の辞書類における用法が有しているのと同一の意味を有するものではない。本発明者は、自身の語彙に対する権利を主張し、行使するものである。
たとえば、ここで用いられた「通信」は、データ及び/又は他の情報を搬送する、1以上のフレーム、パケット、または信号を意味する。データを搬送する代わりに、又はデータを搬送するのに加え、通信は、承認として送信され、又はそうでない場合には、たとえば、制御、管理、プロトコルのテストのために送信されてもよい。このように、データは一部(必ずしも全てではないが)の通信では、ペイロード(通信パケットのうちヘッダ部分を除いたデータ本体)である。
見出しは便宜のためであり、所与のトピックに関する情報は、該トピックを示す見出しのセクションの外に見出される可能性がある。
図3を参照すると、本発明の一実施形態のネットワーク環境が示されている。ネットワーク302には、ネットワーククライアント304及び周辺機器サーバ306が接続されている。周辺機器308は、周辺機器サーバ306に接続されている。ネットワーク302はたとえばLAN(Local Area Network)、又は接続された複数のLANであってもよい。より大規模なネットワークが、いくつかの実施形態において使用されてもよい。2つの周辺機器308が示されているが、1つ以上の周辺機器308が所与の実施形態において存在してもよい。
同様に、2つのネットワーククライアント304が示されているが、所与の実施形態において、1つ以上のネットワーククライアント304が存在してもよい。複数の周辺機器サーバ306は、同時使用のために別個に処理されるか、あるいはフェイルオーバー構成で構築されるかいずれかであるが、所与の実施形態に存在していてもよい。
通信310、312はネットワーク302を介して伝わる。図6及び図11に関連して、更に以下で説明するように、通信310は通常のシーケンスにおける正規の通信であり、周辺機器308と周辺機器ドライバモジュール402との間を伝わる際に、データを搬送する。これに対して、通信312は通常のシーケンスのギャップを補償するために生成されたダミーの通信であり、これにより周辺機器ドライバモジュール402がタイムアウトになることを阻止する。
図3のネットワーククライアント304のハードウェア構成については一般的なパソコンと同様であるので説明は省略する。
図4は更に、図3で示した幾つかの事項を示す。一構成では、周辺機器ドライバモジュール402及び周辺機器サーバドライバモジュール404は、ネットワーククライアント304のハードディスク(図示せず)にインストールされている。周辺機器ドライバモジュール402は、ネットワークを介して接続される代わりに、USB周辺機器がネットワーククライアントに直接接続されている場合のような、従来の構成における、USB周辺機器を駆動するのに用いられる型の従来の周辺機器ドライバモジュールである。すなわち、本発明は、クライアントマシン上の既存のインストールされたUSB周辺機器ドライバに対して、改変を要求しない。
なお、周辺機器ドライバモジュールを一部変更して供給するようにしてもよい。すなわち、本発明は、クライアントマシン上の既存のインストールされたUSB周辺機器ドライバに対して、必ずしも改変を要求するものではない。
周辺機器サーバドライバモジュール404は、キュー管理部406、時間管理部408、送信管理部410、受信管理部412、及びこれら4つの管理部が参照する、スケジューリングキュー414を備えている。管理部406、408、410、412及びスケジューリングキュー414は、コスト、コピーの数、プロダクションモデルに対するテスト版、モジュール性などの要因により、ハードウエア、ファームウエア、ソフトウエアで、又はハードウエア、ファームウエア及び/又はソフトウエアの組合せで実施されてもよい。
すなわち、図4から明らかなように、本実施形態においては、キュー管理部406、時間管理部408、送信管理部410、受信管理部412、スケジューリングキュー414、遅延制御416、アイソクロナスOUT手段418、アイソクロナスIN手段420は、すべてプログラムによって構成されている。これらのプログラムはCPU(図示せず)と協働して、周辺機器サーバ306の制御を行う。
いくつかの実施形態では、管理部406、408、410、412の2つ以上は、並行して少なくとも部分的に実行する。たとえば、時間管理部408は、たとえキュー管理部406が完了していなくても、動作開始してもよい。他のいくつかの実施形態において、動作は、キュー管理部406から開始し、当該管理部を完全に通過し、次に時間管理部408へ移り、当該管理部を通過し、次に送信管理部410へ移り、当該管理部を通過し、次に受信管理部412へ移り、当該管理部を通過し、次にキュー管理部406へ戻り、これらを繰り返す。4つの管理部は通常、キューに少なくとも一つのキューエントリがある限り、ループで動作する。しかし、本明細書で示されているように、残りの管理部の順序は、通常、アイソクロナスIN(別称ISO-IN)と、アイソクロナスOUT(別称ISO-OUT)とで異なる。
いくつかの別の実施形態では、制御の流れが、第1のセクションを終える前に、第1のセクションから第2のセクションにジャンプする実行順序が可能である。たとえば、実行は、キュー管理部のステップ708からジャンプして、時間管理部の全てを通過し、次にキュー管理部を終えるためにジャンプして戻り、ステップ708以降を継続することが可能である。
より一般的には、2つ以上のプロセッサが利用可能であれば、管理部は並行して実行することができ、たとえば、キュー管理部の実行は、時間管理部の実行と重複してよい。
本発明のいくつかの実施形態は、マルチプロセッサ環境において動作することができる。デッドロックやデータの破損を防ぐため、2つ以上のセクションの並行した実行を調整するために、適切な機構が用いられてもよく、たとえば、状態を更新する場合に、カーネル関数である「SpinLock()」を用いて、同時にステータスを更新したり参照したりすることを阻止してもよい。
本発明の実施形態は、上記周辺機器サーバドライバモジュール404及び周辺機器サーバ306に含まれる各セクションの動作により、アイソクロナスデータの通信の実現を助けることができる。アイソクロナスINとアイソクロナスOUTとの動作が異なるため、これらを以下に別個に説明する。
〔アイソクロナスデータ送信(アイソクロナスOUT)〕
最初に本実施形態における、アイソクロナス出力の基本的な通信手順を説明する。
周辺機器サーバドライバモジュール404は、周辺機器ドライバモジュール402からIRPを受信し、ID、送信予定時刻、完了予定時刻、IRPをキューリスト414に1つのキューエントリとして登録する(たとえば、図5参照)。続いて、送信予定時刻が満了すると、キューリストからのIRPのデータの一部分及びIDが、周辺機器サーバ306に対するコマンドとして送信される。周辺機器サーバドライバモジュール404は、現在時刻がIRPの完了予定時刻を超えた場合には、IRPの完了通知を周辺機器ドライバモジュール402に送信する。
周辺機器サーバ306は、周辺機器サーバドライバモジュール404から上記コマンドを受信し、当該コマンドを周辺機器308に送信し、周辺機器308から応答データを受信し、応答データ及びコマンドのIDを周辺機器サーバドライバモジュール404に返信する。
周辺機器サーバドライバモジュール404は、同一のIDを有するキューエントリについて、スケジューリングキュー414を検索し、当該リスト414から該当するキューエントリを削除する。この手法でIRPを備えるキューを管理することにより、ネットワークコンピュータの間で通信するアイソクロナスデータポート(アイソクロナスOUT)を備える周辺機器であっても、周辺機器ドライバモジュール402と周辺機器308との間で通信を確立することができる。
アイソクロナスOUT通信の内容を、図5に示したキューデータ、及び図6に示した通信シーケンスを一例として用いて、更に説明する。
図5に示されたキュー414データは、表形式であるが、キュー414は、プログラミング技術では一般に馴染みのある配列、表、リンクリスト、その他のリンクされたデータ構造、及び他の構造を用いて実施することができる。
図5の表におけるIDは、各IRPに対応する固有の識別番号であり、IDの値の範囲が十分に大きいこと、たとえば、予測されたキューエントリの最大数よりも大きい場合に、IDの値は結果的には繰り返されてもよい。
本実施形態では、IRPに対する参照は、IRPが完了していない場合には、該当するIRPに対するメモリアドレス(ポインタ)を表し、IRPが完了した場合には、完了(「完了」、すなわち有効なポインタとして用いられない値)を表す。
混乱を避けるため、異なるアドレスが、図5の各IRPエントリについて示される。各IRPポインタは、固有のアドレスを有するが、メモリを再利用することができるため、ちょうど完了した別のIRPと同一のアドレスをキュー中のより新規なIRPが有する、ということが起きることがある。
図5の「ステータス」のラベル付けがされた欄には、他のステータス値が別個に示されている。本明細書の別の箇所に説明されているように、一つのステータス又はステータス値は、各IRPの現在の状態を表す。
他の実施形態では、たとえばこれら全てをIRPポインタの欄に置くなど、ステータス値の場所を異なって配置してもよい。明白にわかる程度に、異なるセットのステータス値も他の実施形態で用いてもよい。
本明細書の別の箇所に説明されているように、送信予定時刻及び完了予定時刻に、時間管理部408により設定された値が入力される。
図5のステータス欄は、複数の起こりうる値を有している。すなわち、「送信準備待ち」、「送信開始」、「送信待ち」、「送信中」、「受信待ち」、「受信中」、「完了待ち」である。
「受信中」のステータスは、単に概念的に「完了」に包含され、図7〜図10、図12〜図15の処理フローチャートでは用いられない。そのステータス値をチェックまたはポーリングする管理部は存在せず、かかるステータス値はセクション又は処理についてのトリガや充足条件とはならない。
図6を図1と比較することは有益である。図1が従来技術を示すことを思い起こされたい。上述のごとく、図1にかかる通信における周辺機器ドライバモジュール402は、いくつかのIRP(フレーム(1)(2)(3))をまとめて発行し、事前に発行されたIRPが完了した後にのみ、次のIRPを発行する。従って、フレーム(4)、(5)は、従来の周辺機器サーバドライバモジュールによりフレーム(1)(2)のIRPが完了するまでは、周辺機器ドライバモジュール402から発行されない。結果として、周辺機器に対するフレーム(4)、(5)の到着が遅延し、データが途切れる。
本発明によれば、周辺機器サーバドライバモジュール404により、実施形態は、IRPを特定の時間で、すなわち完了予定時刻が到来すると、周辺機器サーバ306からIRPへの応答が未だ到着していない場合であっても、IRPを強制的に完了する。図6に示した場合では、周辺機器サーバドライバモジュール404は、フレームD(1)を生成,送信することにより、未だ到着していないフレーム(1)を事実上完了させる。周辺機器ドライバモジュール402は、フレームD(1)を検出し、それによりフレーム(1)のIRPが完了されたことを認識し、次のIRPとしてフレーム(4)を発行する。この方法で動作することにより、IRPは何ら遅延なく発行され、周辺機器308におけるデータの等時性を提供できる。その一方で、遅れて戻ってきた正規フレーム(1)及び(2)、すなわちフレームG(1)及びG(2)は、周辺機器サーバドライバモジュール404に到着した際に削除される。これはフレームG(1)及びG(2)のIRPが既にフレームD(1)及びD(2)により各々完了され、周辺機器ドライバモジュール402はこれらの応答を待っていないからである。上記動作は、キュー管理部406を軸として各管理部の協働により達成される。
図7から図10をここで参照し、アイソクロナスOUT動作における、各管理部の機能及び協働を説明する。
〔キュー管理部〕
周辺機器ドライバモジュール402は、周辺機器308のアイソクロナスデータポートとの通信を開始する際、IRPを発行する。このIRPは、周辺機器のサーバドライバモジュール404に送信される。これは、馴染みのあるIRP送信ツール及び技術を利用して行われてもよい。ステップ704では、キュー管理部406は、周辺機器ドライバモジュール402がIRPを送信したか否かを確認する。IRPが送信されると、ステップ706において、受信されたIRPは、周辺機器ドライバ402のアイソクロナスデータポートに対する、最初のIRPであるか否かが確認される。仮に最初のIRPである場合には、処理はステップ708に進み、そうでない場合には、ステップ710に進む。
ステップ708では、キュー管理部406は、時間管理部408に、送信予定時刻及び完了予定時刻を初期値に設定するよう指示する。
ステップ710においては、キュー管理部406は、新たにキューリスト414に、ID,IRP、送信準備待ちのステータスを一つのリストエントリとして登録する。この時点では、送信予定時刻及び完了予定時刻は、新しいキューエントリにおいて、まだ特定されない。ステップ712では、キュー管理部406は、キューリスト中で、完了ステータスを有するキューエントリを検索し、かかるキューエントリがある場合には、手順はステップ714に進む。そうでない場合には、ステップ718に進む。
ステップ714では、キュー管理部406は、完了キューに登録されているIRPのステータスを、「SATATUS_SUCCESS」として設定し、周辺機器ドライバモジュール402にIRPを戻し(IRPを完了させる)、このIRPを削除する。「SATATUS_SUCCESS」は、キューに固有のステータス値に対して、カーネルのステータス値である。処理が進行するにつれて、「SATATUS_SUCCESS」を繰り返し戻すことにより、本発明に係る処理が、周辺機器ドライバモジュール402に対して、処理が正常に進行していると認識させる。
このようにして、周辺機器ドライバモジュール402は、それ以前のIRPが到着し、及び/又は未だ完了していない場合であっても、次のIRPを発行できる。
ステップ716では、キュー管理部406は、完了したキューエントリを、受信待ちステータスに更新する。ステップ718では、キュー管理部406がキューリスト414内のエントリ数を確認する。少なくとも一つのキューエントリがあれば、処理はステップ704に戻る。そうでない場合には、アイソクロナスデータポートへの通信が完了するため、このキュー管理部406を介した反復は終了する。
〔時間管理部〕
ステップ804において、時間管理部408は、キュー管理部406からの要求を待ち、新しいキューエントリの送信予定時刻及び完了予定時刻を初期値に設定する。要求が受信されると、時間管理部408は現在時刻に基づいて、キューエントリのための送信予定時刻及び完了予定時刻を設定する。
送信予定時刻及び完了予定時刻に選択される値は、一部は関連するバスのタイミング要求に依存しており、タイミング間隔についても、以下で説明する。図5に示した時間は例であり、所与の実施形態における実際の時間と間隔は、この例とは異なっている可能性がある。
いくつかの実施形態では、次のキューエントリの送信予定時刻及び完了予定時刻は、時間管理部408のみが管理する情報であり、時間設定は、この時点では、IRPに対応する各キューエントリに対して行われない。たとえば、時間管理部408にとってローカルである変数のような場合は、時間管理部408が、次のキューエントリに設定される時刻を準備し保持するだけである。ステップ806では、時間管理部408は、送信準備待ちキューエントリについてキューリスト414を検索する。
送信準備待ちキューエントリが存在する場合には、処理はステップ808に進み、そうでない場合には、ステップ812に進む。ステップ808では、時間管理部408は、ステップ804で準備された送信予定時刻及び完了予定時刻を、送信準備待ちキューの送信予定時刻及び完了予定時刻にコピーし、そのエントリのステータスを送信待ちに変更する。
ステップ810では、時間管理部408は、次のキューエントリの送信予定時刻及び完了予定時刻を、時間管理部408内、若しくは別にキュー414の外側で保持されている、次のキューエントリのための時刻に更新する。
ステップ812では、時間管理部408がキュー414を、送信待ちステータスのキューエントリであり、かつ現在時刻より送信予定時刻が古いキュー414について検索する。かかるキューエントリが存在する場合には、このキューエントリは814で、送信開始ステータスとなるように変更され、存在しない場合には、処理はステップ816に進む。
ステップ816では、時間管理部408が、完了を待っており、かつ現在時刻より古い完了予定時刻を有するキューエントリを検索する。かかるキューエントリが存在する場合には、このキューは818で完了ステータスに変更され、存在しない場合には、処理はステップ820に進む。キューエントリが1つも残っていない場合には、時間管理部408は現在の反復処理を終了し、残っている場合には、処理はステップ804に戻る。
〔送信管理部〕
ステップ904では、送信管理部410は、送信開始状態のキューエントリについて検索する。かかるキューエントリが見つかった場合には、周辺機器サーバ306に送信されるキューエントリのID及びIRPから送信データが作成され、キューエントリのステータスが906で送信中に更新される。ステップ908では、送信が完了した後、送信管理部410がキューエントリを完了待ちステータスに更新する。904で送信開始キューエントリが存在しない場合には、処理はステップ910に進む。ステップ910では、いずれかのキューエントリが残っている場合には、送信管理部410はステップ904に戻り、残っていない場合には、この送信管理処理の反復が終了する。
〔受信管理部〕
ステップ1004では、受信管理部412は受信データを待ち、かかるデータが存在する場合には、処理はステップ1006に進み、存在しない場合には、ステップ1004でデータを待ち続ける。ステップ1006では、受信管理部412は、キューリスト414を受信された受信データのIDに対応するキューエントリについて検索し、かかるキューエントリが存在する場合には、受信管理部412はステップ1008でキューリストから、当該キューエントリを削除する。かかるキューエントリが存在しない場合には、受信データは廃棄され、処理はステップ1010に進む。この時点で、キューエントリはキューリストから削除され、リスト中に受信待ちステータスで残される。ステップ1010では、キューエントリが残っていない場合には、受信管理部412は現在の反復処理を終了し、残っている場合には、処理はステップ1004に戻る。
〔フローチャート〕
いくつかの実施形態では、アイソクロナス通信(IN及びOUT共に)は、上述した各管理部406、408、410、412が互いに協働することにより達成される。特に周辺機器ドライバモジュール402から、キュー管理部406により受信された最初のIRPは、上述の動作を開始するためのトリガとして供され、その後、キューリスト414に登録されたIRPのステータスは順次変更され、そして処理は進行する。図7〜図10は、アイソクロナスOUT通信における各管理部との関連において参照されてもよい。表1も処理フローを図示しており、ステータスの変化に関連したステップのシーケンスを表す表の列と共に記載されている。これらのステップは、図7〜図10から抽出されており、これにより、表1はこれらの図面のステップ番号を参照している。表1のステップ番号は、別の管理部によりチェックされた状態が満足された、ある表示された管理部の実行における時点を示している。
Figure 0004617440
他の管理部により求められる条件が満足されるステップの特定には、多少の柔軟性がある。キュー管理部のステップ708により、ステップ802に始まる時間管理部の実行がトリガされる。時間管理部のステップ814により、ステップ902に始まる送信管理部の実行がトリガされる。送信管理部のステップ908により、時間管理部のステップ816における実行がトリガされる。時間管理部のステップ818により、ステップ712におけるキュー管理部の実行がトリガされる。キュー管理部のステップ716により、ステップ1002における受信管理部の実行がトリガされる。
図7〜図10及び表1をここで参照すると、周辺機器サーバドライバモジュール404は、周辺機器ドライバモジュール402からIRPを受け取り、このIRPのキューエントリはキュー管理部406の送信準備待ちステータスに設定される(ステップ710)。時間管理部408では、送信準備待ちのキューエントリが存在すると、ステータスは送信待ちステータスに変更され(ステップ808)、送信待ちのキューエントリが存在し、現在時刻が当該キューエントリの送信予定時刻を超過すると、ステータスは送信開始に変更される。送信管理部410では、送信開始キューエントリが存在すると、送信が開始され、ステータスは送信中のステータスに変更され、そして送信が完了すると、完了待ちステータスに変更される。時間管理部408では、完了を待つキューエントリが存在し、現在時刻が当該キューエントリの完了予定時刻を超過すると、ステータスは完了に変更される。キュー管理部406では、完了したキューエントリが存在すると、このキューエントリのIRPは完了され、ステータスは受信待ちステータスに変更される。受信管理部412では、データは周辺機器サーバ306から受信され、このデータに含まれるIDと、受信を待つキューエントリのIDが互いに一致する場合には、この受信待ちのキューエントリは削除される。
〔幾つかの効果〕
この方法では、アイソクロナスデータ(アイソクロナスOUT)を送信するための回数及びタイミングは、送信予定時刻及び完了予定時刻をキューに設定することにより調整することができる。すなわち、完了予定時刻を設定し、周辺機器ドライバモジュール402から送信されたIRPに対する応答を強制することにより、周辺機器サーバ306が未だデータを処理中であっても、送信する次のデータが周辺機器ドライバモジュール402により発行される。また、送信予定時刻を設定することにより、アイソクロナス機器の周辺機器ドライバモジュール402が処理を開始する際に、まとめて送信するパケットの送信間隔を制御でき、たとえばこれ以降、図17との関連で論じられるように、それにより周辺機器サーバ306が備えるパケットバッファ314の量を低減する効果を達成できる。
〔アイソクロナスデータ受信(アイソクロナスIN)〕
次に、アイソクロナスIN通信に関連した実施形態を説明する。アイソクロナスINの処理手順は、上述したアイソクロナスOUTの処理手順と多くの共通点があり、主に差異に焦点を当てて説明する。
従来技術を示した図2と図11とを比較することは有益である。上述したアイソクロナスOUT通信と同様に、アイソクロナスINの場合の遅延の主な原因は、周辺機器ドライバモジュール402によるIRPの発行の遅延でもある。この課題を低減または解決するために、アイソクロナスOUT出力の実施形態においては、完了予定時刻においてIRPが完了される一方で、アイソクロナスINの実施形態においては、送信予定時刻においてIRPを発行することにより課題を低減または解決する。これは、アイソクロナスIN通信とアイソクロナスOUT通信におけるデータフローの方向を示している。
一般的な事項として、アイソクロナスOUT通信との類似性において、アイソクロナスIN通信においても、以前に送信されたIRPを完了させることにより、周辺機器ドライバモジュール402に次のIRPを発行させることが可能である。しかし、この方法では、以前のIRPを完了させる際に、周辺機器ドライバモジュール402に返信されるべきデータ、すなわち周辺機器308からの受信データ(別称受信データ)が存在しないことになり、従って、IRPは空のデータ又はデータは無視されるべきという他の指示で完了されることとなる。これは、アイソクロナスINの通信におけるデータは、周辺機器308から周辺機器ドライバモジュール402への方向に流れるからである。
従って、本発明の幾つかの実施形態では、以下の処理を行うことにより、遅延を低減し又は阻止する。図11は、本発明のある実施形態内のアイソクロナスINのための通信シーケンスを図示している。本実施例における本発明に係る特徴的な動作は、フレームD(4)及びD(5)を含む。周辺機器サーバドライバモジュール404は、周辺機器ドライバモジュール402によるIRPの発行を待つことなく、ダミーのフレームD(4)及びD(5)を発行し、その結果、これに対応するアイソクロナスINのデータ(フレーム(4)及び(5))が遅延なく周辺機器ドライバモジュール402により受信される。
この時点で、フレームD(4)及びD(5)に含まれる受信データに対するリクエストは、最後に送信された正規のフレーム、すなわち本件ではフレーム(3)におけるリクエストのコピーを利用する。よって本件では、フレームD(4)及びD(5)は共に、フレーム(3)のコピーである。フレームD(5)の発行時点では、周辺機器サーバドライバモジュール404により発行されたフレーム(3)は、実際に発行された最新IRPである。つまり、IRPが周辺機器ドライバモジュール402により発行され、そのIRPに対応したフレームが、フレームD(4)及びD(5)の間で、周辺機器サーバドライバモジュール404により発行されると、このフレームはフレームD(5)にコピーされるべき最新フレームとなる。最新フレームが常にコピーされるべき理由は、かかるフレームは周辺機器308で処理されるべき有効なリクエストを含んでいると仮定されるからである。
一方で、周辺機器ドライバモジュール402は、(周辺機器ドライバモジュール402により送信されたフレームからのデータを送信するのとは反対に)周辺機器サーバドライバモジュール404が実際にフレームを発行したことを認識できないため、周辺機器ドライバモジュール402は、正規のIRP、すなわちフレームG(4)及びG(5)を通常通り発行する。これらのIRPであるフレームG(4)及びG(5)を受信した周辺機器サーバドライバモジュール404はこれらを保持し、データが周辺機器サーバ306から受信されると、周辺機器サーバドライバモジュール404は、当該データを以前に保持されたIRPに追加し、IRPを完了させ、次に当該データを周辺機器ドライバモジュール402に戻す。
ここで図12から図15を参照して、各管理部の機能及び全体的なアイソクロナスIN手順の処理フローを説明する。
〔キュー管理部〕
ステップ1204から1212は、アイソクロナスOUT処理手順のステップと同様である。ステップ1212では、完了したキューエントリが存在すると、ステップ1214において、キュー管理部406は対応するIRPを完了させ、当該IRPを周辺機器ドライバモジュール402に戻す。続いて、対応するIRPを含むキューエントリがステップ1216で削除される。この時点で、受信データは周辺機器ドライバモジュール402に渡される。一方で、完了したキューエントリがステップ1212において存在しないと、処理はステップ1218に進む。ステップ1218では、キュー管理部がキューリストに残っているキューエントリの数をカウントするか、又はいくつかが残っている場合でもすべてをカウントせず、少なくとも何らかのエントリが残っているかを知るために確認する。少なくとも1つのキューエントリが残っている場合には、処理はステップ1204に戻り、処理を続け、残っていない場合には、少なくともこの反復について処理を終了する。
〔時間管理部〕
ステップ1304では、時間管理部408は、キューの完了予定時刻及び送信予定時刻を、アイソクロナスOUT手順と同様の方法により設定する。ステップ1306では、時間管理部408は、(i)現在時刻より以前の(それより前に設定された)送信予定時刻を有し、かつ(ii)送信準備を待っているキューエントリが残っているか否かを確認する。周辺機器ドライバモジュール402からのIRPがない場合であっても、送信予定時刻を設定することにより、周辺機器サーバドライバモジュール404は、指定した時刻が到来すると、強制的に周辺機器サーバ306にリクエストを送信することができる。ステップ1306では、キューエントリが残っている場合には、時間管理部408は(たとえば、図11のD(4)についての)ダミーのキューエントリを生成するための以前に送信された正規のキューエントリからの受信データリクエストとして機能するデータをコピーし、そのステータスを送信開始ステータスに設定し、それをステップ1308でキューリスト414に追加する。続いて、処理はステップ1318に進む。一方、ステップ1306においてかかる特定されたキューエントリが存在しない場合には、処理はステップ1310に進み、通常の送信フローを実行する。ステップ1310では、時間管理部408が送信準備待ちのキューエントリが存在するか否かを確認する。かかるキューエントリが存在する場合には、時間管理部408は、ステップ1304で準備された送信予定時刻及び完了予定時刻を当該キューエントリに設定し、キューエントリのステータスを送信待ちに変更した後、処理はステップ1314に進む。一方で、かかるキューがステップ1310において存在しない場合にも、処理はステップ1314に進む。ステップ1314では、時間管理部408は、現在時刻より古い送信待ちキューエントリが存在するか否かを確認し、存在する場合には、ステップ1316において、該当するキューエントリのステータスが送信開始ステータスに変更され、処理はステップ1318に進み、存在しない場合にも、処理はステップ1318に進む。ステップ1318はアイソクロナスOUT処理手順と類似している(ステップ820)。
〔送信管理部〕
送信管理部は、本明細書の別の箇所で与えられたアイソクロナスOUTの情報のそれと同様である。
〔受信管理部〕
ステップ1504及び1506はアイソクロナスOUT処理手順と同様である。ステップ1506で該当するキューエントリが存在する場合には、受信管理部412はこのキューエントリのステータスをステップ1508において完了ステータスに変更する。この部分はアイソクロナスOUTの場合とは異なっている。すなわち、アイソクロナスIN通信では、受信データを周辺機器ドライバモジュール402に返信することが必要であるため、受信管理部はキューエントリを削除せず、処理はステップ1510に進む。一方、ステップ1506において該当するキューエントリが存在しない場合にも、処理はステップ1510に進む。ステップ1510はアイソクロナスOUT処理手順と同様である。
〔フローチャート〕
アイソクロナス通信(IN及びOUT共に)は、上述の各管理部が協働して動作することにより実現される。特にキュー管理部406が周辺機器ドライバモジュール402から受信した最初のIRPは、動作開始をトリガし、その後、キューリスト414に登録されたIRPのステータスが順次変更し、その結果、処理が進行する。図12から図15は、アイソクロナスIN処理手順における各管理部との関連において、参照されてもよい。表2も、ステータスの変化に関連したステップを表す表の列と共に、処理手順フローを示す。これらのステップは、図12〜図15から抽出されており、これにより、表2はこれらの図面のステップ番号を参照している。表2のステップの番号は、他の管理部によりチェックされた状態が満足された、ある表示された管理部の実行における時点を示している。表2の列は通常は順序通りであるが、送信開始ステータスにおける時間管理部に属する2つの列は並行処理であり、各々で送信管理部の列の「送信中」のステータスに続く。
Figure 0004617440
キュー管理部のステップ1208により、ステップ1302に始まる時間管理部の実行はトリガされる。時間管理部のステップ1308またはステップ1316により、ステップ1404における送信管理部の実行がトリガされる。送信管理部のステップ1408により、ステップ1506における受信管理部の実行がトリガされる。受信管理部のステップ1508により、ステップ1212におけるキュー管理部の実行がトリガされる。
図12〜図15及び表2を参照すると、ステップ1210から1406は、アイソクロナス出力手順と同様である。ステップ1308は幾つかの実施形態内のアイソクロナスIN通信に関する特徴的な動作である。時間管理部408において、現在時刻が送信予定時刻を超過すると、たとえ送信準備待ちステータスのキューエントリが存在しなくても、送信開始キューエントリを生成するために、事前に送信されていた正規のIRPのデータがコピーされる(ステップ1308)。送信管理部410では、送信開始キューエントリが存在する場合には、そのステータスは送信中のステータスに変更され、送信が完了すると、受信待ちのステータスに変更される(ステップ1408)。受信管理部412では、データは周辺機器サーバ306から受信され、データに含まれるID及び受信を待つキューエントリのIDが互いに一致する場合には、このエントリのステータスは、完了ステータスに変更される(ステップ1508)。キュー管理部406では、完了したキューエントリが存在する場合には、受信データは完了のために、このキューエントリのIRPに追加され、キューエントリは削除される(ステップ1216)。
〔幾つかの効果〕
この方法では、アイソクロナスデータ(アイソクロナスIN)を受信するための回数及びタイミングは、送信予定時刻及び完了予定時刻をキューエントリについて設定することにより調整することができる。すなわち、送信予定時刻を設定し、周辺機器サーバドライバモジュール404からリクエストを強制的に送信することにより、未だ発行されていないIRPに対するリクエストであっても、周辺機器308に送信することができる。また、完了予定時刻を設定することにより、たとえば、ネットワークの異常等により応答の品質が低下している場合でも、IRPは強制的に完了される。それにより、タイムアウトなどの周辺機器ドライバモジュール402が、異常状態に陥るのを防止するのを助けることができる。
〔第2の実施形態(時間同期)〕
他の一連の実施形態がここで説明され、これは上述の第1の実施形態に、アイソクロナスデータ通信の時間同期化を達成する方法を付加している。この目的を達成するために、以下の2つの要件が前提とされる。1つは、データをある一定の間隔で周辺機器サーバ306から周辺機器308へ、連続して送信することである。もう1つは、IRPのための十分なバッファスペース314を備えた周辺機器サーバ306を提供することである。これらの前提の結果として、周辺機器サーバドライバモジュール404は、周辺機器サーバ306のタイミングに従って、IRP送信の同期化を維持することができる。また、たとえネットワークトラフィックの異常等により、応答の品質が低下していても、データは一定の間隔で周辺機器サーバ306に送信できる。当該産業では通常、「一定の」とは「受容可能な、かつ測定可能な許容範囲内」を意味する。図16及び図17はアイソクロナスOUTモードにおける、上記目的を達成するための2つのパターンを図示している。アイソクロナスINモードについては、以下の様に同様の機構を用いることができる。
周辺機器サーバ306からのIRPの送信を、連続して一定の間隔で維持するために、周辺機器サーバ306により314にバッファリングされるべきIRPの数も、所定範囲内の一定量又はそれに近い量に維持されるべきである。
図16は、たとえばトラフィックが急激に増加したことにより改善した場合など、周辺機器308からの応答の品質が向上した場合を示している。周辺機器306によりバッファリングされるべきIRPの数は、応答の改善により増加している。この時点で、周辺機器サーバドライバモジュール404から、周辺機器ドライバモジュール402へのIRP完了のための時間延長されたIRPの時間間隔を減少させ、IRP送信の数を増加させることにより、周辺機器サーバ306により314にバッファリングされるべきIRPの数を増加することができる。フレーム(1)、(2)、(3)のIRPを完了させるための周辺機器サーバドライバモジュール404のための時間間隔が100%であり、フレーム(3)、(4)、(5)、(6)の時間間隔が90%であると仮定する。すなわち、(1)から(2)の間隔が100%とすると、(3)から(4)の間隔が90%等である。周辺機器ドライバモジュール402が後続のIRP(フレーム(6)から(11))をこれと同等の時間間隔で発行するので、周辺機器サーバ306に到着するフレームもこれと同等のタイミングで受信される。
一方、周辺機器サーバ306から周辺機器308に送信されたフレームの時間間隔が一定のものとして扱われるため、周辺機器サーバ306によりバッファリングされるべきIRPの数は、上述のように時間間隔を減少させることにより増加することができる。このようなアプローチを実行することにより、トラフィックが急激に改善した場合であっても、周辺機器ドライバモジュール402と周辺機器308との間の等時性が確保できる。
図17は、周辺機器308からの応答が、トラフィックの応答の劣化などの理由により遅延する傾向にある場合を示す。かかる場合、周辺機器ドライバモジュール402からのIRPの発行をある程度遅延させることが有用である。周辺機器ドライバモジュール402により発行されたIRPの時間間隔は、周辺機器サーバドライバモジュール404が完了するIRPの時間間隔により決定され(又は少なくとも影響を受け)、その結果、IRPを完了する時間間隔が延長されると、それに伴い周辺機器ドライバモジュール402からIRPを発行する時間間隔が延長される。機構内の図示された関係(コード及び/又は回路)を利用することにより、周辺機器ドライバモジュール402のIRPを発行する時間間隔は、周辺機器サーバドライバモジュール404から制御可能である。
図17に図示された実施例では、フレーム(1)、(2)、(3)のIRPを完了するための周辺機器サーバドライバモジュール404の時間間隔が100%であると仮定すると、フレーム(3)、(4)、(5)、(6)の時間間隔は110%である。周辺機器ドライバモジュール402は、これと同等の時間間隔で後続のIRP(フレーム(6)から(11))を発行するため、周辺機器サーバ306に到着するフレームもまた、これと同等のタイミングで受信される。一方、周辺機器サーバ306から周辺機器308に送信されるフレームの時間間隔は一定であるため、周辺機器サーバ306によりバッファ314にバッファリングされるべきIRPの数は、時間間隔が100%から110%に変化することにより減少する。アイソクロナスOUTモードにおいては、周辺機器サーバ306にバッファリングされた、送信済IRPの数は、IRPを完了させるための時間間隔を変更することにより管理できる。
しかし、アイソクロナスINモードでは、周辺機器サーバドライバモジュール404が、等時性を維持するために、周辺機器サーバドライバモジュール404から周辺機器サーバ306に発行されたIRPの時間間隔を管理しさえすればよい。従って、単に本明細書で教示されたように当該間隔を変更することにより、アイソクロナスOUTモードにおける等時性が確保できる。かかるアプローチを実行することにより、トラフィック応答が一時的に品質劣化した場合であっても、周辺機器ドライバモジュール402と周辺機器308との間の等時性が確保できる。
上述のいずれの場合も、周辺機器サーバドライバモジュール404は、送信済IRPの数を管理し、その結果、周辺機器サーバ306により314にバッファリングされるべきIRPの数が常に把握され、IRP完了の時間間隔が上記数に基づき動的に決定される。
上記から理解できるように、周辺機器ドライバモジュール402からIRPが発行されるタイミングは、周辺機器サーバドライバモジュール404によるIRP完了のタイミングを調整することにより制御され、これにより、周辺機器サーバドライバモジュール404が、周辺機器サーバ306の時間に従って、IRP通信との同期をとることが可能になる。
本実施形態で示されたIRP完了の時間間隔の増減の幅は、単に一例であり、いかなる値も設定できることに留意すべきである。
本実施形態においては混雑度をキューに蓄積された送信済みIRPの数で判断している。しかし、これに限定されず、ネットワークの混雑度を計測できる手法であればどのようなものであってもよく、たとえば、IRPを送信してから、応答が帰ってくるまでの時間で計測してもよい。
〔第3の実施形態(遅延制御)〕
この次の一連の実施形態では、遅延制御が上述の実施形態の少なくとも1つに追加される。ネットワークを介してのデータ送信は、周辺機器サーバを介してのみならず、ネットワーク応答、すなわちネットワークトラフィック、その他の種々の理由により、遅延を引き起こす可能性がある。この点において、遅延制御は、ネットワークソフトウエア及びハードウエアにとって、不可欠でないとしても重要な機能である。また、遅延制御は、本開示において示されるように、周辺機器が共有されるシステムにおいても重要である。
これは、本発明で使用される周辺機器ドライバモジュール402が通常、PCに直接接続されている間に使用されるように設計されたソフトウエアであり、応答における品質劣化に関して特に考慮されたソフトウエアを備えていないからである。すなわち、周辺機器ドライバモジュール402は、遅延をほとんど生じさせないローカルな接続に用いられるとの仮定の下に設計されることが多いため、遅延が生じると、致命的な状態(たとえば、PC又は周辺機器ドライバモジュール402がフリーズする)を引き起こす可能性がある。かかる状態が頻繁に起こる場合には、システムの信頼性は低いものとなる。この点で、応答における品質劣化等に対処する遅延制御を組み込んだアプローチが以下に記載される。
図18は、周辺機器308からの応答において遅延が起こった場合のシーケンス、及び送信されたキューリスト414の内容を示している。この図面を参照すると、遅延制御のないシステムでは、フレーム(1)、(2)、(3)が周辺機器ドライバモジュール402及び周辺機器サーバドライバモジュール404から送信された後、ステップ1808でフレームG(1)により示されるように、周辺機器サーバドライバモジュール404が、正規の(遅延制御のされていない)IRPを完了するまでは、IRPの応答は周辺機器ドライバモジュール402に返信されない。かかる場合、周辺機器ドライバモジュール402は、フレームG(1)を受信するまでは、フレーム(1)、(2)、(3)を発行した後に何も受信できないため、タイムアウトが生じる。
従って、本遅延制御の実施形態が提示される。特定の時間が到来すると、周辺機器サーバドライバモジュール404は、IRP(フレームD(1)により示されるように)を強制的に完了し、これにより周辺機器ドライバモジュール402に次のIRPを発行させることにより、この遅延制御された実施形態は、周辺機器ドライバモジュール402がタイムアウト処理に移行することを回避する。特に、周辺機器サーバドライバモジュール404により管理された、送信済IRPの数が所定数を超過した場合には、次のIRPが完了して、最後のIRPキューの位置に空のスペースを作る際に、送信済IRPの全てのフレーム番号が1つデクリメントされる(ステップ1804)。
続いて、周辺機器ドライバモジュール402により新たに発行されたIRP(フレーム(3))は、この空のIRPキューエントリの末尾に挿入され、そのステータスは送信中のステータスに変更される(ステップ1806)。しかし、このIRPは周辺機器サーバ306には送信されない。これは、周辺機器サーバ306からの応答が既にこの時点で遅延しており、IRPが送信されても応答を得ることができないからである。この処理(ステップ1804及び1806におけるキュー操作)は例示した図18では2回繰り返されているが、かかる処理は正規な応答が返信されるまで、0回以上、繰り返し実行され得る。
前述のように、周辺機器サーバドライバモジュール404がキューを空にしながらキューを回転させ、擬似的処理を継続させることにより、周辺機器ドライバモジュール402は特定の応答が得られたことを認識し、これにより周辺機器ドライバモジュール402がタイムアウト処理に移行することを回避することができる。その後、正規の応答(フレームG(1))が周辺機器サーバ306から得られると、周辺機器サーバドライバモジュール404はこのIRPを完了させ、キューの位置1つ前方へ移動する(ステップ1808)。
この時点で、フレーム番号はそのままで残される。その後、新規なIRP(フレーム(4))は周辺機器ドライバモジュール402から発行され、フレーム(4)はこのIRPの送信が完了した時点で、送信済キューリスト414の末尾に追加される(ステップ1810)。かかる遅延制御のキュー管理方法により、たとえネットワークの応答における一時的な品質劣化が生じたとしても、PC側の周辺機器ドライバモジュール402について等時性が確保される。
図18はアイソクロナスOUT通信及びアイソクロナスIN通信の双方の遅延制御のシーケンスを示している。これらの差異は、IRPにおいて保持されるデータにある。アイソクロナスOUTモードでは、アイソクロナスOUT通信のデータは、強制的に完了されたIRP(フレームD(1))に対応して発行されたIRP(フレーム(3))にステップ1806で保持される。一方、アイソクロナスINモードでは、アイソクロナス入力通信のデータは、強制的に完了されたIRP(フレームD(1))に保持される。この場合、保持されるべきデータは、実際、周辺機器サーバ306から受信されておらず、従って、周辺機器サーバドライバモジュールは無効データ又はダミーのデータをIRPに入れることによりIRPを完了させる。
次に、本発明の幾つかの実施形態に係る、アイソクロナスIN通信における遅延制御に移行するステップについて、図19を用いて説明する。送信済IRPの数はステップ1919でカウントされる。送信済IRPの数がステップ1920で閾値を超える場合には、ダミーの通信がステップ1922で生成され、ステップ1924で周辺機器ドライバ402に送信される。ステップ1920で用いられる閾値は、試行錯誤により決定することができ、この選択された閾値により、周辺機器に対する通信のアイソクロナスシーケンスの送信が維持される。
即ち、候補となる閾値が小さすぎる場合は、通信が正常に進行しているときに、遅延制御モードが早すぎる段階から開始してしまう。遅延制御のダミーの通信に応答して、周辺機器ドライバ402は通信を送信し、これは1926で受信され、次にステップ1928でスケジューリングキュー414に追加される。図18においても示されているように、管理部406、408、410、412により使用されるフレーム番号は前にシフトされる。ステップ2019及びステップ2020により示されるように、同様の遅延制御416はアイソクロナスOUT通信においても使用できる。
図11で示されているように、ステップ1908におけるダミーは、周辺機器ドライバモジュール402から周辺機器サーバ306に最後に送信された、正規のフレームのコピーである一方、ステップ1922におけるダミーは、図18の遅延制御と関連して、周辺機器サーバドライバモジュール404から周辺機器ドライバモジュール402へのダミーであることに留意すべきである。以下の通り、種々のダミーの通信312が用いられる。第1に、アイソクロナスINモードでは、「通常の」(すなわち遅延制御モードではない)ダミー(たとえば図11のD(4)及びD(5))は、周辺機器サーバドライバモジュール404から周辺機器サーバ306に送信される。このダミーの通信は、最後に送信されたフレームのコピーである。第2に、遅延制御モードにおいて使用されるダミーの通信(たとえば図18のD(1))は、周辺機器サーバドライバモジュール404から周辺機器ドライバモジュール402に送信される。
このダミーは無効データであり、たとえば既に説明した「STATUS_SUCCESS」である。第3及び第4に、アイソクロナスOUTモードでは、通常のダミー(たとえば、図6のD(1)及びD(2))及び/又は遅延制御モードのダミー(たとえば、図18のD(1))が各々、使用できる。これらの第3及び第4の場合は、ダミーの通信は、周辺機器サーバドライバモジュール404から、周辺機器ドライバモジュール402に送信されるが、これはたとえば「ERROR」などの無効データであり、アイソクロナス送信においてタイムアウトモードを即座に生じさせるものではない。
本実施形態においては、周辺機器サーバドライバモジュール404がキューを空にしながらキューを回転させ、擬似的処理を継続させることにより、周辺機器ドライバモジュール402は特定の応答が得られたことを認識させるようにしている。したがって、ネットワークの混雑度に応じて、上記第1実施形態における制御モードと、本件実施形態における制御モードをスムーズに切り替えることができる。
なお、本発明の実施形態においては、後に例示するように第1実施形態による制御を行い、ダミー通信処理の間隔を調整後(第2実施形態)、それでも不十分な場合に、第3実施形態の制御に切り替えるのが好ましい。しかし、これに限定されず、第1実施形態から第3実施形態への切り替えを行ったり、さらに、第1実施形態を行うことなく、第3実施形態のみ行うようにしてもよい。この場合、周辺機器ドライバモジュール402から与えられる新たな要求を送信済みとしてキューに記憶しつつ、、所定の規則に基づいて、廃棄するようにしてもよい。さらに、前記新たな要求をそのまま廃棄するようにしてもよい。
〔追加的な見解〕
上記における説明を念頭に置くと、本発明のいくつかの実施形態は、図11に示すように、アイソクロナスIN通信を促進する方法を提供し、図19において図示されたステップ、すなわち、周辺機器ドライバから、周辺機器のための第1の通信310(たとえば、図11のフレーム2)を受信するステップ1902と、前記第1の通信からのデータをネットワークを介して当該周辺機器に送信するステップ1904と、第2の通信310を周辺機器ドライバから受信することなく所定間隔が経過したことを検出するステップ1906と、ダミーの通信312(たとえば、図11のD(4))を生成するステップ1908と、ネットワークを介してそれを当該周辺機器に送信するステップ1910とを備え、当該周辺機器に対する通信のアイソクロナスシーケンスの送信を維持していると理解される。
ステップ1906に関して、正規の通信310なく経過した時間は、特定の組み込み及び構成により異なるが、ドライバがタイムアウトモードに移行するのを阻止するために、本発明がここでダミーの通信312を生成するのに十分長い時間である。いくつかの実施形態では、生成ステップ1908は、ダミーの通信312に周辺機器ドライバから直近に受信した通信からのデータをコピーする。たとえば、生成ステップ1908は図11に示されるように、フレーム(3)からD(4)にコピーしても良い。
本発明は、単一の周辺機器、及び1より多い周辺機器を伴う方法を含むことが理解でき、ここで「1」又は「単一」は、「少なくとも一つ」を意味する。いくつかの実施形態では、受信ステップ1902は、USB周辺機器ドライバから通信を受信し、送信ステップ1904はデータをUSB周辺機器に向けて送信する。
いくつかの実施形態では、前記方法は更に、ダミーの通信312に応答する応答通信310(たとえば、データが周辺機器サーバドライバモジュールから周辺機器ドライバモジュールに送信される際の、図11の右端のフレーム(4))をネットワークを介して受信するステップ1912と、応答通信からのデータを周辺機器ドライバに送信するステップ1914を含む。
いくつかの実施形態では、そして図11から図19を参照すると、前記方法は更に、周辺機器サーバドライバモジュール内に、周辺機器ドライバモジュールからのデータ(データ(1))を、当該データ(1)を遠隔周辺機器に送信するのに代えて保持するステップ1916と、送信されたデータ(データ(2))に応答して、周辺機器からの通信を受信するステップ1912、1902の後に、周辺機器ドライバモジュールに、保持されたデータ(データ(3))を送り戻すステップ1918を含む。「送信されたデータに応答して」という文言で参照された「データ(2)」は、「データ(1)およびデータ(3)」と同一ではない。なぜなら、「データ(2)」のみが、ダミーのデータ、すなわち、ダミーの通信312に含まれる内容に対応するデータだからである。従って、アイソクロナスINモードでは、周辺機器ドライバモジュール(たとえば、図11のG(4))からの実際の通信310に含まれるデータは、周辺機器サーバドライバモジュールに保持され、周辺機器サーバから通信が受信された後は、周辺機器ドライバモジュールに送り戻される。
いくつかの実施形態では、ネットワークを介して送信された通信は、周辺機器サーバにバッファリングされ、前記方法は更に、ダミーの通信312をトリガするのに用いられる所定の間隔を変更するステップ1930により実施される時間同期を備えており、それによりバッファリングされる通信の数を変更する。たとえば図16及び17で示されるように、間隔は各々、1930において、以前の値の90%に変更されてもよいし、あるいは以前の値の110%に変更されてもよい。通信の所定の間隔を変更することは、たとえば、周辺機器サーバにバッファリングされるべきメモリ量を最適化するために好ましい。
図19のステップ1919〜1928は、更に、本発明によるいくつかの実施形態にかかるアイソクロナスIN通信の間に使用される、遅延制御416の形式を示している。送信済IRPの数はステップ1919でカウントされる。送信済IRPの数がステップ1920で閾値を超えるときは、ダミーの通信がステップ1922で生成され、周辺機器ドライバ402にステップ1924で送信される。ステップ1920で用いられた閾値は試行錯誤により決定することができ、選択された閾値により、周辺機器に対する通信のアイソクロナスシーケンスの送信が維持される。
即ち、候補となる閾値が小さすぎる場合は、通信が正常に進行しているときに、遅延制御モードが早すぎる段階で開始する。送信済IRPの数が所定数を超えた場合には、ステップ1922の分岐が採られ、送信済IRPの数が所定数を超えない場合には、ステップ1930の分岐が採られる。遅延制御ダミー通信に応答して、周辺機器ドライバ402が通信を送信し、これはステップ1926で受信され、スケジューリングキュー414にステップ1928で追加される。
図6に示されるように、本発明のいくつかの実施形態は、アイソクロナスOUT通信を利用する方法を提供し、図20に示されたステップを含むことも理解される。すなわち、周辺機器に対する第1の通信310(たとえば、図6のフレーム(3))を周辺機器ドライバから受信するステップ2002と、前記第1の通信からのデータをネットワークを介して当該周辺機器に送信するステップ2004と、前記第1の通信に応答して、当該周辺機器から応答通信310のネットワークを介しての受信なく所定間隔が経過したことを検出するステップ2006と、ダミーの通信312(たとえば、図6のフレームD(1))を生成するステップ2008と、それを周辺機器ドライバに送信するステップ2010とを含み、それにより、周辺機器ドライバに対する通信のアイソクロナスシーケンスの送信が維持される。いくつかの実施形態では、前記第1の通信310(ステップ2002で受信された通信)は、周辺機器ドライバからの入出力要求パケット(I/O Request Packet)を含んでいる。
いくつかの実施形態では、前記方法は更に、ネットワークを介して、かつ所定間隔の経過後、前記第1の通信に応答する応答通信310(たとえば、図6のフレームG(1))を受信するステップ2012と、前記応答通信を周辺機器ドライバに送信することなく廃棄するステップ2014とを含む。
いくつかの実施形態では、前記第1の通信に応答する応答通信が受信されるまで、少なくとも周辺機器ドライバに対するダミーの通信312(たとえばステップ1804)を送信するステップをステップ2016で繰り返し、当該応答通信からのデータを周辺機器ドライバにステップ2018で送信する。
いくつかの実施形態では、ネットワークを介して送信された通信は、周辺機器サーバにバッファリングされ、前記方法は更に、ダミーの通信312をトリガするのに用いられる所定の間隔をステップ2030で変更することにより実施される時刻同期を含み、それによりバッファリングされる通信の数を変更する。
いくつかの実施形態では、ステップ2012〜2014は、図11におけるような、アイソクロナスIN通信に対応し、ステップ2010、ステップ2019、ステップ2020、ステップ2016、ステップ2018は概して図18のような遅延制御された通信に該当する。ステップ2020における分岐は、周辺機器サーバドライバモジュール404により管理される、送信済IRP(ダミーのIRP312、及び/又は正規のIRP310)の数が所定数を超えるか否かに依存する。送信済IRPの数が所定数を超えた場合には、ステップ2016の分岐が採られ、送信済IRPの数が所定数を超えない場合には、ステップ2030の分岐が採られる。
特に記載したように、本発明は、方法のみならずシステムにおいても具体化される。本発明にかかるアイソクロナス通信のいくつかのシステムは、周辺機器サーバドライバモジュール404、及び周辺機器サーバドライバモジュールにより生成され、前記周辺機器サーバドライバモジュールから送信されたダミーの通信312(たとえば、図11のD(4)、又は図6のD(1))を備え、それにより、他の場所で(周辺機器サーバドライバモジュールとは異なる場所で)生成された時機に適った通信が存在しない場合に、アイソクロナス通信を維持することができる。かかるシステムの実施形態は、アイソクロナスIN通信、又はアイソクロナスOUT通信、あるいはその双方についての本発明の方法を使用してもよい。しかし、明確に示されない限り、所与のシステムの実施形態は、IN及びOUTのアイソクロナス通信における本発明にかかる方法により動作する。
いくつかの実施形態では、周辺機器サーバドライバモジュール404は、アイソクロナス通信を表す(図5の実施例に示されたような)スケジューリングキュー414、及びスケジューリングキュー414を管理する管理構成要素(たとえば、キュー管理部406、時間管理部408、送信管理部410、受信管理部412、及びこれらと同等の機能を有するもの)を備えている。
いくつかの実施形態では、周辺機器サーバドライバモジュール404は、周辺機器ドライバモジュールがタイムアウトになることを阻止するために、周辺機器ドライバモジュールに対するダミーの通信を反復して生成するための(図18の特定の実施例に示されているような)遅延制御構成要素416を備え、一方で、周辺機器サーバドライバモジュールは、ネットワークを介して周辺機器から応答通信が到着するのを待つ。本システムの他のモジュール及び構成要素のように、遅延制御構成要素416は、本明細書で特定された機能を提供する限り、ハードウエア、ファームウエア、ソフトウエア、又はこれらの組合せで実施されてもよい。
いくつかの実施形態では、周辺機器サーバドライバモジュールは、(たとえば、図11におけるような)ネットワークを介した周辺機器ドライバモジュールから周辺機器へのアイソクロナスIN通信を維持するのを助ける、アイソクロナスIN通信手段420を備えている。この手段420は、図示された図11のフローチャートに従う4つの管理部を備えたコード、及び/又は回路を備え、またネットワークを介した周辺機器ドライバモジュールから周辺機器へのアイソクロナス入力通信を維持するのを助ける、機能的に同等のコードも備えている。機能的に同等のコード又は回路は、記載された機能性を提供する必要があり、また常に必要とするわけではないが、当該要求された機能性に加え、他の機能性を提供してもよい。
機能的に同等のコード又は回路が、本明細書に記載されたかかる補助のあらゆる態様を提供する必要はなく、それに代えてかかる態様の少なくとも1つを提供すれば十分である。
本明細書で用いられる「コード」は、限定なくコンピュータ・プログラムコード又はソフトウエアを含む。同様に「コード」は、ディジタル処理装置に対する命令、及び/又はこれらの命令により実行される処理データを含んでいる。コードはRAMに格納される必要はなく、ROM、PROM、EEPROM、ASICチップ、FPGAチップ、PAL回路などに格納できる。
いくつかの実施形態では、周辺機器サーバドライバモジュールは、(たとえば、図6におけるような)ネットワークを介した周辺機器から周辺機器ドライバモジュールへのアイソクロナスOUT通信を維持するのを助ける、アイソクロナスOUT通信手段418を備えている。この手段418は、記述された図6の示されたフローチャートに従う4つの管理部を備えたコード、及び/又は回路を備え、またネットワークを介した周辺機器から周辺機器ドライバモジュールへのアイソクロナスOUT通信を維持するのを助ける、機能的に同等のコードも備えている。
いくつかの実施形態では、前記システムは周辺機器サーバ306を備えている。いくつかの実施形態では、サーバ306がアイソクロナス通信を保持するためのバッファを備えている。いくつかのシステムの実施形態では、アイソクロナスIN通信の送信間の間隔をステップ1930で変更することにより、及び/又はアイソクロナスOUT通信の送信間の間隔をステップ1930で変更することにより、バッファリングされたアイソクロナス通信の数を変更するための1又は複数の手段418、420も備えている。いくつかの可能な変更が図16及び図17に示されているが、これらの図面に示された特定の通信シーケンス及び間隔は、単に本発明のより広範な範囲のわずかな具体例に過ぎないと理解される。
本発明は種々の方法で具体化されてもよく、たとえば、プロセスを実行するための、RAM又は永久記録媒体内のソフトウエア(データ・インストラクション)としての、ソフトウエアにより構成された汎用コンピュータハードウエアとしての、特定の目的のコンピュータハードウエアとしての、待ち行列、フレーム、プロセスにより生成された他のデータとしての、サーバコンピュータ、クライアント又はピアコンピュータ、スタンドアロンコンピュータ、又はネットワーク装置、ネットワークアプライアンス上のプロセス及び/又はハードウエア等である。構成、相互の関係、フレームカウント、その他ここで与えられる実施例の詳細は単なる例示であり、本発明は本明細書で与えられた特定の実施例に限定されない。
「アイソクロナス」及び「アイソシンクロナス」は一部の者によっては交換可能に用いられることがあるが、「アイソクロナス」の文言がここでは好まれている。しかし、何らかの辞書やいずれか第三者の頭の中にある文言の定義ではなく、この文言、又は本明細書中の実施例及び議論から当業者に明らかとなった他のあらゆる文言の意味が支配すべきである。
本発明の特定の実施形態は、たとえば方法として本明細書中に明白に例示および説明されているが、たとえば、実施形態の一種類の議論は概して、他の実施形態の種類にも及ぶと理解されよう。たとえば、方法の説明は、フローチャート、表、及び/又は線図によるものであっても、方法を実行するシステムを説明することをも補助し、また方法の説明は方法により生産される製品(たとえば、フレームのキュー又はシーケンス)を説明することをも補助する。
一実施形態による限定が必ずしも他の実施形態に読み込まれるということにはならない。構成要素、ステップ、ここで与えられた種々の実施例の他の態様を組み合せて所与の実施形態を形成してもよい。
上記実施形態においては、各機能を実現する為に、CPUを用い、ソフトウェアによってこれを実現している。しかし、その一部若しくは全てを、ロジック回路等のハードウェアによって実現してもよい。
なお、上記プログラムの一部の処理をオペレーティングシステム(OS)にさせるようにしてもよい。
従来のシステムにおけるネットワークを介したUSB通信、すなわち、従来のアイソクロナスOUT通信シーケンスを示す通信シーケンス図である。 従来のシステムにおけるネットワークを介したUSB通信、すなわち、従来のアイソクロナスIN通信シーケンスを示す他の通信シーケンス図である。 適切な構成要素(ソフトウエア及び/又は回路)を介する本発明による使用に適合可能なシステムを示すブロック図である。 図3に示したネットワーククライアントを更に示すブロック図である。 図4に示した、スケジューリングキューを更に示す図である。 本発明に係るシステム内のネットワークを介したUSBアイソクロナスOUT通信を示す通信シーケンス図である。 アイソクロナスOUT通信の間、図5に示したキュー等のキューを管理するための、図4に示したキュー管理部などの、本発明に係るキュー管理部の動作を示すフローチャートである。 アイソクロナスOUT通信の間、図4に示した時間管理部などの、本発明に係る時間管理部の動作を示すフローチャートである。 アイソクロナスOUT通信の間、図4に示した送信管理部などの、本発明に係る送信管理部の動作を示すフローチャートである。 アイソクロナスOUT通信の間、図4に示した受信管理部などの、本発明に係る受信管理部の動作を示すフローチャートである。 本発明に係るシステム内のネットワークを介したUSBアイソクロナスIN通信を示す通信シーケンス図である。 アイソクロナスIN通信の間、図5に示したキュー等のキューを管理するための、図4に示したキュー管理部などの、本発明に係るキュー管理部の動作を示すフローチャートである。 アイソクロナスIN通信の間、図4に示した時間管理部などの、本発明に係る時間管理部の動作を示すフローチャートである。 アイソクロナスIN通信の間、図4に示した送信管理部などの、本発明に係る送信管理部の動作を示すフローチャートである。 アイソクロナスIN通信の間、図4に示した受信管理部などの、本発明に係る受信管理部の動作を示すフローチャートである。 周辺機器サーバにおいてバッファリングされた、増加したIRPの数と共に、本発明に係るシステム内のネットワークを介したUSBアイソクロナス通信を示す通信シーケンス図である。 周辺機器サーバにおいてバッファリングされた、減少したIRPの数と共に、本発明に係るシステム内のネットワークを介したUSBアイソクロナス通信を示す通信シーケンス図である。 遅延制御と共に、本発明に係るシステム内のネットワークを介したUSBアイソクロナス通信を示す通信シーケンス図である。 アイソクロナスIN通信の間、本発明に係る実施形態の動作を更に示すフローチャートである。 アイソクロナスOUT通信の間、本発明に係る実施形態の動作を更に示すフローチャートである。
符号の説明
304・・・ネットワーククライアント
306・・・周辺機器サーバ
404・・・周辺機器サーバドライバモジュール
406・・・キュー管理部
408・・・時間管理部
410・・・送信管理部
412・・・受信管理部
414・・・スケジューリングキュー
416・・・遅延制御
418・・・アイソクロナスOUT手段
420・・・アイソクロナスIN手段

Claims (8)

  1. 等時性データ通信でデータ通信を行う周辺機器が接続された周辺機器サーバとの間でデータ出力転送するためのクライアントコンピュータの周辺機器サーバ制御プログラムであって、
    前記クライアントコンピュータには、入出力要求パケットデータを出力した後、これに対する応答データを受け取ると、次の入出力要求パケットデータを出力する周辺機器制御プログラムがインストールされており、
    前記クライアントコンピュータを、
    前記周辺機器制御プログラムから与えられた入出力要求パケットデータをカプセル化し、カプセル化した入出力要求パケットデータを前記周辺機器サーバにネットワーク送信する送信手段、
    前記周辺機器サーバからネットワーク送信された前記入出力要求パケットデータに対応する応答データを受信すると、前記周辺機器制御プログラムに与える受信手段、
    前記周辺機器制御プログラムからの入出力要求パケットデータを前記送信手段によって前記周辺機器サーバに送信してから、所定時間経過したか否か判断する判断手段、
    前記所定時間経過しても前記入出力要求パケットデータに対応する応答データを前記周辺機器サーバより受け取らなかった場合には、前記入出力要求パケットデータに対応し、前記入出力要求パケットデータの完了を意味するダミー応答データを前記周辺機器制御プログラムに与えることにより、ネットワーク送信された前記入出力要求パケットデータの次に送信されるべき入出力要求パケットデータを前記周辺機器制御プログラムから出力させるダミー応答出力手段
    として機能させるための周辺機器サーバ制御プログラム。
  2. 請求項の周辺機器サーバ制御プログラムにおいて、
    前記周辺機器サーバとの間のネットワークの混雑度を計測する混雑度計測手段、
    前記計測された混雑度に応じて、ダミー応答の出力タイミングを変更する変更手段、
    を前記クライアントコンピュータにより、さらに実現させるための周辺機器サーバ制御プログラム。
  3. 等時性データ通信でデータ通信を行う周辺機器が接続された周辺機器サーバとの間でデータ入力転送するためのクライアントコンピュータの周辺機器サーバ制御プログラムであって、
    前記クライアントコンピュータには、入出力要求パケットデータを出力した後、これに対する応答データを受け取ると、次の入出力要求パケットデータを出力する周辺機器制御プログラムがインストールされており、
    前記クライアントコンピュータを、
    前記周辺機器制御プログラムから与えられた入出力要求パケットデータをカプセル化し、カプセル化した入出力要求パケットデータを前記周辺機器サーバにネットワーク送信する送信手段、
    前記周辺機器サーバからネットワーク送信された前記入出力要求パケットデータに対応する応答データを受信すると、前記周辺機器制御プログラムに与える受信手段、
    前記周辺機器制御プログラムからの入出力要求パケットデータを前記送信手段によって前記周辺機器サーバに送信してから、所定時間経過したか否か判断する判断手段、
    前記所定時間経過しても前記周辺機器サーバに送信すべき次の入出力要求パケットデータを前記周辺機器制御プログラムから受け取らなかった場合には、ダミーの入出力要求パケットデータを前記周辺機器サーバに与えることにより、ネットワーク送信された前記応答データの次に送信されるべき応答データを前記周辺機器サーバから入力するダミー要求出力手段
    として機能させるための周辺機器サーバ制御プログラム。
  4. 請求項の周辺機器サーバ制御プログラムにおいて、
    前記ダミー要求出力手段は、直前に前記周辺機器サーバに送った入出力要求パケットデータをダミーの入出力要求パケットデータとして、前記周辺機器サーバに与えること、
    を特徴とする周辺機器サーバ制御プログラム。
  5. 請求項または請求項の周辺機器サーバ制御プログラムにおいて、
    前記周辺機器サーバとの間のネットワークの混雑度を計測する混雑度計測手段、
    前記計測された混雑度に応じて、ダミーの入出力要求パケットデータの出力タイミングを変更する変更手段、
    をクライアントコンピュータにより、さらに実現させるための周辺機器サーバ制御プログラム。
  6. 等時性通信規格で通信を行う1または2以上の周辺機器を、クライアントコンピュータがネットワーク接続された周辺機器サーバに接続して、いずれかの周辺機器が特定されたデータが前記クライアントコンピュータから与えられると、等時性通信出力規格にて、前記周辺機器に送信するとともに、当該送信したデータに対する応答データを、当該クライアントコンピュータに前記ネットワークを介してカプセル化して送信するネットワーク通信方法であって、
    前記クライアントコンピュータは、
    1)入出力要求パケットデータを出力し、これに対する応答データを受け取ると、次の入出力要求パケットデータを出力する周辺機器制御手段が出力した入出力要求パケットデータをカプセル化して前記周辺機器サーバにネットワーク送信を行い、
    2)前記周辺機器サーバから、カプセル化された応答データを受け取ると、これをデカプセル化して前記入出力要求パケットデータに対応する応答データとして前記周辺機器制御手段に与え、
    3)前記周辺機器制御手段からの入出力要求パケットデータを前記周辺機器サーバに送信してから所定時間経過するか否か判断し、前記所定時間経過しても前記入出力要求パケットデータに対応する応答データを前記周辺機器サーバより受け取らなかった場合には、前記入出力要求パケットデータに対応し、前記入出力要求パケットデータの完了を意味するダミー応答データを前記周辺機器制御手段に与えることにより、ネットワーク送信された前記入出力要求パケットデータの次に送信されるべき入出力要求パケットデータを前記周辺機器制御手段から出力させること
    を特徴とするネットワーク通信方法。
  7. 等時性通信規格で通信を行う1または2以上の周辺機器を、クライアントコンピュータがネットワーク接続された周辺機器サーバに接続して、いずれかの周辺機器が特定されたデータが前記クライアントコンピュータから与えられると、等時性入力通信規格にて、前記周辺機器に送信するとともに、当該送信したデータに対する応答データを、当該クライアントコンピュータに前記ネットワークを介してカプセル化して送信するネットワーク通信方法であって、
    前記クライアントコンピュータは、
    1)入出力要求パケットを出力し、これに対する応答データを受け取ると、次の入出力要求パケットを出力する周辺機器制御手段が出力した入出力要求パケットデータをカプセル化し、これを前記周辺機器サーバにネットワーク送信を行い、
    2)前記周辺機器サーバから、カプセル化された応答データを受け取ると、これをデカプセル化して前記入出力要求パケットデータに対応する応答データとして前記周辺機器制御手段に与え、
    3)前記周辺機器制御手段からの入出力要求パケットデータを前記周辺機器サーバに送信してから所定時間経過するか否か判断し、前記所定時間経過しても前記周辺機器サーバに送信すべき次の入出力要求パケットデータを前記周辺機器制御手段から受け取らなかった場合には、直前に前記周辺機器サーバに送った入出力要求パケットデータをダミーの入出力要求パケットデータとして前記周辺機器サーバに与えることにより、ネットワーク送信された前記応答データの次に送信されるべき応答データを前記周辺機器サーバから入力すること
    を特徴とするネットワーク通信方法。
  8. 請求項または請求項の周辺機器サーバ制御プログラムにおいて、
    前記混雑度計測手段が計測した混雑度が、所定の混雑度を超えた場合には、さらに、下記の手段による制御を行うためのプログラム。
    前記判断手段による前記所定時間経過した旨の判断が与えられると、ダミー応答データを前記周辺機器制御プログラムに与え、前記ダミー応答データに対して、前記周辺機器制御プログラムから、次の入出力要求パケットデータが与えられると、これを、前記周辺機器サーバに送信することなく記憶するステップを前記周辺機器サーバから応答データを受け取るまで繰り返す繰り返し手段。
JP2007259008A 2006-10-03 2007-10-02 データ通信システムまたはその方法 Active JP4617440B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US82802606P 2006-10-03 2006-10-03
US11/733,312 US7647446B2 (en) 2006-10-03 2007-04-10 Networked isochronous USB communication

Publications (2)

Publication Number Publication Date
JP2008090847A JP2008090847A (ja) 2008-04-17
JP4617440B2 true JP4617440B2 (ja) 2011-01-26

Family

ID=39262336

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007259008A Active JP4617440B2 (ja) 2006-10-03 2007-10-02 データ通信システムまたはその方法

Country Status (2)

Country Link
US (2) US7647446B2 (ja)
JP (1) JP4617440B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016051347A (ja) * 2014-08-29 2016-04-11 サイレックス・テクノロジー株式会社 デバイスサーバとその制御方法

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090132328A1 (en) * 2007-11-19 2009-05-21 Verizon Services Corp. Method, system, and computer program product for managing trouble tickets of a network
WO2009113381A1 (ja) * 2008-03-11 2009-09-17 日本電気株式会社 マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法
TW201033810A (en) * 2009-03-03 2010-09-16 Asustek Comp Inc System for sharing and method for managing hardware apparatus
US20110022765A1 (en) * 2009-07-23 2011-01-27 Ross John Stenfort System, method, and computer program product for maintaining a direct connection between an initiator and a drive
US8438288B2 (en) * 2010-02-17 2013-05-07 Microsoft Corporation Device-pairing by reading an address provided in device-readable form
JP5686590B2 (ja) * 2010-12-24 2015-03-18 キヤノンイメージングシステムズ株式会社 クライアント装置、デバイス制御装置、及びその制御方法、並びにデバイス制御システム
JP5646986B2 (ja) * 2010-12-24 2014-12-24 キヤノンイメージングシステムズ株式会社 クライアント装置、デバイス制御方法、およびデバイス制御システム
US8566934B2 (en) 2011-01-21 2013-10-22 Gigavation, Inc. Apparatus and method for enhancing security of data on a host computing device and a peripheral device
KR102195788B1 (ko) 2011-08-10 2020-12-28 기타 스리바스타바 호스트 컴퓨팅 디바이스와 주변기기의 데이터의 보안을 강화하기 위한 장치 및 방법
CN103678211B (zh) * 2012-09-11 2016-07-13 龙迅半导体(合肥)股份有限公司 Usb接口的信号传输方法及其装置
US9817772B2 (en) 2012-12-20 2017-11-14 Icron Technologies Corporation Systems and methods for exchanging USB information with selected remote devices
JP5998343B2 (ja) * 2013-02-14 2016-09-28 サイレックス・テクノロジー株式会社 デバイスサーバシステム、デバイスサーバおよびプログラム
JP6232604B2 (ja) 2014-02-10 2017-11-22 サイレックス・テクノロジー株式会社 デバイスサーバとその制御方法
JP6539874B2 (ja) * 2016-03-29 2019-07-10 サイレックス・テクノロジー株式会社 デバイスサーバシステム
JP6745531B2 (ja) * 2017-02-28 2020-08-26 サイレックス・テクノロジー株式会社 デバイスサーバシステム、クライアント装置、情報転送制御方法およびプログラム
JP6768625B2 (ja) * 2017-11-17 2020-10-14 株式会社東芝 情報処理装置、情報処理方法、およびプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000151719A (ja) * 1998-11-05 2000-05-30 Sony Corp データ処理回路およびデータ伝送システム
JP2002542527A (ja) * 1999-02-19 2002-12-10 アイクロン システムズ インコーポレイテツド 一般的なシリアルバスプロトコルの範囲を拡張する方法並びに装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69837356T2 (de) * 1997-02-14 2007-11-29 Canon K.K. Vorrichtung, System und Verfahren zur Datenübertragung und Vorrichtung zur Bildverarbeitung
JP3392314B2 (ja) 1997-02-20 2003-03-31 株式会社日立インフォメーションテクノロジー データ伝送方法
US5996031A (en) * 1997-03-31 1999-11-30 Ericsson Inc. System and method for the real time switching of an isochronous data stream
US6912651B1 (en) * 1998-03-31 2005-06-28 Hewlett-Packard Development Company, L.P. Wireless universal serial bus link for a computer system
JP3884862B2 (ja) * 1998-04-30 2007-02-21 キヤノン株式会社 データ転送装置、データ転送装置の制御方法、記憶媒体
US6311294B1 (en) * 1998-10-20 2001-10-30 Cypress Semiconductor Corp. Device and method for efficient bulk data retrieval using a universal serial bus
US6389029B1 (en) * 1998-11-10 2002-05-14 Nortel Networks Limited Local area network incorporating universal serial bus protocol
US7349391B2 (en) 1999-03-19 2008-03-25 F5 Networks, Inc. Tunneling between a bus and a network
WO2000067103A1 (en) * 1999-04-30 2000-11-09 Daniel Kelvin Jackson Method and apparatus for extending communications over usb
US6581098B1 (en) * 1999-09-27 2003-06-17 Hewlett-Packard Development Company, L.P. Server providing access to a plurality of functions of a multifunction peripheral in a network
JP2001144828A (ja) 1999-11-15 2001-05-25 Sharp Corp プロトコル変換装置
JP4258925B2 (ja) 1999-11-29 2009-04-30 ミツミ電機株式会社 ワイヤレスusbハブ
JP2002144828A (ja) 2000-11-06 2002-05-22 Kazumoto Doi セイフティーチューブレスタイヤ
US6888730B2 (en) * 2001-04-03 2005-05-03 Mosaid Technologies Incorporated Content addressable memory cell
WO2003007674A2 (en) * 2001-07-16 2003-01-30 Han Gyoo Kim Scheme for dynamically connecting i/o devices through network
US6904489B2 (en) * 2001-10-23 2005-06-07 Digi International Inc. Methods and systems for remotely accessing universal serial bus devices
US20040090984A1 (en) * 2002-11-12 2004-05-13 Intel Corporation Network adapter for remote devices
US20050209842A1 (en) * 2004-03-16 2005-09-22 Digi International Inc. Remote USB port system and method
JP2006238413A (ja) * 2005-01-27 2006-09-07 Nec Electronics Corp Usbハブ、usb対応装置及び通信システム
WO2006082782A1 (ja) 2005-02-02 2006-08-10 Silex Technology, Inc. 周辺機器利用方法および周辺機器サーバ
JP4709966B2 (ja) * 2006-06-28 2011-06-29 サイレックス・テクノロジー株式会社 リモートコントロールシステム及びリモートコントロール装置
JPWO2008065740A1 (ja) * 2006-11-27 2010-03-04 ソニー株式会社 デバイス通信インターフェイスシステム
CN101237445B (zh) * 2007-01-30 2013-01-02 世意法(北京)半导体研发有限责任公司 缓冲器管理方法和用于缓冲器管理及封装wusb分组的设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000151719A (ja) * 1998-11-05 2000-05-30 Sony Corp データ処理回路およびデータ伝送システム
JP2002542527A (ja) * 1999-02-19 2002-12-10 アイクロン システムズ インコーポレイテツド 一般的なシリアルバスプロトコルの範囲を拡張する方法並びに装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016051347A (ja) * 2014-08-29 2016-04-11 サイレックス・テクノロジー株式会社 デバイスサーバとその制御方法

Also Published As

Publication number Publication date
US7761646B2 (en) 2010-07-20
US7647446B2 (en) 2010-01-12
US20080082717A1 (en) 2008-04-03
JP2008090847A (ja) 2008-04-17
US20100058361A1 (en) 2010-03-04

Similar Documents

Publication Publication Date Title
JP4617440B2 (ja) データ通信システムまたはその方法
JP4612094B2 (ja) バス間でのメッセージの自動ルーティングのためのゲートウェイ
KR960015862B1 (ko) 데이타 송신방법 및 장치
US9311265B2 (en) Techniques for improving throughput and performance of a distributed interconnect peripheral bus connected to a host controller
JPH08510625A (ja) 少なくとも2つの分散形制御装置間のデータの周期的伝送方法
US7428608B2 (en) Communication system, communication circuit and communication method
JP2006191337A (ja) バス間のメッセージ転送を行うゲートウエイ装置及びそれを使用したネットワークシステム
US8199648B2 (en) Flow control in a variable latency system
JPH07210519A (ja) データ転送制御方法および送受信制御装置
JP2006253922A (ja) ゲートウェイ装置及びゲートウェイ装置におけるデータ転送方法
JP6200734B2 (ja) 通信制御装置
JP5930767B2 (ja) 電子デバイス、通信制御方法
JP2000224260A (ja) 通信制御装置
CN114095306A (zh) 由主干通信网络分离的lin分区之间的lin消息传递
US7167939B2 (en) Asynchronous system bus adapter for a computer system having a hierarchical bus structure
EP2922244B1 (en) Media access control filtering apparatus for high speed switching and operating method thereof
US20240007325A1 (en) Method for determining components of a sensor network within an in-vehicle ethernet network in a motor vehicle
JP5587530B2 (ja) エンジン・プロセッサ連携システム及び連携方法
JP3070749B2 (ja) ヘツダ予測方式及び通信制御処理装置
JP2004350138A (ja) データ中継装置および多重通信システム
CN113556759A (zh) 伺服系统、数据传输系统及其数据传输的方法
JPH10200680A (ja) 端末装置、サーバ、印刷装置およびネットワーク印刷システム
CN103825680A (zh) 用于在终端设备中检验信息接收的方法
JPH10320345A (ja) バスコントローラ
JP2020178159A (ja) 通信システム、電子装置及び中継装置

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080630

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081027

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20090821

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20091109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100115

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100528

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100615

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20100716

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100825

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: 20100927

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

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4617440

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250