用于管理usb数据传送的系统和方法
【专利说明】
[0001] 相关申请的夺叉引用
[0002] 本公开要求2013年7月16日提交的美国临时专利申请No. 61/846, 793的优先权 和权益,其全部内容通过引用并入于此。
技术领域
[0003] 本专利文档中描述的技术总体上涉及数据传送,更具体地涉及数据传送管理。
【背景技术】
[0004] 通用串行总线(USB)是开发用于允许即插即用或热插拔连接以及代替主机与外 围设备之间的传统串行端口和并行端口的标准。USB对应于其中一个或多个附接的外围设 备(即,USB设备)通过主机调度协议共享总线带宽的轮询总线。USB设备被允许在主机和 其他USB设备正在操作时附接、配置、使用和分离。
[0005] 通常,USB数据传送在主机与USB设备之间发生。当USB设备第一次连接到主机 时,列举过程开始。复位信号被发送至USB设备以确定该USB设备的数据速率。继而,与该 USB设备相关联的信息被主机读取并且该USB设备被指派唯一地址。主机控制器指导来自 /去往该USB设备的业务流。例如,主机控制器执行USB操作以在主机存储器与设备端点之 间移动数据,其中每个设备端点对应于USB设备中作为主机与该USB设备之间通信流中的 数据源或槽的唯一可寻址部分。
[0006]USB规范支持四个基本类型的数据传送:控制数据传送、批量数据传送、中断数据 传送和等时数据传送。控制数据传送经常用于非周期、主机软件发起的请求/响应通信(例 如,针对命令/状态操作)。批量数据传送通常用于可以使用任意可用带宽并且可以被延迟 直到带宽可用的非周期、大型分组通信。例如,在一个大分组中由打印机接收的数据可以使 用批量数据传送进行传送。另外,中断数据传送经常用于低频率、有界延时通信。例如,发 送非常少数据的鼠标或键盘可以使用中断数据传送。等时数据传送(还被称为流传输实时 传送)通常用于主机与USB设备之间的周期、连续通信(例如,涉及时间敏感信息的通信)。 例如,流传输设备(例如,音频扬声器)可以使用等时数据传送。
[0007]USB数据传送由主机控制器调度。例如,周期数据传送(诸如等时数据传送和中断 数据传送)经常具有严格的时序要求,因此需要以及时方式跨总线移动。非周期数据传送 (诸如批量数据传送和控制数据传送)经常不具有严格的时序要求。为了保证主机与USB 设备之间的同步,总线时间经常被分成固定长度的段。针对低速或全速总线,总线时间被分 成1毫秒单元,即,帧。针对高速总线,总线时间被分成125毫秒单元,S卩,微帧。微帧包括 多个数据分组,并且数据分组包括1千字节。
【发明内容】
[0008] 根据本文所述的教导,提供了用于管理通用串行总线(USB)数据传送的系统和方 法。示例系统包括拥有用于将端点排序的第一调度队列的非瞬态计算机可读存储介质和主 机控制器。主机控制器被配置为:将针对数据传送的多个端点存储至存储介质,端点对应 于USB设备的一部分;以第一顺序将多个端点排序;生成包括多个原始数据分组的第一传 输数据单元,原始数据分组至少部分基于该第一顺序被分配给多个端点;以及传送第一传 输数据单元。
[0009] 在一个实施方式中,提供了一种用于管理通用串行总线(USB)数据传送的方法。 多个端点被接收用于数据传送。端点对应于USB设备的一部分。多个端点以顺序排序。生 成包括多个数据分组的传输数据单元。数据分组至少部分基于所述顺序被分配给多个端 点。传送传输数据单元。
[0010] 在另一实施方式中,一种非瞬态机器可读存储介质包括用于管理通用串行总线 (USB)数据传送的编程指令。该编程指令被配置为使得一个或多个数据处理器执行某些操 作。多个端点被接收用于数据传送。端点对应于USB设备的一部分。多个端点以顺序排序。 生成包括多个数据分组的传输数据单元。数据分组至少部分基于所述顺序被分配给多个端 点。传输数据单元被传送。
【附图说明】
[0011] 图1描绘了示出用于管理USB数据传送的系统的示例图。
[0012] 图2描绘了示出用于管理USB数据传送的系统的另一示例图。
[0013] 图3描绘了示出存储器设备中包括的两个调度队列的示例图。
[0014] 图4描绘了示出针对三个端点的数据传送的示例图。
[0015] 图5描绘了示出针对三个端点的数据传送的另一示例图。
[0016] 图6描绘了示出针对数据传送调度的不同情况的示例图。
[0017] 图7描绘了用于管理USB数据传送的示例流程图。
【具体实施方式】
[0018] 通用串行总线(USB)数据传送通常由管理(例如,调度)周期数据传送和非周期 数据传送的主机发起。在很大程度上,USB系统的性能取决于数据传送管理的效率。有时, 80% -90%的USB总线带宽被分配给周期数据传送。因此,周期数据传送的管理在改进USB 系统的性能中扮演关键角色。
[0019] 图1描绘了示出用于管理USB数据传送的系统的示例图。如图1所示,主机控制 器102以特定顺序将调度队列104中存储的多个端点(例如,EPUEP2…ΕΡη)排序,并且根 据数据传送(例如,周期数据传送)的特定顺序向排序端点分配资源。
[0020] 具体地,系统100包括附接至主机108的多个USB设备1(^、1062~106"。多个端 点(例如,ΕΡ1、ΕΡ2···ΕΡη)中的每个端点对应于USB设备的唯一可寻址部分。在某些实施 方式中,每个端点与频率相关联,并且主机控制器102基于相应频率将端点排序。例如,主 机控制器102可以以降序将端点排序,其中具有最高频率的端点被存储在调度序列104的 顶部并且首先接收针对数据传送的资源。
[0021] 在某些实施方式中,每个端点与针对数据传送的端点带宽相关联,并且主机控制 器102基于相应端点带宽将端点排序。例如,主机控制器102可以以降序将端点排序,其中 具有最高端点带宽的端点被存储在调度序列104的顶部并且首先接收针对数据传送的资 源。在某些实施方式中,调度序列104包括在可访问主机控制器102的存储器设备中。
[0022] 主机控制器102生成包括多个数据分组(例如,16个数据分组)的传输数据单元 (例如,微帧)。传输数据单元中的数据分组被分配给调度序列104中存储的端点(例如, 从上而下)。在传输具有经分配的数据分组的传输数据单元之后,主机控制器102生成更多 传输数据单元用于执行针对经排序端点的数据传送(例如,等时数据传送、中断数据传送 等)。
[0023] 图2描绘了示出用于管理USB数据传送的系统的另一示例图。如图2所示,主机 控制器102管理针对数据传送的两个调度队列104和206,其中调度队列104被用作当前活 动队列并且调度队列206被用作后备队列。在向调度队列206存储新的端点之后,主机控 制器102将调度队列206排序并且针对数据传送(例如,周期数据传送)从调度队列104 切换到调度队列206。
[0024] 具体地,当接收新的端点Epn+1时,主机控制器102向还包括多个端点(例如, EP1、EP2…ΕΡη)的调度队列206而不是当前调度队列104存储该新的端点Epn+1,使得系 统100的当前操作不被干扰。主机控制器102对调度队列206中存储的端点(例如,EP1、 EP2…Epn、Epn+1)排序,并且从调度队列104切换到调度队列206,使得调度队列206成为 活动队列而调度队列104作为后备队列。随后,如果接收另一新的端点,则其将被存储至调 度队列104。
[0025] 在某些实施方式中,如图3所示,调度队列104和调度队列206包括在可访问主机 控制器102的相同存储器设备中。例如,调度序列104从上而下处理,而调度队列206从下 而上处理。在某些实施方式中,调度序列104和调度队列206包括在可访问主机控制器102 的不同存储器设备中。在某些实施方式中,传输数据单元的不超过80%针对周期数据传送 分配,而剩余传输数据单元针对非周期数据传送(例如,控制数据传送、批量数据传送等) 分配。在某些实施方式中,传输数据单元的数据分组被分配给多达三个针对周期数据传送 的端点。
[0026] 作为示例,针对系统100的可用带宽是