JP6542513B2 - Usb転送装置、usb転送システムおよびusb転送方法 - Google Patents

Usb転送装置、usb転送システムおよびusb転送方法 Download PDF

Info

Publication number
JP6542513B2
JP6542513B2 JP2014159112A JP2014159112A JP6542513B2 JP 6542513 B2 JP6542513 B2 JP 6542513B2 JP 2014159112 A JP2014159112 A JP 2014159112A JP 2014159112 A JP2014159112 A JP 2014159112A JP 6542513 B2 JP6542513 B2 JP 6542513B2
Authority
JP
Japan
Prior art keywords
data
transfer
usb
packet
buffer
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
JP2014159112A
Other languages
English (en)
Other versions
JP2016035721A (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.)
NEC Platforms Ltd
Original Assignee
NEC Platforms Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Platforms Ltd filed Critical NEC Platforms Ltd
Priority to JP2014159112A priority Critical patent/JP6542513B2/ja
Publication of JP2016035721A publication Critical patent/JP2016035721A/ja
Application granted granted Critical
Publication of JP6542513B2 publication Critical patent/JP6542513B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Systems (AREA)
  • Bus Control (AREA)

Description

本発明は、複数の装置間において、USB(Universal Serial Bus)伝送手段を介して受信したデータをメモリに転送する技術に関する。
USB規格は、USBホストとなるパーソナルコンピュータ(Personal Computer:PC)等と、USBデバイスとなる複数のPC周辺装置とを接続し、データ通信を行うために策定されたシリアルバスインタフェース規格である。
USBホスト(以下、単に「ホスト」と称する)およびUSBデバイス(以下、単に「デバイス」と称する)は、それぞれUSB規格によりデータの送受信を行うUSBコントローラと、CPU(Central Processing Unit)がデータ処理を行う際に使用するメインメモリとを備える。
ホストのUSBコントローラが、デバイスのUSBコントローラから受信したデータをメインメモリに転送する際、例えば、DMA(Direct Memory Access)が用いられる。このDMAの制御を司るコントローラ(以下、「DMAコントローラ」と称する)は、USBコントローラとメインメモリとの間のデータ転送において、CPUとは独立に、即ちCPUを介さずに直接データのやり取り(受け渡し)を行うことによってCPUの負荷の軽減を図っている。
このDMAによりデータ転送する場合、転送するデータ量が不明である場合がある。この場合、DMAコントローラが転送可能なデータ量が設定されて転送が開始されると共に、DMA転送が終了したときに、その旨をCPUに通知(転送終了割り込み)する必要がある。
この割り込みを受けると、CPUは、転送されたデータを用いて処理を行うと共に、必要に応じて再び転送を開始する指示を出す。
例えば、特許文献1には、CPUの負荷を増大させることなく、USB受信部がデータの受信を終了したときにDMA制御部の転送を自動的に終了するDMA転送装置が開示される。
図9は、例えば特許文献1に記載のようなDMA転送の動作を示すフローチャートである。ここでは、ホストのUSBコントローラがデバイスのUSBコントローラから受信したデータを、DMAコントローラがメインメモリにDMA転送する動作について説明する。まず、ホストのCPUは、USBコントローラに、デバイスからの転送を開始する指示を出す(S1)。ホストのUSBコントローラは、デバイスからUSBデータパケットを受信する(S2)。
ホストのUSBコントローラは、受信したデータパケットがショートパケット(またはNULLパケット)か否かを解析する(S3)。ここで、設定されたサイズ(USBコントローラでは、一般にはマックスパケットサイズ)より小さいパケットを、「ショートパケット」と称する。USBコントローラは、受信したデータパケットがショートパケット(またはNULLパケット)でなければ、DMAコントローラを介してDMA転送を実施する(S4)。
一方、受信したデータパケットがショートパケット(またはNULLパケット)である場合、USBコントローラは、DMAコントローラを介してDMA転送を実施する(S5)と共に、DMA転送が終了した旨をCPUに通知するために、割り込みハンドラをコールする(S6)。CPUは、その割り込みに応じて、メモリにDMA転送されたデータを用いて所定の処理を実行する(S7)。
他の関連技術として、特許文献2には、プロセッサとネットワークインタフェイスデバイスとの間のパケット受信処理におけるボトルネックを解消し、高速パケット処理が可能なネットワーク装置が開示される。
また、特許文献3には、複数のプロセッサを備えた情報処理装置において、それぞれのプロセッサにタスクを割り当ることにより、複数のタスクを並列処理したりパイプライン処理したりする技術が開示される。
また、特許文献4には、破損したパケットに対する認識を正しくし、より一層エラー耐性を向上させることができる通信制御装置が開示される。
また、特許文献5には、複数のバッファメモリに対する転送を並行に行えるUSBデバイスコントローラが開示される。
また、特許文献6には、十分なデータ転送速度を保証できるとともに、システムバスの占有時間の削減を可能としたダイレクトメモリアクセス装置が開示される。
特開2009−251771号公報 特開2008−129767号公報 特開2008−123140号公報 特開2007−096737号公報 特開2004−199402号公報 特開2004−145593号公報
上述のように、USBコントローラは、対向装置から受信したデータパケットがショートパケット(またはNULLパケット)か否かに基づいて、転送が終了したことを判断している。しかしながら、この場合、ホストと対向装置とのデータパケットの送受信に、ショートパケットが頻発するプロトコルを採用したシステムでは、CPUへの転送終了割り込みが頻発する。この結果、CPUが処理すべき割り込みハンドラが多くなるので、CPU処理が増大し、それにより転送性能が低下するという課題がある。
特許文献2に開示されるネットワーク装置では、プロセッサとネットワークインタフェイスデバイスとの間のパケット受信処理におけるボトルネックを解消している。しかしながら、このボトルネックを解消するマルチコアプロセッサの実装のためのハードウエアのコストが大幅に増加すると共に、制御の複雑化に伴いソフトウエアのコストも大幅に増加するという課題がある。
上記特許文献3乃至6には、コストの増加を抑えながら、装置間におけるデータ転送の性能を向上させる技術は開示されていない。
本願発明は、上記課題を鑑みてなされたものであり、コストの増加を抑えながら、装置間におけるデータ転送の性能を向上させることが可能なUSB転送装置等を提供することを主要な目的とする。
本発明の第1のUSB転送装置は、自装置を制御するプロセッサと、伝送手段を介して接続される対向装置との間でUSB転送するデータの転送可能な単位であるデータパケットを格納するデータバッファと、少なくとも前記データバッファに格納したデータパケットのサイズおよび前記データの転送終了を示す情報のいずれかを格納するステータスバッファとを含むバッファセットを有するUSBコントローラとを備え、前記USBコントローラは、前記ステータスバッファに前記転送終了を示す情報が格納される場合、前記プロセッサに転送終了割り込み信号を供給する。
本発明の第1のUSB転送システムは、自装置を制御するプロセッサと、伝送手段を介して接続されるデバイス装置との間でUSB転送するデータの転送可能な単位であるデータパケットを格納するデータバッファと、少なくとも前記データバッファに格納したデータパケットのサイズおよび前記データの転送終了を示す情報のいずれかを格納するステータスバッファとを含むバッファセットを有するUSBコントローラとを備え、前記USBコントローラは、前記ステータスバッファに前記転送終了を示す情報が格納される場合、前記プロセッサに転送終了割り込み信号を供給するホスト装置と、自装置を制御するプロセッサと、伝送手段を介して接続されるホスト装置との間でUSB転送するデータの転送可能な単位であるデータパケットを格納するデータバッファと、少なくとも前記データバッファに格納したデータパケットのサイズおよび前記データの転送終了を示す情報のいずれかを格納するステータスバッファとを含むバッファセットを有するUSBコントローラとを備え、前記USBコントローラは、前記ステータスバッファに前記転送終了を示す情報が格納される場合、前記プロセッサに転送終了割り込み信号を供給するデバイス装置とを備える。
本発明の第1のUSB転送方法は、伝送手段を介して接続される対向装置との間でUSB転送するデータの転送可能な単位であるデータパケットを格納するデータバッファと、少なくとも前記データバッファに格納したデータパケットのサイズおよび前記データの転送終了を示す情報のいずれかを格納するステータスバッファとを含むバッファセットを有するUSBコントローラが、前記ステータスバッファに前記転送終了を示す情報が格納される場合、自装置を制御するプロセッサに転送終了割り込み信号を供給する。
本願発明によれば、コストの増加を抑えながら、装置間におけるデータ転送の性能を向上させることができるという効果が得られる。
本発明の第1の実施形態に係るUSB転送システムの構成を示すブロック図である。 本発明の第1の実施形態に係るUSB転送システムにおけるホスト装置がデバイス装置からデータを受信するIN転送を実施する際の動作について説明するフローチャートである。 ショートパケットを受信したことを転送終了のトリガとする場合に転送終了割り込み信号が発生するタイミングを模式的に説明する図である。 本発明の第1の実施形態に係るUSB転送システムにおいて転送終了割り込み信号が発生するタイミングを模式的に説明する図である。 本発明の第2の実施形態に係るUSB転送システムにおいてショートパケットモードからIRQモードに移行する動作を示す図である。 本発明の第2の実施形態に係るUSB転送システムにおいてショートパケットモードからIRQモードに移行しない動作の一例を示す図である。 本発明の第2の実施形態に係るUSB転送システムにおいてショートパケットモードからIRQモードに移行しない動作の他の例を示す図である。 本発明の第3の実施形態に係るUSB転送システムの構成を示すブロック図である。 関連技術の転送システムの動作について説明するフローチャートである。
以下、本発明の実施形態について図面を参照して詳細に説明する。
第1の実施形態
図1は、本発明の第1の実施形態に係るUSB転送システム100の構成を示すブロック図である。USB転送システム100は、ホスト装置200とデバイス装置300とを備える。ホスト装置200とデバイス装置300は、互いにUSB伝送部(USBバス)260を介して接続され、データを送受信する。
ホスト装置200は、USBコントローラ210、DMAコントローラ(転送コントローラ)220、メインメモリ230、CPU240、記憶媒体250を備える。USBコントローラ210、DMAコントローラ220、メインメモリ230およびCPU240は、互いに内部バスによって接続される。
CPU240は、記録媒体250に格納されるコンピュータプログラムを読み出してメインメモリ230に書き込むと共に、そのコンピュータプログラムを実行することにより、ホスト装置200全体の動作を司る。記録媒体250は、ホスト装置200の内部に含まれてもよいし、ホスト装置200の外部に設けられてホスト装置200と接続されてもよい。
DMAコントローラ220は、USBコントローラ210がUSB伝送部を介して受信したデータを、CPU240を介さずにメインメモリ230に転送(DMA転送)する制御を行う。
USBコントローラ210は、対向装置(ここではデバイス装置300)のUSBコントローラ310との間でデータを送受信する制御を行う。USBコントローラ210は、所定サイズのパケット単位でデータを送受信する。以降、USBコントローラ210と対向装置との間で送受信されるパケット単位のデータを「データパケット」と称する。
USBコントローラ210は、データバッファとステータスバッファとを含むバッファセットを1または複数備える。図1には、USBコントローラ210は、データバッファとステータスバッファを2セット(2組)(すなわち、データバッファ211aとステータスバッファ211b、データバッファ212aとステータスバッファ212b)備えることを示すが、これに限らない。
データバッファ211a、212aは、対向装置から受信したデータを格納する。ステータスバッファ211b、212bは、それぞれデータバッファ211a、212aに格納されたデータのサイズ、または割り込みに関する情報を格納する。データバッファ211a、212aは、例えば512バイトのサイズであってよく、それらの組となるステータスバッファ211b、212bは、それぞれデータバッファ211a、212aのサイズより小さくてもよい。
デバイス装置300も、ホスト装置200と同様の構成を有する。すなわち、デバイス装置300は、USBコントローラ310、DMAコントローラ320、メインメモリ330、CPU340および記録媒体350を備える。USBコントローラ310、DMAコントローラ320、メインメモリ330およびCPU340は、互いに内部バスによって接続される。
CPU340は、記録媒体350に格納されるコンピュータプログラムを読み出してメインメモリ330に書き込むと共に、そのコンピュータプログラムを実行することにより、デバイス装置300全体の動作を司る。記録媒体350は、デバイス装置300の内部に含まれてもよいし、デバイス装置300の外部に設けられてデバイス装置300と接続されてもよい。
DMAコントローラ320は、USBコントローラ310がUSB伝送部260を介して受信したデータを、CPU340を介さずにメインメモリ330に転送(DMA転送)する制御を行う。
USBコントローラ310は、対向装置(ここではホスト装置200)のUSBコントローラ210との間でデータを送受信する制御を行う。
USBコントローラ310は、データバッファとステータスバッファとを含むバッファセットを1または複数備える。図1には、USBコントローラ310は、データバッファとステータスバッファを2セット(2組)(すなわち、データバッファ311aとステータスバッファ311b、データバッファ312aとステータスバッファ312b)備えることを示すが、これに限らない。
データバッファ311a、312aは、対向装置から受信したデータパケットを格納する。ステータスバッファ311b、312bは、それぞれデータバッファ311a、312aに格納されたデータのサイズ等を格納する。データバッファ311a、312aは、例えば512バイトのサイズであってよく、それらの組となるステータスバッファ311b、312bは、それぞれデータバッファ311a、312aのサイズより小さくてもよい。
USBコントローラ210、310に含まれるバッファは、FIFO(First In First Out)でデータを入出力する。以降の説明では、使用されるバッファセット(データバッファとステータスバッファ)は、USBコントローラ210、310にそれぞれ含まれる複数組のうちいずれでもよいが、例えばデータバッファ211aとステータスバッファ211b、およびデータバッファ311aとステータスバッファ311bについて説明する。
ここで、ステータスバッファ211b、311bについて説明する。ステータスバッファ211b、311bには、上述したように、それぞれの組となるデータバッファ211a、311aに格納されるデータのサイズ、または割り込みに関する情報が格納される。
割り込みに関する情報とは、対向装置にIRQ(Interrupt ReQuest)ハンドシェイクパケットを送信するとき、または対向装置からIRQハンドシェイクパケットを受信したときにセットされるフラグである。IRQハンドシェイクパケットは、ホスト装置200またはデバイス装置300が、対向装置(すなわちデバイス装置300またはホスト装置200)に対して、転送終了割り込み信号を供給するために送信するパケットである。
ホスト装置200またはデバイス装置300は、このIRQハンドシェイクパケットを受信すると、それぞれステータスバッファ211bまたは311bに、IRQハンドシェイクパケット送受信フラグ「オン」をセットする。ステータスバッファ211b、311bにフラグ「オン」がセットされている場合、USBコントローラ210およびUSBコントローラ310は、自装置が備えるCPU240およびCPU340に対して転送終了割り込み信号を供給する。
次に、ホスト装置200およびデバイス装置300の動作について説明する。ホスト装置200およびデバイス装置300は、それぞれ以下のように、対向装置との間で送受信したデータパケットを処理する。まず、デバイス装置300がホスト装置200からデータパケットを受信する動作について説明する。
デバイス装置300のUSBコントローラ310は、ホスト装置200からUSB伝送部260を介してデータパケットを受信した場合、そのデータパケットをデータバッファ311aに格納すると共に、データパケットのサイズをステータスバッファ311bに格納する。
USBコントローラ310は、IRQハンドシェイクパケットを受信した場合、ステータスバッファ311bに、IRQハンドシェイクパケット送受信フラグ「オン」を格納する。このとき、USBコントローラ310は、ステータスバッファ311bと組となるデータバッファ311aには何も格納しない。USBコントローラ310は、このように、受信したデータパケットまたはIRQハンドシェイクパケットに応じて、1または複数組備えるバッファセットのデータバッファおよびステータスバッファに、データパケットおよびデータサイズ(またはフラグ)を格納する。
USBコントローラ310は、複数組備えるバッファセットをシーケンシャルに解析する。そして、ステータスバッファ311bに「0」より大きいサイズが格納される場合、そのステータスバッファ311bの組となるデータバッファ311aに格納されるデータパケットを、メインメモリ330にDMA転送する指示を、DMAコントローラ320に供給する。DMAコントローラ320は、上記指示に応じて、データパケットをメインメモリ330にDMA転送する。
一方、USBコントローラ310は、バッファセットをシーケンシャルに解析した結果、ステータスバッファ311bにIRQハンドシェイクパケット送受信フラグ「オン」が格納される場合、CPU340に対して転送終了割り込み信号を供給する。CPU340は、転送終了割り込み信号を受けると、割り込みハンドラをコールすると共に、転送されたデータを用いてメインメモリ330にて処理を行う。
次に、デバイス装置300がホスト装置200にデータパケットを送信する動作について説明する。デバイス装置300のCPU340は、実行中のコンピュータプログラムからのデータの転送設定開始を示すトリガに応じて、USBコントローラ310にデータの転送設定を指示すると共に、DMAコントローラ320にDMA転送を指示する。DMAコントローラ320は、DMA転送の指示に応じて、メインメモリ330に格納されるデータを、転送可能なサイズのパケット単位でデータバッファ311aにDMA転送する。このとき、DMAコントローラ320は、データバッファ311aに格納したデータのサイズを、データバッファ311bに格納する。また、CPU340は、実行中のコンピュータプログラムから割り込みを発生させるトリガを読み出すと、ステータスバッファ311bにIRQハンドシェイクパケット送受信フラグ「オン」を格納する。
USBコントローラ310は、ホスト装置200のUSBコントローラ210からINACKパケットを受信すると、複数組備えるバッファセットをシーケンシャルに解析する。INACKパケットは、データの転送要求を示す情報である。そして、USBコントローラ310は、ステータスバッファ311bに「0」より大きいサイズが格納される場合は、そのステータスバッファ311bに対応するデータバッファ311aに格納されるデータパケットをホスト装置200に送信する。一方、USBコントローラ310は、ステータスバッファ311bにIRQハンドシェイクパケット送受信フラグ「オン」が格納される場合、IRQハンドシェイクパケットをホスト装置200に送信する。
なお、USBコントローラ310は、ホスト装置200のUSBコントローラ210からINACKパケットを受信した際に、データの転送設定を完了していない場合、USBの仕様に従ってNAKパケットをホスト装置200に送信する。ホスト装置200は、NAKパケットを受信すると、再びINACKパケットをデバイス装置300に送信する。この手順を繰り返すことにより、ホスト装置200は、デバイス装置300における転送設定が完了するのを待機する。
次に、ホスト装置200がデバイス装置300からデータを受信する動作について説明する。ホスト装置200は、まず、USBコントローラ210からINACKパケットを送信する。INACKパケットは、データの転送要求を示す情報である。INACKパケットに応じて、USBコントローラ210は、デバイス装置300からデータパケットを受信すると、受信したデータパケットをデータバッファ211aに格納すると共に、そのデータパケットのサイズをステータスバッファ211bに格納する。
一方、USBコントローラ210は、デバイス装置300からIRQハンドシェイクパケットを受信した場合、ステータスバッファ211bに、IRQハンドシェイクパケット送受信フラグ「オン」を格納する。このとき、USBコントローラ210は、ステータスバッファ211bの組となるデータバッファ211aには何も格納しない。USBコントローラ210は、このように、受信したデータパケットまたはIRQハンドシェイクパケットに応じて、データバッファおよびステータスバッファに、データおよびデータサイズ(またはフラグ)を格納する。
USBコントローラ210は、複数組備えるバッファセットをシーケンシャルに解析する。そして、ステータスバッファ211bに「0」より大きいサイズが格納される場合は、そのステータスバッファ211bの組となるデータバッファ211aに格納されるデータをメインメモリ230にDMA転送する指示を、DMAコントローラ220に送出する。DMAコントローラ220は、上記指示に応じて、データバッファ211aに格納されるデータをメインメモリ230にDMA転送する。
一方、USBコントローラ210は、バッファセットをシーケンシャルに解析した結果、ステータスバッファ2にIRQハンドシェイクパケット送受信フラグ「オン」が格納される場合、CPU240に対して転送終了割り込み信号を供給する。CPU240は、転送終了割り込み信号を受けると、割り込みハンドラをコールすると共に、転送されたデータを用いてメインメモリ230にて処理を行う。
次に、ホスト装置200がデバイス装置300にデータを送信する動作について説明する。CPU240は、実行中のコンピュータプログラムからデータの送信指示に応じて、USBコントローラ210にデータ送信を指示すると共に、DMAコントローラ220にDMA転送を指示する。DMAコントローラ220は、DMA転送指示に応じて、メインメモリ230に格納されるデータを、転送可能なサイズのパケット単位でデータバッファ211aにDMA転送する。このとき、DMAコントローラ220は、データバッファ211aに格納したデータのサイズを、組となるステータスバッファ211bに格納する。また、CPU240は、実行中のコンピュータプログラムからの割り込みを発生させるトリガを読み出すと、ステータスバッファ211bにIRQハンドシェイクパケット送受信フラグ「オン」を格納する。
USBコントローラ210は、複数組備えるバッファセットをシーケンシャルに解析する。そして、ステータスバッファ211bに「0」より大きいサイズが格納される場合は、そのステータスバッファ211bの組となるデータバッファ211aに格納されるデータをデバイス装置300に送信する。一方、USBコントローラ210は、ステータスバッファ211aにIRQハンドシェイクパケット送受信フラグ「オン」が格納される場合、IRQハンドシェイクパケットをデバイス装置300に送信する。
以上のように、ホスト装置200とデバイス装置300は、それぞれ送受信したデータパケットまたはIRQハンドシェイクパケットに応じた動作を行う。
次に、ホスト装置200およびデバイス装置300との間のデータ送受信の動作について、図2に示すフローチャートを参照して説明する。図2は、ホスト装置200がデバイス装置300からデータを受信するIN転送を実施する際の動作について説明するフローチャートである。
図2に示すように、ホスト装置200のCPU240は、実行中のコンピュータプログラムからのデータの転送開始を示すトリガに応じて、USBコントローラ210に対して、デバイス装置300に対する転送開始指示を送る(S401)。すなわち、USBコントローラ210は、デバイス装置300にINACKパケットを送信することを指示する。USBコントローラ210は、上記指示に応じて、INACKパケットをデバイス装置300に送信する。
デバイス装置300は、受信したINACKパケットに応じて、USBコントローラ310のデータバッファ311aまたはステータスバッファ311bに格納されるデータパケットまたはIRQハンドシェイクパケットをUSBコントローラ210に送信する。
USBコントローラ210は、デバイス装置300から送信されたパケットを受信する(S402)。USBコントローラ210は、上述したように、受信したデータパケットをデータバッファ211aに格納すると共に、格納したデータパケットのサイズをステータスバッファ211bに格納する。USBコントローラ210は、デバイス装置300からIRQハンドシェイクパケットを受信した場合、ステータスバッファ211bにIRQハンドシェイクパケット送受信フラグ「オン」を格納する。
USBコントローラ210は、複数組備えたバッファセットを解析する(S403)。ステータスバッファ211bに「0」より大きいサイズが格納される場合、USBコントローラ210は、そのステータスバッファ211bの組となるデータバッファ211aにデータパケットが格納されると判断する。DMAコントローラ220は、上記データバッファ211aに格納されるデータパケットを、メインメモリ330にDMA転送する(S404)。
一方、ステータスバッファ211bにIRQハンドシェイクパケット送受信フラグ「オン」が格納される場合、USBコントローラ210は、CPU240に対して転送終了割り込み信号を供給する。CPU240は、転送終了割り込み信号を受けると、割り込みハンドラをコールする(S405)と共に、転送されたデータを用いてメインメモリ230にて処理を行う(S406)。続いて、CPU240は、実行中のコンピュータプログラムからのデータの転送開始を示すトリガに応じて、再びデバイス装置300に転送開始指示を送ってもよい。
以上のように、ホスト装置200は、デバイス装置300から転送されたデータをメインメモリ230に転送すると共に、転送終了に応じてCPU240に転送終了割り込み信号を供給する。
なお、図2は、ホスト装置200がデバイス装置300からデータを受信するIN転送の動作を示したが、ホスト装置200がデバイス装置300にデータを送信するOUT転送の際も、同様である。すなわち、デバイス装置300のUSBコントローラ310は、IRQハンドシェイクパケットを受信すると、CPU340に転送割り込み終了信号を供給する。
図3および図4は、転送終了割り込み信号が発生するタイミングを模式的に説明する図である。図3は、上記特許文献1に記載されるようなショートパケットを受信したことを転送終了のトリガとする場合の転送終了割り込みのタイミングを示す図である。図4は、本第1の実施形態に係るUSB転送システム100における転送終了割り込みのタイミングを示す図である。
図4に示すように、本第1の実施形態に係るUSB転送システム100では、IRQハンドシェイクパケットを受信したことに応じてUSBコントローラ210がCPU240に転送終了割り込み信号を供給する。したがって、本第1の実施形態に係るUSB転送システム100では、図3に示すようなショートパケットを受信したことを転送終了のトリガとする場合よりも、割り込みの発生回数が削減される。
以上のように、本第1の実施形態によれば、ホスト装置200およびデバイス装置300のUSBコントローラ210、310は、1または複数組のバッファセットを備え、対向装置からIRQハンドシェイクパケットを受信すると、ステータスバッファ211b、311bにIRQハンドシェイクパケット送受信フラグ「オン」を格納する。USBコントローラ210、310は、このフラグ「オン」に応じて、CPU240、340に転送終了割り込み信号を供給する。
上記構成を採用することにより、本第1の実施形態によれば、CPU240、340に対する転送終了割り込みの発生回数を削減することができるので、CPU処理を削減できると共に、装置間におけるデータ転送の性能を向上させることができるという効果が得られる。また、マルチコアプロセッサ等のハードウエアの実装は不要であるので、コストの増加を抑えながら、装置間におけるデータ転送の性能を向上させることができるという効果が得られる。
第2の実施形態
次に、上述した第1の実施形態を基礎とする第2の実施形態について説明する。以下の説明では、第1の実施形態と同様の構成については同じ参照番号を付与することにより、重複する説明は省略する。
第2の実施形態では、上記第1の実施形態において説明したホスト装置200およびデバイス装置300が備えるUSBコントローラ210、310が、2つの割り込みモードを有する構成について説明する。すなわち、USBコントローラ210、310は、ショートパケットの受信に応じてCPU240、340に転送終了割り込み信号を供給するショートパケットモードと、第1の実施形態において説明したIRQハンドシェイクパケットの受信に応じてCPU240、340に転送終了割り込み信号を供給するIRQモードとを有する。
USBコントローラ210、310は、USB転送システム100の起動の際にはショートパケットモードであり、互いに以下のようにネゴシエーションに成功すると、IRQモードに移行する。
図5は、USBコントローラ210、310が、互いにネゴシエーションに成功すると共に、ショートパケットモードからIRQモードに移行する動作について説明する図である。図5に示すように、USB転送システム100が起動すると、ホスト装置200のUSBコントローラ210は、IRQ_ENABLEハンドシェイクパケットをデバイス装置300に送信する。IRQ_ENABLEハンドシェイクパケットは、IRQハンドシェイクパケットに対応する機能の有無を問い合わせる情報である。IRQハンドシェイクパケットに対応する機能とは、対向装置に、転送終了割り込みを発生するためにIRQハンドシェイクパケットを送信する機能、およびIRQハンドシェイクパケットを受信するとCPUに転送終了割り込み信号を供給する機能である。
デバイス装置300のUSBコントローラ310は、IRQ_ENABLEハンドシェイクパケットを受信すると、それをステータスバッファ311bに格納する。USBコントローラ310は、ステータスバッファ311bを解析し、IRQ_ENABLEハンドシェイクパケットが格納される場合は、その応答としてIRQ_ACKハンドシェイクパケットをホスト装置200に送信する。ホスト装置200のUSBコントローラ210は、初期化処理のためのSetAddressリクエストをUSBコントローラ310に送信する。
デバイス装置300のUSBコントローラ310は、IRQ_ENABLEハンドシェイクパケットの受信に応じてIRQモードに移行する。ホスト装置200のUSBコントローラ210は、IRQ_ACKハンドシェイクパケットの受信に応じてIRQモードに移行する。以上のように、ホスト装置200とデバイス装置300は、共にIRQハンドシェイクパケットに対応する機能を有する場合、ショートパケットモードからIRQモードに移行することができる。
図6は、USBコントローラ210、310との間でネゴシエーションが成立せず、IRQモードに移行しない動作の例について説明する図である。図6に示す例では、ホスト装置200のUSBコントローラ210は、IRQハンドシェイクパケットに対応する機能を有するが、デバイス装置300のUSBコントローラ310は当該機能を有しない場合について説明する。
ホスト装置200のUSBコントローラ210は、IRQ_ENABLEハンドシェイクパケットをデバイス装置300のUSBコントローラ310に送信する。USBコントローラ310は、IRQハンドシェイクパケットに対応する機能を有していないので、IRQ_ENABLEハンドシェイクパケットに応答しない。
ホスト装置200のUSBコントローラ210は、一定時間IRQ_ACKハンドシェイクパケットを受信できない場合、USBコントローラ310はIRQハンドシェイクパケットに対応する機能を有しないと判断する。そして、USBコントローラ210は、ショートパケットモードにて、初期化処理のためのSetAddressリクエストをUSBコントローラ310に送信する。
このように、USBコントローラ310がIRQハンドシェイクパケットに対応する機能を有しない場合でも、USB転送システム100は、ショートパケットに応じてCPUへの転送終了割り込み信号を供給することができる。
図7は、USBコントローラ210、310との間でネゴシエーションが成立せず、IRQモードに移行しない動作の他の例について説明する図である。図7に示す例では、デバイス装置300のUSBコントローラ310は、IRQハンドシェイクパケットに対応する機能を有するが、ホスト装置200のUSBコントローラ210は当該機能を有しない場合について説明する。
ホスト装置200のUSBコントローラ210は、IRQハンドシェイクパケットに対応する機能を有しないので、IRQ_ENABLEハンドシェイクパケットを送信せず、初期化処理のためのSetAddressリクエストをUSBコントローラ310に送信する。USBコントローラ210とUSBコントローラ310は、互いにショートパケットモードで動作する。
このように、USBコントローラ210がIRQハンドシェイクパケットに対応する機能を有しない場合でも、USB転送システム100は、ショートパケットに応じてCPUへの転送終了割り込み信号を供給することができる。
以上のように、本第2の実施形態によれば、USBコントローラ210とUSBコントローラ310は、CPU240、340への転送終了割り込みに関し、ショートパケットモードとIRQモードとを有する。USBコントローラ210とUSBコントローラ310は、互いにIRQ_ENABLEハンドシェイクパケットおよびIRQ_ACKハンドシェイクパケットを介してネゴシエーションが成立すると、ショートパケットモードからIRQモードに移行する。また、上記ネゴシエーションが成立しない場合、USBコントローラ210とUSBコントローラ310は、ショートパケットの受信に応じてCPUへの転送終了割り込み信号を供給する。
上記構成を採用することにより、本第2の実施形態によれば、USB転送システム100において、ホスト装置200およびデバイス装置300のいずれかがIRQハンドシェイクパケットに対応する機能を有さない場合でも、ショートパケットの受信に基づいて転送終了割り込みをすることで互いにUSB転送を実施できるので、高い汎用性を有するという効果が得られる。
第3の実施形態
上記実施形態を包含する本発明の第3の実施形態について説明する。図8は、本発明の第3の実施形態に係るUSB転送装置500の構成を示すブロック図である。USB転送装置500は、プロセッサ510とUSBコントローラ520とを備える。
プロセッサ510は、自装置を制御する。USBコントローラ520は、伝送手段を介して接続される対向装置との間でUSB転送するデータの転送可能な単位であるデータパケットを格納するデータバッファと、少なくともデータバッファに格納したデータパケットのサイズおよびデータの転送終了を示す情報のいずれかを格納するステータスバッファとを含むバッファセットを有する。
USBコントローラ520は、ステータスバッファに転送終了を示す情報が格納される場合、プロセッサに転送終了割り込み信号を供給する。
上記構成を採用することにより、本第3の実施形態によれば、転送終了を示す情報に基づいてプロセッサに転送終了割り込み信号を供給するので、コストの増加を抑えながら、装置間におけるデータ転送の性能を向上させることができるという効果が得られる。
100 USB転送システム
200 ホスト装置
210、310、520 USBコントローラ
211a、212a、311a、312a データバッファ
211b、212b、311b、312b ステータスバッファ
220、320 DMAコントローラ
230、330 メインメモリ
240、340 CPU
250、350 記録媒体
260 USB伝送部
300 デバイス装置
500 USB転送装置
510 プロセッサ

Claims (7)

  1. 自装置を制御するプロセッサと、
    伝送手段を介して接続される対向装置との間でUSB転送するデータの転送可能な単位であるデータパケットを格納するデータバッファと、少なくとも前記データバッファに格納したデータパケットのサイズおよび割り込みに関する情報のいずれかを格納するステータスバッファとを含むバッファセットを有するUSBコントローラとを備え、
    前記USBコントローラは、
    前記対向装置に前記データパケットを送信する場合、前記プロセッサの指示に応じて、転送終了割り込み信号を供給するためのパケットを前記対向装置に送信し、
    前記対向装置から前記データパケットを受信する場合、前記転送終了割り込み信号を供給するためのパケットを前記対向装置から受信すると、前記ステータスバッファに前記割り込みに関する情報を格納し、前記プロセッサに転送終了割り込み信号を供給する
    USB転送装置。
  2. 前記USBコントローラは、
    前記対向装置から前記データパケットを受信した場合、当該データパケットを前記バッファセットに含まれる前記データバッファに格納すると共に、当該データパケットのサイズを前記ステータスバッファに格納し、前記転送終了割り込み信号を供給するためのパケットを受信した場合、前記データバッファに前記データパケットを格納せず、前記ステータスバッファに前記割り込みに関する情報を格納する
    請求項1記載のUSB転送装置。
  3. 前記プロセッサが前記データを用いた処理に使用するメインメモリと、
    前記データバッファから前記メインメモリへの前記データの転送を制御する転送コントローラとをさらに備え、
    前記USBコントローラは、
    前記ステータスバッファに前記データパケットのサイズが格納される場合、前記データバッファに格納される前記データパケットを、前記メインメモリに転送することを、前記転送コントローラに指示し、
    前記転送コントローラは、前記指示に応じて、前記データパケットを前記メインメモリに転送する
    請求項1または請求項2記載のUSB転送装置。
  4. 前記USBコントローラは、
    前記対向装置から送信される前記転送終了割り込み信号を供給するためのパケット、または所定のサイズより小さいサイズを有するショートパケットに応じて、前記プロセッサに前記転送終了割り込み信号を供給する
    請求項1ないし請求項3のいずれか1項記載のUSB転送装置。
  5. 前記USBコントローラは、
    前記対向装置に、前記転送終了割り込み信号を供給するためのパケットに応じて前記プロセッサに前記転送終了割り込み信号を供給する機能の有無を問い合わせ、有を示す応答を受けた場合に、前記割り込みに関する情報に応じて前記プロセッサに前記転送終了割り込み信号を供給し、有を示す応答を受けない場合に、前記ショートパケットに応じて、前記プロセッサに前記転送終了割り込み信号を供給する
    請求項4記載のUSB転送装置。
  6. 請求項1ないし請求項5のいずれか1項記載のUSB転送装置であるホスト装置と、
    前記ホスト装置と伝送手段を介して接続され、請求項1ないし請求項5のいずれか1項記載のUSB転送装置であるデバイス装置と
    を備えたUSB転送システム。
  7. 伝送手段を介して接続される対向装置との間でUSB転送するデータの転送可能な単位であるデータパケットを格納するデータバッファと、少なくとも前記データバッファに格納したデータパケットのサイズおよび割り込みに関する情報のいずれかを格納するステータスバッファとを含むバッファセットを有するUSBコントローラは、
    前記対向装置に前記データパケットを送信する場合、自装置を制御するプロセッサの指示に応じて、転送終了割り込み信号を供給するためのパケットを前記対向装置に送信し、
    前記対向装置から前記データパケットを受信する場合、前記転送終了割り込み信号を供給するためのパケットを前記対向装置から受信すると、前記ステータスバッファに前記割り込みに関する情報を格納し、前記プロセッサに転送終了割り込み信号を供給する
    USB転送方法。
JP2014159112A 2014-08-05 2014-08-05 Usb転送装置、usb転送システムおよびusb転送方法 Active JP6542513B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014159112A JP6542513B2 (ja) 2014-08-05 2014-08-05 Usb転送装置、usb転送システムおよびusb転送方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014159112A JP6542513B2 (ja) 2014-08-05 2014-08-05 Usb転送装置、usb転送システムおよびusb転送方法

Publications (2)

Publication Number Publication Date
JP2016035721A JP2016035721A (ja) 2016-03-17
JP6542513B2 true JP6542513B2 (ja) 2019-07-10

Family

ID=55523523

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014159112A Active JP6542513B2 (ja) 2014-08-05 2014-08-05 Usb転送装置、usb転送システムおよびusb転送方法

Country Status (1)

Country Link
JP (1) JP6542513B2 (ja)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003308290A (ja) * 2002-04-12 2003-10-31 Kawasaki Microelectronics Kk データ受信装置
JP2004133537A (ja) * 2002-10-08 2004-04-30 Canon Inc データ転送方法及びデータ転送装置及び印刷方法及び印刷装置及びデータ転送装置の制御プログラム及び記憶媒体
JP2005182505A (ja) * 2003-12-19 2005-07-07 Kyocera Mita Corp データ転送制御装置および画像形成装置
JP2008158572A (ja) * 2006-12-20 2008-07-10 Canon Inc データ記憶装置
JP4985599B2 (ja) * 2008-09-18 2012-07-25 Necエンジニアリング株式会社 Dma転送制御システム
JP2011138284A (ja) * 2009-12-28 2011-07-14 Brother Industries Ltd 表示装置及び表示装置のプログラム
JP2014052981A (ja) * 2012-09-10 2014-03-20 Renesas Electronics Corp Usbペリフェラル装置

Also Published As

Publication number Publication date
JP2016035721A (ja) 2016-03-17

Similar Documents

Publication Publication Date Title
US20200167304A1 (en) Methods and devices for extending usb 3.0-compliant communication over an extension medium
WO2016127552A1 (zh) 一种直接内存存取dma控制器及数据传输的方法
US8402180B2 (en) Autonomous multi-packet transfer for universal serial bus
US20150134867A1 (en) Device and method for interrupt coalescing
CN110688333A (zh) 一种基于pcie的dma数据传输系统及方法
US20160077986A1 (en) Electronic apparatus providing real-time switching and sharing of usb electronic devices among hosts
US7058747B2 (en) Bus system and bus interface for connection to a bus
US20110047303A1 (en) Data transfer control device and data transfer control method
JP6542513B2 (ja) Usb転送装置、usb転送システムおよびusb転送方法
US7043589B2 (en) Bus system and bus interface
TWI789122B (zh) 指令轉換系統以及指令轉換方法
JP2008502977A (ja) バス・コントローラのための割り込み方式
JP4104939B2 (ja) マルチプロセッサシステム
US11709791B2 (en) Techniques for deconflicting USB traffic in an extension environment
CN109992560B (zh) 一种通信方法及通信系统
TW201337573A (zh) 管線排程的控制方法及其控制模組
US20120246263A1 (en) Data transfer apparatus, data transfer method, and information processing apparatus
US10452579B2 (en) Managing input/output core processing via two different bus protocols using remote direct memory access (RDMA) off-loading processing system
WO2022124083A1 (ja) 通信装置、通信方法、およびプログラム
JP5587530B2 (ja) エンジン・プロセッサ連携システム及び連携方法
JP2009251771A (ja) Dma転送装置
TWI411922B (zh) 通用串列匯流排主機控制器和通用串列匯流排主機控制方法
JP2002288115A (ja) Usbコントローラ
JP2021036649A5 (ja)
KR100290092B1 (ko) 지연 응답신호 처리 입출력 버스 인터페이스 장치

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170710

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170718

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180821

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190319

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190510

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190521

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190613

R150 Certificate of patent or registration of utility model

Ref document number: 6542513

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150