JP2017111729A - ホストコントローラおよびホストコントローラで実行されるプログラム - Google Patents
ホストコントローラおよびホストコントローラで実行されるプログラム Download PDFInfo
- Publication number
- JP2017111729A JP2017111729A JP2015247298A JP2015247298A JP2017111729A JP 2017111729 A JP2017111729 A JP 2017111729A JP 2015247298 A JP2015247298 A JP 2015247298A JP 2015247298 A JP2015247298 A JP 2015247298A JP 2017111729 A JP2017111729 A JP 2017111729A
- Authority
- JP
- Japan
- Prior art keywords
- host
- port
- packet
- host controller
- function
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
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)
- Small-Scale Networks (AREA)
Abstract
【課題】USBにおいてもより高い転送レートを実現できる構成が要望されている。
【解決手段】ホストコントローラは、ホストポートに接続されたバスを介して1または複数のノードと通信する機能を有する。1または複数のノードは、バスの終端に位置する端末と、上位側のポートを1または複数のポートにカスケード接続するハブとの少なくとも一方を含む。ホストコントローラは、ホストポートからパケットが送出されてから、転送先の端末にて受信されるとともに、当該端末にて受信されたパケットに応じて送出された応答がホストポートで受信されるまで、に要する時間の長さに関連付けられる情報を取得する。そして、ホストコントローラは、当該取得された情報に基づいて、1つのフレームに割り当てるパケットの数または間隔を調整する。
【選択図】図5
【解決手段】ホストコントローラは、ホストポートに接続されたバスを介して1または複数のノードと通信する機能を有する。1または複数のノードは、バスの終端に位置する端末と、上位側のポートを1または複数のポートにカスケード接続するハブとの少なくとも一方を含む。ホストコントローラは、ホストポートからパケットが送出されてから、転送先の端末にて受信されるとともに、当該端末にて受信されたパケットに応じて送出された応答がホストポートで受信されるまで、に要する時間の長さに関連付けられる情報を取得する。そして、ホストコントローラは、当該取得された情報に基づいて、1つのフレームに割り当てるパケットの数または間隔を調整する。
【選択図】図5
Description
本開示は、ホストポートに接続されたバスを介して1または複数のノードと通信する機能を有するホストコントローラ、および当該ホストコントローラで実行されるプログラムに関する。
例えば、パーソナルコンピュータと周辺デバイスとを接続するインターフェイスとして、USB(Universal Serial Bus)が普及している。USBには複数のリビジョンが存在する。例えば、「Universal Serial Bus Specification Revision 2.0」(非特許文献1)は、USBリビジョン2.0(以下、「USB2.0」とも記す。)の規格を定義する。
USBは、一種のマスタ−スレーブ接続であり、ある接続構成においては、デバイス間のデータ転送を管理する1つのホスト(Host)と、転送先のデバイスに対応するファンクション(function)とが存在することになる。すなわち、ホストがマスタとして機能し、各ファンクションがスレーブとして機能する。接続の多様性を実現するために、これらの主体に加えて、転送経路を1または複数に分岐するハブ(Hub)も存在し得る。例えば、あるポートにハブを接続することで、単一のポートに複数のファンクションを接続することができる。但し、ハブが介在することで、ホストとファンクションとの間には、介在するハブの数に応じた遅延が生じ得る。
「Universal Serial Bus Specification Revision 2.0」,2000年4月27日,Compaq Computer Corporation, Hewlett-Packard Company, Intel Corporation, Lucent Technologies Inc, Microsoft Corporation, NEC Corporation, Koninklijke Philips Electronics N.V.
USB2.0においては、半二重通信(half duplex)方式を用いて双方向のデータ転送を実現している。すなわち、予め定められた周期に従って、データ転送の向き(ホストから各ファンクション(ダウンストリーム)および各ファンクションからホスト(アップストリーム))を切り替える方式が採用されている。また、USB2.0においては、所定周期ごとに転送されるフレーム単位でデータ伝送が行なわれる。このとき、転送スケジューリングが実施され、各フレーム単位内で、パケット転送およびいずれかのファンクションからの応答が完結するように、各フレームに対して1または複数のパケットが割り当てられる。
基本的には、どのような通信規格であっても、転送レートは高いほど好ましい。USB2.0においても、より高い転送レートを実現できる構成が要望されている。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
ある実施の形態に従うホストコントローラは、ホストポートに接続されたバスを介して1または複数のノードと通信する機能を有する。1または複数のノードは、バスの終端に位置する端末と、上位側のポートを1または複数のポートにカスケード接続するハブとの少なくとも一方を含む。ホストコントローラは、ホストポートからパケットが送出されてから、転送先の端末にて受信されるとともに、当該端末にて受信されたパケットに応じて送出された応答がホストポートで受信されるまで、に要する時間の長さに関連付けられる情報を取得する。そして、ホストコントローラは、当該取得された情報に基づいて、1つのフレームに割り当てるパケットの数または間隔を調整する。
ある実施の形態によれば、より高い転送レートを実現できるホストコントローラを実現できる。
いくつかの実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
[A.関連技術]
まず、本実施の形態に従うUSB通信システムについて説明する前に、USB2.0でのデータ転送処理について説明する。以下の説明においては、あるUSB2.0に従う接続構成において、当該接続されたデバイス間のデータ転送を制御する(すなわち、一種のマスタとして機能する)デバイスを「ホスト」と称する。ホストは、自身のポート(ホストポート)に接続されたバスを介して1または複数のノードと通信する。
まず、本実施の形態に従うUSB通信システムについて説明する前に、USB2.0でのデータ転送処理について説明する。以下の説明においては、あるUSB2.0に従う接続構成において、当該接続されたデバイス間のデータ転送を制御する(すなわち、一種のマスタとして機能する)デバイスを「ホスト」と称する。ホストは、自身のポート(ホストポート)に接続されたバスを介して1または複数のノードと通信する。
ホストの制御下でデータを遣り取りする(すなわち、一種のスレーブとして機能する)デバイスを、その提供する機能に着目して「ファンクション」と称する。ファンクションであるデバイスは、バスの終端に位置する端末に相当する。なお、同一のデバイスが複数の機能(ファンクション)を有する場合もあり、この場合には、各機能(ファンクション)がそれぞれ独立した転送先として取り扱われる。また、転送経路を1または複数に分岐するデバイスを「ハブ」と称す。すなわち、ハブは、上位側のポートを1または複数のポートにカスケード接続する。なお、ホストは「ルートハブ」としても機能する。これらの名称は、USB2.0規格に従うものであり、より詳細な構成については、上述の「Universal Serial Bus Specification Revision 2.0」(非特許文献1)などを参照されたい。
上述したように、ホスト(ルートノード)が通信する対象となる1または複数ノードは、ファンクションおよびハブの少なくとも一方を含む。
なお、説明の便宜上、USB2.0に基づく構成を前提として、本実施の形態に従うデータ転送の方法などについて説明するが、USB規格の他のリビジョン、あるいは、他の通信システムにも適用し得る。
図1は、本実施の形態の関連技術に従うUSB通信システム1の一例を示す図である。図1には、ホスト10と、3つのハブ20_1,20_2,20_3と、2つのファンクション30_1,30_2とからなるUSB通信システム1の接続構成例を示す。より具体的には、ホスト10のダウンストリーム側にハブ20_1が接続されており、ハブ20_1のダウンストリーム側にファンクション30_2およびハブ20_2が接続されている。さらに、ハブ20_2のダウンストリーム側にファンクション30_1およびハブ20_3が接続されている。
例えば、ホスト10からファンクション30_1へのデータ転送は、ホストにて生成されたフレームがハブ20_1およびハブ20_2を経由して転送される。逆に、ファンクション30_1からホスト10へのデータ転送は、ファンクション30_1にて生成された応答がハブ20_2およびハブ20_1を経由して転送される。
USBにおいては、所定周期ごとに送出されるフレーム単位でデータ転送が管理される。各フレームには、1または複数のパケットが割り当てられる。パケットは送受信の単位であり、典型的には、(1)コントロール転送、(2)ホスト10からファンクション30宛て、(3)ファンクション30からホスト10宛て、の3種類が存在する。単一のフレーム内に異なる種類のパケットが割り当てられることもある。
説明の便宜上、以下では、ホスト10からファンクション30へパケットを転送する場合を主として説明する。但し、ファンクション30からホスト10へパケットを転送する場合についても同様に適用可能である。
ホスト10からファンクション30へデータを転送する場合には、各パケットの転送はホスト10から開始され、ファンクション30からの応答を受けて完了する。逆に、ファンクション30からホスト10へデータを転送する場合には、ホスト10からの送信タイミングを通知するパケットを受けてファンクション30がデータを送出し、その送出されたデータに応じた応答がホスト10からファンクション30へ戻されることで完了する。
このようなデータ転送を実現するために、転送スケジューリングが実施される。具体的には、各フレーム単位内で、パケット転送およびいずれかの転送先からの応答が完結するように、各フレームに対して1または複数のパケットが割り当てられる。このとき、転送先の応答時間は、ハブの接続数が規格にて定められている最大数である5の場合(ワーストケース)を考慮して設定される。
図2は、図1に示すUSB通信システム1におけるデータ転送を説明するためのタイムチャートの一例である。図2(A)には、ホスト10とファンクション30_2との間の転送処理を示し、図2(B)には、ホスト10とファンクション30_1との間の転送処理を示す。図2に示す各要素の時間幅は実際のものとは必ずしも同一ではなく、説明の便宜上、その時間幅を適宜変更して描いている。
図2(A)を参照して、1つのフレーム(フレーム1)には、転送スケジューリングの結果に従って、1または複数のパケットが割り当てられる。あるフレーム内のあるパケットがホスト10から送出され、転送先のファンクション30にて受信された後、何らかの応答が当該転送先のファンクションからホストに転送されるまでに要する時間(遅延)を考慮して、後続のパケットおよびフレームがスケジューリングされる。
ホストからファンクションまでのデータ転送において生じる遅延としては、典型的には、(1)ケーブル遅延、(2)ハブ遅延、(3)ファンクションでの応答遅延などが存在する。ケーブル遅延は、ホスト、ハブ、ファンクションの間を接続するケーブルをデータが伝送するのに要する時間を意味し、信号がケーブルを伝送するのに要する時間に加えて、信号の送信側または受信側での処理に要する時間を含み得る。ハブ遅延は、受信したデータをダウンストリーム側またはアップストリーム側にリピートする処理に要する時間を含む。ファンクションでの応答遅延は、ファンクションがデータを受信し、当該受信したデータを処理して、その処理結果に応じた応答を生成および送出するのに要する時間を含む。
図2(A)に示す遅延を考慮して、いずれかのフレーム(フレーム1)内に割り当てられたパケットの終了タイミングから次のパケットが割り当てられるまでの間は、ファンクションからの応答を待つ期間(応答待ち期間)として設定される。なお、応答待ち期間の間にファンクションからの応答が受信されない場合には、タイムアウトとなり、該当のパケットの転送が失敗したと判断される。必要に応じて、パケットの再送処理が実施される。
図2(B)に示すように、ホスト10とファンクション30_1との間の転送処理についても同様であるが、ホスト10とファンクション30_1との間には2つのハブ(ハブ20_1およびハブ20_2)が介在しているため、ホスト10が何らかのパケットを送出した後、ファンクション30_1からの応答を受信するまでに要する時間は、図2(A)の場合に比較して長くなっている。
すなわち、ホストと転送先のファンクションとの間の転送経路に介在するハブの数(以下では、「接続段数」または「段数」とも称す。)に依存して、ファンクションから応答を受信するまでの遅延時間が変化するため、どのような接続構成においても、単一のフレーム内でパケットの送出および応答の受信が完結するように、転送スケジューリングを実施する必要がある。
USB2.0においては、ハブの接続段数は最大で「5」と定められているので、パケットのスケジューリングにおいては、規格最大のハブ5段の場合に要するファンクションの応答時間(ワーストケース)が前提とされる。すなわち、ハブの接続段数が「5」であることを前提として、パケットの送出と応答の受信との組を基本単位として、各フレーム内への割り当てがスケジューリングされる。
図3は、本実施の形態の関連技術に従う転送スケジューリングを説明するための模式図である。図3を参照して、1つのフレームの後半部分に、ハブの接続段数が「5」である場合を前提としたフリー期間を規定し、当該フリー期間と重複しないように、1つのフレームに1または複数のパケットが割り当てられる。このフリー期間は、最後のパケットに対するファンクションからの応答を待つ期間に相当する。
[B.新たな課題の着想および課題解決の手法]
本願発明者らは、上述のようなUSB規格に従う通信方式に対して、以下のような新規な課題を見出した。すなわち、フレーム単位での転送スケジューリングは、ファンクションの応答時間を規格上最大の段数のハブが接続されている場合を想定している。しかしながら、接続段数が少ない場合またはハブを使用しない場合には、ファンクションの実際の応答時間は、想定されている応答時間より短くなる。そのため、データ転送に使用されないアイドル時間が発生するという課題が存在する。
本願発明者らは、上述のようなUSB規格に従う通信方式に対して、以下のような新規な課題を見出した。すなわち、フレーム単位での転送スケジューリングは、ファンクションの応答時間を規格上最大の段数のハブが接続されている場合を想定している。しかしながら、接続段数が少ない場合またはハブを使用しない場合には、ファンクションの実際の応答時間は、想定されている応答時間より短くなる。そのため、データ転送に使用されないアイドル時間が発生するという課題が存在する。
図4は、本実施の形態の関連技術に従う転送スケジューリングでの課題およびそれに対する解決手段の一例を説明するための模式図である。図4(A)を参照して、1つのフレーム内には、ファンクションの応答時間を考慮して、各パケットを割り当てるタイミングが決定される。すなわち、1番目のパケットを割り当てた後、ファンクションの応答時間を考慮して、2番目のパケットを割り当てるタイミング(位置)が決定される。このように順次パケットが割り当てられていき、フレーム内の最終のパケットは、フレームの最後から予め定められた応答待ち期間(図4には「フリー期間」として描いている。)と重複しないように、設定される。このフリー期間が規格上最大の接続段数(USB2.0の場合には5段)に応じた長さに固定的に設定されているため、実際に生じ得る応答時間に対して過剰な応答待ち期間が設定されてしまう場合がある。その結果、パケットを割り当てることができなかった期間は、アイドル時間となってしまい、転送レートの向上には寄与しないことになる。
これに対して、図4(B)には、上述のような課題に対する解決手段の一例を図示している。図4(B)に示す転送スケジューリングにおいては、実際の接続構成を考慮して、応答待ち期間(フリー期間)を設定する。このとき、ファンクションからの応答も含めて、フリー期間に含めないようにスケジューリングする。例えば、図4(B)には、接続段数が「2」であるとした場合のフリー期間が設定されている例を示す。図4(B)に示す転送スケジューリング例においては、図4(A)に示す転送スケジューリング例に比較して、単一フレーム内に、1つだけ多いパケットが割り当てられていることがわかる。
このように、本実施の形態においては、実際の接続構成を考慮して、転送スケジューリングを実施することで、上述したような課題を解決し、転送レートを向上させる。より具体的には、本実施の形態に従うホストコントローラは、ホスト10のポートからパケットが送出されてから、転送先の端末であるファンクション30にて受信されるとともに、当該端末にて受信されたパケットに応じて送出された応答がホスト10のポートで受信されるまで、に要する時間の長さに関連付けられる情報を取得する機能を有する。そして、この機能により取得された情報に基づいて、1つのフレームに割り当てるパケットの数または間隔が調整される。このような機能の組み合わせを採用することで、転送レートを向上できる。
なお、説明の便宜上、図4には、フレームの最後に設定されるフリー期間の長さを変更する例を示すが、これに限らず、実際の接続構成を考慮した転送スケジューリングを実施することができる。例えば、後述するように、フレーム内に配置される先行のパケットとそれに続くパケットとの間の間隔などを、実際の接続構成に応じて調整すればよい。
[C.実施の形態1]
まず、実施の形態1に従うUSB通信システムについて説明する。実施の形態1に従うUSB通信システムは、対象の接続構成における、ホストからそれぞれのファンクションまでの経路上に存在するハブの数のうち最大のもの(ハブの最大接続段数)を予め取得し、その取得した最大接続段数に応じた応答時間に基づいて、転送スケジューリングを実施する。
まず、実施の形態1に従うUSB通信システムについて説明する。実施の形態1に従うUSB通信システムは、対象の接続構成における、ホストからそれぞれのファンクションまでの経路上に存在するハブの数のうち最大のもの(ハブの最大接続段数)を予め取得し、その取得した最大接続段数に応じた応答時間に基づいて、転送スケジューリングを実施する。
(c1:システム構成)
図5は、実施の形態1に従うUSB通信システム1Aのシステム構成を示す模式図である。図5を参照して、USB通信システム1Aは、ホスト10と、1または複数のハブ20_1,20_2,20_3,…(以下、「ハブ20」と総称することもある。)と、1または複数のファンクション30_1,30_2,30_3,…(以下、「ファンクション30」と総称することもある。)とを含む。
図5は、実施の形態1に従うUSB通信システム1Aのシステム構成を示す模式図である。図5を参照して、USB通信システム1Aは、ホスト10と、1または複数のハブ20_1,20_2,20_3,…(以下、「ハブ20」と総称することもある。)と、1または複数のファンクション30_1,30_2,30_3,…(以下、「ファンクション30」と総称することもある。)とを含む。
ホスト10は、典型的には、パーソナルコンピュータ、汎用マイクロコンピュータ、特定用途向けの専用装置などとして実装される。ホスト10は、USBでのデータ転送に係る機能構成として、プロセッサの一例であるCPU(Central Processing Unit)102と、システムメモリ110と、ホストコントローラ120Aとを含む。これらのコンポーネントは、システムバス104を介して互いに通信可能に構成される。なお、システムバス104に、複数のホストコントローラ120Aが接続される場合もある。
ホストコントローラ120Aは、スケジューラ122と、転送サイズレジスタ124と、フレームカウンタ126と、データ転送コントローラ128と、ドライバ情報取得モジュール140と、最大接続段数レジスタ142Aと、応答時間算出モジュール144Aとを含む。
スケジューラ122は、予め定められた周期を有するフレームごとに1または複数のパケットを割り当てる。より具体的には、スケジューラ122は、転送サイズレジスタ124に格納される転送すべきデータのサイズ、フレームカウンタ126に格納されるフレーム番号、および、応答時間算出モジュール144Aにより算出される応答時間などに基づいて、転送スケジューリングを実施する。スケジューラ122は、転送スケジューリングの実施に伴って、フレームカウンタ126に格納されるフレーム番号などを順次更新する。
CPU102からのデータ転送命令がホストコントローラ120Aに与えられると、データ転送対象のデータの大きさが転送サイズレジスタ124に書き込まれる。
データ転送コントローラ128は、スケジューラ122によるパケットの割り当てに従って、USBバスのデータ転送方向を時間的に切り替えることで双方向に通信を行なう。より具体的には、データ転送コントローラ128は、スケジューラ122による転送スケジューリング結果に従って、1または複数のパケットが割り当てられたフレームを順次生成し、当該生成したフレームをポート130から送出する。なお、ポート130は、ルートハブとして機能する。
送出したフレームに含まれるいずれかのパケットに対するファンクション30からの応答を応答待ち期間内に受信できない場合(タイムアウトした場合)には、データ転送コントローラ128は、当該パケットのデータ転送が失敗したと判断し、データ転送が失敗したパケットを特定する情報をスケジューラ122へ出力する。スケジューラ122は、データ転送が失敗したパケットを再送するためのスケジューリングを実施する。
ドライバ情報取得モジュール140は、ホスト10のポート130からパケットが送出されてから、転送先の端末であるファンクション30にて受信されるとともに、当該端末にて受信されたパケットに応じて送出された応答がホスト10のポート130で受信されるまで、に要する時間の長さに関連付けられる情報を取得する。より具体的には、ドライバ情報取得モジュール140は、後述するように、ドライバ情報を取得し、ポート130に接続されているそれぞれのファンクション30までの経路に存在するハブ20の最大接続段数を取得する。
ドライバ情報取得モジュール140は、最大接続段数を最大接続段数レジスタ142Aに格納する。応答時間算出モジュール144Aは、最大接続段数レジスタ142Aに格納される最大接続段数に基づいて、パケットを送出した後に、転送先のファンクションからの応答がホスト10に転送されるまでに要する時間(応答時間)の最大値を算出する。
このように、実施の形態1に従うホストコントローラ120Aは、ハブ20の最大接続段数に応じてファンクションの応答時間を算出し、算出されたファンクションの応答時間に応じてフレームについての転送スケジューリングを実施する。
システムメモリ110は、クライエントソフトウェア112と、USBドライバ114と、ホストコントローラドライバ116とを格納する。ここで、これらのコンポーネントの機能などについて説明する。
(c2:ソフトウェア/ハードウェアの階層化構造)
図6は、USBホストの機能構成を説明するための模式図である。図6を参照して、USBでのデータ転送を実現するために、階層化された複数のコンポーネント間で処理を分担する。
図6は、USBホストの機能構成を説明するための模式図である。図6を参照して、USBでのデータ転送を実現するために、階層化された複数のコンポーネント間で処理を分担する。
クライエントソフトウェア112は、1または複数のファンクション(ノード)との通信を利用するアプリケーションソフトウェアであり、ホスト10とファンクション30との間のデータの遣り取りの全体を制御する。クライエントソフトウェア112は、何らかのデータを特定のファンクション30へ転送するために、1または複数のI/O要求パケット(IRP:I/O Request Packet)をUSBドライバ114へ与える。I/O要求パケットは、対象のデータをパッケージ化したものであり、転送先の情報などを含む。
USBドライバ114は、ホストコントローラ120Aを制御するドライバソフトウェアであり、I/O要求パケットをホストコントローラドライバ116へ出力するとともに、ファンクション30からのパケットを受信して、クライエントソフトウェア112へ出力する。
ホストコントローラドライバ116は、パケットの送受信を管理する転送処理を実施する。ホストコントローラドライバ116は、ハブ20またはファンクション30との間でパケットをエンコードした信号を遣り取りする。ホストコントローラドライバ116とホストコントローラドライバ116とは、トランザクションリストに基づいて、パケットごとにトランザクション(データの遣り取り)を管理することになる。いずれかのファンクション30からの応答、または、いずれかのファンクション30から受信したパケットは、逆の経路を辿って、クライエントソフトウェア112へ出力される。
クライエントソフトウェア112とUSBドライバ114との間には、USBドライバインターフェイスが存在し、USBドライバ114とホストコントローラドライバ116との間には、ホストコントローラインターフェイスが存在することになる。
ホストコントローラ120Aは、クライエントソフトウェア112およびUSBドライバ114を実行する演算主体である、CPU102と接続されている。ホストコントローラドライバ116およびホストコントローラ120Aが実際のデータ転送を実現し、両者の間には、ハードウェア/ソフトウェアインターフェイスが存在することになる。より具体的には、ホストコントローラドライバ116は、クライエントソフトウェア112からの命令に従って、ホストコントローラ120Aが理解できる命令に置換する。
(c3:ハブの最大接続段数の取得)
次に、ホスト10に接続されているファンクションについての最大接続段数を取得する方法について説明する。
次に、ホスト10に接続されているファンクションについての最大接続段数を取得する方法について説明する。
実施の形態1に従う通信システム1Aにおいては、ドライバ情報取得モジュール140が、ドライバソフトウェアであるUSBドライバ114が保持するドライバ情報を参照することで、ホスト10のポート130からパケットが送出されてから、転送先の端末であるファンクション30からの応答を受信するまでの時間の長さに関連付けられる情報を取得する。すなわち、ドライバ情報取得モジュール140は、ドライバ情報に基づいて、ホスト10のポート130から各ファンクションまでの経路上に存在するハブ20の数を取得する。
このとき、ホスト10のポート130に接続されているそれぞれのファンクションについて、ホスト10のポート130からの経路上に存在するハブ20の数の最大値が取得される。すなわち、USBドライバ114が保持するドライバ情報を参照することで、ホスト10から各ファンクション30までの経路を追跡し、ファンクション30までの経路上に存在するハブ20の最大数(段数の最大値)を決定する。
図7は、実施の形態1に従うUSB通信システム1Aにおけるハブ20の最大接続段数を取得する処理手順を示すフローチャートである。図7に示す各ステップは、基本的には、ホストコントローラ120Aのドライバ情報取得モジュール140(図5)によって実行される。
図7を参照して、ホストコントローラ120Aは、ポート130に何らかのデバイス(ハブ20またはファンクション30)が接続されたか否かを判断する(ステップS100)。具体的には、ホスト10のポート130またはハブ20のポートに何らかのデバイスが接続されると、割込信号が発生する。ホストコントローラ120Aは、割込信号の発生の有無によって、ポート130へのデバイスの接続の有無を判断する。ポート130に何らのデバイスも接続されていなければ(ステップS100においてNOの場合)、ステップS100の処理が繰り返される。
これに対して、ポート130に何らかのデバイスが接続されると(ステップS100においてYESの場合)、ホストコントローラ120Aは、段数を示す変数Nに「1」をセットし(ステップS102)、N段目のデバイスに係るドライバ情報を取得する(ステップS104)。すなわち、ステップS104の最初の実行時には、ホスト10のポート130に接続されている1段目のデバイスについての情報が取得される。
続いて、ホストコントローラ120Aは、取得したN段目のデバイスに係るドライバ情報に基づいて、N段目にハブ20が存在するか否かを判断する(ステップS106)。N段目にハブ20が存在すれば(ステップS106においてYESの場合)、ホストコントローラ120Aは、変数Nが規格上の最大数(USB2.0の場合には「5」)に到達しているか否かを判断する(ステップS108)。変数Nが規格上の最大数に到達していなければ(ステップS108においてNOの場合)、ホストコントローラ120Aは、変数Nを1だけインクリメントし(ステップS110)、ステップS104以下の処理を繰り返す。
すなわち、1段目のデバイスとしてハブ20が含まれている場合には、ホストコントローラ120Aは、当該ハブ20に接続されているすべてのデバイス(すなわち、2段目のデバイス)のドライバ情報を取得する。同様に、2段目のデバイスとしてハブ20が含まれている場合には、ホストコントローラ120Aは、当該ハブ20に接続されているすべてのデバイス(すなわち、3段目のデバイス)のドライバ情報を取得する。同様に、3段目のデバイスとしてハブ20が含まれている場合には、ホストコントローラ120Aは、当該ハブ20に接続されているすべてのデバイス(すなわち、4段目のデバイス)のドライバ情報を取得する。同様に、4段目のデバイスとしてハブ20が含まれている場合には、ホストコントローラ120Aは、当該ハブ20に接続されているすべてのデバイス(すなわち、5段目のデバイス)のドライバ情報を取得する。
N段目にハブ20が存在しなければ(ステップS106においてNOの場合)、または、変数Nが規格上の最大数に到達していれば(ステップS108においてYESの場合)、ホストコントローラ120Aは、現時点の変数Nの値をハブ20の最大接続段数として設定する(ステップS112)。この設定された最大接続段数は、最大接続段数レジスタ142Aに格納される。そして、ハブ20の最大接続段数の取得処理は終了する。
図8は、図7に示すハブ20の最大接続段数を取得する処理手順によって取得されるドライバ情報の一例を示す模式図である。図7に示すハブ20の最大接続段数を取得する処理手順によって、図8に示すように、アップストリーム側にあるデバイスから順次その接続関係が取得される。そして、接続されているデバイスのうち最もダウンストリーム側、すなわち接続段数が最大となるデバイスおよびそのときの接続段数が取得される。
なお、図8に示すようなドライバ情報を一括で取得できるような構成においては、図7に示す処理手順とは異なる手順に従ってドライバ情報を一括して取得し、取得したドライバ情報を解析することで、最大接続段数を決定するようにしてもよい。
(c4:転送スケジューリング)
次に、ホスト10での転送スケジューリングについて説明する。図9は、実施の形態1に従うUSB通信システム1Aにおける転送スケジューリングの処理手順を示すフローチャートである。図9に示す各ステップは、基本的には、ホストコントローラ120Aのスケジューラ122(図5)によって実行される。
次に、ホスト10での転送スケジューリングについて説明する。図9は、実施の形態1に従うUSB通信システム1Aにおける転送スケジューリングの処理手順を示すフローチャートである。図9に示す各ステップは、基本的には、ホストコントローラ120Aのスケジューラ122(図5)によって実行される。
図9を参照して、ホストコントローラ120Aは、初期化処理の一部として、最大接続段数に応じて算出されるファンクションの応答時間を取得する(ステップS150)。このファンクションの応答時間は、応答時間算出モジュール144A(図5)が最大接続段数レジスタ142Aに格納されている最大接続段数に基づいて算出する。
続いて、ホストコントローラ120Aは、クライエントソフトウェア112からのデータ転送要求(I/O要求パケット)が存在しているか否かを判断する(ステップS152)。データ転送要求が存在していなければ(ステップS152においてNOの場合)、ステップS152の処理が繰り返される。
データ転送要求が存在していれば(ステップS152においてYESの場合)、ホストコントローラ120Aは、データ転送要求に含まれるパケットを単一のフレーム内に割り当てる(ステップS154)。すなわち、ホストコントローラ120Aは、予め定められた周期を有するフレームごとに1または複数のパケットを割り当てる。そして、ホストコントローラ120Aは、パケットの割り当て後に、データ転送要求(I/O要求パケット)が未だ残っているか否かを判断する(ステップS156)。データ転送要求(I/O要求パケット)が未だ残っていれば(ステップS156においてYESの場合)、ホストコントローラ120Aは、パケット割り当て後の残りフレームサイズ(残り時間)がパケットのデータサイズ(送信期間の長さ)とファンクションの応答待ち期間の長さとの合計以上残っているか否かを判断する(ステップS158)。パケット割り当て後の残りフレームサイズがパケットのデータサイズとファンクションの応答待ち期間の長さとの合計以上残っていれば(ステップS158においてYESの場合)、ホストコントローラ120Aは、ステップS154以下の処理を繰り返す。
データ転送要求(I/O要求パケット)が残っていなければ(ステップS156においてNOの場合)、または、パケット割り当て後の残りフレームサイズがパケットのデータサイズとファンクションの応答待ち期間の長さとの合計以上残っていなければ(ステップS158においてNOの場合)、1または複数のパケットを割り当てたフレームを送出する(ステップS160)。そして、ステップS152以下の処理が繰り返される。
このように、ホストコントローラ120Aのスケジューラ122は、ドライバ情報取得モジュール140により取得されたドライバ情報に基づいて、1つのフレームに割り当てるパケットの数または間隔を調整する。
(c5:利点)
実施の形態1に従うホストコントローラ120Aは、USBドライバ114が保持するドライバ情報を参照することで、各ファンクションについてのハブの接続段数を容易に取得することができる。このような情報を取得することで、実際の接続構成において生じ得る、データ転送に係る遅延時間に応じて、あるパケットを送出後の応答待ち時間を最適化できる。すなわち、上述の関連技術のように、規格上最大の接続段数に応じて一律に応答待ち時間を設定するのではなく、実際の接続構成(すなわち、接続段数の最大値)に応じて、応答待ち時間を短縮することができる。これによって、フレーム内に割り当てるパケットの数を増大させることができ、この結果、転送レートを向上させることができる。
実施の形態1に従うホストコントローラ120Aは、USBドライバ114が保持するドライバ情報を参照することで、各ファンクションについてのハブの接続段数を容易に取得することができる。このような情報を取得することで、実際の接続構成において生じ得る、データ転送に係る遅延時間に応じて、あるパケットを送出後の応答待ち時間を最適化できる。すなわち、上述の関連技術のように、規格上最大の接続段数に応じて一律に応答待ち時間を設定するのではなく、実際の接続構成(すなわち、接続段数の最大値)に応じて、応答待ち時間を短縮することができる。これによって、フレーム内に割り当てるパケットの数を増大させることができ、この結果、転送レートを向上させることができる。
[D.実施の形態2]
上述の実施の形態1においては、USBドライバ114が管理するドライバ情報を参照して、実際の接続構成についてのハブ20の最大接続段数を取得し、当該取得したハブ20の最大接続段数に基づいて、ファンクションの応答時間を一律に設定する処理例について説明した。これに対して、転送先となるファンクションの接続段数の別に、応答時間をそれぞれ設定してもよい。
上述の実施の形態1においては、USBドライバ114が管理するドライバ情報を参照して、実際の接続構成についてのハブ20の最大接続段数を取得し、当該取得したハブ20の最大接続段数に基づいて、ファンクションの応答時間を一律に設定する処理例について説明した。これに対して、転送先となるファンクションの接続段数の別に、応答時間をそれぞれ設定してもよい。
以下、実施の形態2として、ファンクションごとに応答時間をそれぞれ設定した上で、転送スケジューリングを実現するための構成について説明する。
(d1:システム構成)
図10は、実施の形態2に従うUSB通信システム1Bのシステム構成を示す模式図である。図10を参照して、USB通信システム1Bは、図5に示す実施の形態1に従うUSB通信システム1Aに比較して、ホストコントローラ120Aに代えてホストコントローラ120Bが採用されている。ホストコントローラ120Bにおいては、図5に示すホストコントローラ120Aに比較して、最大接続段数レジスタ142Aおよび応答時間算出モジュール144Aに代えて、接続段数レジスタ143および応答時間算出モジュール144Bがそれぞれ採用されている。
図10は、実施の形態2に従うUSB通信システム1Bのシステム構成を示す模式図である。図10を参照して、USB通信システム1Bは、図5に示す実施の形態1に従うUSB通信システム1Aに比較して、ホストコントローラ120Aに代えてホストコントローラ120Bが採用されている。ホストコントローラ120Bにおいては、図5に示すホストコントローラ120Aに比較して、最大接続段数レジスタ142Aおよび応答時間算出モジュール144Aに代えて、接続段数レジスタ143および応答時間算出モジュール144Bがそれぞれ採用されている。
接続段数レジスタ143は、デバイス(ハブ20およびファンクション30)ごとの接続段数を格納する。図11は、実施の形態2に従うUSB通信システム1Bの接続段数レジスタ143に格納されるデータの一例を示す図である。図11を参照して、例えば、デバイスのアドレスごとに、当該デバイスの接続段数が格納される。
ドライバ情報取得モジュール140は、ホスト10のポート130に接続されている端末であるファンクション30ごとに、ホスト10のポート130からの経路上に存在するハブ20の数をそれぞれ取得する。より具体的には、ドライバ情報取得モジュール140は、上述したような手順に従って、USBドライバ114が保持するドライバ情報を取得し、取得したドライバ情報に基づいて、各デバイスの接続段数を取得する。そして、ドライバ情報取得モジュール140は、取得した各デバイスの接続段数を接続段数レジスタ143に格納する。
応答時間算出モジュール144Bは、接続段数レジスタ143に格納されるデバイスごとの接続段数に基づいて、各転送先にパケットを送出した後に、当該転送先のファンクションからの応答がホスト10に転送されるまでに要する時間(応答時間)をそれぞれ算出する。なお、応答時間算出モジュール144Bは、転送先のファンクションごとに応答時間を算出してもよいし、接続段数が同一であるファンクションの間では応答時間が同じであるとみなして、接続段数ごとに応答時間を算出してもよい。
スケジューラ122における転送スケジューリングについては、後述する。その他のコンポーネントについては、実施の形態1において詳述したので、詳細な説明は繰り返さない。
(d2:転送スケジューリング)
次に、ホスト10での転送スケジューリングについて説明する。
次に、ホスト10での転送スケジューリングについて説明する。
図12は、実施の形態2に従うUSB通信システム1Bにおける転送スケジューリングを説明するための模式図である。図12(A)には、転送先のファンクションの接続段数が少ない場合の転送スケジューリングの一例を示し、図12(B)には、転送先のファンクションの接続段数が多い場合の転送スケジューリングの一例を示す。
図12(A)に示すように、転送先のファンクションの接続段数が少ない場合には、ホストとファンクションとの間のデータ転送において生じる遅延が小さいので、フレーム内に配置されるパケット間の間隔(応答待ち期間)も短く設定される。併せて、フレームの最後を基準に設定されるフリー期間も短く設定される。このような応答待ち期間を短くすることで、フレーム内により多くのパケットを割り当てることができる。
一方、図12(B)に示すように、転送先のファンクションの接続段数が多い場合には、ホストとファンクションとの間のデータ転送において生じる遅延が大きいので、フレーム内に配置されるパケット間の間隔(応答待ち期間)も長く設定される。併せて、フレームの最後を基準に設定されるフリー期間も長く設定される。応答待ち期間が長く設定されることで、フレーム内に割り当てることのできるパケットの数が減少する。
図12(A)および図12(B)に示すように、転送先のファンクションの接続段数に応じて応答待ち期間の長さを調整することで、転送レートを向上させることができる。
図13は、実施の形態2に従うUSB通信システム1Bにおける転送スケジューリングの処理手順を示すフローチャートである。図13に示す各ステップは、基本的には、ホストコントローラ120Bのスケジューラ122(図10)によって実行される。
図13を参照して、ホストコントローラ120Bは、クライエントソフトウェア112からのデータ転送要求(I/O要求パケット)が存在しているか否かを判断する(ステップS250)。データ転送要求が存在していなければ(ステップS250においてNOの場合)、ステップS250の処理が繰り返される。
データ転送要求が存在していれば(ステップS250においてYESの場合)、ホストコントローラ120Bは、データ転送要求により指定されている転送先のファンクションの応答時間を取得する(ステップS252)。このファンクションの応答時間は、応答時間算出モジュール144B(図10)が接続段数レジスタ143に格納されている転送先のファンクションの接続段数に基づいて算出する。続いて、ホストコントローラ120Bは、データ転送要求に含まれるパケットを単一のフレーム内に割り当てる(ステップS254)。そして、ホストコントローラ120Bは、パケットの割り当て後に、データ転送要求(I/O要求パケット)が未だ残っているか否かを判断する(ステップS256)。データ転送要求(I/O要求パケット)が未だ残っていれば(ステップS256においてYESの場合)、ホストコントローラ120Bは、パケット割り当て後の残りフレームサイズ(残り時間)がパケットのデータサイズ(送信期間の長さ)と転送先のファンクションの応答待ち期間の長さとの合計以上残っているか否かを判断する(ステップS258)。パケット割り当て後の残りフレームサイズがパケットのデータサイズと転送先のファンクションの応答待ち期間の長さとの合計以上残っていれば(ステップS258においてYESの場合)、ホストコントローラ120Bは、ステップS254以下の処理を繰り返す。
データ転送要求(I/O要求パケット)が残っていなければ(ステップS256においてNOの場合)、または、パケット割り当て後の残りフレームサイズがパケットのデータサイズと転送先のファンクションの応答待ち期間の長さとの合計以上残っていなければ(ステップS258においてNOの場合)、1または複数のパケットを割り当てたフレームを送出する(ステップS260)。そして、ステップS250以下の処理が繰り返される。
このように、ホストコントローラ120Bのスケジューラ122は、ドライバ情報取得モジュール140により取得されたドライバ情報に基づいて、1つのフレームに割り当てるパケットの数または間隔を調整する。
(d3:利点)
実施の形態1に従うホストコントローラ120Bによれば、上述の実施の形態1に従うホストコントローラ120Aによって得られる利点に加えて、次のような利点がある。すなわち、ホスト10のポート130に接続されたファンクション30ごとに、最適な応答待ち時間をそれぞれ設定することができる。そのため、例えば、接続段数が最大接続段数より小さいファンクション30が多く存在する場合には、実施の形態1に比較して、より転送レートを向上させることができる。
実施の形態1に従うホストコントローラ120Bによれば、上述の実施の形態1に従うホストコントローラ120Aによって得られる利点に加えて、次のような利点がある。すなわち、ホスト10のポート130に接続されたファンクション30ごとに、最適な応答待ち時間をそれぞれ設定することができる。そのため、例えば、接続段数が最大接続段数より小さいファンクション30が多く存在する場合には、実施の形態1に比較して、より転送レートを向上させることができる。
[E.実施の形態3]
上述の実施の形態1および2においては、USBドライバからドライバ情報を取得することで、ファンクションの応答時間の算出に必要な接続段数を取得する構成について例示した。これに対して、実施の形態3においては、デバイス接続時のポート有効化およびアドレス設定の処理中に、接続段数を取得する構成について例示する。すなわち、ホストコントローラの機能のみを用いて、ファンクションの接続段数を取得する構成について例示する。
上述の実施の形態1および2においては、USBドライバからドライバ情報を取得することで、ファンクションの応答時間の算出に必要な接続段数を取得する構成について例示した。これに対して、実施の形態3においては、デバイス接続時のポート有効化およびアドレス設定の処理中に、接続段数を取得する構成について例示する。すなわち、ホストコントローラの機能のみを用いて、ファンクションの接続段数を取得する構成について例示する。
(e1:システム構成)
図14は、実施の形態3に従うUSB通信システム1Cのシステム構成を示す模式図である。図14を参照して、USB通信システム1Cは、図10に示す実施の形態2に従うUSB通信システム1Bに比較して、ホストコントローラ120Bに代えてホストコントローラ120Cが採用されている。ホストコントローラ120Cにおいては、図10に示すホストコントローラ120Bに比較して、ドライバ情報取得モジュール140に代えて、パケット解析モジュール146および有効接続段数レジスタ148が採用されている。
図14は、実施の形態3に従うUSB通信システム1Cのシステム構成を示す模式図である。図14を参照して、USB通信システム1Cは、図10に示す実施の形態2に従うUSB通信システム1Bに比較して、ホストコントローラ120Bに代えてホストコントローラ120Cが採用されている。ホストコントローラ120Cにおいては、図10に示すホストコントローラ120Bに比較して、ドライバ情報取得モジュール140に代えて、パケット解析モジュール146および有効接続段数レジスタ148が採用されている。
実施の形態3においては、パケット解析モジュール146が、ホスト10のポート130からパケットが送出されてから、転送先の端末であるファンクション30からの応答を受信するまでの時間の長さに関連付けられる情報を取得する。
パケット解析モジュール146は、ポート130から送出またはポート130で受信されるパケットの内容を解析する。特に、パケット解析モジュール146は、ポート130に何らかのデバイス(ハブ20またはファンクション30)が接続されてアドレスが割り当てられる処理に用いられるパケット(トークン・パケット、データ・パケット、ハンドシェイク・パケットなど)を検出し、有効接続段数レジスタ148に格納される有効化されたポートのハブの接続段数を更新するとともに、接続段数レジスタ143に格納されるデバイス(ハブ20およびファンクション30)ごとの接続段数を更新する。
有効接続段数レジスタ148は、ポート130(ルートハブ)に接続される各デバイスの接続段数を算出するためのワークデータとして、対象のデバイスまでの経路上に存在するハブ20の数を保持する。
接続段数レジスタ143には、上述の図11に示すように、例えば、デバイスのアドレスごとに、当該デバイスの接続段数が格納される。
ハブの接続段数を取得する処理については、後述する。その他のコンポーネントについては、実施の形態1または2において詳述したので、詳細な説明は繰り返さない。
(e2:ハブの接続段数の取得)
次に、ホスト10に接続されているファンクションについての接続段数を取得する処理について説明する。
次に、ホスト10に接続されているファンクションについての接続段数を取得する処理について説明する。
ホストコントローラ120Cのデータ転送コントローラ128は、USBバスに新たなノード(ハブ20またはファンクション30)が接続されると、各ノードにアドレスを割り当てる初期化処理を実施する。より具体的には、ホストコントローラ120Cのデータ転送コントローラ128は、初期化処理の一部として、ルートとなるポート130の有効化、ハブ20のポートの有効化、ポートを有効化するハブ20のアドレスの設定および取得、ハブ20に接続されているファンクション30のアドレスの設定および取得などを実施する。パケット解析モジュール146は、USBバス上を伝送される転送データを解析する。パケット解析モジュール146は、ポートが有効化されたときのハブ20のアドレスと、有効接続段数レジスタ148に先に格納されている接続段数とに基づいて、あるポートが有効化されたときのハブの接続段数を決定する。
図15は、実施の形態3に従うUSB通信システム1Cにおけるアドレス設定の処理手順を示す模式図である。図16は、図15に示すアドレス設定に対応して、接続段数レジスタ143および有効接続段数レジスタ148の更新処理を説明するための模式図である。図15および図16に示される処理は、USBバスの初期化処理の一部に含まれてもよい。
図15(A)〜(D)には、ポート130に接続されたデバイス群に対して順次アドレスが設定される処理例を示す。図15(A)〜(D)において、デバイス名に引き続くカッコ内に示される数字は、割り当てられたアドレスを示す。なお、接続直後はいずれのデバイスにもアドレスが設定されておらず、各デバイスは、アドレスが設定されていないことを示す「0」を格納する。
図15(A)に示すように、まず、ホストコントローラ120Cのデータ転送コントローラ128は、ポート130のダウンストリームポートを有効化する。すなわち、データ転送コントローラ128は、ポート130を有効化し、ポート130に直接接続されているハブ20_1との通信を開始する。このとき、パケット解析モジュール146は、データ転送コントローラ128から送出されるパケットの内容を解析し、ポート130から転送先のデバイス(すなわち、ハブ20_1)までの経路上に介在しているハブ20の数がゼロであると判断し、有効接続段数レジスタ148に「0」をセットする(図16(A)の(1)更新)。
続いて、データ転送コントローラ128は、ハブ20_1にアドレス「1」を割り当てる。すなわち、データ転送コントローラ128は、ハブ20_1に対して、アドレスを「0」から「1」に変更する命令を送出する。このアドレスの設定に応じて、パケット解析モジュール146は、接続段数レジスタ143のアドレス「1」に対応する接続段数として、有効接続段数レジスタ148に格納されている「有効接続段数+1」(すなわち、「1」)をセットする(図16(A)の(2)更新)。
次に、図15(B)に示すように、データ転送コントローラ128は、アドレス1が設定されたハブ20_1に対して、その1番目のポートを有効化する命令を送出する。すなわち、データ転送コントローラ128は、ハブ20_1の1番目のポートを有効化し、ハブ20_1の1番目のポートに直接接続されているファンクション30_1との通信を開始する。このとき、パケット解析モジュール146は、データ転送コントローラ128から送出されるパケットの内容を解析し、ポート130から転送先のデバイス(すなわち、ファンクション30_1)までの経路上にハブ20_1が介在していると判断し、有効接続段数レジスタ148に「1」をセットする(図16(B)の(3)更新)。
続いて、データ転送コントローラ128は、ファンクション30_1にアドレス「2」を割り当てる。すなわち、データ転送コントローラ128は、ファンクション30_1に対して、アドレスを「0」から「2」に変更する命令を送出する。このアドレスの設定に応じて、パケット解析モジュール146は、接続段数レジスタ143のアドレス「2」に対応する接続段数として、有効接続段数レジスタ148に格納されている「有効接続段数+1」(すなわち、「2」)をセットする(図16(B)の(4)更新)。
次に、図15(C)に示すように、データ転送コントローラ128は、アドレス1が設定されたハブ20_1に対して、その2番目のポートを有効化する命令を送出する。すなわち、データ転送コントローラ128は、ハブ20_1の2番目のポートを有効化し、ハブ20_1の2番目のポートに直接接続されているハブ20_3との通信を開始する。このとき、パケット解析モジュール146は、データ転送コントローラ128から送出されるパケットの内容を解析し、ポート130から転送先のデバイス(すなわち、ハブ20_3)までの経路上にハブ20_1が介在していると判断し、有効接続段数レジスタ148に「1」をセットする(図16(C)の(5)更新)。
続いて、データ転送コントローラ128は、ハブ20_3にアドレス「3」を割り当てる。すなわち、データ転送コントローラ128は、ハブ20_3に対して、アドレスを「0」から「3」に変更する命令を送出する。このアドレスの設定に応じて、パケット解析モジュール146は、接続段数レジスタ143のアドレス「3」に対応する接続段数として、有効接続段数レジスタ148に格納されている「有効接続段数+1」(すなわち、「2」)をセットする(図16(C)の(6)更新)。
以下同様の手順によって、各デバイスに対してアドレスが設定されるとともに、アドレスの設定に応じて、有効接続段数レジスタ148および接続段数レジスタ143の値が順次更新される。すなわち、データ転送コントローラ128は、初期化処理において、特定のハブ20のポートを有効化する命令を発行し、パケット解析モジュール146は、この特定のハブ20のポートを有効化する命令に基づいて、当該ハブ20のポートに接続されているファンクション30について、ホスト10のポート130からの経路上に存在するハブの数を取得する。なお、図16に示すように、デバイスのアドレスごとに、当該デバイスの接続段数が格納される。
最終的に、図15(D)に示すように、アドレス4が設定されたハブ20_2に対して、その1番目のポートを有効化する命令が送出されると、パケット解析モジュール146は、データ転送コントローラ128から送出されるパケットの内容を解析し、ポート130から転送先のデバイス(すなわち、ファンクション30_2)までの経路上にハブ20_1およびハブ20_2が介在していると判断し、有効接続段数レジスタ148に「2」をセットする(図16(D)の(7)更新)。そして、ファンクション30_2にアドレス「7」が割り当てられると、パケット解析モジュール146は、接続段数レジスタ143のアドレス「7」に対応する接続段数として、有効接続段数レジスタ148に格納されている「有効接続段数+1」(すなわち、「3」)をセットする(図16(D)の(8)更新)。
以上のような処理によって、デバイスごとの接続段数が取得される。すなわち、パケット解析モジュール146は、データ転送コントローラ128による初期化処理の実施中に、ホスト10のポート130から対象の端末であるファンクション30までの経路上に存在するハブ20の数を取得する。そして、取得された接続段数に応じて、ファンクションごとに応答時間が算出される。
図17は、実施の形態3に従うUSB通信システム1Cにおけるハブの接続段数を取得する処理手順を示すフローチャートである。図17に示す各ステップは、基本的には、ホストコントローラ120Cのパケット解析モジュール146(図14)によって実行される。
図17を参照して、パケット解析モジュール146は、データ転送コントローラ128による初期化処理が開始されたか否かを判断する(ステップS300)。初期化処理が開始されていなければ(ステップS300においてNOの場合)、ステップS300の処理が繰り返される。
初期化処理が開始されると(ステップS300においてYESの場合)、パケット解析モジュール146は、データ転送コントローラ128によりポートを有効化する命令が送出されたか否かを判断する(ステップS302)。ポートを有効化する命令が送出されていなければ(ステップS302においてNOの場合)、ステップS302の処理が繰り返される。
ポートを有効化する命令が送出されると(ステップS302においてYESの場合)、パケット解析モジュール146は、送出されたポートを有効化する命令に基づいて、有効接続段数レジスタ148に有効接続段数をセットする(ステップS304)。すなわち、パケット解析モジュール146は、有効接続段数レジスタ148の値を更新する。続いて、パケット解析モジュール146は、データ転送コントローラ128によりアドレスを設定する命令が送出されたか否かを判断する(ステップS306)。アドレスを設定する命令が送出されていなければ(ステップS306においてNOの場合)、ステップS306の処理が繰り返される。
アドレスを設定する命令が送出されると(ステップS306においてYESの場合)、パケット解析モジュール146は、有効接続段数レジスタ148にセットされている値と、アドレスを設定する命令に含まれるアドレスとを用いて、アドレスごとの接続段数を接続段数レジスタ143にセットする(ステップS308)。
続いて、パケット解析モジュール146は、データ転送コントローラ128による初期化処理が終了したか否かを判断する(ステップS310)。初期化処理が終了していなければ(ステップS310においてNOの場合)、ステップS302以下の処理が繰り返される。これに対して、初期化処理が終了していれば(ステップS310においてYESの場合)、処理はステップS300に戻る。
以上のような処理手順によって、図16に示すような、転送先のデバイス(アドレス)ごとに接続段数が取得される。
(e3:転送スケジューリング)
次に、ホスト10での転送スケジューリングについては、基本的には、上述した実施の形態2に従うUSB通信システム1Bにおける転送スケジューリングの処理手順と同様である。すなわち、図13に示すフローチャートに従って、転送スケジューリングが実施される。そのため、詳細な説明は繰り返さない。
次に、ホスト10での転送スケジューリングについては、基本的には、上述した実施の形態2に従うUSB通信システム1Bにおける転送スケジューリングの処理手順と同様である。すなわち、図13に示すフローチャートに従って、転送スケジューリングが実施される。そのため、詳細な説明は繰り返さない。
(e4:利点)
実施の形態3に従うホストコントローラ120Cは、デバイス(ハブ20またはファンクション30)がホスト10のポート130に接続されて開始される初期化処理において、各ファンクションについてのハブの接続段数を容易に取得することができる。このような情報を取得することで、実際の接続構成において生じ得る、データ転送に係る遅延時間に応じて、あるパケットを送出後の応答待ち時間を最適化できる。すなわち、上述の関連技術のように、規格上最大の接続段数に応じて一律に応答待ち時間を設定するのではなく、実際の接続構成(すなわち、接続段数の最大値)に応じて、応答待ち時間を短縮することができる。これによって、フレーム内に割り当てるパケットの数を増大させることができ、この結果、転送レートを向上させることができる。
実施の形態3に従うホストコントローラ120Cは、デバイス(ハブ20またはファンクション30)がホスト10のポート130に接続されて開始される初期化処理において、各ファンクションについてのハブの接続段数を容易に取得することができる。このような情報を取得することで、実際の接続構成において生じ得る、データ転送に係る遅延時間に応じて、あるパケットを送出後の応答待ち時間を最適化できる。すなわち、上述の関連技術のように、規格上最大の接続段数に応じて一律に応答待ち時間を設定するのではなく、実際の接続構成(すなわち、接続段数の最大値)に応じて、応答待ち時間を短縮することができる。これによって、フレーム内に割り当てるパケットの数を増大させることができ、この結果、転送レートを向上させることができる。
また、実施の形態3の構成は、上述した関連技術の構成に対して、初期化処理中に発行される命令を解析する機能などを追加することで実現できる。つまり、関連技術に従うホストコントローラに対して、比較的簡単な改良を施すだけで、実施の形態3に従うホストコントローラ120Cを実現できる。
[F.実施の形態4]
上述の実施の形態3においては、接続段数に応じてファンクションごとの応答時間を算出する構成について例示したが、取得されたデバイスごとの接続段数のうち最大のもの(最大接続段数)を用いて、応答時間を一律に決定してもよい。
上述の実施の形態3においては、接続段数に応じてファンクションごとの応答時間を算出する構成について例示したが、取得されたデバイスごとの接続段数のうち最大のもの(最大接続段数)を用いて、応答時間を一律に決定してもよい。
実施の形態4に従うUSB通信システムにおいては、上述の実施の形態3と同様の処理手順に従って、デバイスごとの接続段数が取得される。
図18は、実施の形態4に従うUSB通信システムにおけるハブの最大接続段数を取得する処理を説明するための模式図である。図18を参照して、例えば、接続段数レジスタ143に格納された、デバイス(ハブ20およびファンクション30)ごとの接続段数のうち、最大のものが最大接続段数として決定される。すなわち、ホスト10のポート130に接続されているそれぞれのファンクション30について、ホスト10のポート130からの経路上に存在するハブの数の最大値(最大接続段数)が取得される。そして、ホストコントローラは、この取得された最大接続段数に応じた応答時間に基づいて、転送スケジューリングを実施する。
実施の形態4に従うUSB通信システムにおける転送スケジューリングの処理手順は、基本的には、上述した実施の形態1に従うUSB通信システム1Aにおける転送スケジューリングの処理手順と同様である。すなわち、図9に示すフローチャートに従って、転送スケジューリングが実施される。そのため、詳細な説明は繰り返さない。
実施の形態4に従うホストコントローラによれば、上述の実施の形態3に従うホストコントローラ120Cによって得られる利点に加えて、次のような利点がある。すなわち、応答待ち時間をファンクション30ごとに管理する必要がないので、実施の形態3に比較して、処理ロジックを簡素化できる。
[G.実施の形態5]
上述の実施の形態1〜4においては、各デバイスの接続関係に基づいて、応答時間を静的に決定する構成について例示した。これに対して、実施の形態5においては、実際のデータ転送に要する時間に基づいて、応答時間を動的に決定する構成について例示する。
上述の実施の形態1〜4においては、各デバイスの接続関係に基づいて、応答時間を静的に決定する構成について例示した。これに対して、実施の形態5においては、実際のデータ転送に要する時間に基づいて、応答時間を動的に決定する構成について例示する。
(g1:システム構成)
図19は、実施の形態5に従うUSB通信システム1Eのシステム構成を示す模式図である。図19を参照して、USB通信システム1Eは、図5に示す実施の形態1に従うUSB通信システム1Aに比較して、ホストコントローラ120Aに代えてホストコントローラ120Eが採用されている。ホストコントローラ120Eにおいては、図5に示すホストコントローラ120Aに比較して、ドライバ情報取得モジュール140に代えて、データ転送時間測定モジュール150と、測定値格納レジスタ152とが採用されている。また、応答時間算出モジュール144Aに代えて、応答時間算出モジュール144Eが採用されている。
図19は、実施の形態5に従うUSB通信システム1Eのシステム構成を示す模式図である。図19を参照して、USB通信システム1Eは、図5に示す実施の形態1に従うUSB通信システム1Aに比較して、ホストコントローラ120Aに代えてホストコントローラ120Eが採用されている。ホストコントローラ120Eにおいては、図5に示すホストコントローラ120Aに比較して、ドライバ情報取得モジュール140に代えて、データ転送時間測定モジュール150と、測定値格納レジスタ152とが採用されている。また、応答時間算出モジュール144Aに代えて、応答時間算出モジュール144Eが採用されている。
データ転送時間測定モジュール150は、ホスト10のポートからパケットが送出されてから、転送先の端末であるファンクション30にて受信されるとともに、当該端末にて受信されたパケットに応じて送出された応答がホスト10のポートで受信されるまで、に要する時間を測定する。より具体的には、データ転送時間測定モジュール150は、ポート130から送出またはポート130で受信されるパケットの内容を解析して、データ転送に要する時間を測定する。すなわち、データ転送時間測定モジュール150は、USBバス上の転送データを解析して、ホスト10から送出された送信データに対するファンクション30からの受信データの応答時間を測定する。
測定値格納レジスタ152は、データ転送時間測定モジュール150により測定された応答時間を格納する。基本的には、測定値格納レジスタ152には、転送先のデバイス(アドレス)ごとに測定された応答時間が格納される。図20は、実施の形態5に従うUSB通信システム1Eの測定値格納レジスタ152に格納されるデータの一例を示す図である。図20を参照して、例えば、デバイスのアドレスごとに、当該デバイスの応答時間が格納される。すなわち、ホスト10のポート130に接続されているファンクション30ごとに、応答時間が測定される。応答時間の単位としては、例えば、ビットタイム(1ビットを送受信するのに回線を占有する期間)などが用いられる。
1つのデバイス(アドレス)について、複数の測定結果(応答時間)が格納されるようにしてもよいし、あるいは、後述するように、1つのデバイス(アドレス)について、最も短い測定結果(応答時間)のみを格納するようにしてもよい。後者の場合には、データ転送時間測定モジュール150は、いずれかのデバイスについて応答時間を測定し、その測定された応答時間が測定値格納レジスタ152に格納されている応答時間より短い場合には、測定された応答時間で測定値格納レジスタ152の値を更新するようにしてもよい。すなわち、データ転送時間測定モジュール150は、同一の転送先について測定される複数の応答時間のうち、最小のものを測定結果として保持するようにしてもよい。
そして、ホストコントローラ120Eのスケジューラ122は、転送先にパケットを送出してから、データ転送時間測定モジュール150により測定された時間に応じた期間にわたって当該パケットに対する応答を待つように、スケジューリングを実施する。より具体的には、応答時間算出モジュール144Eが、測定値格納レジスタ152に格納されている測定結果に基づいて、各転送先にパケットを送出した後に、当該転送先のファンクションからの応答がホスト10に転送されるまでに要する時間(応答時間)をそれぞれ算出する。転送先のアドレスごとの応答時間に応じて、応答待ち期間の長さが決定され、決定された応答待ち期間の長さに応じて、転送スケジューリングが実施される。
応答時間算出モジュール144Eは、測定値格納レジスタ152に格納されている測定結果を、そのまま応答待ち期間として決定してもよいし、パケットのデータサイズなどに応じて、応答待ち期間の長さを調整するようにしてもよい。応答待ち期間の決定方法については、後述する。
それ以外の機能および処理については、実施の形態1〜4において詳述したので、詳細な説明は繰り返さない。
(g2:データ転送の時間測定および応答時間の取得)
次に、データ転送に要する時間の測定、および、応答時間の取得の方法について説明する。データ転送時間測定モジュール150は、USBバス上を伝送される転送データを解析することで、ポート130からのある送信データの送出が完了してから、当該送信データに対する応答を転送先のファンクションから受信するまでの期間の長さを測定する。
次に、データ転送に要する時間の測定、および、応答時間の取得の方法について説明する。データ転送時間測定モジュール150は、USBバス上を伝送される転送データを解析することで、ポート130からのある送信データの送出が完了してから、当該送信データに対する応答を転送先のファンクションから受信するまでの期間の長さを測定する。
図21は、実施の形態5に従うUSB通信システム1Eにおけるデータ転送に要する時間の測定を説明するための模式図である。図21を参照して、データ転送時間測定モジュール150は、ホスト10(ポート130)からのパケットの送出が完了してから、転送先のファンクション30からの当該パケットに対する応答を受信するまでの期間を、応答時間として測定する。この応答時間の測定は、転送先のデバイス(アドレス)ごとに実施される。応答時間の測定は、初期化処理の間に実施されてもよいし、通常のデータ転送時に実施されてもよい。
測定される応答時間は、パケットに依存して変化する可能性のあるもの(ファンクションでの応答遅延)と、パケットによらず一定であるもの(ケーブル遅延およびハブ遅延)とに分類できる。そのため、測定された応答時間の最小値に、パケットに依存して変化する可能性がある時間を加算した値を、ファンクションの応答待ち期間の長さとして設定してもよい。すなわち、実施の形態5に従うUSB通信システム1Eにおいては、転送先のデバイス(アドレス)ごとに応答時間の最小値を測定しておき、測定された各応答時間の最小値に所定のマージンを加えた時間を、ファンクションの応答待ち期間の長さとして設定する。このように、転送先にパケットを送出してから当該パケットに対する応答を待つ期間(応答待ち期間)は、データ転送時間測定モジュール150による測定結果に、予め定められた期間を加算することで算出される。
なお、別の構成として、測定された応答時間の最大値(すなわちワースト値)をファンクションの応答待ち期間の長さとして設定してもよい。
さらに別の構成として、測定される応答時間を、測定対象のパケットの種別またはデータサイズに基づいて、パケットに依存して変化する可能性のあるものと、パケットによらず一定であるものとに、統計的に分類するようにしてもよい。このように2つの成分を分離して取得しておくことで、送出対象のパケットに応じて、応答待ち期間の長さを動的に設定することもできる。
図22は、実施の形態5に従うUSB通信システム1Eにおける応答時間の測定手順を示すフローチャートである。図22に示す各ステップは、基本的には、ホストコントローラ120Eのデータ転送時間測定モジュール150(図19)によって実行される。
図22を参照して、ホストコントローラ120Eは、ポート130からパケットの送出が開始されたか否かを判断する(ステップS500)。ポート130からパケットの送出が開始されていなければ(ステップS500においてNOの場合)、ステップS500の処理が繰り返される。
これに対して、ポート130からパケットの送出が開始されると(ステップS500においてYESの場合)、ホストコントローラ120Eは、当該パケットの送出先のデバイスのアドレスを取得する(ステップS502)。続いて、ホストコントローラ120Eは、パケットの送出が完了したか否かを判断する(ステップS504)。パケットの送出が完了していなければ(ステップS504においてNOの場合)、ステップS504の処理が繰り返される。
これに対して、パケットの送出が完了すると(ステップS504においてYESの場合)、ホストコントローラ120Eは、タイマを起動し、応答時間の測定を開始する(ステップS506)。そして、ホストコントローラ120Eは、先に送出したパケットに対する応答を転送先のデバイスから受信したか否かを判断する(ステップS508)。先に送出したパケットに対する応答を転送先のデバイスから受信していなければ(ステップS508においてNOの場合)、ステップS508の処理が繰り返される。
先に送出したパケットに対する応答を転送先のデバイスから受信すると(ステップS508においてYESの場合)、ホストコントローラ120Eは、タイマを停止し、応答時間の測定を終了する(ステップS510)。
ホストコントローラ120Eは、送出先のデバイスのアドレスについて、測定された応答時間が測定値格納レジスタ152に格納されている応答時間より短いか否かを判断する(ステップS512)。測定された応答時間が先に取得されている応答時間より短ければ(ステップS512においてYESの場合)、ホストコントローラ120Eは、測定された応答時間を新たな応答時間として、測定値格納レジスタ152に格納する(ステップS514)。そして、処理はステップS500に戻る。
これに対して、測定された応答時間が先に取得されている応答時間以上であれば(ステップS512においてNOの場合)、ステップS514の更新処理は実施されず、処理はステップS500に戻る。
このように、ホストコントローラ120Eは、ホストからのデータ送信開始時に、転送先のアドレスを取得するとともに、データ送信完了時に測定を開始する。そして、ホストコントローラ120Eは、ホストでの応答データ受信開始時に測定を完了し、データ転送先のファンクションのアドレスごとに、測定値を格納済みの送受信間隔と比較し、短い場合にその値を更新する。
(g3:転送スケジューリング)
次に、ホスト10での転送スケジューリングについては、基本的には、上述した実施の形態2に従うUSB通信システム1Bにおける転送スケジューリングの処理手順と同様である。すなわち、図13に示すフローチャートに従って、転送スケジューリングが実施される。そのため、詳細な説明は繰り返さない。
次に、ホスト10での転送スケジューリングについては、基本的には、上述した実施の形態2に従うUSB通信システム1Bにおける転送スケジューリングの処理手順と同様である。すなわち、図13に示すフローチャートに従って、転送スケジューリングが実施される。そのため、詳細な説明は繰り返さない。
(g4:利点)
実施の形態5に従うホストコントローラ120Eは、ホスト10とデバイス(ハブ20またはファンクション30)との間のデータの遣り取り(トランザクション)を観測することで、各ファンクション30についての応答時間を実測することができる。そして、各ファンクション30について実装された応答時間に基づいて、あるパケットを送出後の応答待ち時間を最適化できる。すなわち、上述の関連技術のように、規格上最大の接続段数に応じて一律に応答待ち時間を設定するのではなく、実際の接続構成(すなわち、接続段数の最大値)に応じて、応答待ち時間を短縮することができる。これによって、フレーム内に割り当てるパケットの数を増大させることができ、この結果、転送レートを向上させることができる。
実施の形態5に従うホストコントローラ120Eは、ホスト10とデバイス(ハブ20またはファンクション30)との間のデータの遣り取り(トランザクション)を観測することで、各ファンクション30についての応答時間を実測することができる。そして、各ファンクション30について実装された応答時間に基づいて、あるパケットを送出後の応答待ち時間を最適化できる。すなわち、上述の関連技術のように、規格上最大の接続段数に応じて一律に応答待ち時間を設定するのではなく、実際の接続構成(すなわち、接続段数の最大値)に応じて、応答待ち時間を短縮することができる。これによって、フレーム内に割り当てるパケットの数を増大させることができ、この結果、転送レートを向上させることができる。
また、実施の形態5の構成は、上述した関連技術の構成に対して、ホスト10とデバイス(ハブ20またはファンクション30)との間のデータの遣り取り(トランザクション)を観測する機能などを追加することで実現できる。つまり、関連技術に従うホストコントローラに対して、比較的簡単な改良を施すだけで、実施の形態5に従うホストコントローラ120Eを実現できる。
[H.実施の形態6]
上述の実施の形態5においては、接続段数に応じてファンクションごとの応答時間を算出する構成について例示したが、取得されたデバイスごとの接続段数のうち最大のもの(最大接続段数)を用いて、応答時間を一律に決定してもよい。
上述の実施の形態5においては、接続段数に応じてファンクションごとの応答時間を算出する構成について例示したが、取得されたデバイスごとの接続段数のうち最大のもの(最大接続段数)を用いて、応答時間を一律に決定してもよい。
実施の形態6に従うUSB通信システムにおいては、上述の実施の形態5と同様の処理手順に従って、デバイス(アドレス)ごとに応答時間が測定される。そして、デバイス(ハブ20およびファンクション30)ごとの応答時間のうち、最大のものが最大応答時間として決定される。すなわち、ホスト10のポート130に接続されているそれぞれのファンクション30について測定された応答時間のうち最大のものが、対象の接続構成における応答時間(代表値)として取得される。ホストコントローラは、この決定された最大応答時間に応じて応答待ち期間の長さを決定し、転送スケジューリングを実施する。
実施の形態6に従うUSB通信システムにおける転送スケジューリングの処理手順は、基本的には、上述した実施の形態1に従うUSB通信システム1Aにおける転送スケジューリングの処理手順と同様である。すなわち、図9に示すフローチャートに従って、転送スケジューリングが実施される。そのため、詳細な説明は繰り返さない。
実施の形態6に従うホストコントローラによれば、上述の実施の形態5に従うホストコントローラ120Eによって得られる利点に加えて、次のような利点がある。すなわち、応答待ち時間をファンクション30ごとに管理する必要がないので、実施の形態5に比較して、処理ロジックを簡素化できる。
[I.転送レートの改善効果]
次に、本実施の形態に従う転送スケジューリングによる転送レートの改善効果について説明する。
次に、本実施の形態に従う転送スケジューリングによる転送レートの改善効果について説明する。
図23は、本実施の形態に従う転送スケジューリングによる転送レートの改善効果の一例を示す模式図である。図23には、接続段数が「5」および「0」である場合にそれぞれ設定される応答待ち期間の例を示す。
接続段数が「5」である場合に設定される応答待ち期間では、1フレームに5パケットだけが割り当てられ、一方、接続段数が「0」である場合に設定される応答待ち期間では、1フレームに6パケットを割り当てることが可能である。すなわち、上述の関連技術では、いずれの場合も接続段数が「5」であるとの前提で応答待ち期間の設定および転送スケジューリングが実施されるのに対して、本実施の形態に従う転送スケジューリングでは、実際の接続構成に応じて、応答待ち期間が設定されるので、より多くのパケットを割り当てることができる。
例えば、1つのパケットのデータサイズが1024バイトであり、1フレームの周期が125μsであるとすれば、転送レートは以下のように算出される。
<関連技術>
1フレーム(125μs)ごとに5つのパケット(1024バイト)が転送される。
1フレーム(125μs)ごとに5つのパケット(1024バイト)が転送される。
8000フレーム/s×1024バイト×5回×8ビット=327.6Mbps
<本実施の形態>
1フレーム(125μs)ごとに6つのパケット(1024バイト)が転送される。
<本実施の形態>
1フレーム(125μs)ごとに6つのパケット(1024バイト)が転送される。
8000フレーム/s×1024バイト×6回×8ビット=393.2Mbps
転送レートの改善効果としては、393.216/327.6=120(%)となり、転送レートを20%向上できる。
転送レートの改善効果としては、393.216/327.6=120(%)となり、転送レートを20%向上できる。
[J.実装形態]
本実施の形態に従うホスト10は、典型的には、パーソナルコンピュータ、汎用マイクロコンピュータ、特定用途向けの専用装置などとして実装される。ホストコントローラについては、パーソナルコンピュータのバスに接続される基板またはチップとして実装されてもよい。あるいは、同一の基板上に、プロセッサに加えて、ホストコントローラおよびキャッシュメモリなどを実装するようにしてもよい(例えば、SoC(System-on-a-Chip))。
本実施の形態に従うホスト10は、典型的には、パーソナルコンピュータ、汎用マイクロコンピュータ、特定用途向けの専用装置などとして実装される。ホストコントローラについては、パーソナルコンピュータのバスに接続される基板またはチップとして実装されてもよい。あるいは、同一の基板上に、プロセッサに加えて、ホストコントローラおよびキャッシュメモリなどを実装するようにしてもよい(例えば、SoC(System-on-a-Chip))。
本実施の形態に従うホストコントローラは、LSI(Large-Scale Integration)といった集積回路、または、ハードワイヤードロジックなどの純粋なハードウェアとして実装してもよい。
あるいは、ハードウェアとソフトウェアとの組み合わせ、例えば、通信回路と、通信回路を制御するためのおよびマイクロコントローラとを用いて構成するとともに、マイクロコントローラに必要な処理を実行させるためのプログラム(例えば、ファームウェア)をEEPROM(Electrically Erasable Programmable Read-Only Memory)またはフラッシュメモリなどに格納してもよい。
さらにあるいは、DSP(Digital Signal Processor)などの高速に信号処理可能なデバイスを用いて、ホストコントローラに必要な処理のすべてをソフトウェアにより実装するようにしてもよい。
図24は、本実施の形態に従うホストコントローラ120の構成例を示す模式図である。図24には、通信回路とマイクロプロセッサとの組み合わせによりホストコントローラ120を実装する構成例を示す。より具体的には、ホストコントローラ120は、マイクロプロセッサ1201と、バスインターフェイス回路1202と、USBバス通信回路1203と、RAM(Random Access Memory)1204と、フラッシュメモリ1205とを含む。
バスインターフェイス回路1202は、システムバスを介して、CPUおよびシステムメモリ(いずれも図5参照)などとの間で信号を遣り取りする。USBバス通信回路1203は、転送スケジューリングおよびデータ転送を担当する。すなわち、USBバス通信回路1203は、スケジューラ122およびデータ転送コントローラ128(図5など参照)に相当する機能を提供する。
マイクロプロセッサ1201は、バスインターフェイス回路1202およびUSBバス通信回路1203を制御することで、両者間のデータの遣り取りを仲介する。具体的には、マイクロプロセッサ1201は、フラッシュメモリ1205に格納されているファームウェア1206を読み込んで実行することで、必要な処理を実現する。RAM1204は、マイクロプロセッサ1201がファームウェア1206を実行するために必要なデータを一時的に格納するワークメモリとして機能する。
ファームウェア1206は、一種の補助プログラムであり、外部からインストールまたは更新が可能になっている。フラッシュメモリ1205は、ファームウェア1206を含む各種データを不揮発的に記憶する。RAM1204は、典型的には、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)などにより実装される。
ファームウェア1206は、例えば、非一時的(non-transitory)な記録媒体に格納された状態で流通し、フラッシュメモリ1205にインストールまたは更新(アップデート)されてもよい。非一時的な記録媒体としては、光学ディスクなどの光学記録媒体、フラッシュメモリなどの半導体記録媒体、ハードディスクまたはストレージテープなどの磁気記録媒体、MO(Magneto-Optical disk)などの光磁気記録媒体を用いてもよい。すなわち、本実施の形態は、上述したような処理および機能を実現するためのコンピュータ読取可能なプログラム、および、当該プログラムを格納した記録媒体も含み得る。
別の形態として、インターネットまたはイントラネットを介してサーバ装置からファームウェア1206をダウンロードするようにしてもよい。
当業者であれば、本発明が実施される時代に応じた技術を適宜用いて、本実施の形態に従うホストコントローラおよびホストコントローラを含むホストを実現するであろう。
[K.まとめ]
上述の実施の形態1〜6を参照して説明したように、実際の接続構成に応じて、応答待ち時間を最適化し、その最適化された応答待ち時間に応じて、転送スケジューリングを実施することで、単位フレームが予め定められた周期で繰り返し送受信されるという制約下で、転送レートを向上させることができる。
上述の実施の形態1〜6を参照して説明したように、実際の接続構成に応じて、応答待ち時間を最適化し、その最適化された応答待ち時間に応じて、転送スケジューリングを実施することで、単位フレームが予め定められた周期で繰り返し送受信されるという制約下で、転送レートを向上させることができる。
以上、本発明者らによってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
1,1A,1B,1C,1E 通信システム、10 ホスト、20,20_1,20_2,… ハブ、30,30_1,30_2,… ファンクション、102 CPU、104 システムバス、110 システムメモリ、112 クライエントソフトウェア、114 ドライバ、116 ホストコントローラドライバ、120,120A,120B,120C,120E ホストコントローラ、122 スケジューラ、124 転送サイズレジスタ、126 フレームカウンタ、128 データ転送コントローラ、130 ポート、140 ドライバ情報取得モジュール、142A 最大接続段数レジスタ、143 接続段数レジスタ、144A,144B,144E 応答時間算出モジュール、146 パケット解析モジュール、148 有効接続段数レジスタ、150 データ転送時間測定モジュール、152 測定値格納レジスタ、1201 マイクロプロセッサ、1202 バスインターフェイス回路、1203 バス通信回路、1204 RAM、1205 フラッシュメモリ、1206 ファームウェア。
Claims (14)
- ホストポートに接続されたバスを介して1または複数のノードと通信する機能を有するホストコントローラであって、前記1または複数のノードは、バスの終端に位置する端末と、上位側のポートを1または複数のポートにカスケード接続するハブとの少なくとも一方を含み、
予め定められた周期を有するフレームごとに1または複数のパケットを割り当てるスケジューリング手段と、
前記スケジューリング手段による割り当てに従って、前記バスのデータ転送方向を時間的に切り替えることで双方向に通信を行なう通信手段と、
前記ホストポートからパケットが送出されてから、転送先の端末にて受信されるとともに、当該端末にて受信されたパケットに応じて送出された応答が前記ホストポートで受信されるまで、に要する時間の長さに関連付けられる情報を取得する取得手段とを備え、
前記スケジューリング手段は、前記取得手段により取得された情報に基づいて、1つのフレームに割り当てるパケットの数または間隔を調整する、ホストコントローラ。 - 前記ホストコントローラは、前記1または複数のノードとの通信を利用するアプリケーションソフトウェア、および、前記ホストコントローラを制御するドライバソフトウェアを実行する演算主体と接続され、
前記取得手段は、前記ドライバソフトウェアが保持するドライバ情報を参照することで前記情報を取得する、請求項1に記載のホストコントローラ。 - 前記取得手段は、前記ドライバ情報に基づいて、前記ホストポートから各端末までの経路上に存在するハブの数を前記情報として取得する、請求項2に記載のホストコントローラ。
- 前記取得手段は、前記ホストポートに接続されているそれぞれの端末について、前記ホストポートからの経路上に存在するハブの数の最大値を前記情報として取得する、請求項3に記載のホストコントローラ。
- 前記取得手段は、前記ホストポートに接続されている端末ごとに、前記ホストポートからの経路上に存在するハブの数をそれぞれ取得する、請求項3に記載のホストコントローラ。
- 前記通信手段は、バスに新たなノードが接続されると、各ノードにアドレスを割り当てる初期化処理を実施し、
前記取得手段は、前記通信手段による初期化処理の実施中に、前記ホストポートから対象の端末までの経路上に存在するハブの数を前記情報として取得する、請求項2に記載のホストコントローラ。 - 前記通信手段は、前記初期化処理において、特定のハブのポートを有効化する命令を発行し、
前記取得手段は、前記特定のハブのポートを有効化する命令に基づいて、当該ハブのポートに接続されている端末について、前記ホストポートからの経路上に存在するハブの数を取得する、請求項6に記載のホストコントローラ。 - 前記取得手段は、前記ホストポートに接続されている端末ごとに、前記ホストポートからの経路上に存在するハブの数をそれぞれ取得する、請求項6または7に記載のホストコントローラ。
- 前記取得手段は、前記ホストポートに接続されているそれぞれの端末について、前記ホストポートからの経路上に存在するハブの数の最大値を前記情報として取得する、請求項6または7に記載のホストコントローラ。
- 前記取得手段は、前記ホストポートからパケットが送出されてから、転送先の端末にて受信されるとともに、当該端末にて受信されたパケットに応じて送出された応答が前記ホストポートで受信されるまで、に要する時間を測定し、
前記スケジューリング手段は、転送先にパケットを送出してから、前記取得手段により測定された時間に応じた期間にわたって当該パケットに対する応答を待つように、スケジューリングを実施する、請求項1に記載のホストコントローラ。 - 前記取得手段は、同一の転送先について測定される複数の時間のうち、最小のものを測定結果として保持し、
転送先にパケットを送出してから当該パケットに対する応答を待つ期間は、前記取得手段による測定結果に、予め定められた期間を加算することで算出される、請求項10に記載のホストコントローラ。 - 前記取得手段は、前記ホストポートに接続されている端末ごとに、前記時間を測定する、請求項10または11に記載のホストコントローラ。
- 前記取得手段は、前記ホストポートに接続されているそれぞれの端末について測定された時間のうち最大のものを前記情報として取得する、請求項10または11に記載のホストコントローラ。
- ホストポートに接続されたバスを介して1または複数のノードと通信する機能を有するホストコントローラで実行されるプログラムであって、前記1または複数のノードは、バスの終端に位置する端末と、上位側のポートを1または複数のポートにカスケード接続するハブとの少なくとも一方を含み、前記プログラムは前記ホストコントローラに
予め定められた周期を有するフレームごとに1または複数のパケットを割り当てるステップと、
前記ホストポートからパケットが送出されてから、転送先の端末にて受信されるとともに、当該端末にて受信されたパケットに応じて送出された応答が前記ホストポートで受信されるまで、に要する時間の長さに関連付けられる情報を取得するステップと、
前記取得された情報に基づいて、1つのフレームに割り当てるパケットの数または間隔を調整するステップとを実行させ、
前記ホストコントローラは、前記1または複数のパケットの割り当てに従って、前記バスのデータ転送方向を時間的に切り替えることで双方向に通信を行なう、ホストコントローラで実行されるプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015247298A JP2017111729A (ja) | 2015-12-18 | 2015-12-18 | ホストコントローラおよびホストコントローラで実行されるプログラム |
US15/365,667 US20170177509A1 (en) | 2015-12-18 | 2016-11-30 | Host controller and program executed by host controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015247298A JP2017111729A (ja) | 2015-12-18 | 2015-12-18 | ホストコントローラおよびホストコントローラで実行されるプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017111729A true JP2017111729A (ja) | 2017-06-22 |
Family
ID=59066216
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015247298A Pending JP2017111729A (ja) | 2015-12-18 | 2015-12-18 | ホストコントローラおよびホストコントローラで実行されるプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20170177509A1 (ja) |
JP (1) | JP2017111729A (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032971A (zh) * | 2018-06-28 | 2018-12-18 | 山东超越数控电子股份有限公司 | 一种基于交换单元的服务器接口结构及管理方法 |
TWI668632B (zh) * | 2018-10-08 | 2019-08-11 | 新唐科技股份有限公司 | 控制方法 |
CN109799756B (zh) * | 2019-01-28 | 2024-04-16 | 上海太易检测技术有限公司 | 一种带有延时测量结构的级联重量分选系统 |
US11023402B2 (en) * | 2019-07-02 | 2021-06-01 | National Instruments Corporation | Switch pruning in a switch fabric bus chassis |
US11216404B2 (en) | 2019-08-05 | 2022-01-04 | Intel Corporation | Mechanism for device interoperability of switches in computer buses |
-
2015
- 2015-12-18 JP JP2015247298A patent/JP2017111729A/ja active Pending
-
2016
- 2016-11-30 US US15/365,667 patent/US20170177509A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20170177509A1 (en) | 2017-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2017111729A (ja) | ホストコントローラおよびホストコントローラで実行されるプログラム | |
US9009648B2 (en) | Automatic deadlock detection and avoidance in a system interconnect by capturing internal dependencies of IP cores using high level specification | |
JP2019523621A5 (ja) | ||
WO2017000822A1 (zh) | 一种直接内存访问的传输控制方法及装置 | |
JP2009508247A (ja) | バス調停に関する方法及びシステム | |
US9092365B2 (en) | Splitting direct memory access windows | |
JP2005182818A (ja) | オンチップバス | |
US10467179B2 (en) | Method and device for sharing PCIe I/O device, and interconnection system | |
JP2011505038A (ja) | チェーン化デバイスシステムにおいてパラメータを設定し待ち時間を決定する方法 | |
US9176917B2 (en) | SAS latency based routing | |
US11609793B2 (en) | Electronic apparatus determining GPUs in a network for effective data learning and method for controlling thereof | |
US10534563B2 (en) | Method and system for handling an asynchronous event request command in a solid-state drive | |
US8327055B2 (en) | Translating a requester identifier to a chip identifier | |
TW202101951A (zh) | 輕量橋接器電路以及用於多實體功能模擬的方法及物品 | |
US9104600B2 (en) | Merging direct memory access windows | |
CN115298656A (zh) | 用于调度可共享pcie端点设备的系统和方法 | |
KR20140071194A (ko) | 집합 통신 수행 방법 및 이를 이용한 집합 통신 시스템 | |
JP6146306B2 (ja) | I/oデバイス制御システムおよびi/oデバイス制御システムの制御方法 | |
US10417164B2 (en) | Synchronous transmission device and synchronous transmission method | |
JP5715458B2 (ja) | 情報処理システム、調停方法 | |
JP6328324B2 (ja) | 無線通信装置、無線通信方法及び無線通信プログラム | |
WO2024009633A1 (ja) | コントローラ、制御方法及びプログラム | |
JP4854598B2 (ja) | データ転送制御装置 | |
US10452579B2 (en) | Managing input/output core processing via two different bus protocols using remote direct memory access (RDMA) off-loading processing system | |
WO2012066746A1 (ja) | 情報処理装置 |