CN115203102A - 预测usb扩展环境中的空闲缓冲区空间 - Google Patents
预测usb扩展环境中的空闲缓冲区空间 Download PDFInfo
- Publication number
- CN115203102A CN115203102A CN202210367575.1A CN202210367575A CN115203102A CN 115203102 A CN115203102 A CN 115203102A CN 202210367575 A CN202210367575 A CN 202210367575A CN 115203102 A CN115203102 A CN 115203102A
- Authority
- CN
- China
- Prior art keywords
- usb
- dfp
- data
- data packets
- ufp
- 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
- 238000000034 method Methods 0.000 claims abstract description 48
- 239000002131 composite material Substances 0.000 claims abstract description 43
- 230000004044 response Effects 0.000 claims abstract description 33
- 238000004891 communication Methods 0.000 claims abstract description 19
- 238000011144 upstream manufacturing Methods 0.000 claims abstract description 19
- 230000009471 action Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 15
- 230000005540 biological transmission Effects 0.000 description 9
- 230000007423 decrease Effects 0.000 description 6
- 239000000835 fiber Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 241000699666 Mus <mouse, genus> Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
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/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- 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/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0042—Universal serial bus [USB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Systems (AREA)
Abstract
提供了一种经由非USB扩展介质管理主机设备与USB设备之间的通信的方法。面向下游的端口设备(DFP设备)经由该非USB扩展介质从面向上游的端口设备(UFP设备)接收包括第一缓冲区计数的数据请求分组。该DFP设备基于由该DFP设备跟踪的空闲缓冲区计数来确定要从该USB设备请求的数据分组的数量,该空闲缓冲区计数表示该UFP设备上可用的缓冲区空间量。该DFP设备生成包括第二缓冲区计数的合成数据请求分组,该第二缓冲器计数是基于所确定的要从该USB设备请求的数据分组的数量的。该DFP设备从该USB设备接收一组响应于该合成数据请求分组的数据分组,并且将该组数据分组传输到该UFP设备。
Description
相关申请的交叉引用
本申请要求于2021年4月12日提交的临时申请号63/173832的权益,该临时申请的全部披露内容出于所有目的通过引用并入本文。
背景技术
USB是外围接口,其用于附接各种计算设备,如个人计算机、数字电话线、监视器、调制解调器、鼠标、打印机、扫描仪、游戏控制器、键盘、存储设备等。定义USB的规范(例如,2000年4月,Intel等人,Universal Serial Bus Specification[通用串行总线规范],修订版2.0;于2008年11月更新为修订版3.0;2013年7月以通用串行总线3.1规范修订版1.0发布;2017年9月22日以通用串行总线3.2规范修订版1.0发布,以及向后兼容的后续更新和修改(包括但不限于串行总线4.0规范)以下统称为“USB规范”,该术语可以包括未来的修改和修订)是非专有的并且由被称为USB论坛(USB Forum)的开放行业组织管理。USB规范建立了为符合USB标准而必须满足的基本标准。本领域的普通技术人员将从USB规范中认识到本文中的许多术语。除非另有说明,否则这些术语在本文中的使用方式与其在USB规范中的使用方式类似。
在USB规范的修订版3.2下,提供了使用5Gbps(第1代)或10Gbps(第2代)信号传输速率的超高速(SuperSpeed)连接。虽然该规范没有规定任何特定的最大电缆长度,但实际上,时序规定和信号传输技术要求用于主机与设备之间的超高速连接的常规铜电缆至多为3米长,以正确支持超高速连接。因此,需要新的技术来任选地允许将超高速USB设备扩展到与其所耦合的主机相距更远的距离,使得可以在主机与USB设备之间传播超高速USB分组。
发明内容
在一些实施例中,提供了一种经由非USB扩展介质管理主机设备与USB设备之间的通信的方法。面向下游的端口设备(DFP设备)经由该非USB扩展介质从面向上游的端口设备(UFP设备)接收数据请求分组。该DFP设备确定要从该USB设备请求的数据分组的数量。该要请求的数据分组的数量是基于该DFP设备跟踪的空闲缓冲区计数的,以表示该UFP设备上可用的缓冲区空间量。该DFP设备生成合成数据请求分组。该合成数据请求分组包括基于所确定的要从该USB设备请求的数据分组数量的缓冲区计数。该DFP设备从该USB设备接收一组响应于该合成数据请求分组的数据分组。该DFP设备经由该非USB扩展介质将该组数据分组传输到该UFP设备。
在一些实施例中,提供了一种面向下游的端口设备(DFP设备)。该DFP设备包括被配置为通信地耦合到USB设备的USB物理层接口、被配置为通信地耦合到非USB扩展介质的远程接口、以及存储空闲缓冲区计数的存储器。该面向下游的端口设备还包括逻辑,该逻辑响应于由该DFP设备执行而使该DFP设备执行包括以下各项的动作:经由该远程接口从面向上游的端口设备(UFP设备)接收数据请求分组;确定要从该USB设备请求的数据分组的数量,其中,该要请求的数据分组的数量是基于该空闲缓冲区计数的,并且其中,该空闲缓冲区计数由该DFP设备跟踪以表示该UFP设备上可用的缓冲区空间量;生成合成数据请求分组,其中,该合成数据请求分组包括缓冲区计数,并且其中,该缓冲区计数是基于所确定的要从该USB设备请求的数据分组的数量的;经由该USB物理层接口从该USB设备接收一组响应于该合成数据请求分组的数据分组;以及经由该远程接口将该组数据分组传输到该UFP设备。
在一些实施例中,提供了一种非暂态计算机可读介质,其上存储有计算机可执行指令。这些指令响应于由面向下游的端口设备(DFP设备)执行而使该DFP设备执行用于管理主机设备与USB设备之间经由非USB扩展介质的通信的动作。这些动作包括:由该DFP设备经由该非USB扩展介质从面向上游的端口设备(UFP设备)接收数据请求分组;由该DFP设备确定要从该USB设备请求的数据分组的数量,其中,该要请求的数据分组的数量是基于空闲缓冲区计数的,并且其中,该空闲缓冲区计数由该DFP设备跟踪以表示该UFP设备上可用的缓冲区空间量;由该DFP设备生成合成数据请求分组,其中,该合成数据请求分组包括缓冲区计数,并且其中,该缓冲区计数是基于所确定的要从该USB设备请求的数据分组的数量的;由该DFP设备从该USB设备接收一组响应于该合成数据请求分组的数据分组;以及由该DFP设备经由该非USB扩展介质将该组数据分组传输到该UFP设备。
附图说明
为了便于识别对任何特定要素或行为的讨论,附图标记中的一个或多个最高位数字是指首次介绍该要素的图号。
图1是展示了根据本披露内容的各个方面的用于扩展USB通信的系统的非限制性示例实施例的框图。
图2是展示了图1所展示的上游USB扩展设备和下游USB扩展设备的进一步细节的框图。
图3是展示了根据本披露内容的各个方面的端口设备的非限制性示例实施例的框图。
图4是展示了根据本披露内容的各个方面的用于补偿主机设备与USB设备之间通过扩展介质进行的通信中的等待时间的技术的非限制性示例实施例的序列图。
图5是展示了根据本披露内容的各个方面的在USB扩展环境中传输数据的方法的非限制性示例实施例的流程图。
图6是展示了根据本披露内容的各个方面的在USB扩展环境中传输数据的方法的非限制性示例实施例的流程图。
图7A至图7C是展示了根据本披露内容的各个方面的执行图6中所展示方法的非限制性示例实施例的序列图。
具体实施方式
图1是展示了根据本披露内容的各个方面的用于扩展USB通信的系统100的非限制性示例实施例的框图。系统100包括主机设备102和USB设备108。传统上,主机设备102和USB设备108将会经由USB电缆直接连接,并且将会经由符合USB规范(如USB 1.0、USB 1.1、USB2.0、USB 3.0或USB 3.1)的协议彼此直接通信。如上文所讨论的,由于USB规范的时序要求,这种连接将会受限于主机设备102与USB设备108之间的短距离。
主机设备102可以是包含USB主机控制器的任何类型的计算设备。合适的主机设备102的一些示例可以包括但不限于台式计算机、膝上型计算机、平板计算设备、服务器计算机、机顶盒、用于汽车的音频头单元、嵌入式主机等。同样,USB设备108可以是能够经由USB协议与USB主机控制器通信的任何类型的设备。图1中所展示的示例是网络摄像头,但是合适的USB设备108的其他一些示例可以包括但不限于人机接口设备(如键盘或鼠标)、大容量存储设备(如闪存驱动器或外部硬盘驱动器)、具有USB功能的医疗设备、打印机、USB集线器、无线控制器等。
在本系统100中,主机设备102经由USB协议连接到上游USB扩展设备104(也称为面向上游的端口设备或UFP设备),并且USB设备108经由USB协议连接到下游USB扩展设备106(也称为面向下游的端口设备或DFP设备)。UFP设备104与DFP设备106经由扩展介质110(如网络)通信地耦合,该扩展介质可以将主机设备102与USB设备108之间的距离增加到超过USB规范所支持的距离。扩展介质110和其上的通信可以包括任何合适的联网技术(如以太网、蓝牙、WiFi、WiMax、互联网、光纤点对点传输等)和任何合适的通信介质(如经由物理电缆、经由光纤电缆、经由无线频谱等)。
在一些实施例中,UFP设备104和DFP设备106彼此的距离可能恰好比短USB要求距离更近,和/或可以通过电缆而不是经由网络直接连接,但是保留克服主机设备102与USB设备108之间增加的等待时间的能力,该增加的等待时间是由于使用不符合USB规范的扩展介质110而引入的。
由UFP设备104和DFP设备106提供的一个特征是该UFP设备和该DFP设备对主机设备102和USB设备108隐藏了扩展介质110的存在。换言之,UFP设备104和DFP设备106处置通过扩展介质110进行的通信并且补偿由此引入的任何附加等待时间,但是主机设备102和USB设备108表现得好像它们经由符合USB规范的连接来直接连接一样。因此,主机设备102和USB设备108可以经由UFP设备104和DFP设备106进行通信,而无需在主机设备102或USB设备108上重新配置任何非标准软件或硬件。
图2是展示了图1所展示的UFP设备104和DFP设备106的进一步细节的框图。UFP设备104包括面向上游的端口202,并且DFP设备106包括面向下游的端口204。如本文所用,术语“面向上游的端口”和对应的首字母缩略词“UFP”可以可互换地使用,术语“面向下游的端口”和对应的首字母缩略词“DFP”也可以可互换地使用。同样,因为上游USB扩展设备104包括面向上游的端口202,所以上游USB扩展设备104也可以被称为“UFP设备”,并且因为下游USB扩展设备106包括面向下游的端口204,所以下游USB扩展设备106也可以被称为“DFP设备”。
UFP设备104至少被配置为使用面向上游的端口202经由符合USB标准的协议与主机设备102通信,并且经由扩展介质110与DFP设备106交换消息和USB总线通信量。DFP设备106至少被配置为使用面向下游的端口204经由符合USB标准的协议与USB设备108通信,并且经由扩展介质110与UFP设备104交换消息和USB总线通信量。UFP设备104和DFP设备106可以包含另外的部件,如电源、状态LED、扬声器、用于在UFP功能与DFP功能之间切换的输入设备等。由于这种部件及其功能是本领域普通技术人员所熟悉的,因此在本文中尚未进一步讨论这些部件及其功能。
如图2所展示的,UFP设备104的面向上游的端口202连接到主机设备102的面向下游的端口,并且DFP设备106的面向下游的端口204连接到USB设备108的面向上游的端口。在其他实施例中,UFP设备104的面向上游的端口202可以连接到除主机设备102所提供的面向下游的端口以外的面向下游的端口,如集线器的面向下游的端口等。同样,在其他实施例中,DFP设备106的面向下游的端口204可以连接到除USB设备108所提供的面向上游的端口以外的面向上游的端口,如集线器的面向上游的端口等。下文的讨论主要是关于图2中所展示的简单拓扑,但是本领域的普通技术人员将认识到,在一些实施例中,在不脱离本披露内容的范围的情况下可以在其他拓扑中使用类似技术。
图3是展示了根据本披露内容的各个方面的端口设备300的示例性实施例的框图。在一些实施例中,端口设备300可以被构造成提供面向上游的端口202的服务,并且在一些实施例中,端口设备300可以被构造成提供面向下游的端口204的服务。在一些实施例中,端口设备300可以包括用于提供面向上游的端口202和面向下游的端口204两者的服务的指令,其中,所提供的特定端口服务由如跳线开关、固件设置等用户配置确定。
如所展示的,端口设备300包括协议引擎302、USB物理层接口304和远程接口306。在一些实施例中,协议引擎302可以被配置为提供和/或执行下文关于UFP设备104和/或DFP设备106所讨论的逻辑。协议引擎302可以指示USB物理层接口304将适当的电信号施加到USB物理层以便与USB设备108或主机设备102通信。同样,协议引擎302可以指示远程接口306与远程USB扩展设备交换信息。
在一些实施例中,协议引擎302可以在如PLD、ASIC、FPGA等逻辑设备内实施。在其他实施例中,协议引擎302可以在以下各项内实施:具有至少一个处理器和包含计算机可执行指令的存储器的计算设备,这些计算机可执行指令如果由该至少一个处理器执行则使协议引擎302进行下文所讨论的动作;例如实施为状态机的专用数字硬件设备,该状态机被配置为进行所描述的动作;专用处理器;和/或任何其他合适的计算设备。在一些实施例中,协议引擎302(或端口设备300的其他部件)可以包括可用于高速缓存数据分组的计算机可读存储器,如下文进一步讨论的。
在一些实施例中,归属于USB扩展设备的动作逻辑由协议引擎302执行,该协议引擎然后指示USB物理层接口304和/或远程接口306执行与该逻辑相关联的适当通信步骤。贯穿下文的讨论,这样的动作可以简单地描述为由UFP设备104或DFP设备106执行,就好像该UFP设备或该DFP设备是单个设备一样,以便于讨论。本领域的普通技术人员将认识到,直接归属于UFP设备104或DFP设备106的动作实际上可以由协议引擎302、USB物理层接口304、远程接口306和/或USB扩展设备的某个其他部件执行。
支持扩展介质上的通信的一个常见问题是处理UFP设备104与DFP设备106之间的等待时间。例如,对于等时IN事务,UFP设备104与DFP设备106之间的等待时间意味着,由于该等待时间,主机设备102可能无法在USB规范所要求的服务间隔结束之前接收到其所有预期的DATA分组。克服该等待时间问题的一种策略是,在UFP设备104高速缓存由DFP设备106从USB设备108检索的DATA分组的同时,UFP设备104使主机设备102等待,然后响应于后续服务间隔中的请求将DATA分组传送到主机设备102。
图4是展示了根据本披露内容的各个方面的用于补偿主机设备102与USB设备108之间通过扩展介质110进行的通信中的等待时间的技术的非限制性示例实施例的序列图。该技术与共同拥有的美国专利号10,552,355中所描述的技术类似,该美国专利的全部披露内容出于所有目的通过引用并入本文。
在图4所展示的序列图中(以及在此包括的其他序列图中),时间从图的顶部推进到图的底部。实线箭头指示由主机设备102或USB设备108根据USB规范(和/或其封装版本或翻译版本)生成的分组的传输。虚线箭头指示由UFP设备104或DFP设备106基于由主机设备102或USB设备108生成的分组、或响应于由主机设备102或USB设备108生成的分组而生成的合成分组的传输。合成分组的内容可以与由主机设备102或USB设备108生成的分组相同,但在时间上有所移位,或者可以具有从由主机设备102或USB设备108生成的分组的内容更改而来的内容。单独元素之间的水平箭头指示符合USB规范的时序要求的传输,而成角度的箭头指示通过扩展介质110进行的可能受增加的等待时间影响的传输。
在超高速通信中,主机设备102安排例如125μs的服务间隔。在图4中,第一服务间隔边界402由第一水平线指示,而第二服务间隔边界404由第二水平线指示。第一水平线和第二水平线可以指示等时时间戳分组(ITP)的生成和传输,尽管在第一服务间隔边界402与第二服务间隔边界404之间可以生成和传输多个ITP。第一服务间隔边界402和第二服务间隔边界404被展示为同时跨越主机设备102、UFP设备104、DFP设备106和USB设备108以指示服务间隔之间的逻辑分离。在一些实施例中,主机设备102生成服务间隔和DFP设备106生成对应的合成服务间隔可能不会同时发生。
如USB规范的第8.12.5节中所述,主机设备102需要调度事务(包括等时事务),使得事务不会跨越这些服务间隔边界。因此,为了符合USB规范,主机设备102与UFP设备104之间的事务、以及DFP设备106与USB设备108之间的事务不跨越各自的服务间隔边界是很重要的。然而,主机设备102在不知道扩展介质110在UFP设备104与DFP设备106之间引入的增加的等待时间的情况下调度事务。如图所示,UFP设备104和DFP设备106从USB设备108获得额外的数据分组并将这些分组高速缓存在UFP设备104,以便能够满足来自主机设备102的请求,而不必考虑UFP设备104与DFP设备106之间的等待时间。
在点406处,主机设备102向UFP设备104发送包括序列号(“0”)和分组数量(“2”)的数据请求分组。分组数量是由主机设备102所期望的分组数量,也称为“缓冲区计数”。UFP设备104将数据请求分组传输到DFP设备106。在点408处,UFP设备104将合成空null分组传输回主机设备102,以将主机设备102置于临时等待状态。所展示的合成空分组可以是具有零长度有效载荷的数据分组,但是可以使用可以将主机设备102置于等待状态的任何其他类型的分组。响应于接收到合成空分组,主机设备102进入等待状态,在该状态下,该主机设备直到第二服务间隔边界404之后才重新传输数据请求分组。
在点410处,DFP设备106向USB设备108发送合成数据请求分组。由DFP设备106创建的合成数据请求分组包括来自主机设备102在点406处传输的数据请求分组的序列号。然而,DFP设备106已经更改了分组数量,使得该分组数量与由主机设备102在点406处传输的数据请求分组中的分组数量不匹配。
在一些实施例中,DFP设备106可以请求比主机设备102所请求的更多数量的分组。请求更多数量的分组允许DFP设备106接收附加的数据,这些附加的数据可以发送到UFP设备104以响应来自主机设备102的后续请求,而不必等待UFP设备104与DFP设备106之间的往返通信。在一些实施例中,DFP设备106可以确定与主机设备102在主机设备102进行的初始枚举期间针对USB拓扑或针对特定USB设备108已经配置的最大突发大小值相关联的分组数量。DFP设备106可以请求对应于最大突发大小的分组数量,而不管主机设备102在其第一请求中是否请求了更少的分组。这可以确保UFP设备104将具有主机设备102在单个服务间隔期间将请求的所有数据。在服务间隔期间主机设备102可以处理的最大分组数量对于5Gbps通信可以最高达48个或对于10Gbps通信可以最高达96个。USB设备108的最大突发大小值通常被配置为低于这些限制。典型的最大突发大小可能在6或7左右,尽管值可能低至3,以及对于包括但不限于某些高清相机在内的设备,值可能高达12,或者对于其他设备该值甚至更高。
在其他实施例中,DFP设备106可以请求在由主机设备102请求的分组数量与最大突发大小之间的任意分组数量。如图所示,DFP设备106已经生成合成分组以请求四个分组,而不是主机设备102最初请求的两个分组。这可能是因为最大突发大小已经被配置为四,或出于其他原因,包括但不限于DFP设备106上的配置、基于来自原始请求分组的分组数量做出的判定、或基于UFP设备104与DFP设备106之间的等待时间量做出的判定。
在点412处,USB设备108将请求的数据分组传输到DFP设备106。DFP设备106然后将请求的数据分组传输到UFP设备104,该UFP设备在点414处开始接收这些数据分组。
在点416处,主机设备102确定第二服务间隔边界404已经出现,并且因此主机设备102传输可能类似于在点406处传输的请求分组的新请求分组。在点418处,UFP设备104用已经高速缓存在UFP设备104上的前两个数据分组进行响应。这些数据分组用虚线展示并且可以被认为是合成数据分组,因为它们由于被UFP设备104高速缓存而在时间上有所移位。
在点420处,主机设备102然后可以传输另一个请求分组以请求接下来的两个数据分组,并且在点422处,UFP设备104可以用也已经高速缓存在UFP设备104上的接下来的这两个数据分组进行响应。将注意到,通过预先取出比主机设备102所请求的更多的数据,UFP设备104能够提供在单个服务间隔期间可以传输的最大量的数据,即使UFP设备104与DFP设备106之间存在高量等待时间。
图4还展示了DFP设备106可以在给定服务间隔期间从USB设备108检索尽可能多的数据分组。在点412处从USB设备108传输到DFP设备106的数据分组包括所请求的所有数据分组,但不包括设置了最后分组标志(LPF)的数据分组。根据USB规范,这向DFP设备106指示USB设备108具有附加数据分组要传输。相应地,在点424处,DFP设备106传输附加合成数据请求分组以从USB设备108请求后续一组数据分组,并且在点426处,USB设备108用响应于该请求的数据分组进行响应。在点428处,DFP设备106传输另一个合成数据请求分组,并且在点430处,USB设备108开始传输一组响应的数据分组。在点432处,USB设备108传输突发的最后一个数据分组。USB设备108通过在最后一个数据分组中设置最后分组标志(LPF)来指示在点432处传输的数据分组是最后一个数据分组。通过检测这些类型的数据分组,DFP设备106得知USB设备108已经传输了其所有数据,并且因此在从UFP设备104接收到新请求分组之前,不会在第二服务间隔边界404之前传输附加合成数据请求分组来请求另外的数据分组。
将注意到,主机设备102对两个分组的请求传输仅是示例,并且在一些实施例中,可以请求不同数量的分组。例如,USB 3.1规范的第8.12.6.2节指出,主机设备102可以将传输拆分为由2个、4个或8个数据分组组成的突发,然后是一个由剩余要请求的许多分组组成的突发。相应地,在一些实施例中,为了在服务间隔期间请求六个数据分组,主机设备102可以在点418处请求四个数据分组,并且然后在点420处请求两个数据分组。实际上,已经发现主机设备102表现出多种行为。
图5是展示了根据本披露内容的各个方面的在USB扩展环境中传输数据的方法的非限制性示例实施例的流程图。图5所展示的方法500是描绘UFP设备104在图4的序列图中所展示的通信期间所采取的动作的另一种方式。因此,图5的以下描述包括对图4的对应点的提及。
方法500从开始框进行到框502,其中,UFP设备104从主机设备102接收包含序列号和缓冲区计数的数据请求分组(参见点406)。在框504处,UFP设备104将数据请求分组传输到DFP设备106(参见点410)。
在决策框506处,确定UFP设备104在其缓冲区中是否包含任何响应于从主机设备102接收的数据请求分组的数据分组。如果UFP设备104在其缓冲区中还没有任何响应于从主机设备102接收的数据请求分组的数据分组,则决策框506的结果为否(NO),并且方法500进行到框508。在框508处,UFP设备104将合成空分组传输到主机设备102(参见点408)。方法500然后前进到结束框并等待直到重复后续服务间隔。
否则,如果UFP设备104在其缓冲区中具有响应于从主机设备102接收的数据请求分组的数据分组,则决策框506的结果为是(YES),并且方法500进行到框510。在框510处,UFP设备104基于序列号和缓冲区计数将一组存储的数据分组传输到主机设备102(参见点418)。
在决策框512处,确定传输到主机设备102的该组存储的数据分组是否包括设置了LPF标志的数据分组。如果该组存储的数据分组不包括设置了LPF标志的数据分组,则决策框512的结果为否,并且方法500进行到框514。在框514处,UFP设备104从主机设备102接收后续数据请求分组,并返回到框504以处理后续数据请求分组。
返回到决策框512,如果设置了LPF标志的数据分组被包括在传输到主机设备102的该组存储的数据分组中,则决策框512的结果为是,并且方法500前进到结束框并等待直到重复后续服务间隔。
虽然图4和图5中所展示的整体技术在克服UFP设备104与DFP设备106之间的等待时间方面是有效的,但在实施此功能时会出现另外的问题。例如,通过从USB设备108请求比主机设备102实际请求的数据分组数量大得多的数据分组,主机设备102从UFP设备104上的缓冲区清空高速缓存的数据分组的速度可能慢于DFP设备106提供高速缓存的数据分组的速度。作为另一示例,因为来自主机设备102的数据请求基本上延迟了至少一个服务间隔,所以UFP设备104上的缓冲区可以一次存储来自多个服务间隔的数据分组。取决于UFP设备104上缓冲区的大小,UFP设备104上的缓冲区可能会变满并且无法处置来自DFP设备106的附加数据分组。
因为DFP设备106是确定在给定服务间隔期间要从USB设备108请求多少数据分组的设备(而不是UFP设备104),所以期望DFP设备106跟踪UFP设备104的缓冲区中有多少可用空间,以避免在UFP设备104上没有空间的情况下从USB设备108请求数据分组。
图6是展示了根据本披露内容的各个方面的在USB扩展环境中传输数据的方法的非限制性示例实施例的流程图。在方法600中,DFP设备106基于DFP设备106已经发送到UFP设备104的数据分组和DFP设备106从UFP设备104接收的数据请求分组的计数来跟踪空闲缓冲区计数。空闲缓冲区计数表示在UFP设备104处可用于数据分组的缓冲区空间量。通过跟踪空闲缓冲区计数,DFP设备106可以避免请求和传输比UFP设备104可以存储的数据分组更多的数据分组,并且不需要额外报告对DFP设备106可用的缓冲区空间量。方法600假设UFP设备104正在执行对应的上游方法,如图5所示的方法500。
方法600从开始框进行到框602,其中,DFP设备106为配对的UFP设备104初始化空闲缓冲区计数和先前的LPF跟踪器。在一些实施例中,DFP设备106和UFP设备104可以接收命令以彼此配对。在扩展介质110包括诸如以太网或TCP/IP等可寻址网络技术的一些实施例中,可以向DFP设备106和UFP设备104提供要与之配对的对应设备的网络地址。在扩展介质110包括DFP设备106与UFP设备104之间的直接连接(如光纤电缆)的一些实施例中,配对命令可以隐含在该连接中,或者可以在检测到这些设备之间的物理连接时被传输。在一些实施例中,UFP设备104可以将其数据分组缓冲区的大小传输到DFP设备106,并且DFP设备106可以基于该信息初始化空闲缓冲区计数。在一些实施例中,DFP设备106可以是预先配置的或利用UFP设备104的空闲缓冲区计数来手动配置。
DFP设备106可以使用任何合适的技术来实施先前的LPF跟踪器,DFP设备106能够使用该跟踪器来确定在先前的服务间隔中在传输设置了LPF标志的分组之前传输了多少分组。在一些实施例中,先前的LPF跟踪器可以在FIFO队列中实施,其中,队列中每个条目中的单个位指示对应的分组是否设置了其LPF标志。当DFP设备106传输分组时,条目被添加到FIFO队列中(参见框620),并且当从UFP设备104接收到确认时,条目被从FIFO队列中移除(参见框608)。在这样的实施例中,DFP设备106可以通过清空FIFO队列来初始化先前的LPF跟踪器。在一些实施例中,先前的LPF跟踪器可以通过记录设置了LPF标志的分组的序列号来实施。在这样的实施例中,DFP设备106可以通过将序列号设置为零来初始化先前的LPF跟踪器。
方法600从框602进行到框604,其中,DFP设备106从UFP设备104接收数据请求分组,其中,该数据请求分组包括序列号和缓冲区计数。如图4中的点410所示,从UFP设备104接收的数据请求分组的序列号和缓冲区计数可以与UFP设备104从主机设备102接收的数据请求分组的序列号和缓冲区计数相匹配。
在框606处,DFP设备106基于数据请求分组的缓冲区计数来更新先前的LPF跟踪器。在使用FIFO队列实施先前LPF跟踪器的实施例中,DFP设备106可以基于数据请求分组的缓冲区计数从FIFO队列中移除多个条目。通常,DFP设备106可以从FIFO队列中移除的条目数量等于数据请求分组的缓冲区计数。然而,一旦有条目指示对应分组已经设置了其LPF标志,DFP设备106就可以停止从FIFO队列中移除条目。在这种情况下,DFP设备106可以从FIFO队列中移除比数据请求分组的缓冲区计数所指示的数量更少的条目。在先前的LPF跟踪器是通过记录设置了LPF标志的数据分组的序列号来实施的实施例中,DFP设备106可以跳过在框606处更新先前的LPF跟踪器。
在框608处,DFP设备106基于数据请求分组的缓冲区计数和先前的LPF跟踪器来增加空闲缓冲区计数。DFP设备106不会将空闲缓冲区计数增加到任何高于在框602处确定的缓冲区大小。相应地,对于通过框608的第一次行程,DFP设备106可以不对空闲缓冲区计数做出任何改变,因为还没有数据分组被传输到UFP设备104,并且已知缓冲区是空的。
对于通过框608的后续行程,空闲缓冲区计数可以在接收到数据请求分组时增加,因为接收到数据请求分组意味着UFP设备104将立即从其缓冲区向主机设备102提供在数据请求分组的缓冲区计数中指示的数据分组数量,并且因此,意味着当请求被DFP设备106和USB设备108处理时,UFP设备104的缓冲区中将有很多可用空间。
在一些实施例中,数据请求分组的缓冲区计数所指示的数据分组数量是空闲缓冲区计数的增加量的上限,并且实际增加量可以基于先前的LPF跟踪器来减少。例如,如果先前的LPF跟踪器是使用如上所描述的FIFO队列来实施的,则空闲缓冲区计数可以仅增加在框606处从FIFO队列中移除的条目的数量,如果指示LPF分组的条目被从FIFO队列中移除,则该数量可以小于数据请求分组的缓冲区计数。这确保空闲缓冲区计数的增加量不会超过由UFP设备104在给定的服务间隔期间实际传送到主机设备102的数据分组的数量。
在框610处,DFP设备106生成合成数据请求分组,其中,合成数据请求分组包括基于空闲缓冲区计数的缓冲区计数。对于在给定服务间隔内第一次通过框610,由于没有先前传输的序列号,因此DFP设备106可以在合成数据请求分组中包括从序列号零开始的序列号。否则,DFP设备106可以使用从当前服务间隔的前一次传输延续的序列号。合成数据请求分组的缓冲区计数的确定与图4的点410处的缓冲区计数类似,但不是总是请求最大配置数量的数据分组,在框610处,DFP设备106确保合成数据请求分组的缓冲区计数小于或等于空闲缓冲区计数,以避免检索比UFP设备104可以存储的数据分组更多的数据分组。
在框612处,DFP设备106将合成数据请求分组传输到USB设备108,并且在框614,DFP设备106从USB设备108接收多个数据分组。数据分组的数量可以是合成数据请求分组的缓冲区计数所指示的请求的数据分组数量,或者可以小于请求的数据分组数量(比如,当在已经接收到所有请求的数据分组数量之前接收到设置了LPF标志的数据分组时)。
在框616处,DFP设备106将该多个数据分组传输到UFP设备104以存储在UFP设备104的缓冲区中。在框618处,DFP设备106将空闲缓冲区计数减少该数据分组数量,以便准确反映传输了多少数据分组,并且在框620处,DFP设备106基于该数据分组数量更新先前的LPF跟踪器。在先前的LPF跟踪器在FIFO队列中实施的实施例中,DFP设备106可以为该多个数据分组中的每个数据分组向FIFO队列添加条目。如果其中一个数据分组设置了LPF标志,则FIFO队列中的条目将指示设置了LPF标志。在先前的LPF跟踪器跟踪设置了LPF标志的数据分组的序列号的实施例中,可以记录这种分组的序列号(如果有的话)。
方法600然后前进到决策框622,在该框中,确定该多个数据分组是否包括设置了LPF标志的数据分组,以指示USB设备108已完成为当前服务间隔提供数据分组。如果是,则决策框622的结果为是,并且方法600返回到框604以在后续服务间隔期间等待来自UFP设备104的后续数据请求分组。否则,决策框622的结果为否,并且方法600返回到框610以生成后续合成数据请求分组。
将注意到,框604、框606和框608被展示为被分组到框组624中。在一些实施例中,当主机设备102向UFP设备104传输多个数据分组请求时,框组624的动作可以在给定的服务间隔期间发生多次(例如,当所展示的方法600在框610至框622之间迭代时)。尽管为了清楚起见,在图6中以线性流程展示了框组624的动作,但是本领域普通技术人员将认识到框组624的动作可以在框610至框622(含端点)之间、之前或之后的任何点发生多次。
图7A至图7C是展示了根据本披露内容的各个方面的执行图6中所展示方法的非限制性示例实施例的序列图。图7A至图7C的序列展示了方法600如何可以解决如果允许图4的序列继续下去而不检查UFP设备104的缓冲区溢出则可能发生的这种溢出问题。
在图7A中,假设UFP设备104和DFP设备106已经彼此配对,并且UFP设备104已经向DFP设备106通知该UFP设备具有大小为12的缓冲区。相应地,DFP设备106已在点701处将其空闲缓冲区计数初始化为12。在第一服务间隔边界702之后,主机设备102在点703处传输数据请求分组。因为UFP设备104还没有任何响应于数据请求分组的存储的数据分组,所以UFP设备104在点704处用合成NULL分组进行响应(参见图5中的框508)。
DFP设备106在点705处接收数据请求分组并传输对应的合成数据请求分组。合成数据请求分组包括部分地基于空闲缓冲区计数的缓冲区计数(参见图6中的框610)。出于本讨论的目的,DFP设备106被配置为使用其合成数据请求分组请求多达4个数据分组,并且由于点705处的空闲缓冲区计数为12,因此DFP设备106有足够的空间来请求所有4个数据分组。该配置仅是示例,并且在其他实施例中,DFP设备106可以被配置为默认请求多于或少于4个数据分组。
在点706处,USB设备108将响应于合成数据请求分组的多个数据分组传输到DFP设备106,该DFP设备又将该多个数据分组传输到UFP设备104以供存储(参见图6中的框614至框616)。在点707处,DFP设备106将空闲缓冲区计数减少传输到UFP设备104的数据分组的数量(参见图6中的框618),因此空闲缓冲区计数现在为8,并且DFP设备106基于该数据分组的数量来更新先前的LPF跟踪器(参见图6中的框620)。
因为该数据分组的数量不包括设置了LPF标志的数据分组(参见图6中决策框622的否分支),所以DFP设备106在点708处传输另一个合成数据请求分组(参见图6中的框610)。再次,在点707处的空闲缓冲区计数8指示有足够的空间容纳所有4个期望的数据分组,因此在点708处的合成数据请求分组包括缓冲区计数4。在点709处,USB设备108开始将响应于合成数据请求分组的多个数据分组传输到DFP设备106,并且DFP设备106将该多个数据分组传输到UFP设备104以供存储(参见图6中的框614至框616)。在点710处,DFP设备106再次将空闲缓冲区计数减少传输到UFP设备104的数据分组的数量(参见图6中的框618),并且再次基于该数据分组的数量来更新先前的LPF跟踪器(参见图6中的框620)。
因为该数据分组的数量再次不包括设置了LPF标志的数据分组(参见图6中决策框622的否分支),所以DFP设备106在点711处传输另一个合成数据请求分组(参见图6中的框610)。又再次,在点710处的空闲缓冲区计数4指示有足够的空间容纳所有4个期望的数据分组,因此在点711处的合成数据请求分组包括缓冲区计数4。
在点712处,USB设备108传输响应于合成数据请求分组的多个数据分组。这次,USB设备108传输设置了LPF标志的单个数据分组,从而指示该数据分组是在当前服务间隔期间要传输的最后一个数据分组。相应地,DFP设备106将该单个数据分组传输到UFP设备104,并且在点713处,DFP设备106将空闲缓冲区计数仅减少传输到UFP设备104的数据分组的数量(一),而不是减少在合成数据请求分组中从USB设备108请求的更大的数据分组数量(参见图6中的框618)。DFP设备106基于数据分组的数量来更新先前的LPF跟踪器,例如,通过向FIFO队列添加指示LPF标志的存在的条目、通过存储在点712处传输的数据分组的序列号、或使用任何其他合适的技术。
由于接收到设置了LPF标志的数据分组,因此DFP设备106等待在后续服务间隔期间从UFP设备104接收后续数据请求分组(参见图6中决策框622的是分支)。
将认识到,一旦UFP设备104在点712处接收到由USB设备108生成的数据分组,UFP设备104就存储九个数据分组(从序列号0到序列号8)。这反映在点713处空闲缓冲区计数为3——由于缓冲区的大小为12,并且缓冲区中存储了九个数据分组,因此剩余空间可容纳3个数据分组。
该序列从图7A的底部继续到图7B的顶部,其中,出现第二服务间隔边界714。从图7A延续,该服务间隔开始时的空闲缓冲区计数为3,如点713处所示。
在点715处,主机设备102将数据请求分组传输到UFP设备104,并且UFP设备104将该数据请求分组重新传输到DFP设备106。由于主机设备102现在存储响应于数据请求分组的数据分组,因此UFP设备104在点716处将所请求数量的数据分组从其缓冲区传输到主机设备102(参见图5中的框510)。
在点717处,DFP设备106接收数据请求分组。使用数据请求分组中的缓冲区计数,并且注意的是,先前的LPF跟踪器并不指示UFP设备104将响应于数据请求分组而传输设置了LPF标志的分组,在所请求的数据分组将已经由UFP设备104提供给主机设备102、并且在DFP设备106将另外的数据分组传输到UFP设备104之前UFP设备104的缓冲区中的对应空间被清空的假设下,DFP设备106在点718处增加空闲缓冲区计数(参见图6中的框604至框608)。相应地,在点718处,空闲缓冲区计数为5,并且先前的LPF跟踪器已被更新(例如,如果先前的LPF跟踪器是用FIFO队列实施的,则与数据请求分组的缓冲区计数相对应的条目已从FIFO队列中移除)。
在点719处,DFP设备106生成并传输合成数据请求分组(参见图6中的框610至框612)。DFP设备106以0'开始合成数据请求分组的序列号,因为它是在第二服务间隔边界714处开始的服务间隔的第一个合成数据请求分组。在本讨论中,在第二服务间隔期间(在第二服务间隔边界714与第三服务间隔边界720之间)使用的序列号被修改为带有记号标记(例如,0'、1'、2'等),目的是将在第二服务间隔期间生成的响应数据分组与在第二服务间隔之前和之后生成的数据分组区分开来,仅用于本讨论。本领域普通技术人员将认识到,在本披露内容的实际实施方式中使用符合USB规范的未修改序列号。
由于在点719处的空闲缓冲区计数为5,因此有足够的空间容纳所有4个期望的数据分组,所以合成数据请求分组包括缓冲区计数4。在点721处,USB设备108将多个数据分组传输到DFP设备106,该DFP设备将该多个数据分组重新传输到UFP设备104以供存储(参见图6中的框614至框616)。在点722处,DFP设备106将空闲缓冲区计数减少该数据分组的数量、或减少4(参见图6中的框618),并且基于该数据分组的数量来更新先前的LPF跟踪器(参见图6中的框620)。
同时,在点723处,主机设备102传输另一数据请求分组,并且UFP设备104将该数据请求分组重新传输到DFP设备106。由于UFP设备104仍然具有响应于数据请求分组的数据分组,因此UFP设备104在点724处将响应数据分组从其缓冲区传输到主机设备102(参见图5中的框510)。
在点725处,DFP设备106接收数据请求分组。使用数据请求分组中的缓冲区计数,并且注意的是,先前的LPF跟踪器指示UFP设备104仍未收到LPF分组,DFP设备106在点726处将空闲缓冲区计数增加数据请求分组中所指示的量(2),并更新先前的LPF跟踪器(参见图6中的框604至框608)。
在点727处,DFP设备106生成并传输合成数据请求分组(参见图6中的框610至框612)。这次,由于空闲缓冲区计数为3,因此合成数据请求分组包括缓冲区计数3,而不是最大期望缓冲区计数4。在点728处,USB设备108将多个数据分组传输到DFP设备106,该DFP设备将该多个数据分组重新传输到UFP设备104以供存储(参见图6中的框614至框616)。在点729处,DFP设备106将空闲缓冲区计数减少该数据分组的数量、或减少3(参见图6中的框618),并且基于该数据分组的数量来更新先前的LPF跟踪器。
因为在点729处的空闲缓冲区计数指示没有空闲缓冲区空间,所以DFP设备106可能不会立即创建后续合成数据请求分组,即使尚未从USB设备108接收到设置了LPF标志的数据分组。而是,DFP设备106可以等待,直到从UFP设备104接收到指示UFP设备104的缓冲区中现在有空间的数据请求分组。相应地,在点730处,主机设备102生成数据请求分组,并且UFP设备104将该数据请求分组重新传输到DFP设备106。如前所述,由于UFP设备104仍然存储有响应数据分组,因此UFP设备104在点731处将响应数据分组传输到主机设备102(参见图5中的框510)。
在点732处,DFP设备106接收数据请求分组。使用数据请求分组中的缓冲区计数,并且注意的是,先前的LPF跟踪器指示UFP设备104仍未收到设置了LPF的分组,DFP设备106在点733处将空闲缓冲区计数增加数据请求分组中所指示的量(2),并更新先前的LPF跟踪器(参见图6中的框604至框608)。
在点734处,DFP设备106生成并传输合成数据请求分组(参见图6中的框610至框612)。由于在点733处的空闲缓冲区计数为2,因此合成数据请求分组包括缓冲区计数2,而不是最大期望缓冲区计数4。在点735处,USB设备108将多个数据分组传输到DFP设备106,该DFP设备将该多个数据分组重新传输到UFP设备104以供存储(参见图6中的框614至框616)。在点736处,DFP设备106将空闲缓冲区计数减少该数据分组的数量、或减少2(参见图6中的框618),并且基于该数据分组的数量来更新先前的LPF跟踪器。
该序列从图7B的底部继续到图7C的顶部。从图7B延续,图7C开始时的空闲缓冲区计数为0,如点736处所示。
与图7B中从点730到点736的动作类似,在点737处,主机设备102生成数据请求分组,并且在点738处,UFP设备104用来自其缓冲区的响应数据分组进行应答。DFP设备106在点739处接收到数据请求分组,并且在点740处该DFP设备将空闲缓冲区计数增加数据请求分组的缓冲区计数(因为先前的LPF序列号尚未到达)。在点741处,DFP设备106生成缓冲区计数为2的合成数据请求分组,因为在点740处的空闲缓冲区计数为2。
在点742处,USB设备108将响应于合成数据请求分组的多个数据分组传输到DFP设备106,并且DFP设备106将该多个数据分组传输到UFP设备104以供存储。在点743处,DFP设备106将空闲缓冲区计数减少该数据分组的数量(2),并且更新先前的LPF跟踪器。将注意到,图7C中从点737到点743的动作类似于图7B中从点730到点736的动作。
在点744处,主机设备102生成数据请求分组并将其传输到UFP设备104,并且UFP设备104将该数据请求分组重新传输到DFP设备106。响应于数据请求分组,在点745处,UFP设备104将响应数据分组从其缓冲区传输到主机设备102。由于响应数据分组(序列号8)设置了LPF标志,因此UFP设备104不再响应于点746的数据请求分组传输任何数据分组,即使在其缓冲区中存在更多数据分组,因为设置了LPF标志的数据分组将是主机设备102在当前服务间隔内期望的最后一个数据分组。
在点747处,DFP设备106从UFP设备104接收数据请求分组。DFP设备106基于数据请求分组的缓冲区计数来更新先前的LPF跟踪器(参见图6中的框606),并且先前的LPF跟踪器现在指示UFP设备104将设置了LPF标志的分组传输到主机设备102。例如,如果先前的LPF跟踪器是用FIFO队列实施的,则可以从FIFO队列中移除指示设置了LPF标志的单个条目,从而指示由UFP设备104传输到主机设备102的数据分组的数量(一)并且指示没有发送另外的数据分组。
相应地,在点748处,DFP设备106基于数据请求分组和先前的LPF跟踪器来增加空闲缓冲区计数(参见图6中的框608)。这次,由于先前的LPF跟踪器指示传输了单个数据分组,因此DFP设备106不会简单地基于数据请求分组中的缓冲区计数来增加空闲缓冲区计数。而是,DFP设备106使用先前的LPF跟踪器来确定在UFP设备104由于收到设置了LPF标志的数据分组而停止之前将传输多少数据分组,并且将空闲缓冲区计数增加该DFP设备已确定UFP设备104将实际发送的数据分组的数量(在这种情况下为1)。
在点749处,DFP设备106基于空闲缓冲区计数来生成并传输合成数据请求分组(参见图6中的框610至框612)。在这种情况下,合成数据请求分组的缓冲区计数为1,因为在点748处的空闲缓冲区计数为1。在点750处,USB设备108传输响应于合成数据请求分组的多个数据分组,并且DFP设备106将该多个数据分组重新传输到UFP设备104以供存储(参见图6中的框614至框616)。在点751处,DFP设备106将空闲缓冲区计数减少该数据分组的数量、或减少1,并且更新先前的LPF跟踪器(参见图6中的框618至框620)。
随后,出现第三服务间隔边界720。与第二服务间隔中的序列号一样,在第三服务间隔边界720之后由DFP设备106使用的序列号用双记号表示(例如,0"、1"),并且在第三服务间隔边界720之后由主机设备102使用的序列号用记号表示(例如,0'、1'),仅是为了在本讨论中进行区分。
在第三服务间隔边界720之后,在点746处,主机设备102传输其下一个数据请求分组。在该点处,UFP设备104已经提供了与序列号0至8相关联的数据分组,并且DFP设备106已经传输了与序列号0'至11'相关联的附加数据分组,以重新填充UFP设备104的缓冲区。相应地,UFP设备104当前存储与序列号0'至11'相关联的数据分组。因此,在点752处,UFP设备104从该序列提供响应于来自主机设备102的数据请求分组的下一个数据分组。
DFP设备106在点753处从UFP设备104接收数据请求分组,并且在点754处相应地增加空闲缓冲区计数。其余的动作(如在点755处生成合成数据请求分组以及在点756处由USB设备108传输多个数据分组作为响应)类似于上面所讨论的其他点,并且因此为简洁起见这里不再进行描述。将认识到,该序列将继续下去,同时主机设备102和USB设备108继续通过扩展环境交换信息。
尽管已经展示并描述了说明性实施例,但将认识到的是,在不脱离本发明的精神和范围的情况下,可以在其中进行各种改变。
Claims (10)
1.一种经由非USB扩展介质管理主机设备与USB设备之间的通信的方法,该方法包括:
由面向下游的端口设备(DFP设备)经由该非USB扩展介质从面向上游的端口设备(UFP设备)接收数据请求分组;
由该DFP设备确定要从该USB设备请求的数据分组的数量,其中,该要请求的数据分组的数量是基于空闲缓冲区计数的,并且其中,该空闲缓冲区计数由该DFP设备跟踪以表示该UFP设备上可用的缓冲区空间量;
由该DFP设备生成合成数据请求分组,其中,该合成数据请求分组包括缓冲区计数,其中,该缓冲区计数是基于所确定的要从该USB设备请求的数据分组的数量的;
由该DFP设备从该USB设备接收一组响应于该合成数据请求分组的数据分组;以及
由该DFP设备经由该非USB扩展介质将该组数据分组传输到该UFP设备。
2.如权利要求1所述的方法,进一步包括:
由该DFP设备将该空闲缓冲区计数减少从该USB设备接收到的该组数据分组中的数据分组的数量。
3.如权利要求2所述的方法,其中,从该USB设备接收到的该组数据分组中的数据分组的数量小于或等于该缓冲区计数。
4.如权利要求1所述的方法,进一步包括:
由该DFP设备从该UFP设备接收后续数据请求分组,其中,该后续数据请求分组包括第二缓冲区计数;以及
由该DFP设备将该空闲缓冲区计数增加该第二缓冲区计数。
5.如权利要求1所述的方法,其中,从该USB设备接收的该组数据分组包括指示突发结束的数据分组,并且其中,该方法进一步包括:
由该DFP设备基于指示该突发结束的该数据分组更新先前的LPF跟踪器。
6.如权利要求5所述的方法,其中,基于指示该突发结束的该数据分组更新该先前的LPF跟踪器包括向FIFO队列添加条目,该条目指示接收到指示该突发结束的该数据分组。
7.如权利要求5所述的方法,进一步包括:
由该DFP设备从该UFP设备接收后续数据请求分组;
由该DFP设备基于该先前的LPF跟踪器确定该UFP设备响应于该后续数据请求分组而传输的该数据分组包括指示该突发结束的数据分组;以及
由该DFP设备基于由该先前的LPF跟踪器指示要传输的数据分组的数量来增加该空闲缓冲区计数,直到到达指示该突发结束的该数据分组。
8.如权利要求5所述的方法,其中,指示该突发结束的该数据分组是设置了最后分组标志(LPF)的数据分组。
9.一种面向下游的端口设备(DFP设备),包括:
USB物理层端口,该USB物理层端口被配置为通信地耦合到USB设备;
远程接口,该远程接口被配置为通信地耦合到非USB扩展介质;
存储器,该存储器存储空闲缓冲区计数;以及
逻辑,该逻辑响应于由该DFP设备执行而使该DFP设备执行如权利要求1至8中任一项所述的方法。
10.一种非暂态计算机可读介质,其上存储有计算机可执行指令,这些计算机可执行指令响应于由面向下游的端口设备(DFP设备)执行而使该DFP设备执行如权利要求1至8中任一项所述的方法。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163173832P | 2021-04-12 | 2021-04-12 | |
US63/173,832 | 2021-04-12 | ||
US17/713,072 | 2022-04-04 | ||
US17/713,072 US12050544B2 (en) | 2021-04-12 | 2022-04-04 | Predicting free buffer space in a USB extension environment |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115203102A true CN115203102A (zh) | 2022-10-18 |
Family
ID=83361649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210367575.1A Pending CN115203102A (zh) | 2021-04-12 | 2022-04-08 | 预测usb扩展环境中的空闲缓冲区空间 |
Country Status (3)
Country | Link |
---|---|
US (1) | US12050544B2 (zh) |
CN (1) | CN115203102A (zh) |
DE (1) | DE102022108581A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114978810A (zh) * | 2022-06-16 | 2022-08-30 | 深圳市欣博跃电子有限公司 | 基于混合网络的usb数据通信方法、装置及计算机设备 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7028133B1 (en) | 1999-04-30 | 2006-04-11 | Daniel Kelvin Jackson | Method and apparatus for extending communications over USB |
DE60222782D1 (de) * | 2001-08-24 | 2007-11-15 | Intel Corp | Eine allgemeine eingabe-/ausgabearchitektur und entsprechende verfahren zur unterstützung von bestehenden unterbrechungen |
US20060294312A1 (en) * | 2004-05-27 | 2006-12-28 | Silverbrook Research Pty Ltd | Generation sequences |
US9015368B2 (en) | 2006-12-22 | 2015-04-21 | Qualcomm Incorporated | Enhanced wireless USB protocol |
JP5575229B2 (ja) * | 2009-05-20 | 2014-08-20 | クロノロジック プロプライエタリー リミテッド | 分散型の同期されたクロックアーキテクチャのためのジッタ低減方法およびジッタ低減装置 |
US8825925B1 (en) * | 2011-02-14 | 2014-09-02 | Cypress Semiconductor Corporation | Systems and methods for super speed packet transfer |
US20130010617A1 (en) * | 2011-07-07 | 2013-01-10 | Qualcomm Atherons, Inc. | Relative position determination of wireless network devices |
US9569390B2 (en) * | 2012-04-20 | 2017-02-14 | Combined Conditional Access Development And Support, Llc | Protocol for communication |
EP3531321B1 (en) * | 2015-09-15 | 2020-08-19 | Gatekeeper Ltd. | System and method for securely connecting to a peripheral device |
US10552355B2 (en) | 2017-10-03 | 2020-02-04 | Icron Technologies Corporation | Methods and devices for extending USB 3.0-compliant communication over an extension medium |
US11604741B2 (en) * | 2019-02-15 | 2023-03-14 | Intel Corporation | Method for dynamically provisioning virtualized functions in a USB device by means of a virtual USB hub |
US11709791B2 (en) | 2020-09-21 | 2023-07-25 | Icron Technologies Corporation | Techniques for deconflicting USB traffic in an extension environment |
-
2022
- 2022-04-04 US US17/713,072 patent/US12050544B2/en active Active
- 2022-04-08 CN CN202210367575.1A patent/CN115203102A/zh active Pending
- 2022-04-08 DE DE102022108581.3A patent/DE102022108581A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220327088A1 (en) | 2022-10-13 |
DE102022108581A1 (de) | 2022-10-13 |
US12050544B2 (en) | 2024-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11403246B2 (en) | Methods and devices for extending USB 3.0-compliant communication over an extension medium | |
US9875206B2 (en) | Methods and devices for extending USB 3.0-compliant communication | |
EP3358456A1 (en) | Control method, storage device and system for data read/write command in nvme over fabric architecture | |
US8706927B2 (en) | Method for the recovery of a clock and system for the transmission of data between data memories by remote direct memory access and network station set up to operate in the method as a transmitting or, respectively, receiving station | |
JP4966695B2 (ja) | マルチマスタのチェーン接続された二線シリアルバス装置及びディジタル状態機械 | |
US9015380B2 (en) | Exchanging message data in a distributed computer system | |
US20230315675A1 (en) | Techniques for deconflicting usb traffic in an extension environment | |
US7460531B2 (en) | Method, system, and program for constructing a packet | |
JP2017501492A (ja) | インフィニバンド(IB)上で仮想ホストバスアダプタ(vHBA)を管理およびサポートするためのシステムおよび方法、ならびに単一の外部メモリインターフェイスを用いてバッファの効率的な使用をサポートするためのシステムおよび方法 | |
CN115203102A (zh) | 预测usb扩展环境中的空闲缓冲区空间 | |
US6092140A (en) | Low latency bridging between high speed bus networks | |
KR101573791B1 (ko) | 범용 직렬 버스를 이용한 데이터 전송 방법 및 그 장치 | |
US11809358B2 (en) | USB device removal and ping intervention in an extension environment | |
CN105022707B (zh) | 接口单元装置 | |
CN103995786B (zh) | 高速缓存一致性消息的传输方法和装置 | |
US20220027305A1 (en) | Techniques for configuring endpoints within a usb extension environment | |
CN114443534A (zh) | 用于usb扩展环境中的等时in流量的调度技术 | |
TWI411922B (zh) | 通用串列匯流排主機控制器和通用串列匯流排主機控制方法 | |
WO2004086240A1 (en) | Data processing system with a dma controller for storing the descriptor of the active channel | |
KR101327867B1 (ko) | 패킷 전송 방법 및 패킷 전송 장치 | |
KR20240115723A (ko) | PCIe 기반의 데이터 전송 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |