CN107257962A - 用于通用串行总线的协议适配层数据流控制 - Google Patents
用于通用串行总线的协议适配层数据流控制 Download PDFInfo
- Publication number
- CN107257962A CN107257962A CN201680011579.9A CN201680011579A CN107257962A CN 107257962 A CN107257962 A CN 107257962A CN 201680011579 A CN201680011579 A CN 201680011579A CN 107257962 A CN107257962 A CN 107257962A
- Authority
- CN
- China
- Prior art keywords
- usb
- data
- usb data
- transfering type
- pal
- 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
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/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- 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/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/128—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
-
- 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/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
- G06F13/26—Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
-
- 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
- G06F13/4295—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Information Transfer Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
在一示例中,一种用于传送数据的方法包括:在通用串行总线(USB)主机处确定正从主机设备向USB设备传送的USB数据的USB数据转移类型;以及基于所确定的USB数据转移类型来确定该USB数据的优先级。该示例方法还包括:基于所确定的优先级来控制USB数据从USB主机的协议适配层(PAL)向该USB主机的网络层的转移。
Description
技术领域
本公开涉及无线通信技术。
背景
移动设备可以采取以下形式:移动电话、平板计算机、膝上型计算机、具有无线通信卡的便携式计算机、个人数字助理(PDA)、数码相机、视频游戏设备、便携式多媒体播放器、具有无线通信能力的闪存设备、包括所谓的“智能”电话和“智能”板或平板的无线通信设备、电子阅读器、或其他各式各样其他类型的便携式设备。随着高功率处理器、处理多媒体内容的能力、以及在云中与网络交互的能力的添加,移动设备已变得越来越强大。这些改进使得开发出提供较佳用户体验并提高生产力的移动设备的新使用模型成为可能。
另外,移动设备或其他计算设备(例如,个人计算机、移动电话、电子手持式设备、游戏控制台、或其他类似设备)可以使用通信标准来与各种外围设备进行通信。一种此类通信标准包括通用串行总线(USB)连接。可使用USB连接的外围设备的一些示例包括鼠标或其他定点/选择设备、键盘、数码相机、打印机、个人多媒体播放器、大容量存储设备(诸如闪存)、网络适配器、以及外部硬盘驱动器。对于那些设备中的许多设备,USB已经变成促成外围设备连接的非常常见的通信标准。
概述
本公开的各技术一般涉及用于在电子设备之间转移数据的技术。例如,本公开的各技术可被用来控制USB数据流并减少高优先级分组的递送等待时间。这些技术可有助于基于正被传送的数据的USB数据转移类型来对USB数据区分优先级以用于跨给定介质的传输。在一些实例中,这些技术可有助于缓解具有较严格等待时间要求的较高优先级数据分组被相对较低优先级的数据分组延迟的问题。
在一示例中,一种用于传送数据的方法包括:在通用串行总线(USB)主机处确定正从主机设备向USB设备传送的USB数据的USB数据转移类型;基于所确定的USB数据转移类型来确定该USB数据的优先级;以及基于所确定的优先级来控制该USB数据从USB主机的协议适配层(PAL)向该USB主机的网络层的转移。
在另一示例中,一种用于传送数据的设备包括配置成存储通用串行总线(USB)数据的存储器、以及USB主机设备的一个或多个处理器。该一个或多个处理器被配置成:在USB主机设备处确定正从该主机设备向USB设备传送的USB数据的USB数据转移类型;基于所确定的USB数据转移类型来确定该USB数据的优先级;以及基于所确定的优先级来控制该USB数据从该USB主机的协议适配层(PAL)向该USB主机的网络层的转移。
在另一示例中,一种用于传送数据的设备包括:用于在通用串行总线(USB)主机处确定正从主机设备向USB设备传送的USB数据的USB数据转移类型的装置;用于基于所确定的USB数据转移类型来确定该USB数据的优先级的装置;以及用于基于所确定的优先级来控制该USB数据从该USB主机的协议适配层(PAL)向该USB主机的网络层的转移的装置。
在另一示例中,一种其上存储有指令的非瞬态计算机可读介质,这些指令在被执行时使一个或多个处理器:在通用串行总线(USB)主机设备处确定正从该主机设备向USB设备传送的USB数据的USB数据转移类型;基于所确定的USB数据转移类型来确定该USB数据的优先级;以及基于所确定的优先级来控制该USB数据从该USB主机的协议适配层(PAL)向该USB主机的网络层的转移。
在附图及以下描述中阐述本公开的一个或多个方面的详情。本公开中所描述的技术的其他特征、目的、以及优势将从说明书和附图、以及从权利要求书中显而易见。
附图简述
图1是解说USB主机与USB设备处于通信的概念示图。
图2是解说示例USB协议层级的框图。
图3A是解说数据从USB协议适配层(PAL)向网络栈转移的概念图。
图3B是解说数据从USB PAL向网络栈转移的另一概念图。
图4是解说根据本公开的各技术的数据传输的示例的流程图。
详细描述
计算设备(例如,个人计算机、膝上型计算机、平板计算机、移动电话(诸如所谓的“智能电话”)、电子手持式设备、电子阅读器、数码摄像机、数码相机、手持式游戏设备、游戏控制台、或其他类似设备)可以使用通信标准来与各种外围设备进行通信。一种此类通信标准包括通用串行总线(USB)连接。可使用USB连接的外围设备的一些示例包括鼠标或其他定点/选择设备、键盘、显示器、数码相机、打印机、个人多媒体播放器、大容量存储设备(诸如闪存)、网络适配器、以及外部硬盘驱动器。对于那些设备中的许多设备,USB已经变成促成外围设备连接的非常常见的通信标准。
相应地,本公开可以将“USB设备”指代为具有能够与主机计算设备进行通信的USB连接的外围设备。在一些示例中,主机设备可以是移动设备(诸如平板计算机、智能电话、或其他便携式电子设备)。在一些示例中,USB设备与主机设备可以根据通用的USB通信规范进行通信。也就是说,在一示例中,USB设备可以根据如于2010年7月26日修订并公布的、公众可在http://www.usb.org/developers/docs/usb_20_021411.zip获得的USB 2.0规范来与主机设备进行通信。在另一示例中,USB设备和主机设备可被配置成根据另一USB规范(诸如于2013年7月26日公布的、公众可在http://www.usb.org/developers/docs/usb_31_121314.zip获得的USB 3.1)、或者当前可用或将来可能出现的其他串行总线标准或专有串行总线通信规范进行通信。
主机设备可以使用各种介质来与USB设备进行通信。如以下更详细地描述的,“介质”一般指的是主机设备与USB设备藉以其连接的信道。在一些示例中,主机设备可以使用无线通信信道(诸如类似于WiFi、蓝牙等的短程通信信道)来与USB设备进行通信。然而,通信信道不必限于此方面,并且可以包括任何无线或有线通信介质(诸如射频(RF)频谱或者一条或更多条物理传输线)、或者无线和有线介质的任何组合。在一些示例中,通信信道可以形成基于分组的网络(诸如局域网、广域网、或全球网络(诸如因特网))的一部分。
尽管不限于任何特定通信标准,但是本公开的各技术可适用于2014年2月25日公布的并且公众可在http://www.usb.org/developers/docs/devclass_docs/Media_Agnostic_USB_v1.0.zip获得的无介质限制USB标准(“MA-USB”标准)。介质无关的(MA)USB的一个动机是在除USB之外的介质(诸如举例而言,无线或IP链路)上提供USB连通性,同时最大限度地利用现有的USB基础设施。
为了使USB设备提供可接受的用户体验,该USB设备可具有与数据接收相关联的等待时间要求。例如,一些类型的USB数据转移可要求比其他类型的USB数据转移低的等待时间以便提供可接受的用户体验。数据转移类型一般可以指正在主机设备与USB设备之间传达的数据的组成。示例数据转移类型包括控制转移(例如,针对与USB命令和状态操作相关联的数据)、批量转移(例如,针对时间不敏感数据的通信)、中断转移(例如,针对要求有界等待时间的非周期性数据转移)、以及同步转移(例如,针对使用基于时间的递送模型的周期性数据转移)。其他类型的数据转移或许也是可能的。某些数据转移类型可由USB设备处的特定端点接收。例如,批量数据转移类型可被称为与批量端点相关联,而中断数据转移类型可被称为与中断端点相关联。
一些USB系统(诸如以上引述的MA-USB标准中所描述的系统)可以使用缓冲器来管控主机设备与USB设备之间的数据流。此类缓冲可被称为基于信用的流控制,其中USB设备向主机设备指示可用于接收数据的缓冲器空间量。主机设备可随后向USB设备发送USB设备能够接受的那么多的数据。例如,为了确保通信介质的高效使用,传出转移协议可以利用基于信用的流控制来将从主机设备到USB设备的数据流计量到可被成功接受到USB设备缓冲器中的量。USB设备可向主机设备通知其可用的缓冲器空间。一旦向USB设备发送数据,主机设备就可以减小信用。主机设备可以在接收到数据已被传递且从USB设备的缓冲器移除的确收之际分配信用。
在一些实例中,USB设备缓冲器可以是相对较大的,这可导致主机设备处较大的可用信用量。在此类实例中,主机设备可以向USB设备发送相对较大量的数据。发送相对较大量的包括各种USB数据转移类型的数据可能导致较低优先级数据分组妨碍较高优先级分组在可接受的时间量内传送。作为示例,当主机设备在发出中断转移之前发出数个批量转移时,该主机设备可直到传送了所有在前的批量数据之后才传送中断数据。在此示例中,主机设备可能没有在中断数据的等待时间要求内传送中断数据。
在USB通信的上下文中,网络栈(也被称为协议栈)一般可以指负责在主机设备与USB设备之间传输数据的一个或多个协议。也就是说,网络栈可以负责在连接主机设备和USB设备的特定介质上传送数据分组。一些网络栈可以具有使特定数据优先化的服务质量(QoS)支持。例如,使用网际协议(IP)的主机设备可以使用IP报头中的服务类型(ToS)字段来区分不同话务类型并提供某些分组的较高优先级。
然而,并非所有网络栈都包括QoS支持。某些传输介质可能不具有所定义的QoS支持(例如,蓝牙)。在一些示例中,主机设备可以使用不使用QoS支持的操作模式,即使此类支持是可用的。此外,即使在网络栈处具有QoS支持的情况下,等待时间也可能在多个服务生成具有相同优先级水平的数据话务(例如,设备并发地发送均被分类为相同优先级水平的USB数据和其他音频/视频数据)的实例中出现。
本公开的各技术可被用来控制USB数据流并减少较高优先级分组的递送等待时间。例如,这些技术可有助于基于正被传送的数据的USB数据转移类型来对USB数据区分优先级以用于跨给定介质的传输。在一些实例中,这些技术可有助于缓解具有较严格等待时间要求的较高优先级数据分组被相对较低优先级的数据分组延迟的问题。
根据本公开的各方面,主机设备可以在协议适配层(PAL)处实现各技术。USB PAL可以实现主机设备与一个或多个USB设备之间的连通性。在一些实例中,PAL可以遵循一个或多个标准。在出于解说目的的示例中,PAL可以遵循MA-USB标准并且可以在除USB之外的介质(包括例如无线和IP链路)上实现主机设备与一个或多个USB设备之间的连通性。
USB PAL同与网络栈相关联的网络层分开。例如,如以下更详细地描述的,主机PAL可以负责USB设备的管理和USB有效载荷在给定传输介质上的传输。主机PAL可以在网络栈之上运行并且向网络栈发出数据以供在传输介质上递送。相应地,本公开的各技术不同于通常与网络栈相关联和以上所提及的QoS支持。也就是说,这些技术可被用来控制从主机设备到传输层的数据流,而传输层可以负责传输介质上的数据递送(并且可以实现或可以不实现其自己的、单独的流控制技术)。
尽管本公开的某些技术是关于USB标准描述的,但是应当理解,USB标准仅是可以与本公开一致的通信标准的一些示例。由此,尽管在USB标准的上下文中描述了这些技术,但是其他类似通信标准(例如,IEEE 1394标准、以太网标准、串行高级技术附连标准、高清晰度多媒体接口(HDMI)标准、以及雷电(Thunderbolt)标准)或甚至将来的通信标准或技术可以同样从本公开的教导中获益。
图1是解说具有主机设备20的示例系统的框图,该主机设备20在传输介质(32)(其也可被称为“物理链路”)上与具有USB设备缓冲器28的USB设备24处于通信。
主机设备20包括能够主控一个或多个其他设备(诸如USB设备24)(例如,与其通信)的电子设备。在一些示例中,主机设备20可以包括智能电话、平板、或其他移动设备。尽管主要关于移动设备(诸如智能电话和平板)进行描述,但是主机设备20可以包括能够主控一个或多个其他设备的任何电子设备,并且可被集成到例如电器、汽车、飞行器、船舶、或者能够执行与本文中所描述的技术一致的数据转移能力的任何其他任何设备中。在一些示例中,主机设备20可被实现为一个或更多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、分立逻辑、软件、硬件、固件或其任何组合。
尽管出于清楚目的未示出,但是主机设备20可以包括由各式各样的易失性或非易失性存储器中的任何存储器组成的存储器,包括但不限于随机存取存储器(RAM)(诸如同步动态随机存取存储器(SDRAM))、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦式可编程只读存储器(EEPROM)、磁性随机存取存储器(MRAM)、闪存存储器等。该存储器可以包括用于存储音频数据、视频数据、以及其他种类的数据的计算机可读存储介质。主机设备20也可以包括调制解调器、以及发射机/接收机单元,其包括各种混频器、滤波器、放大器和设计成用于信号调制的其他组件、以及一个或多个天线和设计成用于传送和接收数据的其他组件。
USB设备24可以包括遵循用于与主机设备20进行通信的USB通信标准的各式各样的设备中的任何设备。在一些实例中,USB设备24可以是人机接口设备(HID)。例如,USB设备24可以是允许用户与主机设备20交互的输入设备。示例HID可以包括鼠标、键盘、触控板、相机等。在其他示例中,USB设备可以是大容量存储设备、显示器、或能够经由USB标准进行通信的任何其他设备。
在图1中所示的示例中,USB设备24包括USB设备缓冲器28。USB设备缓冲器28可以包括由各式各样的易失性或非易失性存储器中的任一者组成的存储器。如以下更详细地描述的,USB设备缓冲器28可以存储从主机设备20接收的数据。在一些实例中,USB设备24可在从主机设备20接收数据之前初始地向主机设备20通知USB设备缓冲器28的大小。
主机设备20可以经由有线或无线传输介质32(其也可被称为物理链路或简称为链路)与USB设备24进行通信。相应地,传输介质32一般表示用于在图1中所示的各设备之间传送数据的任何合适通信介质、或不同通信介质的集合。传输介质32可以包括相对短程的通信信道,类似于WiFi、蓝牙等。然而,传输介质32不必限于此方面,并且可以包括任何无线或有线通信介质(诸如射频(RF)频谱或者一条或多条物理传输线)、或者无线和有线介质的任何组合。
传输介质32甚至可以形成基于分组的网络(诸如局域网、广域网、或全球网络(诸如因特网))的一部分。传输介质32可以是基础设施辅助的,或者可以是对等的。图1的各设备可以使用通信协议(诸如来自IEEE 1402.11标准族的标准、或者任何其他通信协议或格式)在传输介质32上进行通信,如以下关于图3更详细地描述的。
在一些示例中,图1的各设备经由遵循USB标准或其他无线传输标准(诸如WiFi)的有线或无线连接进行通信。例如,如以上所提及的,图1的各设备可以遵照USB 2.0规范、USB3.0规范、或者当前可用或将来可能出现的其他标准或专有通信规范进行通信。在一些示例中,主机设备20和USB设备24可以使用MA USB标准进行通信,这可以在除USB之外的传输介质32(例如,无线或IP链路)上实现USB连通性,同时最大限度地利用现有的USB基础设施。
一般而言,当使用USB标准进行通信时,主机设备20可以促成与USB设备24的数据转移。为了使USB设备24提供可接受的用户体验,USB设备24可具有数据等待时间要求。例如,一些类型的USB数据转移可要求比其他类型的USB数据转移低的等待时间以便提供可接受的用户体验。示例数据转移类型包括控制转移、批量转移、中断转移、以及同步转移。一般而言,批量转移被用于主机与设备之间时间不敏感的通信(例如,向闪存驱动器转移文件)。中断转移一般是要求有界等待时间的非周期性转移。同步转移一般支持(1)要求周期性递送,以及(2)容忍偶然的数据丢失的数据流。
一旦与USB设备24连接,主机设备20就可以初始地接收对USB设备缓冲器28的大小的指示。在一些示例中,主机设备20可以使用USB设备缓冲器28来管控主机设备20与USB设备24之间的数据流。此类缓冲可被称为基于信用的流控制。使用这种模型,主机设备20可以向USB设备24发送USB设备24能够接受的那么多的数据。例如,主机设备20可以在向USB设备24发送数据之际减小USB设备24处可用的信用量。主机设备20可以在接收到数据已被转移且从USB设备缓冲器28移除的确收之际分配信用。
在一些实例中,USB设备缓冲器28可以是相对较大的,这可导致主机设备20处较大的可用信用量。在此类实例中,主机设备20可以向USB设备24发送相对较大量的数据。发送相对较大量的包括各种USB数据转移类型的数据可能导致较低优先级数据分组妨碍较高优先级分组在可接受的时间量内传送。
根据本公开的各方面,主机设备20可以控制给USB设备24的USB数据流以减少某些数据分组的递送等待时间。例如,主机设备20可以实现基于正被传送的数据的USB数据转移类型来对USB数据区分优先级以用于跨给定介质的传输的数据流控制技术。在一些实例中,这些技术可有助于缓解具有较严格等待时间要求的较高优先级数据分组被相对较低优先级的数据分组延迟的问题。
根据本公开的各方面,主机设备20可以在USB PAL处实现各技术。在一示例中,根据本公开的各方面,主机设备20可以确定正从主机设备20向USB设备24传送的USB数据的USB数据转移类型。主机设备20可以基于所确定的转移类型来确定USB数据的优先级。主机设备20随后可以基于所确定的优先级来将USB数据从主机设备20的PAL向主机设备20的网络层转移以用于跨传输介质32的数据传输。
在出于解说目的的示例中,主机设备20可以确定数据转移类型是批量、中断、同步还是另一转移类型。主机设备20可以向这些转移类型中的一者或多者指派比其他转移类型高的优先级。例如,主机设备20可以向中断和同步转移指派比批量转移高的优先级。
在一些示例中,主机设备20可以使用关于USB数据转移类型的未完结转移(即,对其的请求已被释放给网络栈、但尚未接收到响应的数据转移)的阈值来确定正被发送给USB设备24的USB数据的优先级。例如,主机设备20可以将正被发送给USB设备24的USB数据划分成数个转移请求(TransferReq),其中每个转移请求与其自己的请求标识符和序列号相关联。主机设备20可以从USB设备24接收包括请求标识符、序列号、以及其他数据的转移响应(TransferResp)。主机设备20随后可以向USB设备24发送已接收到转移的确收(TransferAck(转移确收)),USB设备24可以将该确收用作可以从USB设备缓冲器28移除数据的信号。
根据本公开的各方面,主机设备20可以针对一种或多种转移类型确定用于控制未完结转移请求(例如,已被发出、尚未被确收的转移请求)的数目的阈值。在一些示例中,当正被传送的USB数据的转移类型的未完结转移请求的数目低于或等于阈值时,主机设备20可以将USB数据从主机设备20的PAL向主机设备20的网络层转移。相反,当该USB数据的转移类型的未完结转移请求的数目大于阈值时,主机设备20可以在主机设备20的PAL处的转移队列中缓冲USB数据,直到该USB数据的转移类型的未完结转移请求的数目低于或等于该阈值。
使用上述阈值来限定特定数据转移类型的未完结数据转移请求的数目可影响与主机设备的网络层相关联的缓冲器处所经历的等待时间。例如,主机设备20可以将特定类型的未完结转移请求的数目限于阈值数目,但是可以允许所有其他数据转移类型在没有限制的情况下发送给网络层。限制特定类型的未完结数据请求的数目可以阻止主机设备20向网络层发送此类数据(例如,并且代替地在主机PAL 64处缓冲该数据)。通过以此方式控制数据转移,主机设备20可以管理在网络层处缓冲的特定类型的数据量,由此允许在网络层处更快速地处理其他转移类型的数据。
根据本公开的各方面,主机设备20可以针对每种转移类型或少于所有转移类型确定阈值。在出于解说目的的示例中,主机设备20可以仅针对批量数据转移使用阈值来限定未完结批量转移类型的数目。在此示例中,主机设备20可以将未完结批量转移请求的数目限于阈值数目,但是可以允许所有其他数据转移类型在没有限制的情况下发送给网络层。
在一些示例中,主机设备20可以动态地确定一个或多个阈值。例如,主机设备20可以基于与将特定USB数据从主机设备20递送给USB设备24相关联的等待时间来动态地确定数据转移类型阈值。在一示例中,主机设备20可以测量与完成中断数据的转移相关联的时间量(例如,TransferCompleteTime(转移完成时间))。在此示例中,主机设备20可以在用于完成中断数据转移的时间量相对较高时减小关于未完结批量转移请求的阈值,并且可以在用于完成中断数据转移的时间量相对较低时减小关于未完结批量转移请求的阈值。附加或替换地,主机设备20可以使用各种其他技术来确定阈值,如以下更详细地描述的。
尽管图1解说了主机设备20仅与单个USB设备24进行通信,但是这些技术并不限于此方式。在其他示例中,主机设备20可以与多个USB设备和/或不一定遵循USB通信标准的各种其他设备进行通信,如以下更详细地描述的。
图2是解说用于USB主机40和USB设备42的示例USB层级的框图。在一些示例中,USB主机40和USB设备42可类似于以上关于图1所描述的主机设备20和USB设备24来配置。然而,关于图2所描述的各技术可以由各种其他设备来实现。
在图2的示例中,USB主机40包括网络栈44,该网络栈44具有传输和网络层46、逻辑链路控制(LLC)子层48、媒体接入控制(MAC)子层50、以及物理(PHY)子层52。USB设备42被互易地配置并且包括网络栈54,该网络栈54具有传输和网络层56、LLC子层58、MAC子层60、以及PHY子层62。应当理解,网络栈44和网络栈54仅是示例,并且其他网络栈可以具有比图2中所示的更多、更少、或不同的组件。USB主机40还包括主机PAL 64,而USB设备42包括设备PAL66。
USB主机40和USB设备42经由物理链路68连接,物理链路68可以包括各种有线或无线链路。在图2的示例中,物理链路68包括管理信道70和数据信道72。物理链路68一般可以表示用于在USB主机40与USB设备42之间传送数据的任何合适的通信介质或不同通信介质的集合,例如包括任何无线或有线通信介质(诸如WiFi、蓝牙、RF频谱、或者一个或多个物理传输线)。
USB主机40和USB设备42的网络栈可以执行类似功能。例如,传输和网络层46以及传输和网络层56可以负责添加用于物理链路68上的数据传输的报头信息。在一些示例中,传输和网络层46以及传输和网络层56可以包括数个协议。例如,传输和网络层46以及传输以及网络层56可以包括在网际协议(IP)之上运行的用户数据报协议(UDP)之上运行的传输控制协议(TCP)(TCP/UDP/IP)。LLC子层48和LLC子层58可被包括在相应网络栈的数据链路层中,并且可以提供联网协议的复用。MAC子层50和MAC子层60可以从接收自LLC子层的内容生成MAC分组。PHY子层52以及PHY子层62可以将MAC分组转换成PHY层分组以用于物理链路68上的传输。
一般而言,主机PAL 64以及设备PAL 66负责形成USB数据分组并将该数据分组推送给相应网络栈以用于物理链路68上的传输。如以上关于图1所提及的,PAL数据分组可以属于各种不同的USB数据转移类型,例如包括控制、批量、中断、以及同步。另外,一些USB数据转移类型可能具有与其他数据转移类型不同的等待时间要求。例如,同步转移可以携带取决于时间的数据。中断转移(其通常可由HID外围设备使用)可以要求相对较低的分组递送等待时间以满足用户体验要求。在一些实例中,最小等待时间要求针对不同的使用情形而变化(例如,用户可对与USB鼠标光标相关联的指针滞后相对敏感,因此可存在对分组递送等待时间的相对较低的容忍)。
在主机PAL 64向网络栈44发送数据分组之后,分组可以在实际传输之前保持被缓冲在与网络栈44相关联的队列中。例如,可能存在可延迟网络栈44发送数据分组的休眠/苏醒调度功能,或者可能存在共享网络栈44的一个以上功能块(例如,无线局域网(WLAN)与蓝牙模块共享无线电块)。在一些示例中,数据分组还可能因最大传输吞吐量和/或物理链路68处变化的状况(诸如低带宽可用性)而被缓冲在网络栈44处。
在一些实例中,网络栈44可以包括用于加速特定类型的话务的一些机制。例如,USB主机40可以使用IP模式向USB设备42发送数据。在该模式中,网络栈44可以为数据分组形成IP报头,并且传输和网络层46可以使用该IP报头中的服务类型(ToS)字段来区分不同话务类型并为某些分组提供较高优先级。然而,此类经区分优先级的分组递送并不总是可用的。例如,USB主机40可以在不使用IP报头的模式(例如,MA USB原生模式)中操作。此外,一些网络栈配置和/或传输介质(例如,蓝牙)可以不具有QoS支持。
在一些实例(诸如QoS支持在网络栈44处不可用的实例)中,当多个服务使用相同网络栈时,或者在其他实例中,较高优先级分组可能被其他较低优先级分组阻塞,这导致了较高优先级分组的增加的等待时间。在出于解说目的的示例中,USB设备42的缓冲器可以是相对较大的,这可以允许USB主机40向USB设备42发送大量数据(如例如以上关于图1所描述的)。当主机PAL64向网络栈44发出批量数据转移的突发以供传送给USB设备42时,可能发生线头(HOL)阻塞。与传送数据分组相关联的等待时间可以与正被发送的数据的队列长度成比例。在此示例中,相对时间敏感(较高优先级)的中断或同步分组可被批量数据的突发阻塞。物理链路68处的低吞吐量、网络栈44处实现的调度策略、或其他因素可以进一步加重该等待时间问题。
例如,支持USB 3.0标准的设备可以具有可以处置USB 3.0数据的突发的相对较大的缓冲器。使用基于信用的流控制机制(诸如MA USB规范中所描述的一者),批量端点可以具有大量的未完结数据转移(例如,对其的请求已被释放给网络栈、但尚未接收到响应的转移),这可导致许多待决分组在网络栈44的缓冲器中等待被传送。存储到缓冲器的数据量可随着USB批量话务的突发而快速上升。
根据本公开的各方面,主机PAL 64可以基于USB数据的数据转移类型来控制向网络栈44发送的USB数据流。例如,主机PAL 64可以初始地确定正被传送的USB数据的数据转移类型。主机PAL 64可以基于所确定的转移类型来确定USB数据的优先级。主机PAL 64随后可以基于所确定的优先级来向网络栈44转移USB数据。在出于解说目的的示例中,主机PAL64可以确定数据转移类型是批量、中断、同步还是另一转移类型。主机PAL 64可以向这些转移类型中的一者或多者指派比其他转移类型高的优先级。例如,主机PAL 64可以向中断和同步转移指派比批量转移高的优先级。
在一些示例中,主机PAL 64可以使用关于USB数据转移类型的未完结转移请求的阈值来确定USB数据的优先级。例如,根据本公开的各方面,主机PAL 64可以针对一种或多种转移类型确定用于控制未完结转移请求(例如,已被发出、尚未被确收的转移请求)的数目的阈值。主机PAL 64可以针对每种转移类型或少于所有转移类型确定阈值。
在出于解说目的的示例中,主机PAL 64可以使用关于批量数据转移的阈值来限定未完结批量数据转移类型的数目。在此示例中,主机设备20可以将未完结批量转移请求的数目限于阈值数目,但是可以允许所有其他数据转移类型在没有限制的情况下发送给网络栈44。限制未完结批量数据请求的数目可以阻止主机PAL 64向网络栈44发送批量数据转移(例如,并且代替地在主机PAL64处缓冲该数据)。通过控制向网络栈44发送的批量数据量,主机PAL 64可以管理在网络栈44处缓冲的批量数据量。以此方式,主机PAL 64可以限制在网络栈44处缓冲的批量数据量,由此准许在网络栈44处更快速地处理其他转移类型的数据。
尽管不限于任何特定标准,但是在一些实例中,这些技术可以与MA USB标准及相关联的指定协议栈协同使用。例如,有线串行总线上的USB通信可以具有相对较高的带宽和相对较低的分组递送等待时间。然而,本公开的各技术可适用于可以具有相对较低的带宽和较高的分组递送等待时间的介质。
图3A是解说数据从(例如,USB主机40的)USB PAL 90向(例如,USB主机40的)网络栈92转移的概念图。在图3A的示例中,PAL 90包括与第一数据转移类型相关联的第一数据94以及与第二数据转移类型相关联的第二数据96,该第一数据转移类型与高优先级端点相关联,该第二数据转移类型与低优先级端点相关联。网络栈92包括缓冲器98,该缓冲器98在先进先出(FIFO)的基础上操作,并且被用来在传输链路100上传送接收自PAL 90的数据话务之前缓冲该数据话务。
在一些实例中,PAL 90向网络栈92发送正接收数据的USB设备能接收的那样多的数据。例如,PAL 90可以使用基于信用的系统来确定向网络栈92发送多少第一数据94和第二数据96。在该示例中,PAL 90可以在网络栈92一旦可用时就向其发送第一数据94和第二数据96,而无需参照正被发送的话务类型。
然而,当在USB会话中服务多个端点时,一些端点(例如,中断或同步端点)可能要求比其他端点(例如,批量端点)低的分组递送等待时间。在图3A的示例中,第一数据94与要求较低分组递送等待时间的较高优先级端点相关联,而第二数据96与较低优先级端点相关联。在网络栈92不具有QoS支持的实例中,所有传出分组共享相同缓冲器98,并且高优先级分组可被其他在先的较低优先级分组阻塞在缓冲器98中。此类HOL阻塞可导致高分组递送等待时间,尤其在传输链路100的吞吐量较低时。
图3B是解说数据从(例如,USB主机40的)USB PAL 110向(例如,USB主机40的)网络栈112转移的另一概念图。在图3B的示例中,PAL 110包括与第一数据转移类型相关联的第一数据114以及与第二数据转移类型相关联的第二数据116,该第一数据转移类型与高优先级端点相关联,该第二数据转移类型与低优先级端点相关联。网络栈112包括缓冲器118,该缓冲器118在先进先出(FIFO)的基础上操作,并且被用来在传输链路120上传送接收自PAL110的数据话务之前缓冲该数据话务。
根据本公开的各方面,PAL 110可以使用基于优先级的流控制机制来管理向网络栈112提供第一数据114和第二数据116以用于传输链路120上的传输的方式。例如,PAL 110(其在一些实例中可以由USB主机设备(诸如主机设备20或USB主机40)实现)可以确定第一数据114和第二数据116的USB数据转移类型。PAL 110可以基于所确定的转移类型来确定USB数据的优先级。例如,PAL 110可以确定与较低优先级端点(例如,批量转移类型)相关联的数据(诸如第二数据116)具有相对较低的优先级并且由此服从流控制。PAL 110随后可以基于所确定的优先级向网络栈112转移USB数据。
本文中所描述的流控制技术可以减少高优先级分组(诸如图3B中的第一数据114)的分组递送等待时间。在一些示例中,根据本公开的各方面,PAL 110可以限制缓冲器118的最大队列长度以避免对高优先级分组(诸如第一数据114)的长HOL阻塞时间。例如,PAL 110可以管控向网络栈112发送第二数据116的速度。在一些示例中,PAL 110可以暂时地减小针对具有第二数据116的数据转移类型的端点所允许的未完结转移的限度。在此示例中,第二数据116(低优先级分组)可以保持在PAL 110处的缓冲器中排队,而非在网络栈112的缓冲器118中等待。
例如,通过限制所允许的特定类型的未完结数据转移的数目,PAL 110被限制向缓冲器118发送大量的第二数据116的分组。由于较少待决分组在缓冲器118中等待,PAL 110由此减少了高优先级数据到达缓冲器118中时的HOL阻塞时间。
在图3B的示例中,PAL 110使向网络栈112发送第一数据114优先于向网络栈112发送第二数据116。在此示例中,PAL 110对第二数据116的转移类型的未完结数据转移的数目强制阈值,但是不对第一数据114的转移类型的数据转移强加此类限制。例如,PAL 110将第二数据116的转移类型的未完结数据转移的数目限制为2(如括号122所指示的)。以此方式,PAL 110被阻止使用第二数据116填充缓冲器118,这潜在地减少了缓冲器118中第二数据116的量以及与此类数据相关联的阻塞时间。尽管出于解说目的描述了阈值为2,但是应当理解,PAL 110可以使用各种其他阈值。
尽管对特定数据转移类型的未完结数据转移的数目强加阈值可以减少高优先级分组的递送等待时间,但是在一些实例中,此类技术可能减小某些数据转移的端对端的数据吞吐量,尤其在传输链路120能够提供较高吞吐量时。为了避免不必要地牺牲特定数据转移类型的吞吐量,根据本公开的各方面,PAL110可以动态地调节阈值(作为具有静态阈值的补充或者作为替换)。在出于解说目的的示例中,PAL 110可以为所允许的未完结批量数据转移的数目设置阈值。在此示例中,增大阈值允许更多的未完结批量转移,从而导致潜在更高的数据吞吐量。相反,减小阈值降低缓冲器118的最大队列长度以减少HOL阻塞时间。
在一些实例中,PAL 110可以使用与缓冲器118分开的缓冲器来存储已被限制向缓冲器118发送的数据(诸如第一数据114和第二数据116)。例如,PAL 110可以将该数据存储到该缓冲器,直到未完结数据转移的数目小于或等于阈值数目。PAL 110随后可以从该缓冲器释放该数据以转移给缓冲器118。另外,PAL 110也可以解除分配与接收数据的USB设备相关联的缓冲器的信用。也就是说,PAL 110可以基于数据正从缓冲器释放来管理本文中所描述的用于数据转移的基于信用的系统。
PAL 110可以基于与递送特定USB数据相关联的等待时间来动态地确定数据转移类型阈值。例如,PAL 110可以基于观察到的与中断转移相关联的等待时间来动态地调节本文中所描述的流控制技术。存在若干可被用于估计中断分组递送等待时间的试探法,诸如与针对中断转移发送PAL请求至接收PAL响应相关联的时间量(例如,如使用MA USB的TransferCompleteTime变量测得的)、转移超时和/或重试计算、缓冲器118的队列长度等。
根据本公开的各方面,PAL 110可以使用这些试探法来动态地确定一个或多个数据转移类型阈值。例如,如果PAL 110确定中断分组递送等待时间(或另一类型的数据分组)较高,则PAL 110可以减小针对低优先级分组所允许的未完结转移的限度。在此示例中,低优先级分组可以保持在PAL 110处的缓冲器中排队,而非在网络栈112的缓冲器118中等待。替换地,如果PAL 110确定中断分组递送等待时间(或另一类型的数据分组)较低,则PAL110可以增大针对低优先级分组所允许的未完结转移的限度。在此示例中,相对较大量的低优先级分组可被发送给网络栈112的缓冲器118,由此增大吞吐量。通过动态地调节某些数据转移类型的阈值,PAL 110可以减少高优先级转移的转移等待时间(由此提供积极的用户体验),同时避免吞吐量的不必要牺牲。
在一些实例中,未完结数据转移类型的阈值可以附加或替换地基于使用情形来确定和/或动态地调节。例如,某些类型的USB设备可以具有不同的特性。在出于解说目的的示例中,如以上所提及的,用户可对与USB鼠标光标相关联的指针滞后相对敏感,因此可存在对分组递送等待时间的相对较低的容忍。在此示例中,未完结数据转移类型的阈值可被确定和/或动态地调节以减小等待时间(例如,通过限制针对特定数据类型所允许的未完结转移的数目)。在另一示例中,用户可对与在USB键盘上键入相关联的滞后较不敏感。在此示例中,未完结数据转移类型的阈值可被确定和/或动态地调节以最大化吞吐量(例如,通过增大针对特定数据类型所允许的未完结转移的数目)。相应地,根据本公开的各方面,未完结数据转移类型的阈值可以附加或替换地基于接收数据的USB设备的类型或者基于其他因素来确定和/或动态地调节。
根据一些示例,PAL 110可以完全启用或禁用流控制。例如,PAL 110可以基于观察到的分组递送等待时间、接收USB设备能力(例如,接收USB设备的缓冲器的大小)、网络状况、或其他因素来动态地实现(或禁用)上述阈值。例如,PAL 110通常可以在不具有上述阈值的情况下操作。PAL 110可以在观察到分组递送等待时间、接收到USB设备具有相对较大的缓冲器(例如,其可导致HOL阻塞,如本文中所讨论的)的指示、观察到网络具有相对较低的带宽或其他因素之际启用本公开的流控制技术。PAL 110可以在此类状况被缓解之际禁用流控制技术。
根据本公开的各方面,流控制技术可以单独在USB层(例如,诸如MA USB层)中实现,而无需对网络栈(诸如网络栈112)进行任何修改。如以上所提及的,这些技术可以在网络栈112不具有优先级队列支持时减少高优先级分组递送等待时间。然而,即使假定网络栈112的确具有QoS支持,其他话务也可以在USB转移时共享缓冲器118。在此类实例中,这些技术仍可以被用来管控低优先级话务。
在出于解说目的的示例中,Miracast话务可以与第二数据116共享缓冲器118。在此示例中,PAL 110可以管控第二数据116向缓冲器118的流动以满足Miracast话务的等待时间和/或吞吐量要求。例如,如果PAL 110确定存在相对较大量的Miracast话务(或高优先级Miracast话务)存储到缓冲器118以用于网络上的传输,则PAL 110可以减小针对低优先级分组所允许的未完结转移的限度。在此示例中,低优先级分组可以保持在PAL 110处的缓冲器中排队,而非在网络栈112的缓冲器118中等待,由此使得Miracast话务能够被发送。替换地,如果PAL 110确定缓冲器118相对没有其他话务,则PAL 110可以增大针对低优先级分组所允许的未完结转移的限度。在此示例中,相对较大量的低优先级分组可被发送给网络栈112的缓冲器118,由此增大USB数据的吞吐量。
图4是解说根据本公开的各技术的USB数据传输的示例的流程图。例如,图4一般解说主机USB设备的PAL向网络层发送数据以用于跨传输介质的传输。虽然出于示例的目的关于主机设备20进行描述,但是应当理解,图4的各技术可以由各种其他设备执行。
在图4的示例中,主机设备20接收USB数据以供传送给USB设备(诸如USB设备24)(130)。例如,主机设备20可以从与主机设备20相关联的驱动器接收数据。主机设备20随后可以确定是否启用优先级调度(132)。例如,如以上所提及的,根据本公开的各方面,主机设备20可以基于观察到的分组递送等待时间、接收USB设备能力(例如,接收USB设备的缓冲器的大小)、网络状况、或其他因素来动态地启用(或禁用)基于优先级的流控制机制,该基于优先级的流控制机制是基于正被传送的数据的USB数据转移类型的,如上所述。
当启用优先级调度时(步骤132的‘是’分支),主机设备20可以确定正被传送的数据类型的优先级(134)。例如,根据本公开的各方面,主机设备20可以将正被传送的数据标识为批量数据、中断数据、同步数据、或另一数据类型之一。在一些实例中,主机设备20可以确定此类数据转移类型中的一者或多者的优先级。
根据本公开的各方面,主机设备20可以根据正被传送的数据类型的未完结数据转移请求的阈值来确定优先级。例如,主机设备20可以针对一种或多种转移类型确定用于控制未完结转移请求(例如,已被发出、尚未被确收的转移请求)的数目的阈值。在一些示例中,当正被传送的USB数据的转移类型的未完结转移请求的数目低于或等于阈值时,主机设备20可以将该USB数据从主机设备20的PAL向主机设备20的网络层转移。相反,当该USB数据的转移类型的未完结转移请求的数目大于阈值时,主机设备20可以在主机设备20的PAL处的转移队列中缓冲该USB数据,直到该USB数据的转移类型的未完结转移请求的数目低于该阈值。
相应地,在图4的示例中,主机设备20可以确定正被传送的数据类型的未完结转移请求的数目是否小于阈值(136)。如果请求的数目不小于阈值(步骤136的‘否’分支),则主机设备120可以在PAL级处缓冲数据,直到未完结请求的数目小于阈值(138)。如果请求的数目小于阈值(步骤136的‘是’分支),则主机设备20可以向网络层转移数据(例如,将数据从PAL缓冲器释放到网络栈的缓冲器)以供传送给USB设备(140)。
还应当理解,关于图4所示及所描述的各步骤仅作为一个示例来提供。也就是说,图4的方法的各步骤不一定按照图4中所示的次序来执行,并且可以执行更少、附加、或替换的步骤。
如以上所提及的,尽管关于USB标准一般地描述了本公开的某些技术,但是应当理解,USB标准仅是可以与本公开一致的通信标准的示例。由此,尽管在USB标准的上下文中描述了这些技术,但是其他类似通信标准(例如,IEEE1394标准(被称为“火线(FireWire)”)、以太网标准、串行高级技术附连标准、高清晰度多媒体接口(HDMI)标准、以及雷电标准)或甚至将来的类似通信标准或技术可以同样从本公开的教导中获益。
在一个或多个示例中,所描述的功能可以在硬件、软件、固件、或其任何组合中实现。如果在软件中实现,则各功能可以作为一条或多条指令或代码存储在计算机可读介质上或者通过该计算机可读介质来传送并且由基于硬件的处理单元来执行。计算机可读介质可包括计算机可读存储介质,该计算机可读存储介质对应于包括例如根据通信协议来促成计算机程序从一地向另一地转移的任何介质的有形介质(诸如数据存储介质或通信介质)。以此方式,计算机可读介质一般可对应于(1)为非瞬态的有形计算机可读存储介质,或者(2)通信介质(诸如信号或载波)。数据存储介质可以是能由一个或多个计算机或者一个或多个处理器访问以取回用于实现本公开中描述的技术的指令、代码、和/或数据结构的任何可用介质。计算机程序产品可包括计算机可读介质。
作为示例而非限定,这样的计算机可读存储介质可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、闪存、或能用于存储指令或数据结构形式的期望程序代码且能被计算机访问的任何其它介质。任何连接也被正当地称为计算机可读介质。例如,如果指令是使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)、或诸如红外、无线电、以及微波之类的无线技术从web网站、服务器、或其它远程源传送而来,则该同轴电缆、光纤电缆、双绞线、DSL、或诸如红外、无线电、以及微波之类的无线技术就被包括在介质的定义之中。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号、或其他瞬态介质,而是取而代之涉及非瞬态有形存储介质。如本文所用的盘(disk)和碟(disc)包括压缩碟(CD)、激光碟、光碟、数字多功能碟(DVD)、软盘和蓝光碟,其中盘(disk)通常以磁的方式再现数据,而碟(disc)通常用激光以光学方式再现数据。上述的组合应当也被包括在计算机可读介质的范围内。
指令可以由一个或多个处理器执行,诸如一个或更多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)、或者其他等效的集成或分立逻辑电路系统。相应地,如本文中所使用的术语“处理器”可以指任何前述结构或者适用于实现本文中所描述的技术的任何其他结构。另外,在一些方面,本文中所描述的功能性可被提供在配置成用于编码和解码的专用硬件和/或软件模块内,或者纳入在组合编解码器中。同样,各技术可完全实现在一个或多个电路或逻辑元素中。
本公开的技术可在各种设备或装置中实现,包括无线手持机、集成电路(IC)或IC集(例如,芯片集)。在本公开中描述了各种组件、模块、或单元以强调被配置成执行所公开的技术的设备的功能性方面,但不必要求通过不同硬件单元来实现。确切而言,如以上所描述的,各种单元可在编解码器硬件单元中组合或者由可互操作的硬件单元集合(包括如以上所描述的一个或多个处理器)结合合适的软件和/或固件来提供。
已经描述了各种示例。这些及其他示例均落在所附权利要求的范围之内。
Claims (30)
1.一种用于传送数据的方法,所述方法包括:
在通用串行总线(USB)主机处确定正从主机设备向USB设备传送的USB数据的USB数据转移类型;
基于所确定的USB数据转移类型来确定所述USB数据的优先级;以及
基于所确定的优先级来控制所述USB数据从所述USB主机的协议适配层(PAL)向所述USB主机的网络层的转移。
2.如权利要求1所述的方法,其特征在于,确定所述优先级包括:将所述数据转移类型标识为批量数据转移类型、同步数据转移类型、以及中断数据转移类型之一。
3.如权利要求2所述的方法,其特征在于,确定所述优先级包括:向所述批量数据转移类型指派比所述同步数据转移类型和所述中断数据转移类型低的优先级。
4.如权利要求1所述的方法,其特征在于,基于所述USB数据转移类型来确定所述USB数据的所述优先级包括:确定关于所述USB数据的所述USB数据转移类型的未完结转移请求的阈值,并且其中基于所确定的优先级来控制所述USB数据的转移包括:
当具有所述USB数据的所述USB数据转移类型的USB数据的未完结转移请求的数目低于或等于所述阈值时,将所述USB数据从所述USB主机的所述PAL向所述网络层转移;以及
当具有所述USB数据的所述USB数据转移类型的所述USB数据的未完结转移请求的数目大于所述阈值时,将所述USB数据保持在所述USB主机的所述PAL处的转移队列中,直到所述USB数据的所述USB数据转移类型的所述未完结转移请求的数目低于或等于所述阈值。
5.如权利要求4所述的方法,其特征在于,所述USB数据的所述USB数据转移类型包括批量转移类型,并且其中确定所述关于未完结转移请求的阈值包括:确定关于未完结批量数据转移请求的阈值。
6.如权利要求4所述的方法,其特征在于,进一步包括:基于与将第二USB数据从所述USB主机递送给所述USB设备相关联的等待时间来动态地确定所述阈值。
7.如权利要求6所述的方法,其特征在于,所述第二USB数据是与中断数据转移类型相关联的至少一个中断分组,所述方法进一步包括:
基于向所述网络层发送所述第二USB数据的时间与接收到来自所述USB设备的确收的时间之差来确定所述等待时间。
8.如权利要求1所述的方法,其特征在于,进一步包括:在将所述USB数据从所述USB的所述PAL向所述网络层转移之前,将所述USB数据存储到与所述USB主机的所述PAL相关联的缓冲器。
9.如权利要求8所述的方法,其特征在于,将所述USB数据从所述USB主机的所述PAL转移包括:将存储到与所述PAL相关联的所述缓冲器的所述USB数据释放到与所述网络层相关联的USB设备缓冲器。
10.如权利要求9所述的方法,其特征在于,进一步包括:在所述USB数据从与所述USB主机的所述PAL相关联的所述缓冲器释放之际,解除分配所述USB设备缓冲器的信用。
11.如权利要求1所述的方法,其特征在于,所述USB数据包括USB数据分组。
12.一种用于传送数据的设备,所述设备包括:
存储器,其被配置成存储通用串行总线(USB)数据;以及
USB主机设备的一个或多个处理器,所述一个或多个处理器被配置成:
在所述USB主机设备处确定正从所述主机设备向USB设备传送的USB数据的USB数据转移类型;
基于所确定的USB数据转移类型来确定所述USB数据的优先级;以及
基于所确定的优先级来控制所述USB数据从所述USB主机的协议适配层(PAL)向所述USB主机的网络层的转移。
13.如权利要求12所述的设备,其特征在于,为了确定所述优先级,所述一个或多个处理器被配置成:将所述数据转移类型标识为批量数据转移类型、同步数据转移类型、以及中断数据转移类型之一。
14.如权利要求13所述的设备,其特征在于,为了确定所述优先级,所述一个或多个处理器被配置成:向所述批量数据转移类型指派比所述同步数据转移类型和所述中断数据转移类型低的优先级。
15.如权利要求12所述的设备,其特征在于,为了基于所述USB数据转移类型来确定所述USB数据的所述优先级,所述一个或多个处理器被配置成:确定关于所述USB数据的所述USB数据转移类型的未完结转移请求的阈值,并且其中为了基于所确定的优先级来控制所述USB数据的转移,所述一个或多个处理器被配置成:
当具有所述USB数据的所述USB数据转移类型的USB数据的未完结转移请求的数目低于或等于所述阈值时,将所述USB数据从所述USB主机的所述PAL向所述网络层转移;以及
当具有所述USB数据的所述USB数据转移类型的所述USB数据的未完结转移请求的数目大于所述阈值时,将所述USB数据保持在所述USB主机的所述PAL处的转移队列中,直到所述USB数据的所述USB数据转移类型的所述未完结转移请求的数目低于或等于所述阈值。
16.如权利要求15所述的设备,其特征在于,所述USB数据的所述USB数据转移类型包括批量转移类型,并且其中为了确定所述关于未完结转移请求的阈值,所述一个或多个处理器被配置成:确定关于未完结批量数据转移请求的阈值。
17.如权利要求15所述的设备,其特征在于,所述一个或多个处理器被进一步配置成:基于与将第二USB数据从所述USB主机递送给所述USB设备相关联的等待时间来动态地确定所述阈值。
18.如权利要求17所述的设备,其特征在于,所述第二USB数据是与中断数据转移类型相关联的至少一个中断分组,并且其中所述一个或多个处理器被进一步配置成:
基于向所述网络层发送所述第二USB数据的时间与接收到来自所述USB设备的确收的时间之差来确定所述等待时间。
19.如权利要求12所述的设备,其特征在于,所述一个或多个处理器被进一步配置成:在将所述USB数据从所述USB的所述PAL向所述网络层转移之前,将所述USB数据存储到与所述USB主机的所述PAL相关联的缓冲器。
20.如权利要求19所述的设备,其特征在于,为了将所述USB数据从所述USB主机的所述PAL转移,所述一个或多个处理器被配置成:将存储到与所述PAL相关联的所述缓冲器的所述USB数据释放到与所述网络层相关联的USB设备缓冲器。
21.如权利要求20所述的设备,其特征在于,所述一个或多个处理器被进一步配置成:在所述USB数据从与所述USB主机的所述PAL相关联的所述缓冲器释放之际,解除分配所述USB设备缓冲器的信用。
22.如权利要求12所述的设备,其特征在于,所述装置包括以下至少一项:
集成电路;
微处理器;或者
无线通信设备。
23.一种用于传送数据的设备,所述设备包括:
用于在通用串行总线(USB)主机处确定正从所述主机设备向USB设备传送的USB数据的USB数据转移类型的装置;
用于基于所确定的USB数据转移类型来确定所述USB数据的优先级的装置;以及
用于基于所确定的优先级来控制所述USB数据从所述USB主机的协议适配层(PAL)向所述USB主机的网络层的转移的装置。
24.如权利要求23所述的设备,其特征在于,所述用于确定所述优先级的装置包括:用于将所述数据转移类型标识为批量数据转移类型、同步数据转移类型、以及中断数据转移类型之一的装置。
25.如权利要求24所述的设备,其特征在于,所述用于确定所述优先级的装置包括:用于向所述批量数据转移类型指派比所述同步数据转移类型和所述中断数据转移类型低的优先级的装置。
26.如权利要求23所述的设备,其特征在于,所述用于基于所述USB数据转移类型来确定所述USB数据的所述优先级的装置包括:用于确定关于所述USB数据的所述USB数据转移类型的未完结转移请求的阈值的装置,并且其中所述用于基于所确定的优先级来控制所述USB数据的转移的装置包括:
用于在具有所述USB数据的所述USB数据转移类型的USB数据的未完结转移请求的数目低于或等于所述阈值时,将所述USB数据从所述USB主机的所述PAL向所述网络层转移的装置;以及
用于在具有所述USB数据的所述USB数据转移类型的所述USB数据的未完结转移请求的数目大于所述阈值时,将所述USB数据保持在所述USB主机的所述PAL处的转移队列中,直到所述USB数据的所述USB数据转移类型的所述未完结转移请求的数目低于或等于所述阈值的装置。
27.一种其上存储有指令的非瞬态计算机可读介质,所述指令在被执行时使一个或多个处理器:
在通用串行总线(USB)主机设备处确定正从所述主机设备向USB设备传送的USB数据的USB数据转移类型;
基于所确定的USB数据转移类型来确定所述USB数据的优先级;以及
基于所确定的优先级来控制所述USB数据从所述USB主机的协议适配层(PAL)向所述USB主机的网络层的转移。
28.如权利要求27所述的非瞬态计算机可读介质,其特征在于,为了确定所述优先级,所述指令使所述一个或多个处理器:将所述数据转移类型标识为批量数据转移类型、同步数据转移类型、以及中断数据转移类型之一。
29.如权利要求28所述的非瞬态计算机可读介质,其特征在于,为了确定所述优先级,所述指令使所述一个或多个处理器:向所述批量数据转移类型指派比所述同步数据转移类型和所述中断数据转移类型低的优先级。
30.如权利要求27所述的非瞬态计算机可读介质,其特征在于,为了基于所述USB数据转移类型来确定所述USB数据的所述优先级,所述指令使所述一个或多个处理器:确定关于所述USB数据的所述USB数据转移类型的未完结转移请求的阈值,并且其中为了基于所确定的优先级来控制所述USB数据的转移,所述指令使所述一个或多个处理器:
当具有所述USB数据的所述USB数据转移类型的USB数据的未完结转移请求的数目低于或等于所述阈值时,将所述USB数据从所述USB主机的所述PAL向所述网络层转移;以及
当具有所述USB数据的所述USB数据转移类型的所述USB数据的未完结转移请求的数目大于所述阈值时,将所述USB数据保持在所述USB主机的所述PAL处的转移队列中,直到所述USB数据的所述USB数据转移类型的所述未完结转移请求的数目低于或等于所述阈值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/631,566 US10067898B2 (en) | 2015-02-25 | 2015-02-25 | Protocol adaptation layer data flow control for universal serial bus |
US14/631,566 | 2015-02-25 | ||
PCT/US2016/015447 WO2016137651A1 (en) | 2015-02-25 | 2016-01-28 | Protocol adaptation layer data flow control for universal serial bus |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107257962A true CN107257962A (zh) | 2017-10-17 |
Family
ID=55650655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680011579.9A Pending CN107257962A (zh) | 2015-02-25 | 2016-01-28 | 用于通用串行总线的协议适配层数据流控制 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10067898B2 (zh) |
EP (1) | EP3262517A1 (zh) |
JP (1) | JP2018513451A (zh) |
CN (1) | CN107257962A (zh) |
TW (1) | TW201635159A (zh) |
WO (1) | WO2016137651A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111090601A (zh) * | 2019-12-07 | 2020-05-01 | 苏州浪潮智能科技有限公司 | 基于bmc芯片的多功能usb控制方法、系统、终端及存储介质 |
CN113744746A (zh) * | 2021-09-07 | 2021-12-03 | 广州飞傲电子科技有限公司 | 一种音频数据转换播放方法、装置及音频播放器 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170286356A1 (en) * | 2016-04-01 | 2017-10-05 | Intel Corporation | Enhanced quality of service mechanism for ma usb protocol |
WO2017222436A1 (en) * | 2016-06-23 | 2017-12-28 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and provisioning control system of a communication network for controlling provisioning of services from a provisioning network to communication devices |
KR20190069247A (ko) * | 2017-12-11 | 2019-06-19 | 삼성전자주식회사 | 외부 전자 장치와의 통신을 위한 전자 장치 |
WO2019117960A1 (en) * | 2017-12-15 | 2019-06-20 | Hewlett-Packard Development Company, L.P. | Actuation of data transmission lanes between states |
US10553501B2 (en) * | 2018-03-28 | 2020-02-04 | Canon Kabushiki Kaisha | Apparatus for use in forming an adaptive layer and a method of using the same |
US20200028713A1 (en) * | 2018-07-16 | 2020-01-23 | Dwight L. Stewart | Computer system having controller configured to create data tunnel based on device information |
EP3987731A4 (en) | 2019-06-18 | 2022-05-18 | Razer (Asia-Pacific) Pte. Ltd. | METHOD AND APPARATUS FOR OPTIMIZING INPUT LATENCY IN A WIRELESS HUMAN INTERFACE SYSTEM |
US11709791B2 (en) * | 2020-09-21 | 2023-07-25 | Icron Technologies Corporation | Techniques for deconflicting USB traffic in an extension environment |
TWI739676B (zh) * | 2020-11-25 | 2021-09-11 | 群聯電子股份有限公司 | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100655453B1 (ko) * | 2005-12-27 | 2006-12-08 | 전자부품연구원 | 채널 기반 네트워크의 스케줄링 장치 및 방법과 이를구현하는 기능을 실현시키기 위한 프로그램 기록한컴퓨터로 판독가능한 기록 매체 |
WO2009100391A2 (en) * | 2008-02-07 | 2009-08-13 | Qualcomm Incorporated | Method and system for wireless usb transfer of isochronous data using bulk data transfer type |
CN101711468A (zh) * | 2007-03-12 | 2010-05-19 | 思杰系统有限公司 | 用于在tcp拥塞控制中提供服务质量优先的系统和方法 |
US7747086B1 (en) * | 2005-07-28 | 2010-06-29 | Teradici Corporation | Methods and apparatus for encoding a shared drawing memory |
CN102035732A (zh) * | 2010-11-25 | 2011-04-27 | 华为技术有限公司 | 业务调度方法及装置 |
US8028040B1 (en) * | 2005-12-20 | 2011-09-27 | Teradici Corporation | Method and apparatus for communications between a virtualized host and remote devices |
CN102457437A (zh) * | 2010-10-21 | 2012-05-16 | 巴比禄股份有限公司 | 连接装置以及数据包发送方法 |
US20140140258A1 (en) * | 2012-11-22 | 2014-05-22 | Bahareh Sadeghi | Apparatus, system and method of controlling data flow over a communication network |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6611891B1 (en) * | 1998-11-23 | 2003-08-26 | Advanced Micro Devices, Inc. | Computer resource configuration mechanism across a multi-pipe communication link |
US6892243B1 (en) * | 1999-12-21 | 2005-05-10 | Intel Corporation | Prioritizing data transfers over data buses |
TWI297439B (en) | 2006-01-20 | 2008-06-01 | Via Tech Inc | Method for exchanging data with an usb device |
US20100198999A1 (en) * | 2009-02-05 | 2010-08-05 | Qualcomm Incorporated | Method and system for wireless usb transfer of isochronous data using bulk data transfer type |
US8700821B2 (en) * | 2008-08-22 | 2014-04-15 | Intel Corporation | Unified multi-transport medium connector architecture |
US7996586B2 (en) * | 2009-07-24 | 2011-08-09 | Via Technologies, Inc. | USB port for employing a plurality of selectable data transmission priority rules |
-
2015
- 2015-02-25 US US14/631,566 patent/US10067898B2/en active Active
-
2016
- 2016-01-28 CN CN201680011579.9A patent/CN107257962A/zh active Pending
- 2016-01-28 WO PCT/US2016/015447 patent/WO2016137651A1/en active Application Filing
- 2016-01-28 JP JP2017544616A patent/JP2018513451A/ja active Pending
- 2016-01-28 EP EP16714055.7A patent/EP3262517A1/en not_active Withdrawn
- 2016-02-22 TW TW105105152A patent/TW201635159A/zh unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7747086B1 (en) * | 2005-07-28 | 2010-06-29 | Teradici Corporation | Methods and apparatus for encoding a shared drawing memory |
US8028040B1 (en) * | 2005-12-20 | 2011-09-27 | Teradici Corporation | Method and apparatus for communications between a virtualized host and remote devices |
KR100655453B1 (ko) * | 2005-12-27 | 2006-12-08 | 전자부품연구원 | 채널 기반 네트워크의 스케줄링 장치 및 방법과 이를구현하는 기능을 실현시키기 위한 프로그램 기록한컴퓨터로 판독가능한 기록 매체 |
CN101711468A (zh) * | 2007-03-12 | 2010-05-19 | 思杰系统有限公司 | 用于在tcp拥塞控制中提供服务质量优先的系统和方法 |
WO2009100391A2 (en) * | 2008-02-07 | 2009-08-13 | Qualcomm Incorporated | Method and system for wireless usb transfer of isochronous data using bulk data transfer type |
CN102457437A (zh) * | 2010-10-21 | 2012-05-16 | 巴比禄股份有限公司 | 连接装置以及数据包发送方法 |
CN102035732A (zh) * | 2010-11-25 | 2011-04-27 | 华为技术有限公司 | 业务调度方法及装置 |
US20140140258A1 (en) * | 2012-11-22 | 2014-05-22 | Bahareh Sadeghi | Apparatus, system and method of controlling data flow over a communication network |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111090601A (zh) * | 2019-12-07 | 2020-05-01 | 苏州浪潮智能科技有限公司 | 基于bmc芯片的多功能usb控制方法、系统、终端及存储介质 |
CN113744746A (zh) * | 2021-09-07 | 2021-12-03 | 广州飞傲电子科技有限公司 | 一种音频数据转换播放方法、装置及音频播放器 |
CN113744746B (zh) * | 2021-09-07 | 2023-08-08 | 广州飞傲电子科技有限公司 | 一种音频数据转换播放方法、装置及音频播放器 |
Also Published As
Publication number | Publication date |
---|---|
WO2016137651A1 (en) | 2016-09-01 |
US10067898B2 (en) | 2018-09-04 |
EP3262517A1 (en) | 2018-01-03 |
TW201635159A (zh) | 2016-10-01 |
US20160246745A1 (en) | 2016-08-25 |
JP2018513451A (ja) | 2018-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107257962A (zh) | 用于通用串行总线的协议适配层数据流控制 | |
KR101749261B1 (ko) | 스트림들의 끊김없는 경로 스위칭을 갖는 하이브리드 네트워킹 시스템 | |
CN103959724B (zh) | 混合联网路径选择和负载平衡 | |
US9992130B2 (en) | Systems and methods for flow control and quality of service | |
US9608899B2 (en) | Packet-based aggregation of data streams across disparate networking interfaces | |
US20100188980A1 (en) | Explicit Flow Control in a Gigabit/10 Gigabit Ethernet System | |
US9538545B2 (en) | Mapping data traffic throughout protocol layers based on priority information | |
US12089082B1 (en) | Multichannel communication systems | |
EP3326347B1 (en) | Method and system for usb 2.0 bandwidth reservation | |
US20170019220A1 (en) | Multiband Ethernet Over Coax System | |
CN105764091B (zh) | 一种有效利用无线带宽的方法 | |
EP2997762B1 (en) | Method and system for providing deterministic quality of service for communication devices | |
CN108541361A (zh) | 用于多信道网络中的仲裁和自适应功率循环的方法 | |
US9413672B2 (en) | Flow control for network packets from applications in electronic devices | |
US20240106763A1 (en) | Device and method for controlling traffic transmission/reception in network end terminal | |
WO2016186764A1 (en) | Quality of service for a universal serial bus | |
US11937279B2 (en) | Systems, devices, and methods related to configuring a multi-stream network with a messaging schedule | |
CN115884229B (zh) | 传输时延的管理方法、电子设备和存储介质 | |
GB2540172A (en) | Method of load balancing in a multi-radio communication system | |
KR20150124796A (ko) | 무선 환경에서 usb 통신을 위한 데이터 전송을 제어하는 방법 및 장치 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20171017 |