專利名稱:無(wú)線usb硬件調(diào)度的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及通過(guò)無(wú)線通信在計(jì)算機(jī)系統(tǒng)和外圍設(shè)備之間傳輸數(shù)據(jù)。
背景技術(shù):
幾乎所有的當(dāng)代計(jì)算機(jī)系統(tǒng)都被配置成使用USB(通用串行總線),USB是計(jì)算機(jī)系統(tǒng)與諸如鼠標(biāo)、打印機(jī)、數(shù)碼相機(jī)等外置外圍設(shè)備之間的串行通信的外置外圍設(shè)備接口標(biāo)準(zhǔn)。使用USB,每一外圍設(shè)備通過(guò)插入到計(jì)算機(jī)系統(tǒng)上的標(biāo)準(zhǔn)化的USB端口的電纜連接。
在努力消除連接計(jì)算機(jī)系統(tǒng)和外圍設(shè)備而對(duì)USB電纜的需要的過(guò)程中,基于超寬頻帶(UWB)技術(shù)的無(wú)線USB(即WUSB)正變得標(biāo)準(zhǔn)化。無(wú)線USB針對(duì)在高達(dá)十米的距離上具有可與USB 2.0標(biāo)準(zhǔn)匹敵的通信速度,例如480Mbps。
然而,與其中傳輸出錯(cuò)十分罕見的有線USB不同,在UWB傳輸中存在必須以某種方式補(bǔ)償?shù)娘@著的分組出錯(cuò)率(例如,大致為百分之十),否則用戶的無(wú)線USB體驗(yàn)將顯著地遜于使用有線USB的體驗(yàn)。一般基于重試失敗的分組來(lái)解決由高分組出錯(cuò)率引起的問(wèn)題的嘗試,由于存在不同類型的USB通信的事實(shí)而被復(fù)雜化,這些不同類型的USB通信包括異步(控制和成批數(shù)據(jù))通信和周期(中斷和等時(shí))通信,其每一種都具有不同的傳輸相關(guān)的要求。在無(wú)線USB中,設(shè)備通過(guò)UWB通信,由此,在任何給定時(shí)間,到一個(gè)設(shè)備的連接可能經(jīng)歷很少的分組出錯(cuò),而同時(shí)到另一個(gè)設(shè)備的連接可能經(jīng)歷眾多分組出錯(cuò)。
考慮到有線USB和無(wú)線USB之間的眾多不同,需要一種補(bǔ)償無(wú)線USB中相對(duì)顯著的出錯(cuò)率的機(jī)制。這樣的機(jī)制應(yīng)該足夠靈活,使得軟件在給定的環(huán)境中能夠按照所需來(lái)控制該機(jī)制。
發(fā)明內(nèi)容
簡(jiǎn)要而言,本發(fā)明針對(duì)這樣一種系統(tǒng)和方法,通過(guò)該系統(tǒng)和方法,計(jì)算機(jī)系統(tǒng)上的硬件和軟件一起工作來(lái)調(diào)度USB無(wú)線數(shù)據(jù)傳送,其中以受控的方式重試失敗的傳送。因?yàn)樵诮邮斩司彌_無(wú)線USB傳送,因此成功的重試提供丟失的數(shù)據(jù)以插入到緩沖器中的合適位置中。通過(guò)以受控的方式重試失敗的傳送,在一般操作中,不在多半可能失敗的連接上的重試嘗試上浪費(fèi)帶寬,而是改為用于可能成功的連接。然而,在諸如接收設(shè)備處低緩沖條件等關(guān)鍵情形中,控制軟件可以更改可配置的調(diào)度參數(shù)來(lái)強(qiáng)迫數(shù)據(jù)通過(guò)該相應(yīng)的連接傳送。
本發(fā)明的無(wú)線USB數(shù)據(jù)傳送機(jī)制支持四種不同類型的數(shù)據(jù)傳送(對(duì)應(yīng)于端點(diǎn)),包括中斷傳送、等時(shí)傳送、控制傳送和批量傳送。中斷傳送和等時(shí)傳送是周期性類型的傳送,因?yàn)樗鼈儽徽{(diào)度為在通過(guò)周期性推進(jìn)而成為當(dāng)前時(shí)間槽的時(shí)間槽中傳送??刂苽魉秃团總魉褪钱惒降?,且如果在當(dāng)前時(shí)間槽中任何周期性傳送之后有時(shí)間剩余則嘗試傳送它們。為了提供使用無(wú)線USB的可接受的計(jì)算體驗(yàn),數(shù)據(jù)傳送的高出錯(cuò)率要求即使在其中不保證送達(dá)的等時(shí)傳送上也要執(zhí)行重試。
為了調(diào)度各種數(shù)據(jù)傳送,本發(fā)明在硬件中包含無(wú)線USB組件,在軟件中包含無(wú)線USB控制器驅(qū)動(dòng)器。無(wú)線USB硬件包括基于是否成功接收與對(duì)應(yīng)于端點(diǎn)的隊(duì)列頭數(shù)據(jù)結(jié)構(gòu)中的信息相關(guān)聯(lián)的分組來(lái)操縱該信息的調(diào)度進(jìn)程。硬件調(diào)度進(jìn)程包括含有一軟件可配置閾值的機(jī)制,該閾值指定在一時(shí)間周期中,在給定隊(duì)列頭(對(duì)應(yīng)于端點(diǎn))在調(diào)度中被暫停使得可以傳送與其它隊(duì)列頭相關(guān)聯(lián)的分組之前,該隊(duì)列頭能夠容忍的出錯(cuò)的數(shù)目。調(diào)度進(jìn)程從而以避免在由于瞬時(shí)出錯(cuò)條件而可能失敗的數(shù)據(jù)傳送上浪費(fèi)帶寬的受軟件控制的方式來(lái)處理失敗傳送的重試。軟件控制器驅(qū)動(dòng)程序也在該數(shù)據(jù)結(jié)構(gòu)中配置其它信息(例如,閾值)。
周期性調(diào)度數(shù)據(jù)結(jié)構(gòu)包括項(xiàng)的環(huán)狀緩沖器,其中每一項(xiàng)對(duì)應(yīng)于周期性的時(shí)間槽,并包含指向零個(gè)或多個(gè)周期性調(diào)度項(xiàng)(PSE)的列表的指針。周期性調(diào)度項(xiàng)表示在該時(shí)間槽周期中應(yīng)該成為活躍的(且從而如果可能則被傳送的)數(shù)據(jù)傳送。為此,周期性調(diào)度項(xiàng)指向隊(duì)列頭或與隊(duì)列頭相關(guān)聯(lián)的傳送描述符,其中隊(duì)列頭對(duì)應(yīng)于對(duì)其進(jìn)行數(shù)據(jù)傳送的設(shè)備上的端點(diǎn)。每一隊(duì)列頭包含涉及傳送狀態(tài)的信息,包括對(duì)其對(duì)應(yīng)端點(diǎn)的任何待發(fā)的傳送。每一傳送描述符提供特定傳送的細(xì)節(jié),諸如存儲(chǔ)和檢索傳送中涉及的實(shí)際數(shù)據(jù)的地址、傳送緩沖器的長(zhǎng)度、實(shí)際傳送的字節(jié)數(shù)等。每一傳送描述符也包含“活躍”或“不活躍”的狀態(tài)值,以及指定傳送是開還是關(guān)的軟件可寫值。
當(dāng)在調(diào)度進(jìn)程中遇到等時(shí)周期性調(diào)度項(xiàng)時(shí),將對(duì)應(yīng)的傳送描述符移動(dòng)至其“活躍”狀態(tài),發(fā)出該數(shù)據(jù)準(zhǔn)備好被盡快傳送的信號(hào)。當(dāng)在調(diào)度中遇到中斷周期性調(diào)度項(xiàng)時(shí),相應(yīng)的隊(duì)列頭被移動(dòng)至“活躍”狀態(tài),發(fā)出調(diào)度應(yīng)該執(zhí)行分組傳送的信號(hào)。控制傳送和批量傳送是異步的,且使用給定時(shí)間槽中的任何剩余的時(shí)間在周期性傳送之后發(fā)生。
軟件通過(guò)寫入各種閾值參數(shù)來(lái)控制硬件操作,閾值參數(shù)包括確定何時(shí)暫停隊(duì)列頭的出錯(cuò)計(jì)數(shù)閾值。更具體地,當(dāng)使用該閾值初始化隊(duì)列頭中的出錯(cuò)計(jì)數(shù)器,且出錯(cuò)計(jì)數(shù)器從一到零在出錯(cuò)轉(zhuǎn)變上遞減時(shí),對(duì)該時(shí)間槽剩余的時(shí)間而言,暫停該特定隊(duì)列頭(不再重試)。暫停允許在該時(shí)間槽中傳送其它隊(duì)列頭的分組,而不是在滿足閾值出錯(cuò)等級(jí)且從而可能再次失敗的連接上重新嘗試傳送。或者在下一時(shí)間槽開始處,或者當(dāng)通過(guò)成功、暫?;蚪K止來(lái)用盡當(dāng)前時(shí)間槽中的其它端點(diǎn)(隊(duì)列頭的分組)且在該時(shí)間槽中仍舊存在否則將不被使用的剩余時(shí)間(對(duì)應(yīng)于可用帶寬)時(shí),暫停的隊(duì)列頭移出其暫停的狀態(tài)。從而,響應(yīng)于失敗的傳輸而暫停隊(duì)列頭允許調(diào)度與不能夠成功傳送分組的端點(diǎn)相比,更偏向于能夠成功傳送分組的端點(diǎn)。
另一閾值參數(shù)指定在應(yīng)該停止隊(duì)列頭之前連續(xù)出錯(cuò)的數(shù)目。不同于在下一時(shí)間槽或者當(dāng)在當(dāng)前時(shí)間槽中有未使用的帶寬剩余時(shí)復(fù)位的暫停狀態(tài),停止的隊(duì)列頭需要軟件干預(yù)以從停止?fàn)顟B(tài)中移出。
等時(shí)通知閾值參數(shù)是由無(wú)線USB軟件控制器設(shè)置的,以當(dāng)由于未被成功傳送而使與隊(duì)列頭相關(guān)聯(lián)的太多傳送描述符活躍時(shí)(這本質(zhì)上對(duì)應(yīng)于相應(yīng)的接收設(shè)備上的低緩沖狀況),向軟件發(fā)送通知。當(dāng)該數(shù)值到達(dá)該閾值,硬件通過(guò)中斷來(lái)通知無(wú)線USB軟件控制器驅(qū)動(dòng)器。然后軟件可以調(diào)整該閾值來(lái)強(qiáng)迫數(shù)據(jù)進(jìn)入臨界低緩沖器。同樣,“激活”參數(shù)值可以由軟件設(shè)置來(lái)關(guān)閉或開啟隊(duì)列頭;當(dāng)處于關(guān)閉狀態(tài)時(shí),對(duì)該隊(duì)列頭不執(zhí)行任何傳送,借此數(shù)據(jù)傳送可以集中于需要數(shù)據(jù)的一個(gè)或多個(gè)端點(diǎn)。
當(dāng)在之前的調(diào)度周期以后當(dāng)前時(shí)間槽推進(jìn)至下一時(shí)間槽時(shí),調(diào)度進(jìn)程重新開始。調(diào)度循環(huán)的第一階段涉及復(fù)位調(diào)度狀態(tài)并確定該時(shí)間槽的周期性傳送需求,包括激活合適的不活躍隊(duì)列頭并傳送描述符。在該階段中,也發(fā)生每一周期的初始化,且如果對(duì)任何隊(duì)列頭到達(dá)等時(shí)通知閾值,則發(fā)送通知。
調(diào)度循環(huán)的第二階段針對(duì)執(zhí)行周期性(等時(shí)和中斷)傳送和分析結(jié)果。一般而言,硬件搜索當(dāng)前活躍的周期性隊(duì)列頭,并開始為該隊(duì)列頭的對(duì)應(yīng)傳送描述符執(zhí)行分組傳送。成功的傳送被標(biāo)記為完成,直到不再有活躍的傳送描述符剩余,在這種情況下,該隊(duì)列頭被減活。失敗導(dǎo)致減少出錯(cuò)計(jì)數(shù),當(dāng)相應(yīng)的停止或暫停閾值從一轉(zhuǎn)變?yōu)榱銜r(shí),這會(huì)引起停止或暫停將來(lái)的傳送嘗試。進(jìn)程返回,直到分析過(guò)每一嘗試過(guò)的周期性傳送,且不再存在要被嘗試的傳送,即周期性傳送被完成、暫?;蛲V?。
一旦不存在要傳送的活躍周期性隊(duì)列頭,調(diào)度執(zhí)行第三階段,針對(duì)異步(控制和批量)隊(duì)列頭的傳送。類似地嘗試異步傳送,直到基于異步隊(duì)列頭中的出錯(cuò)計(jì)數(shù)器的完成、暫?;蛲V?。如果在當(dāng)前時(shí)間槽中有時(shí)間剩余,那么重復(fù)第二和第三階段。
如可見,首先嘗試周期性傳送,但暫停(或停止)失敗了閾值次數(shù)的隊(duì)列頭,使得不會(huì)通過(guò)進(jìn)行可能再次失敗的重復(fù)的傳送嘗試而浪費(fèi)可用的帶寬。剩余時(shí)間改為用于嘗試異步傳送,如果失敗異步傳送類似地會(huì)被暫停(或被停止)。從而,本發(fā)明可以在時(shí)間槽內(nèi),但是以受控的方式按照所需在周期性傳送嘗試和異步失敗嘗試之間交替。
當(dāng)結(jié)合附圖閱讀以下詳細(xì)描述時(shí),其它的優(yōu)點(diǎn)會(huì)變得明顯,附圖中
圖1是一般表示可在其中包含本發(fā)明的計(jì)算環(huán)境的框圖;圖2是根據(jù)本發(fā)明的各個(gè)方面,包含用于使用硬件調(diào)度來(lái)控制通過(guò)UWB對(duì)外圍設(shè)備的無(wú)線USB數(shù)據(jù)傳送的計(jì)算機(jī)系統(tǒng)中的軟件和硬件的框圖;圖3是根據(jù)本發(fā)明的各個(gè)方面,包含數(shù)據(jù)傳送的硬件調(diào)度中使用的數(shù)據(jù)結(jié)構(gòu)的表示的框圖;以及圖4-6包括根據(jù)本發(fā)明的各個(gè)方面,概括地表示用于操縱該數(shù)據(jù)結(jié)構(gòu)來(lái)執(zhí)行受控?cái)?shù)據(jù)傳送的邏輯的流程圖。
具體實(shí)施例方式
示例性操作環(huán)境圖1示出了可在其上實(shí)現(xiàn)本發(fā)明的合適的計(jì)算系統(tǒng)環(huán)境100的示例。計(jì)算系統(tǒng)環(huán)境100只是合適的計(jì)算環(huán)境的一個(gè)示例,并不旨在對(duì)本發(fā)明的使用范圍或功能提出任何限制。也不應(yīng)該把計(jì)算環(huán)境100解釋為對(duì)示例性操作環(huán)境100中示出的任一組件或其組合有任何依賴性或要求。
本發(fā)明可用眾多其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置來(lái)操作。適合在本發(fā)明中使用的公知的計(jì)算系統(tǒng)、環(huán)境和/或配置的示例包括,但不限于個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持或膝上型設(shè)備、圖形輸入板設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)者電子產(chǎn)品、網(wǎng)絡(luò)PC、小型機(jī)、大型機(jī)、包含上述系統(tǒng)或設(shè)備中的任一個(gè)的分布式計(jì)算機(jī)環(huán)境等。
本發(fā)明可在諸如由計(jì)算機(jī)執(zhí)行的程序模塊等的計(jì)算機(jī)可執(zhí)行指令的通用語(yǔ)境中描述。一般而言,程序模塊包括例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型。本發(fā)明也可以在分布式計(jì)算環(huán)境中實(shí)現(xiàn),其中任務(wù)由通過(guò)通信網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)器存儲(chǔ)設(shè)備在內(nèi)的本地和/或遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
參考圖1,用于實(shí)現(xiàn)本發(fā)明的一個(gè)示例性系統(tǒng)包括以計(jì)算機(jī)110形式的通用計(jì)算設(shè)備。計(jì)算機(jī)110的組件可以包括,但不限于,處理單元120、系統(tǒng)存儲(chǔ)器130和將包括系統(tǒng)存儲(chǔ)器在內(nèi)的各種系統(tǒng)組件耦合至處理單元120的系統(tǒng)總線121。系統(tǒng)總線121可以是若干類型的總線結(jié)構(gòu)中的任一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線和使用各種總線體系結(jié)構(gòu)中的任一種的局部總線。作為示例,而非限制,這樣的體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、擴(kuò)展的ISA(EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總線和外圍部件互連(PCI)總線(也被稱為Mezzanine總線)。
計(jì)算機(jī)110通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是能夠被計(jì)算機(jī)110訪問(wèn)的任何可用介質(zhì),且包括易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。作為示例,而非限制,計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以任何方法或技術(shù)實(shí)現(xiàn)的用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,RAM、ROM、EEPROM、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲(chǔ)、磁帶盒、磁帶、磁盤存儲(chǔ)或其它磁性存儲(chǔ)設(shè)備、或能用于存儲(chǔ)所需信息且可以由計(jì)算機(jī)110訪問(wèn)的任何其它介質(zhì)。通信介質(zhì)通常具體化為諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)中的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),且包含任何信息傳遞介質(zhì)。術(shù)語(yǔ)“已調(diào)制數(shù)據(jù)信號(hào)”指的是這樣一種信號(hào),其一個(gè)或多個(gè)特征以在信號(hào)中編碼信息的方式被設(shè)定或更改。作為示例,而非限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或直接線連接,以及無(wú)線介質(zhì),諸如聲學(xué)、RF、紅外線和其它無(wú)線介質(zhì)。上述中任一個(gè)的組合也應(yīng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲(chǔ)器130包括易失性或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì),諸如只讀存儲(chǔ)器(ROM)131和隨機(jī)存取存儲(chǔ)器(RAM)132?;据斎?輸出系統(tǒng)133(BIOS)包含有助于諸如啟動(dòng)時(shí)在計(jì)算機(jī)110中元件之間傳遞信息的基本例程,它通常存儲(chǔ)在ROM 131中。RAM 132通常包含處理單元120可以立即訪問(wèn)和/或目前正在操作的數(shù)據(jù)和/或程序模塊。作為示例,而非限制,圖1示出了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137。
計(jì)算機(jī)110也可以包括其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。僅作為示例,圖1示出了從不可移動(dòng)、非易失性磁介質(zhì)中讀取或向其寫入的硬盤驅(qū)動(dòng)器141,從可移動(dòng)、非易失性磁盤152中讀取或向其寫入的磁盤驅(qū)動(dòng)器151,以及從諸如CD ROM或其它光學(xué)介質(zhì)等可移動(dòng)、非易失性光盤156中讀取或向其寫入的光盤驅(qū)動(dòng)器155??梢栽谑纠圆僮鳝h(huán)境中使用的其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,盒式磁帶、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等。硬盤驅(qū)動(dòng)器141通常由不可移動(dòng)存儲(chǔ)器接口,諸如接口140連接至系統(tǒng)總線121,磁盤驅(qū)動(dòng)器151和光盤驅(qū)動(dòng)器155通常由可移動(dòng)存儲(chǔ)器接口,諸如接口150連接至系統(tǒng)總線121。
以上描述和在圖1中示出的驅(qū)動(dòng)器及其相關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī)110提供了對(duì)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲(chǔ)。例如,在圖1中,硬盤驅(qū)動(dòng)器141被示為存儲(chǔ)操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147。注意,這些組件可以與操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137相同或不同。操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147在這里被標(biāo)注了不同的標(biāo)號(hào)是為了說(shuō)明至少它們是不同的副本。用戶可以通過(guò)輸入設(shè)備,諸如圖形輸入板即電子數(shù)字化儀164、麥克風(fēng)163、鍵盤162和定點(diǎn)設(shè)備161(通常指鼠標(biāo)、跟蹤球或觸摸墊)向計(jì)算機(jī)110輸入命令和信息。未在圖1中示出的其它輸入設(shè)備可以包括操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等。這些和其它輸入設(shè)備通常由耦合至系統(tǒng)總線的用戶輸入接口160連接至處理單元120,但也可以由其它接口或總線結(jié)構(gòu),諸如并行端口、游戲端口或通用串行總線(USB)連接。監(jiān)視器191或其它類型的顯示設(shè)備也經(jīng)由接口,諸如視頻接口190連接至系統(tǒng)總線121。監(jiān)視器191也可以與觸摸屏面板或其類似物集成。注意,監(jiān)視器和/或觸摸屏面板可以被物理地耦合至其中包含計(jì)算設(shè)備110的外殼,諸如在圖形輸入板類型個(gè)人計(jì)算機(jī)中。另外,計(jì)算機(jī)也可以包括其它外圍輸出設(shè)備,諸如揚(yáng)聲器195和打印機(jī)196,它們可以通過(guò)輸出外圍接口194等連接。
計(jì)算機(jī)110可使用至一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),諸如遠(yuǎn)程計(jì)算機(jī)180的邏輯連接在網(wǎng)絡(luò)化環(huán)境下操作。遠(yuǎn)程計(jì)算機(jī)180可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它常見網(wǎng)絡(luò)節(jié)點(diǎn),且通常包括上文相對(duì)于計(jì)算機(jī)110描述的許多或所有元件,盡管在圖1中只示出存儲(chǔ)器存儲(chǔ)設(shè)備181。圖1中所示邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但也可以包括其它網(wǎng)絡(luò)。這樣的網(wǎng)絡(luò)環(huán)境在辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見的。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)110通過(guò)網(wǎng)絡(luò)接口或適配器170連接至局域網(wǎng)171。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)110通常包括調(diào)制解調(diào)器172或用于通過(guò)諸如因特網(wǎng)等WAN 173建立通信的其它裝置。調(diào)制解調(diào)器172可以是內(nèi)置或外置的,它可以通過(guò)用戶輸入接口160或其它合適的機(jī)制連接至系統(tǒng)總線121。在網(wǎng)絡(luò)化環(huán)境中,相對(duì)于計(jì)算機(jī)110所描述的程序模塊或其部分可以存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。作為示例,而非限制,圖1示出了遠(yuǎn)程應(yīng)用程序185駐留在存儲(chǔ)器設(shè)備181上??梢岳斫猓镜木W(wǎng)絡(luò)連接是示例性的,且可以使用在計(jì)算機(jī)之間建立通信鏈路的其它手段。
無(wú)線USB硬件調(diào)度本發(fā)明一般針對(duì)這樣一種系統(tǒng)和方法,通過(guò)該系統(tǒng)和方法,沒有成功傳送的無(wú)線USB數(shù)據(jù)結(jié)構(gòu)以受控的方式重試它們的傳送,使得不在很可能失敗的連接上的重試嘗試上浪費(fèi)帶寬,而是將帶寬用于可能成功的連接。為此,考慮到通常引起傳送出錯(cuò)的條件的類型,即瞬時(shí)出錯(cuò)條件,硬件可以使用軟件可配置參數(shù)來(lái)智能地管理傳送調(diào)度。也可以理解,實(shí)現(xiàn)本發(fā)明的多種方式是可行的,且在此處僅描述這些替換方案中的某一些。例如,本發(fā)明在下文中主要是參考一硬件執(zhí)行的調(diào)度來(lái)描述的,該調(diào)度基于控制調(diào)度硬件的行為以優(yōu)化性能的軟件提供的閾值和初始化值,通過(guò)標(biāo)記數(shù)據(jù)結(jié)構(gòu)并維護(hù)和評(píng)估其內(nèi)部計(jì)數(shù)器來(lái)操作。然后,其它硬件采用被標(biāo)記為活躍的數(shù)據(jù)結(jié)構(gòu),并使用超寬頻帶無(wú)線電來(lái)傳輸相應(yīng)的數(shù)據(jù)。然而,其它類型的傳輸機(jī)制是可行的,且實(shí)際上,本發(fā)明可以在有線技術(shù)中使用,諸如在其中更高傳送速率可能導(dǎo)致更高出錯(cuò)計(jì)數(shù)的未來(lái)形式的USB中。因而,本發(fā)明不限于此處使用的任何特定的示例,而是相反,可以用總體上在計(jì)算中提供便利和優(yōu)點(diǎn)的各種方式來(lái)使用。
此外,盡管本發(fā)明將主要參考含有一個(gè)或多個(gè)外圍設(shè)備的主機(jī)計(jì)算機(jī)系統(tǒng)來(lái)描述,主機(jī)計(jì)算機(jī)系統(tǒng)向這些外圍設(shè)備發(fā)射無(wú)線USB數(shù)據(jù),但是可以理解,其它類型的設(shè)備可以構(gòu)成主機(jī)。例如,音頻和/或視頻USB播放器或其類似物可以向接收主機(jī)電視機(jī)或音頻播放器等發(fā)送分組。
圖2示出了其中運(yùn)行在主機(jī)計(jì)算機(jī)上的軟件202通過(guò)驅(qū)動(dòng)器/接口204與硬件/固件206(為簡(jiǎn)明起見,之后簡(jiǎn)稱為硬件)通信的示例體系結(jié)構(gòu)200。例如,軟件202可以是運(yùn)行在圖1的計(jì)算機(jī)系統(tǒng)120上的操作系統(tǒng)組件或其類似物,而硬件206可以被配置在插入主計(jì)算機(jī)系統(tǒng)120中的基于PCI的卡或類似物上。正如可以容易地理解的,諸如將無(wú)線USB內(nèi)建到計(jì)算機(jī)系統(tǒng)內(nèi)的其它替換方案是等效的。
一般而言,硬件206包括無(wú)線電收發(fā)器210或其類似物,它被安排成與例如外圍設(shè)備214和215各自的收發(fā)器212和213等一個(gè)或多個(gè)對(duì)應(yīng)的無(wú)線電收發(fā)器通信。盡管圖2中僅示出兩個(gè)外圍設(shè)備214和215,但是可以理解,可以存在與計(jì)算機(jī)系統(tǒng)的無(wú)線電210通信的任何實(shí)際數(shù)量的無(wú)線外圍設(shè)備。主機(jī)也可以含有有線USB連接(未示出)。
盡管為簡(jiǎn)明起見而在此處未詳細(xì)描述,圖2示出了含有用于管理主機(jī)計(jì)算機(jī)上的不同協(xié)議適應(yīng)層(PAL,例如WUSB、特別連網(wǎng)等)之間共享的無(wú)線電資源的硬件/軟件接口的UWB無(wú)線電管理組件220??梢岳斫?,UWB MAC(媒體訪問(wèn)控制)和PHY(物理)層221可被認(rèn)為對(duì)數(shù)據(jù)傳送進(jìn)程負(fù)責(zé),即發(fā)送數(shù)據(jù)和獲取關(guān)于哪些數(shù)據(jù)被成功接收的狀態(tài)信息,以及當(dāng)從外圍設(shè)備中成功接收數(shù)據(jù)時(shí)返回狀態(tài)信息。這些層221一般在超寬頻帶技術(shù)中已知的并行操作中管理數(shù)據(jù)分組的通信,返回與外圍設(shè)備214和215交換的狀態(tài)等??梢岳斫猓景l(fā)明一般針對(duì)調(diào)度數(shù)據(jù)用于傳送,包括基于返回的狀態(tài)信息執(zhí)行對(duì)沒有成功傳送的數(shù)據(jù)結(jié)構(gòu)的受控重試。
為了調(diào)度數(shù)據(jù)傳送,本發(fā)明在硬件中包含無(wú)線USB組件222,在軟件中包含無(wú)線USB控制器驅(qū)動(dòng)程序224。如下所述,無(wú)線USB組件222包括基于由外圍設(shè)備214和215返回的相應(yīng)的狀態(tài)信息230(或者應(yīng)該已被返回的狀態(tài)信息的缺乏)來(lái)操縱各種類型的數(shù)據(jù)結(jié)構(gòu)228中的信息的調(diào)度進(jìn)程226。同樣如下所述,軟件無(wú)線USB控制器224配置數(shù)據(jù)結(jié)構(gòu)中的某些信息,使得調(diào)度進(jìn)程以避免在可能失敗的數(shù)據(jù)傳送上浪費(fèi)帶寬的軟件受控方式來(lái)處理失敗傳送的重試。
如上所述,更具體地,由于UWB的特性,無(wú)線USB傳送的調(diào)度不可能與有線USB的調(diào)度完全相同,因?yàn)閷?duì)UWB存在需要以某種方式補(bǔ)償?shù)母叩枚嗟姆纸M出錯(cuò)率以及其它不同,在本發(fā)明的一個(gè)實(shí)現(xiàn)中這是通過(guò)硬件和軟件的設(shè)計(jì)來(lái)補(bǔ)償?shù)?。該硬件和軟件設(shè)計(jì)一般基于UWB通信的典型觀察到的行為,即,如果在兩個(gè)節(jié)點(diǎn)之間分組傳送失敗,則多半在同樣節(jié)點(diǎn)之間的下一次分組傳送也可能失敗。相反地,如果分組傳送成功,那么多半在同樣節(jié)點(diǎn)之間的下一次分組傳送也可能成功。這樣,如果隨時(shí)間觀察,給定連接上的分組失敗一般出現(xiàn)在成束的峰值上,而不是隨時(shí)間均勻分布。從而,這樣的出錯(cuò)條件狀態(tài)是瞬時(shí)的,且一般會(huì)隨時(shí)間消除。
基于這些觀察,本發(fā)明提供可以由軟件配置來(lái)防止在很可能失敗的重試上浪費(fèi)帶寬的重試機(jī)制。從而,為最大化總吞吐量,本發(fā)明通常提供偏向成功傳送但允許諸如改變正常操作行為以滿足臨界要求等所需軟件重配置的機(jī)制。
如在USB技術(shù)中廣泛已知的,存在與端點(diǎn)對(duì)應(yīng)的各種類型的數(shù)據(jù)傳送操作。目前的有線USB標(biāo)準(zhǔn)定義了四種傳送/端點(diǎn)類型,即控制傳送、成批傳送、中斷傳送以及等時(shí)傳送。一般用于命令和狀態(tài)操作的控制傳送是異步的,且被保證送達(dá)。同樣是異步的成批傳送一般用于大批量的數(shù)據(jù),且也被保證送達(dá),但是沒有關(guān)于等待時(shí)間或帶寬的保證。這樣的異步傳送在傳送時(shí)間槽中該時(shí)間槽的其它(周期性)事務(wù)之后發(fā)生,從而不用于時(shí)間敏感的傳送。
中斷傳送可以是設(shè)備啟動(dòng)的傳送,且需要有界的等待時(shí)間。中斷傳送在輪詢之前由設(shè)備排隊(duì),輪詢?cè)谥芷谛灾貜?fù)發(fā)生的時(shí)間槽中發(fā)生。主機(jī)啟動(dòng)的中斷通信也基于周期性的時(shí)間槽發(fā)送。中斷傳送被保證送達(dá)。
等時(shí)傳送是周期性的(每時(shí)間槽被調(diào)度),且一般用于傳送時(shí)間敏感的信息,諸如視頻和音頻流。等時(shí)傳送提供保證的帶寬和有界的等待時(shí)間,但是不保證送達(dá)。
無(wú)線USB支持這些端點(diǎn),然而如上所述,數(shù)據(jù)傳送中的高出錯(cuò)率要求即使在不保證送達(dá)的等時(shí)傳送上也要執(zhí)行重試。注意到,與有線傳送不同,無(wú)線等時(shí)傳送被緩沖,從而允許重試來(lái)提供丟失的數(shù)據(jù)以插入到接收器中的緩沖器中的合適位置。
根據(jù)本發(fā)明的一個(gè)方面,由調(diào)度進(jìn)程226以受控的方式調(diào)度對(duì)應(yīng)于端點(diǎn)的數(shù)據(jù)結(jié)構(gòu),該受控的方式針對(duì)與可能失敗的數(shù)據(jù)傳送相比更偏向可能成功的數(shù)據(jù)傳送,從而在任何給定時(shí)刻將帶寬用于當(dāng)前良好的連接而不是當(dāng)前不良的連接。為此,調(diào)度進(jìn)程設(shè)置如下的傳送調(diào)度,其中,一般而言,接連失敗的傳送被暫停直至數(shù)據(jù)傳送的下一時(shí)間槽,借此這些傳送將不在可能失敗的重試嘗試中消耗額外的帶寬。
圖3是由調(diào)度進(jìn)程226管理的各種數(shù)據(jù)結(jié)構(gòu)以及它們彼此之間的關(guān)系的表示。如圖3中所示,數(shù)據(jù)結(jié)構(gòu)包括周期性調(diào)度302、周期性調(diào)度項(xiàng)(例如PSE1-PSE3)、隊(duì)列頭(QH1-QH7)以及傳送描述符(TD)。周期性調(diào)度302包含項(xiàng)的環(huán)形緩沖器,其中每一項(xiàng)對(duì)應(yīng)于一個(gè)周期性時(shí)間槽。每一項(xiàng)包含指向零個(gè)或多個(gè)周期性調(diào)度項(xiàng)(PSE)的列表的指針,PSE包含指向其它數(shù)據(jù)結(jié)構(gòu)的指針,如下所述。時(shí)間槽表示單個(gè)時(shí)間單位,其中時(shí)間單位是(不超過(guò))被允許來(lái)由端點(diǎn)指定的最小周期?!爱?dāng)前時(shí)間槽”指針在時(shí)間周期的末尾處前進(jìn)至下一項(xiàng)。
各周期性調(diào)度項(xiàng)表示在該時(shí)間槽周期中應(yīng)該成為活躍的(由UWB組件傳送)的數(shù)據(jù)傳送。每一周期性調(diào)度項(xiàng)表示準(zhǔn)備好被執(zhí)行的傳送。
為了對(duì)傳送指定目的地,存在對(duì)應(yīng)于向其做出傳送的每一設(shè)備上的每一端點(diǎn)的隊(duì)列頭(QH)。如下所述,每一隊(duì)列頭包含涉及傳送狀態(tài)的信息,包含其相應(yīng)端點(diǎn)的任何待發(fā)傳送。
每一傳送描述符(TD)具有相關(guān)聯(lián)的隊(duì)列頭,并為特定傳送提供細(xì)節(jié),諸如存儲(chǔ)或檢索傳送中涉及的實(shí)際數(shù)據(jù)的地址、傳送緩沖器的長(zhǎng)度、實(shí)際傳送的字節(jié)數(shù)等。每一傳送描述符也含有狀態(tài)值“活躍”或“不活躍”,以及指定傳送是開還是關(guān)的軟件可寫值。
存在兩種類型的周期性調(diào)度項(xiàng),一種類型是對(duì)于等時(shí)端點(diǎn)的,一種類型是對(duì)于中斷端點(diǎn)的。如下所述,等時(shí)PSE指向等時(shí)傳送描述符,而中斷PSE指向中斷端點(diǎn)隊(duì)列頭,而中斷端點(diǎn)隊(duì)列頭又指向相應(yīng)的傳送描述符。例如,在圖3的示例中,PSE1指向等時(shí)傳送描述符(與隊(duì)列頭QH1相關(guān)聯(lián)),而PSE2指向?qū)?yīng)于中斷端點(diǎn)的隊(duì)列頭(QH2)。包含在不同的時(shí)間槽中的周期性調(diào)度項(xiàng)PSE3指向另一個(gè)等時(shí)傳送描述符(與隊(duì)列頭QH1相關(guān)聯(lián))。
如下所述,當(dāng)在調(diào)度進(jìn)程中遇到等時(shí)PSE時(shí),相應(yīng)的傳送描述符被移動(dòng)至其“活躍”狀態(tài),發(fā)出數(shù)據(jù)準(zhǔn)備好被盡快傳送的信號(hào)。當(dāng)在調(diào)度中遇到中斷PSE時(shí),相應(yīng)的隊(duì)列頭被移動(dòng)至“活躍”狀態(tài),發(fā)出調(diào)度應(yīng)該執(zhí)行分組傳送的信號(hào)。圖3中不含有PSE的隊(duì)列頭,例如QH4-QH7,它們表示在周期性傳送之后使用給定時(shí)間槽中剩余的任何時(shí)間發(fā)生的異步傳送。
根據(jù)本發(fā)明的一方面,為了提供適用于各種操作環(huán)境的靈活性,可以包括操作系統(tǒng)組件或應(yīng)用程序的WUSB控制器驅(qū)動(dòng)程序224可以控制調(diào)度執(zhí)行的各個(gè)方面。軟件操縱調(diào)度執(zhí)行的主要方式是通過(guò)隊(duì)列頭。更具體地,在隊(duì)列頭中維護(hù)軟件可修改的各種參數(shù)(計(jì)數(shù)器和閾值)值,修改這些參數(shù)從而修改調(diào)度執(zhí)行的行為,如可通過(guò)以下描述的圖4-6的流程圖理解的。下表提供了每一隊(duì)列頭中包含的某些值上的信息,包括硬件和軟件可讀寫或只讀的值
隊(duì)列頭值
如表中所示,軟件可以向隊(duì)列頭中的出錯(cuò)暫停閾值參數(shù)寫入值,來(lái)確定在該特定隊(duì)列頭對(duì)該時(shí)間槽的剩余時(shí)間被暫停(不再被重試)之前調(diào)度允許的失敗的分組的數(shù)目。這是軟件考慮到如上所述的以知傳送失敗特征(例如,瞬時(shí)出錯(cuò)峰值)來(lái)優(yōu)化調(diào)度的主要方法。出錯(cuò)暫停閾值可以由軟件來(lái)設(shè)置,以指示為繼續(xù)執(zhí)行傳送需要多好或多壞的連接。如果該值被置為一(1),那么只要隊(duì)列頭中仍舊存在待發(fā)的活躍傳送,且在該時(shí)間槽中不存在失敗的分組傳送,調(diào)度就會(huì)繼續(xù)執(zhí)行該隊(duì)列頭的傳送。
然而,一旦分組傳送失敗,“當(dāng)前出錯(cuò)計(jì)數(shù)”值遞減;當(dāng)它從一(1)轉(zhuǎn)變?yōu)榱?0)時(shí),該隊(duì)列頭被暫停。這防止在給定的時(shí)間槽中其它隊(duì)列頭被完全服務(wù)之前(就它們也沒有被暫停的意義上而言)執(zhí)行其它傳送。如可以容易地理解的,如果該值被置為二(2),那么在隊(duì)列頭被暫停之前,將采取兩次失敗分組傳送嘗試,以此類推。起始值0指示該隊(duì)列頭將永不被暫停(如下所述,在這樣的情況下,不存在從一到零的轉(zhuǎn)變)。
一般而言,或者在下一時(shí)間槽的開始處,或者當(dāng)仍舊存在否則將不被使用的剩余帶寬時(shí)在當(dāng)前時(shí)間槽中用盡了其它端點(diǎn)之后,被暫停的隊(duì)列頭從其暫停的狀態(tài)中移出。暫停失敗的傳送允許調(diào)度與不能夠成功傳送分組的端點(diǎn)相比更偏向于能夠成功傳送分組的端點(diǎn)。因?yàn)閭鬏敵鲥e(cuò)往往是瞬時(shí)的,因此在下一時(shí)間槽中,含有傳送出錯(cuò)的端點(diǎn)更可能是成功的。在條件到達(dá)其中特定的端點(diǎn)急需分組的點(diǎn)的情況下,通知無(wú)線USB軟件控制器驅(qū)動(dòng)程序224,并且它可以為該端點(diǎn)調(diào)整隊(duì)列頭中的各種可配置值,本質(zhì)上與其它終端相比,更偏袒該需要數(shù)據(jù)的端點(diǎn),以可以用于其它傳送的帶寬為代價(jià),來(lái)增加成功傳送分組的概率。
出錯(cuò)停止閾值參數(shù)某種程度上類似于出錯(cuò)暫停閾值參數(shù),然而該值指定隊(duì)列頭應(yīng)被停止之前連續(xù)出錯(cuò)的數(shù)目。與在下一時(shí)間槽中或在當(dāng)前時(shí)間槽中有未使用的帶寬剩余時(shí)復(fù)位的暫停狀態(tài)不同,被停止的隊(duì)列頭需要軟件干預(yù)來(lái)從停止?fàn)顟B(tài)中移出。
等時(shí)通知閾值參數(shù)是可以由無(wú)線USB軟件控制器驅(qū)動(dòng)程序224設(shè)置以向軟件發(fā)送通知的值,該參數(shù)同樣用于使得無(wú)線USB軟件控制器驅(qū)動(dòng)程序224被告知尤其不良的失敗條件。更具體地,無(wú)線USB中的等時(shí)流涉及接收和發(fā)送雙方的特定緩沖量;只要發(fā)送方不溢出,該流就被維護(hù)。為了確保緩沖器不溢出,主機(jī)可能需要響應(yīng)于緩沖器的狀態(tài)來(lái)調(diào)整某些設(shè)置。等時(shí)通知閾值定義了基于緩沖器的狀態(tài)硬件應(yīng)該何時(shí)通知無(wú)線USB軟件控制器驅(qū)動(dòng)程序224。等時(shí)通知閾值被定義為與隊(duì)列頭相關(guān)聯(lián)的活躍的等時(shí)傳送描述符(TD)的數(shù)目。一旦該數(shù)目到達(dá)等時(shí)通知閾值的值,硬件就通過(guò)中斷來(lái)通知無(wú)線USB軟件控制器驅(qū)動(dòng)程序224。
啟用值可以由軟件設(shè)置以開啟或關(guān)閉隊(duì)列頭。當(dāng)它處于關(guān)閉狀態(tài)中時(shí),不執(zhí)行任何傳送。
轉(zhuǎn)向本發(fā)明的解釋,圖4-6參考每一時(shí)間槽中發(fā)生的操作和事件描述了調(diào)度進(jìn)程226的示例邏輯,在表示時(shí)間槽開始的圖4的步驟400處開始。本質(zhì)上,存在調(diào)度循環(huán)的不同階段,其中時(shí)間槽的開始啟動(dòng)新的循環(huán)。當(dāng)新的循環(huán)完成時(shí),如果在下一時(shí)間槽開始之前存在剩余的時(shí)間,那么新的循環(huán)或者部分循環(huán)可以執(zhí)行,其中可以重新嘗試被調(diào)度來(lái)傳送但沒有完成的任何數(shù)據(jù)。
調(diào)度循環(huán)的第一階段涉及復(fù)位調(diào)度狀態(tài)和確定該時(shí)間槽的周期性傳送需求。在該階段中,當(dāng)前時(shí)間槽指針被遞增來(lái)指向新的當(dāng)前時(shí)間槽,如步驟400表示。然后,如果該時(shí)間槽指向任何PSE,那么執(zhí)行該P(yáng)SE列表。對(duì)該列表中的每個(gè)中斷PSE,相應(yīng)的中斷端點(diǎn)隊(duì)列頭被激活(除非該端點(diǎn)處于終止?fàn)顟B(tài))。對(duì)該列表中的每個(gè)等時(shí)PSE,對(duì)應(yīng)的等時(shí)終端傳送描述符以及隊(duì)列頭被激活。這在圖4的步驟402處表示,其中對(duì)新的時(shí)間槽復(fù)位調(diào)度狀態(tài)涉及將處于“暫?!睜顟B(tài)的每一隊(duì)列頭轉(zhuǎn)變?yōu)椤盎钴S”狀態(tài)。
其它步驟包括步驟404和406,其中步驟404表示基于單個(gè)隊(duì)列頭的活躍等時(shí)傳送描述符的數(shù)目,只要達(dá)到通知閾值,就激發(fā)中斷以通知軟件。步驟406為該時(shí)間槽重新初始化該值。
調(diào)度循環(huán)的第二階段針對(duì)執(zhí)行周期性傳送。一般而言,硬件搜索目前活躍的周期性隊(duì)列頭(步驟408),并開始為該隊(duì)列頭的相應(yīng)傳送描述符執(zhí)行分組傳送,如圖5的步驟500處所示。對(duì)WUSB,可以并發(fā)地執(zhí)行多個(gè)傳送。決定在給定時(shí)間執(zhí)行哪個(gè)傳送的方案與本發(fā)明無(wú)關(guān),不同指出在于總體上該方案應(yīng)該基于最小化傳送周轉(zhuǎn)時(shí)間(將無(wú)線電從發(fā)射狀態(tài)變?yōu)榻邮諣顟B(tài)),以及保持協(xié)議開銷為低。注意,WUSB硬件可以在其它多個(gè)分組傳送的同時(shí)執(zhí)行某些異步傳送。
對(duì)每一周期性分組傳送(步驟502),通過(guò)步驟504分析該傳送的狀態(tài)。如果該分組傳送成功,那么步驟504沿分支至步驟506,在那里相應(yīng)的連續(xù)出錯(cuò)計(jì)數(shù)被復(fù)位至出錯(cuò)停止閾值的值。如果在步驟508處,該端點(diǎn)是中斷端點(diǎn),那么通過(guò)步驟510,相應(yīng)的隊(duì)列頭被置為不活躍狀態(tài),且如果該分組傳送也完成了傳送描述符,那么該傳送描述符被標(biāo)記為已完成。
如果該分組傳送在步驟504處成功,且在步驟508處,該端點(diǎn)是等時(shí)端點(diǎn),那么步驟508改為分支至步驟512,在那里傳送描述符被標(biāo)記為已完成。同樣,如果在等時(shí)傳送描述符列表中不再有活躍傳送描述符,那么該隊(duì)列頭被移至不活躍狀態(tài)。
返回至步驟504,如果該分組傳送失敗,那么步驟504分支至步驟520,在那里遞減連續(xù)出錯(cuò)計(jì)數(shù)(如果大于零)。如果如由步驟522評(píng)估的,該值從值一(1)轉(zhuǎn)變?yōu)橹盗?0),那么通過(guò)步驟524停止該隊(duì)列頭。否則,執(zhí)行步驟526,在那里,如果隊(duì)列頭中的當(dāng)前出錯(cuò)計(jì)數(shù)大于零,那么遞減它。如果如步驟528處評(píng)估的,該計(jì)數(shù)從值一(1)轉(zhuǎn)變?yōu)橹盗?0),那么通過(guò)步驟530將隊(duì)列頭移至?xí)和顟B(tài)。注意,如果出錯(cuò)計(jì)數(shù)已為零,那么隊(duì)列頭的狀態(tài)保持原樣;這允許軟件最初將隊(duì)列頭的出錯(cuò)計(jì)數(shù)置為零,借此隊(duì)列頭的狀態(tài)將不會(huì)是暫停的??梢詫?duì)連續(xù)出錯(cuò)計(jì)數(shù)使用類似的“初始化為零”操作來(lái)防止停止。
由進(jìn)程返回至步驟502可見,圖5的分析繼續(xù),直到分析了每一嘗試的傳送。
一旦該進(jìn)程完成后,硬件調(diào)度進(jìn)程226將返回至圖4的步驟408處,以再次確定是否還存在活躍的周期性隊(duì)列頭,并執(zhí)行它們(可以包括具有已經(jīng)嘗試過(guò)的傳送的隊(duì)列頭)。重復(fù)該步驟直到不存在剩余的活躍周期性隊(duì)列頭,即,直到僅剩余暫停或停止的隊(duì)列頭待發(fā)。一旦沒有活躍的周期性隊(duì)列頭,調(diào)度執(zhí)行第三階段,針對(duì)異步隊(duì)列頭的傳送。在第三階段中,通過(guò)步驟410和412執(zhí)行任何活躍的異步(批量和控制)傳送。對(duì)每一分組傳送,分析了該傳送的狀態(tài),如由分支至圖6的步驟414表示,圖6在步驟600處開始。
步驟600評(píng)估該分組傳送是否成功,且如果是,那么分支至步驟602,在那里作出關(guān)于該分組是否完成了傳送描述符的評(píng)估;如果是,那么在步驟604處該傳送描述符被標(biāo)記為已完成。同樣,如果隊(duì)列頭中不再存在待發(fā)的傳送描述符,那么通過(guò)步驟606和608將該隊(duì)列頭移至不活躍狀態(tài)。該進(jìn)程返回至圖4的步驟410。
返回至步驟600,如果該分組失敗,那么步驟600分支至步驟610處,在那里遞減隊(duì)列頭的連續(xù)出錯(cuò)計(jì)數(shù)(如果大于零)。如果在步驟612處,該值從值一(1)轉(zhuǎn)變?yōu)橹盗?0),那么通過(guò)步驟614停止該隊(duì)列頭。
否則,在步驟616處遞減隊(duì)列頭的當(dāng)前出錯(cuò)計(jì)數(shù)值(如果其值大于零)。如果在步驟618處該值被確定為從值一(1)轉(zhuǎn)變?yōu)橹盗?0),那么在步驟610處暫停該隊(duì)列頭。
該進(jìn)程返回至圖4的步驟410處,在那里第三階段重復(fù),直到不再存在剩余的活躍異步隊(duì)列頭,或者時(shí)間槽結(jié)束。注意,通過(guò)在第三(異步處理)階段結(jié)束時(shí)間槽中有剩余時(shí)間時(shí)步驟410分支至步驟406處,在步驟406處將任何暫停的QH移動(dòng)至活躍狀態(tài),且重復(fù)第二階段(圖5)和第三階段(圖6)。
這樣,可見,在時(shí)間槽內(nèi)嘗試調(diào)度和傳送任何活躍的周期性隊(duì)列頭,直到該傳送成功、被暫?;虮煌V?。然后,在該時(shí)間槽內(nèi)嘗試傳送任何異步隊(duì)列頭,直到該傳送成功、被暫停或被停止。該進(jìn)程重復(fù),直到該時(shí)間槽中的時(shí)間耗盡,盡管當(dāng)為該時(shí)間槽調(diào)度的每個(gè)隊(duì)列頭被成功傳送時(shí)該進(jìn)程也可以停止,且然后在下一合適的時(shí)刻使用新調(diào)度的隊(duì)列頭重新開始。
因?yàn)檐浖刂茢?shù)據(jù)結(jié)構(gòu)中的各種計(jì)數(shù)器和其它信息,因此本發(fā)明提供了顯著的靈活性。例如,在正常操作中,出錯(cuò)計(jì)數(shù)可以在時(shí)間槽的開始處被初始化為一(1),借此,單個(gè)出錯(cuò)將引起失敗的隊(duì)列頭在該時(shí)間槽的剩余時(shí)間暫停(除非因?yàn)闀r(shí)間槽中有額外的時(shí)間剩余而被重新激活)。作為結(jié)果,在再次嘗試傳送失敗的隊(duì)列頭之前,將在該時(shí)間槽中嘗試傳送其它隊(duì)列頭。然而,當(dāng)?shù)葧r(shí)通知閾值到達(dá)時(shí)接收到通知之后,軟件將識(shí)別接收方的緩沖器在下降,因?yàn)閭鬏斒∫呀?jīng)引起太多活躍的傳送描述符后退。軟件然后可以調(diào)整各個(gè)計(jì)數(shù)器來(lái)強(qiáng)迫數(shù)據(jù)進(jìn)入該緩沖器,例如,通過(guò)為對(duì)應(yīng)于后退的傳送描述符的特定隊(duì)列頭遞增出錯(cuò)計(jì)數(shù)值、禁用某些其它隊(duì)列頭等。一旦強(qiáng)制了足夠的數(shù)據(jù)進(jìn)入緩沖器之后,軟件然后可以復(fù)位計(jì)數(shù)器和閾值以供正常操作。
如前文詳細(xì)描述可見,提供了一種通過(guò)與對(duì)應(yīng)于更可能失敗的隊(duì)列頭相比,將帶寬用于對(duì)應(yīng)于更可能成功的隊(duì)列頭的分組來(lái)處理無(wú)線USB中的出錯(cuò)的方法和系統(tǒng)。軟件可以在給定的環(huán)境中按照所需動(dòng)態(tài)地控制該機(jī)制。
盡管本發(fā)明對(duì)各種修改和替換結(jié)構(gòu)敏感,其某些示出的實(shí)施例在附圖中示出并在上文中詳細(xì)描述。但是應(yīng)該理解,不存在將本發(fā)明限于所解釋的具體形式的意圖,而是相反,目的在于覆蓋落入本發(fā)明的精神和范圍內(nèi)的所有這樣的修改、替換結(jié)構(gòu)和等效技術(shù)方案。
權(quán)利要求
1.在計(jì)算環(huán)境中,一種系統(tǒng)包括軟件控制器組件,所述軟件控制器組件包括能夠配置對(duì)應(yīng)于要傳送的一個(gè)或多個(gè)分組的數(shù)據(jù)結(jié)構(gòu)中的出錯(cuò)閾值的程序;以及硬件中的調(diào)度進(jìn)程,所述調(diào)度進(jìn)程包括激活一個(gè)或多個(gè)分組來(lái)執(zhí)行,并評(píng)估是否成功地接收每一分組的機(jī)制,當(dāng)被發(fā)送但沒有被接收到的一個(gè)或多個(gè)分組的出錯(cuò)計(jì)數(shù)達(dá)到所述出錯(cuò)閾值時(shí),所述調(diào)度進(jìn)程不再調(diào)度所述數(shù)據(jù)結(jié)構(gòu)。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)于中斷端點(diǎn)的隊(duì)列頭。
3.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)于等時(shí)端點(diǎn)的隊(duì)列頭。
4.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)于控制端點(diǎn)的隊(duì)列頭。
5.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)于批量端點(diǎn)的隊(duì)列頭。
6.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述出錯(cuò)閾值對(duì)應(yīng)于暫停計(jì)數(shù),其中,當(dāng)達(dá)到所述閾值時(shí),所述數(shù)據(jù)結(jié)構(gòu)被置為暫停狀態(tài),且其中,所述調(diào)度進(jìn)程可以在稍后的時(shí)間重新激活所述數(shù)據(jù)結(jié)構(gòu)。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述數(shù)據(jù)結(jié)構(gòu)被置為所述暫停狀態(tài),且其中,所述調(diào)度進(jìn)程在隨后的周期性時(shí)間槽中重新激活所述數(shù)據(jù)結(jié)構(gòu)用于執(zhí)行。
8.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述數(shù)據(jù)結(jié)構(gòu)被置為所述暫停狀態(tài),且其中,所述調(diào)度進(jìn)程在所述周期性時(shí)間槽中重新激活所述數(shù)據(jù)結(jié)構(gòu)用于執(zhí)行。
9.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述數(shù)據(jù)結(jié)構(gòu)包括至少一個(gè)其它出錯(cuò)閾值。
10.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述出錯(cuò)閾值對(duì)應(yīng)于連續(xù)出錯(cuò)計(jì)數(shù),其中,當(dāng)達(dá)到所述閾值時(shí),所述數(shù)據(jù)結(jié)構(gòu)被置為停止?fàn)顟B(tài)。
11.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述軟件組件和硬件被包含在向一個(gè)或多個(gè)無(wú)線USB外圍設(shè)備發(fā)送的主機(jī)計(jì)算機(jī)系統(tǒng)。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述主機(jī)計(jì)算機(jī)系統(tǒng)啟動(dòng)從外圍設(shè)備向主機(jī)的數(shù)據(jù)傳送。
13.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述一個(gè)或多個(gè)分組是通過(guò)超寬頻帶無(wú)線電來(lái)發(fā)送的。
14.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述硬件包含當(dāng)傳送給端點(diǎn)的數(shù)據(jù)量達(dá)到軟件可配置通知閾值時(shí)通知所述軟件組件的通知機(jī)制。
15.如權(quán)利要求14所述的系統(tǒng),其特征在于,所述軟件組件響應(yīng)于所述通知,配置所述數(shù)據(jù)結(jié)構(gòu)中的至少一個(gè)值。
16.如權(quán)利要求14所述的系統(tǒng),其特征在于,所述通知機(jī)制發(fā)出中斷來(lái)通知所述軟件組件。
17.在計(jì)算環(huán)境中,一種方法包括在時(shí)間槽中為無(wú)線USB傳輸調(diào)度數(shù)據(jù)傳送;嘗試發(fā)送所述數(shù)據(jù)傳送;確定在至少一次嘗試的閾值次數(shù)內(nèi)是否成功接收到所述數(shù)據(jù)傳送,且如果否,將所述數(shù)據(jù)傳送置為其中在改變?yōu)榱硪粋€(gè)狀態(tài)之前將不重試數(shù)據(jù)傳送的發(fā)送的狀態(tài)中。
18.如權(quán)利要求17所述的方法,其特征在于,所述數(shù)據(jù)傳送包含一組與對(duì)應(yīng)于端點(diǎn)的隊(duì)列頭相關(guān)聯(lián)的至少一個(gè)數(shù)據(jù)分組,且其中,將所述數(shù)據(jù)傳送置為其中將不重試數(shù)據(jù)傳送的發(fā)送的狀態(tài)中包含通過(guò)修改其中的狀態(tài)值來(lái)暫停所述隊(duì)列頭。
19.如權(quán)利要求17所述的方法,其特征在于,還包括通過(guò)在另一時(shí)間槽的開始處將所述狀態(tài)值修改為活躍狀態(tài)來(lái)重試所述數(shù)據(jù)傳送。
20.如權(quán)利要求17所述的方法,其特征在于,還包括當(dāng)所述時(shí)間槽中有時(shí)間剩余時(shí),在嘗試了其它分組的發(fā)送之后通過(guò)將所述狀態(tài)值修改為活躍狀態(tài)來(lái)重試所述數(shù)據(jù)傳送。
21.如權(quán)利要求17所述的方法,其特征在于,所述數(shù)據(jù)傳送包括一組與對(duì)應(yīng)于端點(diǎn)的隊(duì)列頭相關(guān)聯(lián)的至少一個(gè)數(shù)據(jù)分組,且其中,將所述數(shù)據(jù)傳送置為其中將不重試數(shù)據(jù)傳送的發(fā)送的狀態(tài)中包含通過(guò)修改其中的狀態(tài)值來(lái)停止所述隊(duì)列頭。
22.如權(quán)利要求17所述的方法,其特征在于,所述數(shù)據(jù)傳送包含一組與對(duì)應(yīng)于端點(diǎn)的隊(duì)列頭相關(guān)聯(lián)的至少一個(gè)數(shù)據(jù)分組,所述方法還包括確定所述隊(duì)列頭的活躍數(shù)據(jù)傳送的數(shù)量是否達(dá)到閾值,且如果是,那么發(fā)送通知。
23.至少一種含有當(dāng)被執(zhí)行時(shí)執(zhí)行如權(quán)利要求17所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
24.至少一種含有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)執(zhí)行所述計(jì)算機(jī)可執(zhí)行指令,執(zhí)行以下步驟(a)在時(shí)間槽內(nèi),將周期性數(shù)據(jù)傳送和活躍異步數(shù)據(jù)傳送調(diào)度為活躍的,每一數(shù)據(jù)傳送與無(wú)線USB傳輸?shù)年?duì)列頭相關(guān)聯(lián),且當(dāng)在所述時(shí)間槽內(nèi)有時(shí)間剩余時(shí)(b)執(zhí)行所述活躍周期性數(shù)據(jù)傳送;(c)對(duì)每一周期性數(shù)據(jù)傳送,評(píng)估所述傳送是否成功,且(i)如果不成功,則調(diào)整暫停計(jì)數(shù)器,并評(píng)估所述暫停計(jì)數(shù)器是否達(dá)到了相應(yīng)的閾值,且如果達(dá)到,則暫停與所述數(shù)據(jù)傳送相關(guān)聯(lián)的隊(duì)列頭;(ii)如果成功,且為中斷端點(diǎn),則如果完成則將所述隊(duì)列頭減活,并將所述數(shù)據(jù)傳送標(biāo)記為完成;以及(iii)如果成功,且為等時(shí)端點(diǎn),則將所述數(shù)據(jù)傳送標(biāo)記為完成,并當(dāng)與所述隊(duì)列頭相關(guān)聯(lián)的每一數(shù)據(jù)傳送被標(biāo)記為完成時(shí)將所述隊(duì)列頭減活;(d)基于任何不活躍的周期性隊(duì)列頭和暫停的周期性隊(duì)列頭,確定是否有剩余的任何活躍周期性數(shù)據(jù)傳送要被執(zhí)行,且如果是,那么返回至步驟(b),如果否則前進(jìn)至步驟(e);(e)執(zhí)行所述活躍異步數(shù)據(jù)傳送;(f)對(duì)每一異步數(shù)據(jù)傳送,評(píng)估所述傳送是否成功,且(i)如果不成功,那么調(diào)整暫停計(jì)數(shù)器并評(píng)估是否達(dá)到閾值,且如果達(dá)到,則暫停與所述數(shù)據(jù)傳送相關(guān)聯(lián)的隊(duì)列頭;以及(ii)如果成功,則如果完成則將所述數(shù)據(jù)傳送標(biāo)記為完成;以及(g)基于任何不活躍的異步隊(duì)列頭和暫停的異步隊(duì)列頭,確定是否有剩余的任何活躍異步數(shù)據(jù)傳送要被執(zhí)行,且如果是,那么返回至步驟(e),如果否則激活任何暫停的周期性數(shù)據(jù)傳送和暫停的異步數(shù)據(jù)傳送,并返回至步驟(b)。
25.如權(quán)利要求24所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括對(duì)每一周期性數(shù)據(jù)傳送,如果所述周期性數(shù)據(jù)傳送不成功,那么調(diào)整連續(xù)出錯(cuò)計(jì)數(shù)器,并評(píng)估所述連續(xù)出錯(cuò)計(jì)數(shù)器是否達(dá)到相應(yīng)的連續(xù)出錯(cuò)閾值,且如果達(dá)到,則停止與所述周期性數(shù)據(jù)傳送相關(guān)聯(lián)的隊(duì)列頭。
26.如權(quán)利要求24所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括對(duì)每一異步數(shù)據(jù)傳送,如果所述異步數(shù)據(jù)傳送不成功,則調(diào)整連續(xù)出錯(cuò)計(jì)數(shù)器,并評(píng)估所述連續(xù)出錯(cuò)計(jì)數(shù)器是否達(dá)到相應(yīng)的連續(xù)出錯(cuò)閾值,且如果達(dá)到,則終止與所述異步數(shù)據(jù)傳送相關(guān)聯(lián)的隊(duì)列頭。
27.如權(quán)利要求24所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括對(duì)每一隊(duì)列頭,對(duì)照通知閾值評(píng)估活躍等時(shí)傳送描述符的數(shù)目,且如果達(dá)到所述閾值,則發(fā)送關(guān)于所述隊(duì)列頭的通知。
28.如權(quán)利要求27所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述通知的接收器修改相應(yīng)隊(duì)列頭中的至少一個(gè)閾值。
29.如權(quán)利要求24所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括對(duì)成功的每一異步數(shù)據(jù)傳送,如果對(duì)所述數(shù)據(jù)頭沒有剩余的數(shù)據(jù)傳送待發(fā),則將所述隊(duì)列頭置為不活躍。
30.至少一種其上存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì),所述數(shù)據(jù)結(jié)構(gòu)包括在與將被傳送給接收設(shè)備的無(wú)線USB數(shù)據(jù)相關(guān)聯(lián)的隊(duì)列頭中出錯(cuò)暫停閾值字段,包含對(duì)應(yīng)于在暫停所述隊(duì)列頭之前傳送與所述隊(duì)列頭相關(guān)聯(lián)的分組的嘗試的數(shù)目的閾值;當(dāng)前出錯(cuò)計(jì)數(shù)字段,包含當(dāng)沒有成功接收與所述隊(duì)列頭相關(guān)聯(lián)的所傳送的分組時(shí),對(duì)分組出錯(cuò)上調(diào)整來(lái)跟蹤的計(jì)數(shù);以及狀態(tài)字段,指示是否嘗試與所述隊(duì)列頭相關(guān)聯(lián)的分組的傳送,所述狀態(tài)字段包括第一狀態(tài),指示所述隊(duì)列頭中的至少一個(gè)分組對(duì)傳送活躍;以及第二狀態(tài),指示隊(duì)列頭被暫停且在改變?yōu)樗龅谝粻顟B(tài)之前將不重試數(shù)據(jù)傳送;并且其中,當(dāng)所述當(dāng)前出錯(cuò)計(jì)數(shù)字段中的計(jì)數(shù)被調(diào)整為指示達(dá)到所述出錯(cuò)暫停閾值字段中的出錯(cuò)暫停閾值的計(jì)數(shù)時(shí),所述狀態(tài)字段從活躍狀態(tài)改變?yōu)闀和顟B(tài)。
31.如權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述當(dāng)前出錯(cuò)計(jì)數(shù)值是使用所述出錯(cuò)暫停閾值字段中的閾值初始化的,且當(dāng)沒有成功接收到傳送的分組時(shí)通過(guò)遞減所述計(jì)數(shù)來(lái)調(diào)整,且其中,當(dāng)所述當(dāng)前出錯(cuò)計(jì)數(shù)字段中的計(jì)數(shù)轉(zhuǎn)變?yōu)榱銜r(shí),所述狀態(tài)字段從活躍狀態(tài)改變?yōu)闀和顟B(tài)。
32.如權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括出錯(cuò)停止閾值字段,包含對(duì)應(yīng)于在停止所述隊(duì)列頭之前從傳送與所述隊(duì)列頭相關(guān)聯(lián)的分組的嘗試中所得到的連續(xù)出錯(cuò)的數(shù)目的閾值;連續(xù)出錯(cuò)計(jì)數(shù)閾值,包含對(duì)分組出錯(cuò)上調(diào)整來(lái)跟蹤所述隊(duì)列頭的連續(xù)分組出錯(cuò)的數(shù)目的計(jì)數(shù);并且其中,當(dāng)所述連續(xù)出錯(cuò)計(jì)數(shù)字段中的計(jì)數(shù)被調(diào)整為指示已達(dá)到所述出錯(cuò)停止閾值字段中的出錯(cuò)停止閾值的計(jì)數(shù)時(shí),所述狀態(tài)字段從活躍狀態(tài)改變?yōu)橥V範(fàn)顟B(tài)。
33.如權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括當(dāng)前活躍傳送描述符計(jì)數(shù),指示所述隊(duì)列頭的活躍數(shù)據(jù)傳送的當(dāng)前數(shù)目;等時(shí)通知閾值字段,包含指示之后發(fā)送通知的所述隊(duì)列頭的活躍傳送描述符的數(shù)目的值;并且其中,所述當(dāng)前活躍傳送描述符計(jì)數(shù)是對(duì)照所述等時(shí)通知閾值字段中的值來(lái)評(píng)估的,以基于是否達(dá)到所述等時(shí)通知閾值來(lái)確定是否發(fā)出通知。
34.如權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括啟用字段,其中含有指示是否執(zhí)行與所述隊(duì)列頭相關(guān)的任何傳送的值。
35.在計(jì)算環(huán)境中,一種方法包括(a)當(dāng)在一組時(shí)間槽中的當(dāng)前時(shí)間槽中,激活周期性數(shù)據(jù)傳送用于向無(wú)線USB終端傳送,每一數(shù)據(jù)傳送與對(duì)應(yīng)于所述數(shù)據(jù)傳送的隊(duì)列頭相關(guān)聯(lián),所述隊(duì)列頭含有用于傳送一個(gè)或多個(gè)數(shù)據(jù)分組的信息;(b)嘗試傳送與活躍的隊(duì)列頭相關(guān)聯(lián)的周期性分組;(c)基于對(duì)端點(diǎn)嘗試的至少一個(gè)先前的數(shù)據(jù)傳送是否成功,來(lái)評(píng)估對(duì)所述端點(diǎn)的后繼數(shù)據(jù)傳送是否可能失敗,且如果可能失敗,暫停所述后繼數(shù)據(jù)傳送,且如果不太可能失敗,則嘗試所述后繼數(shù)據(jù)傳送;(d)確定是否有任何周期性數(shù)據(jù)傳送保持在要傳送的活躍狀態(tài)中,且如果是,如果在當(dāng)前時(shí)間槽中仍有時(shí)間,則返回至步驟(b)。
36.如權(quán)利要求35所述的方法,其特征在于,評(píng)估對(duì)端點(diǎn)的后繼數(shù)據(jù)傳送是否可能失敗包括更新失敗計(jì)數(shù)器并基于閾值來(lái)評(píng)估所述失敗計(jì)數(shù)器。
37.如權(quán)利要求35所述的方法,其特征在于,在步驟(d)處,沒有周期性數(shù)據(jù)傳送保持在要傳送的活躍狀態(tài)中,且在當(dāng)前時(shí)間槽中有時(shí)間剩余,還包括(e)嘗試傳送與活躍的異步隊(duì)列頭相關(guān)聯(lián)的分組;(f)基于對(duì)端點(diǎn)嘗試的至少一個(gè)先前的數(shù)據(jù)傳送是否成功,來(lái)評(píng)估對(duì)所述異步端點(diǎn)的后繼數(shù)據(jù)傳送是否可能失敗,且如果可能失敗,暫停所述后繼數(shù)據(jù)傳送,且如果不太可能失敗,則嘗試所述后繼數(shù)據(jù)傳送;(g)確定是否有任何異步隊(duì)列頭包含保持在要傳送的活躍狀態(tài)中的數(shù)據(jù)傳送,且如果是,假如在當(dāng)前時(shí)間槽中仍有時(shí)間,則返回至步驟(e),且如果否,假如在當(dāng)前時(shí)間槽中仍有時(shí)間,則激活任何暫停的隊(duì)列頭并返回至步驟(b)。
38.如權(quán)利要求37所述的方法,其特征在于,評(píng)估對(duì)異步端點(diǎn)的后繼數(shù)據(jù)傳送是否可能失敗包括更新失敗計(jì)數(shù)器并基于閾值來(lái)評(píng)估所述失敗計(jì)數(shù)器。
39.如權(quán)利要求35所述的方法,其特征在于,還包括對(duì)每一隊(duì)列頭,對(duì)照通知閾值評(píng)估活躍等時(shí)傳送描述符的數(shù)目,且如果達(dá)到所述閾值,則發(fā)送關(guān)于所述隊(duì)列頭的通知。
40.至少一種含有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)執(zhí)行所述計(jì)算機(jī)可執(zhí)行指令時(shí),執(zhí)行如權(quán)利要求35所述的方法。
全文摘要
在通過(guò)UWB的無(wú)線USB數(shù)據(jù)傳送中,假設(shè)無(wú)線USB經(jīng)歷的高出錯(cuò)率,軟件配置硬件閾值,來(lái)以與不良的連接相比,將帶寬用于良好的連接的方式來(lái)控制數(shù)據(jù)傳送。在異步傳送之前首先嘗試周期性傳送,只要周期性傳送成功。當(dāng)失敗發(fā)生時(shí),硬件包括一種含有軟件可配置閾值的機(jī)制,該機(jī)制指定在調(diào)度中給定端點(diǎn)被暫停之前該端點(diǎn)可以容忍的出錯(cuò)的數(shù)目。通過(guò)暫??赡茉俅问〉膫魉蛧L試,與那些經(jīng)歷出錯(cuò)的端點(diǎn)相比,更偏向于具有成功傳送的端點(diǎn)。當(dāng)待發(fā)的活躍傳送的數(shù)目超過(guò)了等時(shí)端點(diǎn)的軟件可配置通知閾值時(shí),硬件向軟件通知該狀態(tài),對(duì)應(yīng)于接收器的低緩沖狀況。然后,軟件可以重新配置閾值并減活其它傳送來(lái)強(qiáng)制數(shù)據(jù)傳送進(jìn)入緩沖器。
文檔編號(hào)H04L1/00GK1783041SQ200510128758
公開日2006年6月7日 申請(qǐng)日期2005年12月2日 優(yōu)先權(quán)日2004年12月3日
發(fā)明者F·本赫薩尼亞, G·T·斯利克, R·E·奧爾 申請(qǐng)人:微軟公司