发明内容
根据本发明的一个方面,提供一种调度无线USB数据传送的方法,包括:
(a)在时间槽内,将周期性数据传送和异步数据传送调度为活跃周期性数据传送和活跃异步数据传送,每一数据传送与无线USB传输的队列头相关联,当在所述时间槽内有时间剩余时:
(b)进行活跃周期性数据传送;
(c)评估每一活跃周期性数据传送是否成功,
(i)如果不成功,则调整暂停计数器,并评估所述暂停计数器是否达到了相应的阈值,如果达到,则暂停与所述每一活跃周期性数据传送相关联的队列头;
(ii)如果成功,且为中断端点,则如果完成则将与所述每一活跃周期性数据传送相关联的队列头减活,并将所述每一活跃周期性数据传送标记为完成;
(iii)如果成功,且为等时端点,则将所述每一活跃周期性数据传送标记为完成,并当与所述每一活跃周期性数据传送相关联的队列头相关联的每一数据传送被标记为完成时将与所述每一活跃周期性数据传送相关联的队列头减活;
(d)基于任何不活跃的周期性队列头和暂停的周期性队列头,确定是否有剩余的任何活跃周期性数据传送要被执行,如果是,那么返回至步骤(b),如果否则前进至步骤(e);
(e)进行活跃异步数据传送;
(f)评估每一活跃异步数据传送是否成功,
(i)如果不成功,那么调整暂停计数器并评估其是否达到相应的阈值,如果达到,则暂停与所述每一活跃异步数据传送相关联的队列头;
(ii)如果成功,则如果完成则将所述每一活跃异步数据传送标记为完成;
(g)基于任何不活跃的异步队列头和暂停的异步队列头,确定是否有剩余的任何活跃异步数据传送要被执行,如果是,那么返回至步骤(e),如果否则激活任何暂停的周期性数据传送和暂停的异步数据传送,并返回至步骤(b)。
所述的调度无线USB数据传送的方法,还包括对于所述每一活跃周期性数据传送,如果所述每一活跃周期性数据传送不成功,那么调整连续出错计数器,并评估所述连续出错计数器是否达到相应的连续出错阈值,如果达到,则停止与所述每一活跃周期性数据传送相关联的队列头。
所述的调度无线USB数据传送的方法,还包括对于所述每一活跃异步数据传送,如果所述每一活跃异步数据传送不成功,则调整连续出错计数器,并评估所述连续出错计数器是否达到相应的连续出错阈值,如果达到,则终止与所述每一活跃异步数据传送相关联的队列头。
所述的调度无线USB数据传送的方法,还包括对每一队列头,对照通知阈值评估活跃等时传送描述符的数目,如果达到所述通知阈值,则发送关于所述每一队列头的通知。
所述的调度无线USB数据传送的方法,其中,所述通知的接收器修改相应队列头中的至少一个阈值。
所述的调度无线USB数据传送的方法,还包括对于每一成功的活跃异步数据传送,如果与所述每一成功的活跃异步数据传送相关联的队列头没有剩余的数据传送待发,则将与所述每一成功的活跃异步数据传送相关联的队列头置为不活跃。
根据本发明的另一方面,提供一种调度无线USB数据传送的方法,包括:
(a)在一组时间槽中的当前时间槽中,激活周期性数据传送用于向无线USB端点传送,每一数据传送与对应于所述数据传送的队列头相关联,所述队列头含有用于传送一个或多个数据分组的信息;
(b)尝试传送与活跃的队列头相关联的周期性分组;
(c)基于对端点尝试的至少一个先前的数据传送是否成功,来评估对所述端点的后继数据传送失败的可能性,如果失败的可能性大,暂停所述后继数据传送,如果失败的可能性小,则尝试所述后继数据传送;
(d)确定是否有任何周期性数据传送保持在要传送的活跃状态中,如果是,并且在当前时间槽中仍有时间剩余,则返回至步骤(b)。
所述的调度无线USB数据传送的方法,其中,评估对端点的后继数据传送失败的可能性包括更新失败计数器并基于阈值来评估所述失败计数器。
所述的调度无线USB数据传送的方法,其中,在步骤(d)处,没有周期性数据传送保持在要传送的活跃状态中,且在当前时间槽中有时间剩余,还包括:
(e)尝试传送与活跃的异步队列头相关联的分组;
(f)基于对异步端点尝试的至少一个先前的数据传送是否成功,来评估对所述异步端点的后继数据传送失败的可能性,如果失败的可能性大,暂停对所述异步端点的后继数据传送,如果失败的可能性小,则尝试对所述异步端点的后继数据传送;
(g)确定是否有任何异步队列头包含保持在要传送的活跃状态中的数据传送,如果是,假如在当前时间槽中仍有时间剩余,则返回至步骤(e),如果否,假如在当前时间槽中仍有时间剩余,则激活任何暂停的队列头并返回至步骤(b)。
所述的调度无线USB数据传送的方法,其中,评估对异步端点的后继数据传送失败的可能性包括更新失败计数器并基于阈值来评估所述失败计数器。
所述的调度无线USB数据传送的方法,还包括对每一队列头,对照通知阈值评估活跃等时传送描述符的数目,如果达到所述通知阈值,则发送关于所述每一队列头的通知。
简要而言,本发明针对这样一种系统和方法,通过该系统和方法,计算机系统上的硬件和软件一起工作来调度USB无线数据传送,其中以受控的方式重试失败的传送。因为在接收端缓冲无线USB传送,因此成功的重试提供丢失的数据以插入到缓冲器中的合适位置中。通过以受控的方式重试失败的传送,在一般操作中,不在多半可能失败的连接上的重试尝试上浪费带宽,而是改为用于可能成功的连接。然而,在诸如接收设备处低缓冲条件等关键情形中,控制软件可以更改可配置的调度参数来强迫数据通过该相应的连接传送。
本发明的无线USB数据传送机制支持四种不同类型的数据传送(对应于端点),包括中断传送、等时传送、控制传送和批量传送。中断传送和等时传送是周期性类型的传送,因为它们被调度为在通过周期性推进而成为当前时间槽的时间槽中传送。控制传送和批量传送是异步的,且如果在当前时间槽中任何周期性传送之后有时间剩余则尝试传送它们。为了提供使用无线USB的可接受的计算体验,数据传送的高出错率要求即使在其中不保证送达的等时传送上也要执行重试。
为了调度各种数据传送,本发明在硬件中包含无线USB组件,在软件中包含无线USB控制器驱动器。无线USB硬件包括基于是否成功接收与对应于端点的队列头数据结构中的信息相关联的分组来操纵该信息的调度进程。硬件调度进程包括含有一软件可配置阈值的机制,该阈值指定在一时间周期中,在给定队列头(对应于端点)在调度中被暂停使得可以传送与其它队列头相关联的分组之前,该队列头能够容忍的出错的数目。调度进程从而以避免在由于瞬时出错条件而可能失败的数据传送上浪费带宽的受软件控制的方式来处理失败传送的重试。软件控制器驱动程序也在该数据结构中配置其它信息(例如,阈值)。
周期性调度数据结构包括项的环状缓冲器,其中每一项对应于周期性的时间槽,并包含指向零个或多个周期性调度项(PSE)的列表的指针。周期性调度项表示在该时间槽周期中应该成为活跃的(且从而如果可能则被传送的)数据传送。为此,周期性调度项指向队列头或与队列头相关联的传送描述符,其中队列头对应于对其进行数据传送的设备上的端点。每一队列头包含涉及传送状态的信息,包括对其对应端点的任何待发的传送。每一传送描述符提供特定传送的细节,诸如存储和检索传送中涉及的实际数据的地址、传送缓冲器的长度、实际传送的字节数等。每一传送描述符也包含“活跃”或“不活跃”的状态值,以及指定传送是开还是关的软件可写值。
当在调度进程中遇到等时周期性调度项时,将对应的传送描述符移动至其“活跃”状态,发出该数据准备好被尽快传送的信号。当在调度中遇到中断周期性调度项时,相应的队列头被移动至“活跃”状态,发出调度应该执行分组传送的信号。控制传送和批量传送是异步的,且使用给定时间槽中的任何剩余的时间在周期性传送之后发生。
软件通过写入各种阈值参数来控制硬件操作,阈值参数包括确定何时暂停队列头的出错计数阈值。更具体地,当使用该阈值初始化队列头中的出错计数器,且出错计数器从一到零在出错转变上递减时,对该时间槽剩余的时间而言,暂停该特定队列头(不再重试)。暂停允许在该时间槽中传送其它队列头的分组,而不是在满足阈值出错等级且从而可能再次失败的连接上重新尝试传送。或者在下一时间槽开始处,或者当通过成功、暂停或终止来用尽当前时间槽中的其它端点(队列头的分组)且在该时间槽中仍旧存在否则将不被使用的剩余时间(对应于可用带宽)时,暂停的队列头移出其暂停的状态。从而,响应于失败的传输而暂停队列头允许调度与不能够成功传送分组的端点相比,更偏向于能够成功传送分组的端点。
另一阈值参数指定在应该停止队列头之前连续出错的数目。不同于在下一时间槽或者当在当前时间槽中有未使用的带宽剩余时复位的暂停状态,停止的队列头需要软件干预以从停止状态中移出。
等时通知阈值参数是由无线USB软件控制器设置的,以当由于未被成功传送而使与队列头相关联的太多传送描述符活跃时(这本质上对应于相应的接收设备上的低缓冲状况),向软件发送通知。当该数值到达该阈值,硬件通过中断来通知无线USB软件控制器驱动器。然后软件可以调整该阈值来强迫数据进入临界低缓冲器。同样,“激活”参数值可以由软件设置来关闭或开启队列头;当处于关闭状态时,对该队列头不执行任何传送,借此数据传送可以集中于需要数据的一个或多个端点。
当在之前的调度周期以后当前时间槽推进至下一时间槽时,调度进程重新开始。调度循环的第一阶段涉及复位调度状态并确定该时间槽的周期性传送需求,包括激活合适的不活跃队列头并传送描述符。在该阶段中,也发生每一周期的初始化,且如果对任何队列头到达等时通知阈值,则发送通知。
调度循环的第二阶段针对执行周期性(等时和中断)传送和分析结果。一般而言,硬件搜索当前活跃的周期性队列头,并开始为该队列头的对应传送描述符执行分组传送。成功的传送被标记为完成,直到不再有活跃的传送描述符剩余,在这种情况下,该队列头被减活。失败导致减少出错计数,当相应的停止或暂停阈值从一转变为零时,这会引起停止或暂停将来的传送尝试。进程返回,直到分析过每一尝试过的周期性传送,且不再存在要被尝试的传送,即周期性传送被完成、暂停或停止。
一旦不存在要传送的活跃周期性队列头,调度执行第三阶段,针对异步(控制和批量)队列头的传送。类似地尝试异步传送,直到基于异步队列头中的出错计数器的完成、暂停或停止。如果在当前时间槽中有时间剩余,那么重复第二和第三阶段。
如可见,首先尝试周期性传送,但暂停(或停止)失败了阈值次数的队列头,使得不会通过进行可能再次失败的重复的传送尝试而浪费可用的带宽。剩余时间改为用于尝试异步传送,如果失败异步传送类似地会被暂停(或被停止)。从而,本发明可以在时间槽内,但是以受控的方式按照所需在周期性传送尝试和异步失败尝试之间交替。
当结合附图阅读以下详细描述时,其它的优点会变得明显,附图中:
具体实施方式
示例性操作环境
图1示出了可在其上实现本发明的合适的计算系统环境100的示例。计算系统环境100只是合适的计算环境的一个示例,并不旨在对本发明的使用范围或功能提出任何限制。也不应该把计算环境100解释为对示例性操作环境100中示出的任一组件或其组合有任何依赖性或要求。
本发明可用众多其它通用或专用计算系统环境或配置来操作。适合在本发明中使用的公知的计算系统、环境和/或配置的示例包括,但不限于:个人计算机、服务器计算机、手持或膝上型设备、图形输入板设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子产品、网络PC、小型机、大型机、包含上述系统或设备中的任一个的分布式计算机环境等。
本发明可在诸如由计算机执行的程序模块等的计算机可执行指令的通用语境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等,它们执行特定任务或实现特定抽象数据类型。本发明也可以在分布式计算环境中实现,其中任务由通过通信网络连接的远程处理设备执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和/或远程计算机存储介质中。
参考图1,用于实现本发明的一个示例性系统包括以计算机110形式的通用计算设备。计算机110的组件可以包括,但不限于,处理单元120、系统存储器130和将包括系统存储器在内的各种系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线体系结构中的任一种的局部总线。作为示例,而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、扩展的ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也被称为Mezzanine总线)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是能够被计算机110访问的任何可用介质,且包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机110访问的任何其它介质。通信介质通常具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,且包含任何信息传递介质。术语“已调制数据信号”指的是这样一种信号,其一个或多个特征以在信号中编码信息的方式被设定或更改。作为示例,而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其它无线介质。上述中任一个的组合也应包括在计算机可读介质的范围之内。
系统存储器130包括易失性或非易失性存储器形式的计算机存储介质,诸如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)包含有助于诸如启动时在计算机110中元件之间传递信息的基本例程,它通常存储在ROM 131中。RAM 132通常包含处理单元120可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例,而非限制,图1示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110也可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器141,从可移动、非易失性磁盘152中读取或向其写入的磁盘驱动器151,以及从诸如CD ROM或其它光学介质等可移动、非易失性光盘156中读取或向其写入的光盘驱动器155。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,盒式磁带、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器141通常由不可移动存储器接口,诸如接口140连接至系统总线121,磁盘驱动器151和光盘驱动器155通常由可移动存储器接口,诸如接口150连接至系统总线121。
以上描述和在图1中示出的驱动器及其相关联的计算机存储介质为计算机110提供了对计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同或不同。操作系统144、应用程序145、其它程序模块146和程序数据147在这里被标注了不同的标号是为了说明至少它们是不同的副本。用户可以通过输入设备,诸如图形输入板即电子数字化仪164、麦克风163、键盘162和定点设备161(通常指鼠标、跟踪球或触摸垫)向计算机110输入命令和信息。未在图1中示出的其它输入设备可以包括操纵杆、游戏垫、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常由耦合至系统总线的用户输入接口160连接至处理单元120,但也可以由其它接口或总线结构,诸如并行端口、游戏端口或通用串行总线(USB)连接。监视器191或其它类型的显示设备也经由接口,诸如视频接口190连接至系统总线121。监视器191也可以与触摸屏面板或其类似物集成。注意,监视器和/或触摸屏面板可以被物理地耦合至其中包含计算设备110的外壳,诸如在图形输入板类型个人计算机中。另外,计算机也可以包括其它外围输出设备,诸如扬声器195和打印机196,它们可以通过输出外围接口194等连接。
计算机110可使用至一个或多个远程计算机,诸如远程计算机180的逻辑连接在网络化环境下操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见网络节点,且通常包括上文相对于计算机110描述的许多或所有元件,尽管在图1中只示出存储器存储设备181。图1中所示逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可以包括其它网络。这样的网络环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接至局域网171。当在WAN网络环境中使用时,计算机110通常包括调制解调器172或用于通过诸如因特网等WAN 173建立通信的其它装置。调制解调器172可以是内置或外置的,它可以通过用户输入接口160或其它合适的机制连接至系统总线121。在网络化环境中,相对于计算机110所描述的程序模块或其部分可以存储在远程存储器存储设备中。作为示例,而非限制,图1示出了远程应用程序185驻留在存储器设备181上。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
无线USB硬件调度
本发明一般针对这样一种系统和方法,通过该系统和方法,没有成功传送的无线USB数据结构以受控的方式重试它们的传送,使得不在很可能失败的连接上的重试尝试上浪费带宽,而是将带宽用于可能成功的连接。为此,考虑到通常引起传送出错的条件的类型,即瞬时出错条件,硬件可以使用软件可配置参数来智能地管理传送调度。也可以理解,实现本发明的多种方式是可行的,且在此处仅描述这些替换方案中的某一些。例如,本发明在下文中主要是参考一硬件执行的调度来描述的,该调度基于控制调度硬件的行为以优化性能的软件提供的阈值和初始化值,通过标记数据结构并维护和评估其内部计数器来操作。然后,其它硬件采用被标记为活跃的数据结构,并使用超宽频带无线电来传输相应的数据。然而,其它类型的传输机制是可行的,且实际上,本发明可以在有线技术中使用,诸如在其中更高传送速率可能导致更高出错计数的未来形式的USB中。因而,本发明不限于此处使用的任何特定的示例,而是相反,可以用总体上在计算中提供便利和优点的各种方式来使用。
此外,尽管本发明将主要参考含有一个或多个外围设备的主机计算机系统来描述,主机计算机系统向这些外围设备发射无线USB数据,但是可以理解,其它类型的设备可以构成主机。例如,音频和/或视频USB播放器或其类似物可以向接收主机电视机或音频播放器等发送分组。
图2示出了其中运行在主机计算机上的软件202通过驱动器/接口204与硬件/固件206(为简明起见,之后简称为硬件)通信的示例体系结构200。例如,软件202可以是运行在图1的计算机系统120上的操作系统组件或其类似物,而硬件206可以被配置在插入主计算机系统120中的基于PCI的卡或类似物上。正如可以容易地理解的,诸如将无线USB内建到计算机系统内的其它替换方案是等效的。
一般而言,硬件206包括无线电收发器210或其类似物,它被安排成与例如外围设备214和215各自的收发器212和213等一个或多个对应的无线电收发器通信。尽管图2中仅示出两个外围设备214和215,但是可以理解,可以存在与计算机系统的无线电210通信的任何实际数量的无线外围设备。主机也可以含有有线USB连接(未示出)。
尽管为简明起见而在此处未详细描述,图2示出了含有用于管理主机计算机上的不同协议适应层(PAL,例如WUSB、特别连网等)之间共享的无线电资源的硬件/软件接口的UWB无线电管理组件220。可以理解,UWB MAC(媒体访问控制)和PHY(物理)层221可被认为对数据传送进程负责,即发送数据和获取关于哪些数据被成功接收的状态信息,以及当从外围设备中成功接收数据时返回状态信息。这些层221一般在超宽频带技术中已知的并行操作中管理数据分组的通信,返回与外围设备214和215交换的状态等。可以理解,本发明一般针对调度数据用于传送,包括基于返回的状态信息执行对没有成功传送的数据结构的受控重试。
为了调度数据传送,本发明在硬件中包含无线USB组件222,在软件中包含无线USB控制器驱动程序224。如下所述,无线USB组件222包括基于由外围设备214和215返回的相应的状态信息230(或者应该已被返回的状态信息的缺乏)来操纵各种类型的数据结构228中的信息的调度进程226。同样如下所述,软件无线USB控制器224配置数据结构中的某些信息,使得调度进程以避免在可能失败的数据传送上浪费带宽的软件受控方式来处理失败传送的重试。
如上所述,更具体地,由于UWB的特性,无线USB传送的调度不可能与有线USB的调度完全相同,因为对UWB存在需要以某种方式补偿的高得多的分组出错率以及其它不同,在本发明的一个实现中这是通过硬件和软件的设计来补偿的。该硬件和软件设计一般基于UWB通信的典型观察到的行为,即,如果在两个节点之间分组传送失败,则多半在同样节点之间的下一次分组传送也可能失败。相反地,如果分组传送成功,那么多半在同样节点之间的下一次分组传送也可能成功。这样,如果随时间观察,给定连接上的分组失败一般出现在成束的峰值上,而不是随时间均匀分布。从而,这样的出错条件状态是瞬时的,且一般会随时间消除。
基于这些观察,本发明提供可以由软件配置来防止在很可能失败的重试上浪费带宽的重试机制。从而,为最大化总吞吐量,本发明通常提供偏向成功传送但允许诸如改变正常操作行为以满足临界要求等所需软件重配置的机制。
如在USB技术中广泛已知的,存在与端点对应的各种类型的数据传送操作。目前的有线USB标准定义了四种传送/端点类型,即控制传送、成批传送、中断传送以及等时传送。一般用于命令和状态操作的控制传送是异步的,且被保证送达。同样是异步的成批传送一般用于大批量的数据,且也被保证送达,但是没有关于等待时间或带宽的保证。这样的异步传送在传送时间槽中该时间槽的其它(周期性)事务之后发生,从而不用于时间敏感的传送。
中断传送可以是设备启动的传送,且需要有界的等待时间。中断传送在轮询之前由设备排队,轮询在周期性重复发生的时间槽中发生。主机启动的中断通信也基于周期性的时间槽发送。中断传送被保证送达。
等时传送是周期性的(每时间槽被调度),且一般用于传送时间敏感的信息,诸如视频和音频流。等时传送提供保证的带宽和有界的等待时间,但是不保证送达。
无线USB支持这些端点,然而如上所述,数据传送中的高出错率要求即使在不保证送达的等时传送上也要执行重试。注意到,与有线传送不同,无线等时传送被缓冲,从而允许重试来提供丢失的数据以插入到接收器中的缓冲器中的合适位置。
根据本发明的一个方面,由调度进程226以受控的方式调度对应于端点的数据结构,该受控的方式针对与可能失败的数据传送相比更偏向可能成功的数据传送,从而在任何给定时刻将带宽用于当前良好的连接而不是当前不良的连接。为此,调度进程设置如下的传送调度,其中,一般而言,接连失败的传送被暂停直至数据传送的下一时间槽,借此这些传送将不在可能失败的重试尝试中消耗额外的带宽。
图3是由调度进程226管理的各种数据结构以及它们彼此之间的关系的表示。如图3中所示,数据结构包括周期性调度302、周期性调度项(例如PSE1-PSE3)、队列头(QH1-QH7)以及传送描述符(TD)。周期性调度302包含项的环形缓冲器,其中每一项对应于一个周期性时间槽。每一项包含指向零个或多个周期性调度项(PSE)的列表的指针,PSE包含指向其它数据结构的指针,如下所述。时间槽表示单个时间单位,其中时间单位是(不超过)被允许来由端点指定的最小周期。“当前时间槽”指针在时间周期的末尾处前进至下一项。
各周期性调度项表示在该时间槽周期中应该成为活跃的(由UWB组件传送)的数据传送。每一周期性调度项表示准备好被执行的传送。
为了对传送指定目的地,存在对应于向其做出传送的每一设备上的每一端点的队列头(QH)。如下所述,每一队列头包含涉及传送状态的信息,包含其相应端点的任何待发传送。
每一传送描述符(TD)具有相关联的队列头,并为特定传送提供细节,诸如存储或检索传送中涉及的实际数据的地址、传送缓冲器的长度、实际传送的字节数等。每一传送描述符也含有状态值“活跃”或“不活跃”,以及指定传送是开还是关的软件可写值。
存在两种类型的周期性调度项,一种类型是对于等时端点的,一种类型是对于中断端点的。如下所述,等时PSE指向等时传送描述符,而中断PSE指向中断端点队列头,而中断端点队列头又指向相应的传送描述符。例如,在图3的示例中,PSE1指向等时传送描述符(与队列头QH1相关联),而PSE2指向对应于中断端点的队列头(QH2)。包含在不同的时间槽中的周期性调度项PSE3指向另一个等时传送描述符(与队列头QH1相关联)。
如下所述,当在调度进程中遇到等时PSE时,相应的传送描述符被移动至其“活跃”状态,发出数据准备好被尽快传送的信号。当在调度中遇到中断PSE时,相应的队列头被移动至“活跃”状态,发出调度应该执行分组传送的信号。图3中不含有PSE的队列头,例如QH4-QH7,它们表示在周期性传送之后使用给定时间槽中剩余的任何时间发生的异步传送。
根据本发明的一方面,为了提供适用于各种操作环境的灵活性,可以包括操作系统组件或应用程序的WUSB控制器驱动程序224可以控制调度执行的各个方面。软件操纵调度执行的主要方式是通过队列头。更具体地,在队列头中维护软件可修改的各种参数(计数器和阈值)值,修改这些参数从而修改调度执行的行为,如可通过以下描述的图4-6的流程图理解的。下表提供了每一队列头中包含的某些值上的信息,包括硬件和软件可读写或只读的值:
队列头值
如表中所示,软件可以向队列头中的出错暂停阈值参数写入值,来确定在该特定队列头对该时间槽的剩余时间被暂停(不再被重试)之前调度允许的失败的分组的数目。这是软件考虑到如上所述的以知传送失败特征(例如,瞬时出错峰值)来优化调度的主要方法。出错暂停阈值可以由软件来设置,以指示为继续执行传送需要多好或多坏的连接。如果该值被置为一(1),那么只要队列头中仍旧存在待发的活跃传送,且在该时间槽中不存在失败的分组传送,调度就会继续执行该队列头的传送。
然而,一旦分组传送失败,“当前出错计数”值递减;当它从一(1)转变为零(0)时,该队列头被暂停。这防止在给定的时间槽中其它队列头被完全服务之前(就它们也没有被暂停的意义上而言)执行其它传送。如可以容易地理解的,如果该值被置为二(2),那么在队列头被暂停之前,将采取两次失败分组传送尝试,以此类推。起始值0指示该队列头将永不被暂停(如下所述,在这样的情况下,不存在从一到零的转变)。
一般而言,或者在下一时间槽的开始处,或者当仍旧存在否则将不被使用的剩余带宽时在当前时间槽中用尽了其它端点之后,被暂停的队列头从其暂停的状态中移出。暂停失败的传送允许调度与不能够成功传送分组的端点相比更偏向于能够成功传送分组的端点。因为传输出错往往是瞬时的,因此在下一时间槽中,含有传送出错的端点更可能是成功的。在条件到达其中特定的端点急需分组的点的情况下,通知无线USB软件控制器驱动程序224,并且它可以为该端点调整队列头中的各种可配置值,本质上与其它终端相比,更偏袒该需要数据的端点,以可以用于其它传送的带宽为代价,来增加成功传送分组的概率。
出错停止阈值参数某种程度上类似于出错暂停阈值参数,然而该值指定队列头应被停止之前连续出错的数目。与在下一时间槽中或在当前时间槽中有未使用的带宽剩余时复位的暂停状态不同,被停止的队列头需要软件干预来从停止状态中移出。
等时通知阈值参数是可以由无线USB软件控制器驱动程序224设置以向软件发送通知的值,该参数同样用于使得无线USB软件控制器驱动程序224被告知尤其不良的失败条件。更具体地,无线USB中的等时流涉及接收和发送双方的特定缓冲量;只要发送方不溢出,该流就被维护。为了确保缓冲器不溢出,主机可能需要响应于缓冲器的状态来调整某些设置。等时通知阈值定义了基于缓冲器的状态硬件应该何时通知无线USB软件控制器驱动程序224。等时通知阈值被定义为与队列头相关联的活跃的等时传送描述符(TD)的数目。一旦该数目到达等时通知阈值的值,硬件就通过中断来通知无线USB软件控制器驱动程序224。
启用值可以由软件设置以开启或关闭队列头。当它处于关闭状态中时,不执行任何传送。
转向本发明的解释,图4-6参考每一时间槽中发生的操作和事件描述了调度进程226的示例逻辑,在表示时间槽开始的图4的步骤400处开始。本质上,存在调度循环的不同阶段,其中时间槽的开始启动新的循环。当新的循环完成时,如果在下一时间槽开始之前存在剩余的时间,那么新的循环或者部分循环可以执行,其中可以重新尝试被调度来传送但没有完成的任何数据。
调度循环的第一阶段涉及复位调度状态和确定该时间槽的周期性传送需求。在该阶段中,当前时间槽指针被递增来指向新的当前时间槽,如步骤400表示。然后,如果该时间槽指向任何PSE,那么执行该PSE列表。对该列表中的每个中断PSE,相应的中断端点队列头被激活(除非该端点处于终止状态)。对该列表中的每个等时PSE,对应的等时终端传送描述符以及队列头被激活。这在图4的步骤402处表示,其中对新的时间槽复位调度状态涉及将处于“暂停”状态的每一队列头转变为“活跃”状态。
其它步骤包括步骤404和406,其中步骤404表示基于单个队列头的活跃等时传送描述符的数目,只要达到通知阈值,就激发中断以通知软件。步骤406为该时间槽重新初始化该值。
调度循环的第二阶段针对执行周期性传送。一般而言,硬件搜索目前活跃的周期性队列头(步骤408),并开始为该队列头的相应传送描述符执行分组传送,如图5的步骤500处所示。对WUSB,可以并发地执行多个传送。决定在给定时间执行哪个传送的方案与本发明无关,不同指出在于总体上该方案应该基于最小化传送周转时间(将无线电从发射状态变为接收状态),以及保持协议开销为低。注意,WUSB硬件可以在其它多个分组传送的同时执行某些异步传送。
对每一周期性分组传送(步骤502),通过步骤504分析该传送的状态。如果该分组传送成功,那么步骤504沿分支至步骤506,在那里相应的连续出错计数被复位至出错停止阈值的值。如果在步骤508处,该端点是中断端点,那么通过步骤510,相应的队列头被置为不活跃状态,且如果该分组传送也完成了传送描述符,那么该传送描述符被标记为已完成。
如果该分组传送在步骤504处成功,且在步骤508处,该端点是等时端点,那么步骤508改为分支至步骤512,在那里传送描述符被标记为已完成。同样,如果在等时传送描述符列表中不再有活跃传送描述符,那么该队列头被移至不活跃状态。
返回至步骤504,如果该分组传送失败,那么步骤504分支至步骤520,在那里递减连续出错计数(如果大于零)。如果如由步骤522评估的,该值从值一(1)转变为值零(0),那么通过步骤524停止该队列头。否则,执行步骤526,在那里,如果队列头中的当前出错计数大于零,那么递减它。如果如步骤528处评估的,该计数从值一(1)转变为值零(0),那么通过步骤530将队列头移至暂停状态。注意,如果出错计数已为零,那么队列头的状态保持原样;这允许软件最初将队列头的出错计数置为零,借此队列头的状态将不会是暂停的。可以对连续出错计数使用类似的“初始化为零”操作来防止停止。
由进程返回至步骤502可见,图5的分析继续,直到分析了每一尝试的传送。
一旦该进程完成后,硬件调度进程226将返回至图4的步骤408处,以再次确定是否还存在活跃的周期性队列头,并执行它们(可以包括具有已经尝试过的传送的队列头)。重复该步骤直到不存在剩余的活跃周期性队列头,即,直到仅剩余暂停或停止的队列头待发。一旦没有活跃的周期性队列头,调度执行第三阶段,针对异步队列头的传送。在第三阶段中,通过步骤410和412执行任何活跃的异步(批量和控制)传送。对每一分组传送,分析了该传送的状态,如由分支至图6的步骤414表示,图6在步骤600处开始。
步骤600评估该分组传送是否成功,且如果是,那么分支至步骤602,在那里作出关于该分组是否完成了传送描述符的评估;如果是,那么在步骤604处该传送描述符被标记为已完成。同样,如果队列头中不再存在待发的传送描述符,那么通过步骤606和608将该队列头移至不活跃状态。该进程返回至图4的步骤410。
返回至步骤600,如果该分组失败,那么步骤600分支至步骤610处,在那里递减队列头的连续出错计数(如果大于零)。如果在步骤612处,该值从值一(1)转变为值零(0),那么通过步骤614停止该队列头。
否则,在步骤616处递减队列头的当前出错计数值(如果其值大于零)。如果在步骤618处该值被确定为从值一(1)转变为值零(0),那么在步骤610处暂停该队列头。
该进程返回至图4的步骤410处,在那里第三阶段重复,直到不再存在剩余的活跃异步队列头,或者时间槽结束。注意,通过在第三(异步处理)阶段结束时间槽中有剩余时间时步骤410分支至步骤406处,在步骤406处将任何暂停的QH移动至活跃状态,且重复第二阶段(图5)和第三阶段(图6)。
这样,可见,在时间槽内尝试调度和传送任何活跃的周期性队列头,直到该传送成功、被暂停或被停止。然后,在该时间槽内尝试传送任何异步队列头,直到该传送成功、被暂停或被停止。该进程重复,直到该时间槽中的时间耗尽,尽管当为该时间槽调度的每个队列头被成功传送时该进程也可以停止,且然后在下一合适的时刻使用新调度的队列头重新开始。
因为软件控制数据结构中的各种计数器和其它信息,因此本发明提供了显著的灵活性。例如,在正常操作中,出错计数可以在时间槽的开始处被初始化为一(1),借此,单个出错将引起失败的队列头在该时间槽的剩余时间暂停(除非因为时间槽中有额外的时间剩余而被重新激活)。作为结果,在再次尝试传送失败的队列头之前,将在该时间槽中尝试传送其它队列头。然而,当等时通知阈值到达时接收到通知之后,软件将识别接收方的缓冲器在下降,因为传输失败已经引起太多活跃的传送描述符后退。软件然后可以调整各个计数器来强迫数据进入该缓冲器,例如,通过为对应于后退的传送描述符的特定队列头递增出错计数值、禁用某些其它队列头等。一旦强制了足够的数据进入缓冲器之后,软件然后可以复位计数器和阈值以供正常操作。
如前文详细描述可见,提供了一种通过与对应于更可能失败的队列头相比,将带宽用于对应于更可能成功的队列头的分组来处理无线USB中的出错的方法和系统。软件可以在给定的环境中按照所需动态地控制该机制。
尽管本发明对各种修改和替换结构敏感,其某些示出的实施例在附图中示出并在上文中详细描述。但是应该理解,不存在将本发明限于所解释的具体形式的意图,而是相反,目的在于覆盖落入本发明的精神和范围内的所有这样的修改、替换结构和等效技术方案。