專利名稱:在節(jié)省無線適配器功率的同時維持無線網絡響應時間的方法
技術領域:
本發(fā)明通常涉及無線通信技術,更特別地,本發(fā)明涉及一種用于在維持有效無線通信的同時降低無線通信設備功耗的方法。
背景技術:
隨著無線通信變得更加普遍,許多電子設備,特別是移動設備提供用于無線通信的硬件接口。然而,這樣的無線通信硬件常常消耗不成比例的功率量,造成了移動設備需要頻繁的再充電。例如,當使用無線接口時,一些移動設備的電池壽命可能會減半。通常,為了降低無線通信硬件功耗,已經作出了設法使硬件效率更高或設法使無線硬件處于全功率狀態(tài)的時間量最小的努力。
無線通信硬件可以使移動設備能夠以與該設備通過無線連接通信相同的方式無線地通信。因此,例如電子郵件應用程序、web瀏覽器應用等等一樣的更高級的通信應用能夠使用無線通信,正像它們使用有線通信一樣。然而,設備驅動程序和其它與無線通信硬件更直接地接口連接的軟件能夠提供特有的無線功能,以解決無線通信與有線通信之間的差別。在某種程度上,這種特有的無線功能可以是基于被特別設計以促進無線通信的預定標準的。其它特有的無線功能可以包括監(jiān)控并調整無線信號強度的能力、提供并使用具體位置信息的能力、和提供節(jié)省功率的能力。
當傳送數據時,較高級的通信應用程序可以向較低級的軟件提供數據,而不考慮正在使用的是無線通信還是有線通信。然后較低級的軟件可以通過無線連接以最適當的傳送方式準備數據。較低級的軟件常常包括多個層。例如,有時被稱為“傳送驅動程序”或“協議驅動程序”的一個層能夠把正在由較高級應用程序發(fā)送的數據整理為適于特定網絡傳輸協議的分組,并能夠如該協議所要求的把報頭應用于這些分組中的每一個。有時被稱為“中間驅動程序”的另外的層則能夠提供高級設備驅動程序功能,例如跨越多個物理接口的分組過濾或負載平衡。為了在軟件開發(fā)中幫助控制網絡接口硬件自身,有時被稱為“迷你端口驅動程序”的另外的層能夠提取公共的功能。這樣的迷你端口驅動程序能夠提供對特定接口來說公共的功能,這里,特定接口例如是符合特定無線標準的無線接口。該迷你端口驅動程序與有時被稱為“微端口驅動程序”的另外的層結合能夠提供必要的控制指令,物理地控制通信硬件以便傳送由較高級通信應用程序發(fā)送的數據。
將由較高級通信應用程序接收的數據可以沿著相似的路徑前進,反向除外。這樣,朝著較高級通信應用程序前進的輸入數據分組可以由網絡通信硬件接收,并由迷你端口/微端口驅動程序組合來檢測。這些數據隨后可以傳遞到中間驅動程序,然后傳遞到傳送驅動程序,該傳送驅動程序能夠最終把該數據流呈遞給較高級通信應用程序。因此,由于特有的硬件功能通常僅僅在迷你端口/微端口驅動程序層實現,降低無線通信硬件功耗的努力通常在這一級實現,并且唯一依賴于可在這一級推斷出來的信息。
其它降低無線通信硬件功耗的努力集中在硬件本身。例如,通過產生有效的能夠收聽適當的通信但不能發(fā)送的“低功率”狀態(tài),從而降低功耗。這兩種方法都具有的一個難點是這兩種方法都沒有從整個通信系統(tǒng)的立場上去設法使功耗最小化。例如,雖然可以通過使用低功率狀態(tài)來降低無線通信硬件的功耗,但這種狀態(tài)永遠不如在其中硬件既不發(fā)送信息也不接收信息的休眠狀態(tài)有效。然而,硬件解決辦法自身不能實現這樣的休眠狀態(tài),因為硬件永遠也不能知道什么時候可能需要接收信息。同樣地,雖然可以通過監(jiān)控能夠起源于最低驅動程序層的信息來降低無線通信硬件的功耗,但這樣的信息通常不提供關于未來預期的通信的任何指示,這限制了可以節(jié)省的功耗量。
發(fā)明概述本發(fā)明的實施例允許設備驅動程序和其它較低級通信軟件實現調度,從而控制無線通信硬件,以使硬件不必要的以全功率模式操作的時間量最小。
在一個實施例中,可以在預定的間隔喚醒無線通信硬件以全功率模式工作,并且也能在期望前一發(fā)送的響應時調度該無線通信硬件以喚醒它。
在另一實施例中,傳送驅動程序、協議驅動程序、或類似的特有協議軟件能夠提供到迷你端口驅動程序、或類似的較低級設備驅動程序,可使用往返時間來調度無線通信硬件何時被喚醒。
在另外的實施例中,定時器陣列可用于實現定時器輪,以預定的時間間隔來跟蹤無線通信硬件被調度的喚醒周期。
本發(fā)明另外的特征和優(yōu)點將從隨后參考附圖詳細描述的例證性的實施例中變得明顯。
附圖簡述雖然附帶的權利要求使用個體特征闡述了本發(fā)明的特征,但是可以從隨后結合附圖的詳細描述中最好地理解本發(fā)明連同它的目的和優(yōu)點。附圖如下
圖1是通常圖示本發(fā)明實施例可以在其中實現的典型設備結構的框圖;圖2是通常圖示可以使用其實現本發(fā)明實施例的典型分層通信系統(tǒng)的框圖;圖3是通常圖示用于根據本發(fā)明實施例發(fā)送信息的算法的流程圖;圖4是通常圖示用于根據本發(fā)明實施例設置定時器索引的算法的流程圖;圖5是通常圖示用于根據本發(fā)明實施例處理定時器陣列中輸入的算法的流程圖;圖6a至圖6c是通常圖示本發(fā)明實施例的典型實施的時線示意圖。
詳細描述由于無限制的移動性的好處對移動計算設備是非常有用的,因此無線通信經常由移動計算設備使用。遺憾的是,移動計算設備常常最不能提供由無線通信硬件使用的必要功率。此外,由于經常使用的移動計算設備的性質,減少的無線通信硬件功耗使得移動計算設備能夠即使在聯網模式下也能工作較長的一段時間,使得這樣的設備對用戶更加有用。
雖然以前作出過降低無線通信硬件功耗的嘗試,這樣的嘗試通常僅僅集中無線通信的一方面,例如硬件、或在個體基礎上的設備驅動程序。然而,本發(fā)明的實施例尋求通過集中在整個通信系統(tǒng)來降低無線通信硬件的功耗。因此,由較高級的特有協議軟件確定的往返時間和相似值可以傳遞到較低級設備驅動程序,以調度無線通信硬件可以被喚醒并以全功率狀態(tài)工作的時間。除了這樣的信息之外,規(guī)則地調度收聽間隔和遞送話務指示消息(DTIM)間隔也可以用于調度無線通信硬件可以被喚醒并以全功率狀態(tài)工作的時間。當無線通信硬件不處于全功率狀態(tài)時,其可以被置于瞌睡模式,或相似的低功率狀態(tài),在該模式或狀態(tài)期間,僅僅消耗最小的功率,因為硬件通常不能發(fā)送或接收信息。這樣,在保持響應連接的同時能夠降低無線通信硬件總的功率消耗,這允許移動設備用戶更長時間的使用該設備,而不犧牲通信速度。
雖然不需要,將在由計算設備正在執(zhí)行的計算機可執(zhí)行指令,例如程序模塊,的普通環(huán)境下描述本發(fā)明。通常,程序模塊包括執(zhí)行特定任務或實現特定抽象數據類型的例行程序、程序、目標、元件、數據結構等等。在分布式計算環(huán)境下,任務可以由通過通信網絡連接的遠端處理設備來執(zhí)行。在分布式計算環(huán)境下,程序模塊可以位于本地的和遠端的計算機存儲設備和/或介質上。本領域技術人員將會理解可以用許多不同的單獨的或者作為分布式計算環(huán)境一部分的計算設備來實施本發(fā)明,其中,這樣的設備可以包括手持設備、多處理器系統(tǒng)、基于微處理器或可編程的用戶電子設備、網絡PC、小型計算機、主計算機等等。
轉到圖1,圖1示出了可以在其上實施本發(fā)明的典型計算設備100。該計算設備100僅僅是合適的計算設備的一個例子,并不旨在建議對本發(fā)明用途或功能范圍的任何限定。此外,計算設備100不應解釋為具有對圖1中圖示的外圍設備的任何一個或組合的任何依賴或需要。
計算設備100的部件可以包括,但不局限于,處理單元120、系統(tǒng)存儲器130、把包括系統(tǒng)存儲器的各種系統(tǒng)部件連接到處理單元120的系統(tǒng)總線121。系統(tǒng)總線121可以是若干總線結構類型之一,包括使用多種總線體系結構的存儲器總線或存儲器控制器、外圍總線、和本地總線。為了舉例,而不是限定,這種體系結構包括工業(yè)標準體系結構(ISA)總線、微信道體系結構(MCA)總線、增強型ISA(EISA)總線、視頻電子標準協會(VESA)本地總線、和還被稱為中層總線的外圍部件互聯(PCI)總線。此外,處理單元120可以包含一個或多個物理處理器。
計算設備100典型地包括多種計算機可讀介質。計算機可讀介質可以是可由計算設備100訪問的任何可用的介質,并包括易失性和非易失性、可以動和不可移動的介質。為了舉例,而不是限定,計算機可讀介質可以包括計算機存儲介質和通信介質。計算機存儲介質包括以任何一種用于存儲例如計算機可讀指令、數據指令、程序模塊或其它數據一樣的信息的方法或技術實現的易失性和非易失性、可移動和不可移動的介質。計算機存儲介質包括,但不局限于RAM、ROM、EEPROM、閃存或其它存儲器技術、CD-ROM、數字通用光盤(DVD)或其它光盤存儲器、盒式磁帶、磁帶、磁盤存儲器或其它磁存儲設備、或任何其它可用于存儲期望信息并能由計算設備100訪問的介質。通信介質典型地包括諸如載波、或其他傳輸機制的調制的數據信號內的計算機可讀指令、數據指令、程序模塊,并包括任何信息遞送介質。術語“調制的數據信號”指的是具有一個或多個自己的特征集或以將信息編碼到信號內的方式改變的信號。為了舉例,而不是限定,通信介質包括例如有線網絡或直線連接一樣的有線介質、和例如聲學、RF、紅外線和其它無線介質一樣的無線介質。上述的任意組合也應包含在計算機可讀介質的范圍內。
系統(tǒng)存儲器130包括例如只讀存儲器(ROM)131和隨機存取存儲器(RAM)132一樣的易失性和/或非易失性存儲器形式的計算機存儲介質。包括例如在啟動過程中幫助在計算機110內部的元件之間傳送信息的基本例行程序的基本輸入/輸出系統(tǒng)133(BIOS)通常存儲于ROM131中。RAM132典型地包含可立即存取的和/或目前由處理單元120操作的數據和/或程序模塊。為了舉例,而不是限定,圖1圖示了操作系統(tǒng)134、應用程序135、其它程序模塊136和程序數據137。
計算設備100還可以包括其它的可移動/不可移動、易失性/非易失性的計算機存儲介質。僅僅是為了舉例,而不是限定,圖1圖示了一種從不可移動的非易失性磁介質讀取數據或把數據寫到該磁介質的硬盤驅動器141、從可移動的非易失性磁盤152讀取數據或把數據寫到該磁盤152的磁盤驅動器151、和從例如CD-ROM或其它光學介質一樣的可移動的非易失性光盤156讀取數據或把數據寫到該光盤156的光盤驅動器155??捎糜谠摰湫筒僮鳝h(huán)境中的其它可移動/不可移動、易失性/非易失性的計算機存儲介質包括,但不局限于,盒式磁帶、閃存卡、數字通用盤、數字視頻帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅動器141典型地通過例如接口140一樣的不可移動存儲器接口連接到系統(tǒng)總線121,磁盤驅動器151和光盤驅動器155典型地通過例如接口150一樣的可移動存儲器接口連接到系統(tǒng)總線121。
上述討論的及圖1中圖示的驅動器與它們相關聯的計算機存儲介質為計算設備100提供計算機可讀指令、數據指令、程序模塊和其它數據的存儲。在圖1中,例如,硬盤驅動器141被圖示為存儲操作系統(tǒng)144、應用程序145、其它程序模塊146、和程序數據147。要指出的是這些部件可以與操作系統(tǒng)134、應用程序135、其它程序模塊136和程序數據137相同或不同。在這里,給出不同的標號來圖示操作系統(tǒng)144、應用程序145、其它程序模塊146、和程序數據147,這樣,它們至少是不同的樣本。
用戶可以通過例如鍵盤162和通常稱為鼠標、跟蹤球或觸墊的定點設備161一樣的輸入設備把命令或信息輸入進計算設備100。其它的輸入設備(未示出)可以包括麥克風、游戲桿、游戲板、衛(wèi)星反射器、掃描儀或類似輸入設備。這些及其它的輸入設備可以通過耦合到系統(tǒng)總線的用戶輸入接口160連接到處理單元120,或者可以通過例如并行端口、游戲端口或通用串行總線(USB)一樣的其它接口和總線結構連接。監(jiān)視器191或其它類型的顯示設備經由例如視頻接口190一樣的接口也連接到系統(tǒng)總線121。除了該監(jiān)視器之外,計算機還可以包括其它外圍輸出設備,例如,可以通過輸出外圍接口195連接的揚聲器197和打印機196。
計算設備100可以使用到一個或多個遠端計算機的邏輯連接在聯網環(huán)境下運行。圖1圖示了到遠端計算設備180的無線網絡連接175。無線網絡連接175可以是各種不同類型的無線網絡和無線網絡連接中的任意一種,各種不同類型的無線網絡和無線網絡連接包括無線局域網(WLAN)、廣域網(WAN)、符合以太網協議的網絡、或包括互聯網或萬維網的單元的其它邏輯的或物理的無線網絡。相似地,遠端計算設備180可以是與計算設備100相似的另一計算設備,或者它可以是無線基站或其它無線接入點,其可以包括上面描述的計算設備100的部分或所有單元。
當在聯網環(huán)境下使用時。計算設備100通過例如無線網絡接口170和無線硬件171一樣的網絡接口或適配器連接到無線連接175。無線網絡接口170可以是包括設備驅動程序、協議堆棧等等的軟件部分與應用程序的任何集合。無線網絡接口還可以實現分層的軟件體系結構,例如下面詳細描述的一個。無線硬件171可以是孤立的單元或者可以集成進計算設備100,例如符合許多協議中任意一個的擴充插件卡。在聯網環(huán)境下,描述的關于計算設備100的程序模塊、或它的一部分可以存儲在遠端的存儲器存儲設備中。將會理解示出的網絡連接是典型的,可以使用其它在計算機之間建立通信鏈路的其它方式。
在隨后的描述中,除非另外指出,將參考由一個或多個計算設備執(zhí)行的動作和操作的符號表示來描述本發(fā)明。這樣,應當理解的是,有時被稱為正在由計算機執(zhí)行的這樣的動作與操作包括由計算設備的處理單元對以結構形式表示數據的電子信號的處理。這個處理轉換該數據或者在計算設備的存儲器系統(tǒng)中的位置上保存該數據,其重配置或者另外以本領域普通技術人員容易理解的方式改變計算設備操作。數據保存在哪里的數據結構是具有由數據格式定義的特性的存儲器的物理位置。然而,雖然在上面的環(huán)境下描述本發(fā)明,但這不意味著限制如本領域普通技術人員將會理解的下文中描述的各種動作與操作也可以以硬件實施。
轉到圖2,圖2中示出了圖示本發(fā)明實施例考慮的一個通信結構的分層示意圖。在通信結構200的頂層是通信應用程序205,其可以是正在無線網絡175上傳送的數據的最終用戶和產生者。這樣,大多數的數據發(fā)送將由通信應用程序205發(fā)起,且大多數的數據接收將在通信應用程序205終止。因此,在通信體系結構200的頂部圖示。通信應用程序205可以包括web瀏覽器、電子郵件客戶程序、網絡公用程序、或類似的依靠或可以利用網絡通信的應用程序。
在通信結構200中,在通信應用程序205下面的層可以是傳送驅動程序210。在一些通信結構中,傳送驅動程序在與協議驅動程序一樣的層中被概念化,而在其它的結構中可能分離為這兩個。通常,傳送和/或協議驅動程序210可以實現協議堆棧,例如,舉例來說,無所不在的傳輸控制協議/網際協議(TCP/IP)堆棧、或網間分組交換/序列分組交換(IPX/SPX)堆棧。傳送驅動程序和協議驅動程序能夠分配分組、使用合適的分組報頭信息、把數據從發(fā)送應用拷貝到分組、并把數據發(fā)送到較低層。傳送驅動程序和協議驅動程序還可以提供接口,以從下一次較低層的驅動程序接收輸入分組,并把接收的數據傳送到合適的客戶應用程序。
在通信結構200中,在傳送驅動程序和協議驅動程序210下面可以是中間驅動程序215。中間驅動程序可以提供高層設備驅動程序功能,其可以包括在不同網絡媒介之間的轉換、過濾分組、并平衡跨越不止一個網絡接口的分組發(fā)送。例如,中間驅動程序可以允許通信應用程序205在層210中使用兼容的協議,然后能夠把由層210產生的分組轉換為適于在計算設備100實際連接到的特定網絡上發(fā)送的分組,即使那個網絡使用不同的協議。同樣,中間驅動程序例如通過執(zhí)行分組調度功能可以過濾分組。分組調度程序可以讀取分組中的優(yōu)先權信息,然后能夠基于分組的優(yōu)先權調度用于發(fā)送或接收的每個分組。
如圖2所示,中間驅動程序215可以與迷你端口驅動程序220交換數據。
迷你端口驅動程序220可以,或者通過他們自身或與微端口驅動程序221相結合,擔當通信結構200的最低軟件層。在一些結構中,迷你端口驅動程序實現例如無線通信硬件171一樣的物理聯網硬件所需要的所有特定的硬件功能。在一些結構中,迷你端口驅動程序可以提取一些設備特有的功能,而不是集中在例如所有無線通信設備一樣的特定類型的通信設備所共有的功能。在這種情況下,微端口221可以提供設備特有的功能,以控制特定設備。為了簡單的目的,圖2的通信結構200把迷你端口驅動程序220和微端口驅動程序221圖示為能提供特有的設備控制的單一層。由迷你端口220或者由迷你端口220與微端口221結合所提供的功能可以包括把分組轉遞到無線通信硬件171以用于發(fā)送、恢復從無線通信硬件接收的分組、處理中斷、和相似的硬件控制操作。
與上面的通信結構200相似的一個標準化通信結構被稱為網絡驅動程序接口規(guī)范(NDIS)。本領域普通技術人員將會知道,NDIS定義了在圖2中圖示的各個層之間的路徑。這樣,例如,NDIS定義中間驅動程序可以提供支持以標準化呼叫以致使用那些呼叫的傳送驅動驅動程序將能夠利用中間驅動程序的功能性的功能。
本發(fā)明實施例考慮的一個迷你端口驅動程序220為無線通信硬件171提供功率節(jié)省調度。這樣的調度可以使得無線通信硬件能夠僅僅在預定的間隔期間保持喚醒模式,并另外允許無線通信硬件以瞌睡模式操作以節(jié)省功率。雖然單獨的無線硬件設備可以實現不同的功率模式,如本發(fā)明實施例所考慮的喚醒模式可以指的是在其中無線硬件設備可以發(fā)送和/或接收信息的該設備的任何功率模式。這樣,例如,一些無線硬件設備只可以實現幾個功率模式,且喚醒模式可以僅僅是全功率模式。然而,其它無線硬件設備可以實現不同功率模式的連續(xù)區(qū),且喚醒模式可以不必處于全功率模式,而也可以是任何低功率模式—如果這樣的低功率模式對可靠地發(fā)送和接收信息是足夠的。同樣,如本發(fā)明實施例所考慮的瞌睡模式可以指的是在其中無線硬件設備通過關閉或者另外中止它發(fā)送和/或接收信息的能力但仍保留以有效方式恢復發(fā)送或接收的能力來節(jié)省功率的該設備的任何功率模式。這樣,例如,一些無線硬件設備僅僅可以實現幾個功率模式,且瞌睡模式可以僅僅是無功率模式。然而,其它無線硬件設備可以實現不同功率模式的連續(xù)區(qū),且瞌睡模式可以不必處于無功率模式,而可以是設計的通過中止該設備發(fā)送與接收信息的能力來節(jié)省功率的任何功率模式。
對于實現不同功率模式的連續(xù)區(qū)的設備來說,在各種低功率模式之間的一個區(qū)別可能是設備能夠恢復到全功率模式的速率。在這種情況下,本發(fā)明實施例打算使用允許設備盡可能快地恢復到全功率模式的功率節(jié)省模式。然而,如上面所指出的,如這里使用的瞌睡模式可以指的是任何在其中無線硬件設備通過中止它發(fā)送和/或接收信息的能力來節(jié)省功率的該設備的模式。
為了給迷你端口驅動程序220提供能夠用于為無線通信硬件171實現有效調度的信息,本發(fā)明的一個實施例打算例如往返時間一樣的信息可以由協議和/或傳送驅動程序210或相似的較高級的通信軟件來確定,并可以傳遞到迷你端口驅動程序220。如果往返時間和相似的信息是不可用的,則可以使用默認值。默認值可以進一步被配置,使由迷你端口驅動程序220實現的調度能夠適合該調度對通信性能的觀測影響。
信息可以借助于任何已知的消息傳遞算法從協議和/或傳送驅動程序210傳遞到迷你端口驅動程序220。例如,標準化NDIS結構可以擴充到提供用于把例如往返時間一樣的調度信息從協議和/或傳動驅動程序210傳遞到迷你端口驅動程序220的特有接口。在無線通信硬件171和迷你端口驅動程序220在其中使用已知的IEEE802.11無線通信標準工作的系統(tǒng)中,調度信息可以作為帶有每個發(fā)送的MAC業(yè)務數據單元(MSDU)的帶外數據(OOB)被傳遞到迷你端口驅動程序。
如上述所指出的,調度信息可以由迷你端口驅動程序220使用來實現用于無線通信硬件171的功率節(jié)省調度。本發(fā)明實施例考慮的一個功率節(jié)省調度要求在預定間隔喚醒無線通信硬件以接收DTIM消息。如本領域普通技術人員將會知道的,DTIM消息能夠為無線通信硬件171提供廣播或組播消息正在例如無線基站一樣的接入點等待它的指示。DTIM消息之間的間隔例如可以通過在無線通信硬件171與和該硬件171通信的無線接入點之間的接續(xù)過程來確定。作為選擇,DTIM間隔可以由用戶手工來確定,或者可以是預定的默認值。DTIM間隔也可以改變以適應無線網絡中的變化。為了準備功率節(jié)省調度,迷你端口驅動程序220可以使用例如下面詳細描述的一樣的功能,以指定喚醒無線通信硬件171的未來時間并提供喚醒硬件171的原因是接收DTIM消息的指示。
以與上面描述的相似方式,本發(fā)明實施例考慮的另外的功率節(jié)省調度要求在預定間隔喚醒無線通信硬件以使用無線通信硬件171來接收可能是特別呈送到計算設備100的消息。本領域普通技術人員將會知道,這樣的預定間隔可以稱為“收聽間隔”。與DTIM間隔一樣,收聽間隔例如可以通過在無線通信硬件171與和該硬件171通信的無線接入點之間的接續(xù)過程來確定。同樣,收聽間隔可以由用戶手工確定,或者它可以是預定的默認值,或者它可以改變以適應無線網絡中的變化。為了準備功率節(jié)省調度,迷你端口驅動程序220可以使用例如下面詳細描述的一樣的功能,以指定喚醒無線通信硬件171的未來時間并提供喚醒硬件171的原因是由于收聽間隔的指示。
雖然在例如上面描述的DTIM和收聽間隔一樣的重新出現的間隔喚醒無線通信硬件能夠提供功率節(jié)省的措施,本發(fā)明實施例考慮的另外的功率節(jié)省調度要求及時喚醒無線通信硬件以接收對以前發(fā)送數據的期望響應。如上面所指出的,例如往返時間一樣的信息可以由協議和/或傳送驅動程序210或相似的較高級的通信軟件來確定,并能夠傳遞到迷你端口驅動程序220。然后例如,舉例來說,通過在往返時間的部分持續(xù)時間內把無線通信硬件置于瞌睡模式,這樣的信息可以用于設置功率節(jié)省調度。
轉到圖3,圖3示出通常圖示本發(fā)明實施例考慮的用于設定功率節(jié)省調度的算法300。雖然隨后的描述將參考迷你端口驅動程序220對算法300的實施,但其它軟件驅動程序,包括不符合通信結構200的驅動程序,同樣可以實施算法300。
如所指出的,當具有將由無線通信硬件171發(fā)送的接收數據的迷你端口驅動程序220能夠調度MSDU的發(fā)送時,算法300可以在步驟305開始。本領域普通技術人員將會知道,MSDU可以是一系列的一個或多個MAC協議數據單元(MPDU)。然后,無線通信硬件171能夠在該調度時間嘗試發(fā)送該MSDU。如在步驟310中所示的,迷你端口驅動程序220可以等待來自無線通信硬件171的能夠指示MSDU發(fā)送狀態(tài)的響應。如果在步驟315無線通信硬件171指示發(fā)送沒有成功,則執(zhí)行可以跳到步驟325,其能夠指示至少一個MSDU保持將要被發(fā)送,且執(zhí)行可以返回到步驟305,以嘗試再次發(fā)送MSDU。然而,如果在步驟315,無線通信硬件171指示發(fā)送成功,則迷你端口驅動程序220可以例如基于與MSDU相關聯的往返時間來為硬件171調度下一次喚醒時間。
如上述所解釋的,例如往返時間一樣的信息可以作為連同MSDU的OOB從傳送/協議驅動程序210傳遞到迷你端口驅動程序220。這樣的信息可以由迷你端口驅動程序220使用來調度下一次喚醒時間。例如,如果指示往返時間是100毫秒,則迷你端口驅動程序220可以在100毫秒內調度下一次喚醒時間,以便當對當前發(fā)送的MSDU的響應到達時可以喚醒無線通信硬件171。作為選擇,除了簡單的往返信息以外的信息可以傳遞到迷你端口驅動程序220,以在建立功率節(jié)省調度中使用。例如,網絡阻塞、硬件狀態(tài)及類似信息的指示也能夠用于設置下一次喚醒時間或用于基于往返時間調整下一次喚醒時間。
迷你端口驅動程序220可以通過例如下面描述的把調度信息輸入進定時器陣列或相似的結構的功能來調度下一次喚醒時間。一旦迷你端口驅動程序220完成了下一次喚醒時間的調度,如在步驟320所指出的,迷你端口驅動程序能夠在步驟325檢查是否存在任何需要發(fā)送的另外的MSDU。如果存在另外的要發(fā)送的MSDU,執(zhí)行可以返回到步驟305,并且迷你端口驅動程序220可以嘗試以描述的方式發(fā)送隨后的MSDU。然而,如果不存在另外的用于發(fā)送的MSDU,如在步驟330所指出的,迷你端口驅動程序220可以把無線通信硬件171設置為瞌睡模式。
轉到圖4,圖4示出本發(fā)明實施例考慮的用于調度下一次喚醒時間的算法400。算法400可以運行以確定在定時器陣列中的合適輸入,并把信息存儲進那個輸入,例如通過使用下面進一步詳述的機制,該輸入可用于喚醒無線通信硬件171。本領域普通技術人員將會知道,定時器陣列可以是陣列數據結構,在那里,以預定的時間間隔從該陣列讀取每一條隨后的輸入。因此,打算在定義的時間間隔之后被訪問的信息可以存儲在該陣列內離當前輸入足夠遠的特定陣列輸入中。本領域普通技術人員還將知道,定時器陣列不是無限的。一旦達到陣列的末端,讀取的下一條輸入通常是第一條輸入,這能夠允許在延長的一段時間周期使用該陣列。然而,由于訪問輸入的順序最終返回到它自身,因此定時器陣列只能調度在某個時間幀內的事件,且直到較遲的時間才能調度更遠的事件。
算法400提供迷你端口驅動程序220或其它軟件能夠把功率節(jié)省調度信息輸入進定時器陣列的機制。初始步驟405能夠確定“定時器值”,其可以是考慮到安全界限通過上面描述的方法之一確定的下一次喚醒時間。因為在無線通信硬件已經接收了信息之后喚醒該硬件通常是沒有用的,可以在預期的事件之前功率節(jié)省調度信息嘗試喚醒硬件。此外,由于確定在執(zhí)行調度過程中過去的精確時間量是不實際的,安全界限可用于解決任何此種的時間差異。例如,如果指示往返時間是100毫秒,則使用上面描述的方法可確定下一次喚醒時間離無線通信硬件發(fā)送分組時的時間是100毫秒。然而,用于設置下一次喚醒時間的算法,例如,算法400,可能需要10到15毫秒來執(zhí)行。因此,如果在完成調度算法之后100毫秒喚醒無線通信硬件,則喚醒很可能會延遲10-15毫秒,且很可能會錯過期望的響應。
為了避免監(jiān)控在執(zhí)行調度過程中過去的精確時間量,在步驟405確定的定時器值可以包括合適的安全界限。例如,同上,如果指示下一次喚醒時間是100毫秒,且調度算法可能需要10-15毫秒來執(zhí)行,則可以使用20毫秒的安全界限。因此,假定下一次喚醒時間是100毫秒,則定時器值可以確定為離當前80毫秒。包括用于執(zhí)行各種算法的時間,無線通信硬件很可能會在發(fā)送分組之后90到95毫秒被喚醒,允許它接收將預期在最初發(fā)送之后100毫秒到達的響應。
一旦在步驟405例如通過使用上面描述的方法確定了定時器值,則可以證實確定的定時器值在定時器陣列的范圍之內。這樣,在步驟410,定時器值可以在時間上與定時器陣列的長度相比較。如果定時器值在時間上超過定時器陣列的長度,則該定時器陣列不能在該定時器值調度事件,且該算法在步驟450結束。然而,如果定時器值在時間上小于定時器陣列的長度,則在步驟415可以量化該定時器值,以適于定時器陣列。
本領域技術人員將會理解,由于定時器陣列不是無限的,因此它只能提供離散-與連續(xù)相反-的時間測量。因此,使用定時器輪的間隔來量化將要調度的任何事件可能是必要的。因為如上所指出的,在無線通信硬件已經接收信息之后喚醒該硬件通常是沒有用的,在步驟415,定時器索引的量化可以確保在調度時間隨后的時間期間不被調度。例如,如果用25毫秒的間隔來實施定時器陣列,且同上,定時器值是80毫秒,則量化的定時器值可以是75毫秒,因為那將是在定時器值80毫秒之前由最后一個陣列輸入所表示的時間。
一旦在步驟415獲得量化的定時器值,則可以在步驟420確定定時器索引。如上所指出的,定時器值表示從當前時間起事件被調度的持續(xù)時間。這樣,在上述的例子中,80毫秒的定時器值表示從當前時間起的80毫秒中將調度事件。因此,為了確定定時器索引,量化的定時器值可以轉換為適當的索引值,并能增加到當前時間索引。例如,如果用25毫秒的間隔實施定時器陣列,且同上,量化的定時器值是75毫秒,則量化的定時器值可以表示為從當前時間起的3條輸入(或75毫秒)。如果當前時間索引,或正在處理的當前陣列輸入是陣列輸入64,那么如在步驟420所計算的,該定時器索引可以是64+3或67。
本領域技術人員將會理解,可以通過使用DIV函數以有效方式一起執(zhí)行步驟415和420。特別地是,定時器值可以使用DIV函數由定時器陣列的間隔來劃分,并且然后能增加到當前時間索引,以計算時間索引。使用上述的例子,使用DIV函數由25毫秒把80毫秒的定時器值劃分,得到值3,然后,值3可以增加到當前時間索引64,來計算定時器索引67。
一旦在步驟420確定了定時器索引,步驟425可以保證確定的定時器值不大于定時器陣列的上界。如果定時器索引小于定時器陣列的上界,則在步驟435可以在那個定時器索引存儲合適的信息,這將在下面詳細描述。然而,如果定時器索引大于定時器陣列的上界,則步驟430能夠適當地調整該定時器索引。特別地是,如上面描述的,以循環(huán)方式處理定時器陣列,這樣在處理了定時器陣列的最后一條輸入之后,返回處理第一條輸入。因此,定時器陣列代表一個連續(xù)移動的時間窗口,與靜態(tài)的延遲時間相反。為了解決這樣的循環(huán)處理,可以調整具有比定時器陣列中最大索引值更大的絕對值的定時器索引,以便在正確的時間處理該定時器索引。例如,如果定時器陣列包含100個元素,由索引編號為0到99,且索引99當前正在被處理,則下一個要處理的索引是0。
可以在步驟430用于調整定時器索引的一個簡單機制是熟知的MOD函數,其可以返回除法運算的余數。特別地是,可以使用MOD函數由定時器陣列的長度來除在步驟420確定的定時器索引結果可以是調整的定時器索引。例如,同上,如果定時器陣列具有100個元素,且定時器索引是102,那么使用MOD函數執(zhí)行除法,得到的結果是2,其可以作為調整的定時器索引。如果索引輸入99當前正在被處理,調整的定時器索引2表示調度的事件將在3個定時器陣列輸入內被處理,即,在完成索引輸入99的處理之后,將在處理調整的索引輸入3之前處理索引輸入0和1。這樣,在當前時間索引99和定時器索引102之間的距離與在當前時間索引99與調整的定時器索引2之間的距離相等。
一旦在步驟430調整了定時器索引,如果有必要,在步驟435調度信息可以輸入進合適的定時器索引。如上所述,可以存在許多類型的調度的喚醒事件。例如,DTIM喚醒事件、收聽間隔喚醒事件、和期望響應喚醒時間都可以使用上面描述的算法來調度。除了事件類型的指示之外,適當的定時器索引也可以指示在由該索引代表的時間期間將喚醒無線通信硬件。這樣的指示僅僅需要單一的比特,其中0可以指示無線通信硬件可以保持瞌睡模式,且1可以指示該硬件可以處于喚醒狀態(tài)。
本領域普通技術人員將會認識到,定時器陣列可以由迷你端口驅動程序220或其它較低級的通信軟件來維持,并可以以該陣列的長度在時間上大于例如DTIM間隔或收聽間隔一樣的再發(fā)生間隔的方式來實現。到了這種間隔可能改變的程度,能夠同樣動態(tài)地修改定時器陣列以適應該改變的間隔。
轉到圖5,圖5示出圖示本發(fā)明實施例所考慮的在定時器陣列中每一個輸入的處理的算法500。最初,在步驟505,當前陣列輸入值可以加1,以移動到下一個陣列輸入處理。因為如上所解釋的,當達到陣列的末端時,定時器陣列可以返回,步驟510可以檢查以確定是否增加的陣列輸入值超出了陣列長度并應該被復位到該陣列的開頭。如果確實是這樣,則步驟510可以以上面描述的方式使用MOD函數執(zhí)行除法,以把增加的陣列輸入復位到該定時器陣列的開頭。
在確定了合適的陣列輸入之后,算法500在步驟515能夠例如通過檢查喚醒比特或標記來確定是否認為要喚醒無線通信硬件。如果不需要喚醒無線通信硬件,則執(zhí)行可以跳到步驟550,步驟550將在以下更詳細地描述。然而,如果在當前陣列輸入的喚醒比特或標記指示不需要喚醒無線通信硬件,那么算法500可以在步驟520檢查該硬件是否已經是喚醒的。如果無線通信硬件處于瞌睡模式,并需要被置于喚醒模式,則能夠在步驟525喚醒該硬件。否則,執(zhí)行可以繼續(xù)到步驟530。
一旦無線通信硬件是喚醒的,算法500能夠確定是否需要任何進一步的調度。如上所解釋的,無線通信硬件可以被喚醒有至少三個不同的原因。如果由于指示應該接收期望響應的例如往返時間一樣的信息而喚醒無線通信硬件,那么可能沒有任何進一步的調度,且該硬件可以簡單地保持喚醒,直到期望響應被接收,或直到它被置于瞌睡模式。然而,如果由于需要檢查DTIM消息或由于收聽間隔而喚醒無線通信硬件,由于兩者都可以是以預定間隔再發(fā)生的事件,那么算法500也可以調度下一個DTIM消息檢查或下一個收聽間隔。
因此,在步驟530可以執(zhí)行檢查以確定把無線通信硬件置于喚醒模式的指示是否是由于DTIM間隔的終止??梢酝ㄟ^檢查喚醒字段或與當前定時器陣列輸入結合保存的相似的信息存儲來作出這樣的檢查,該字段或類似信息可以指示喚醒是否是由于DTIM間隔、收聽間隔、期望響應、或一些其它原因而被調度。如果確定是由于DTIM間隔的終止而調度喚醒,則步驟535能夠使用例如圖4中圖示的并在上面詳細描述的調度算法基于DTIM間隔來調度隨后的DTIM喚醒。如果步驟530確定喚醒不是由于DTIM間隔的終止,則執(zhí)行可以前進到步驟540,其可以檢查是否喚醒是由于收聽間隔的終止。如果確定喚醒被調度是由于收聽間隔的終止,則步驟545可以使用例如圖4中圖示的并在上面詳細描述的調度算法基于收聽間隔來調度隨后的收聽間隔喚醒。
如果在步驟540確定喚醒不是由于收聽間隔的終止,則執(zhí)行可以前進到步驟550,其可以檢查可能需要發(fā)送的任何剩余的MSDU,包括由圖3中圖示的算法描述的并在上面詳細描述的發(fā)送。如果任何剩余的MSDU確實需要被發(fā)送,則算法500可以在步驟555等待它們的發(fā)送。然而,如果沒有要發(fā)送的剩余MSDU,則在步驟560無線通信硬件可以被置于瞌睡模式,并且執(zhí)行可以返回到步驟505,以處理隨后的定時器陣列輸入。
轉到圖6a,參照時間線610圖示了上面描述算法的典型操作。像上面詳細描述的那樣的定時器陣列可以指示從當前時間起的75毫秒期間設置喚醒標記。因此,無線通信硬件在周期611期間可以處于瞌睡模式。如所圖示的,在離當前時間的75毫秒,無線通信硬件可以進入喚醒狀態(tài),并能在周期612期間維持喚醒狀態(tài)??梢园―TIM消息、與收聽間隔有關的消息、或期望響應消息的數據發(fā)送可以在時間613接收。在這種情況下,無線通信硬件可以簡單地保持喚醒狀態(tài),直到在例如離目前100毫秒的下一個定時器陣列輸入。然而,為了更有效地節(jié)省功率,無線通信硬件立即處理在時間613發(fā)生的數據發(fā)送的接收,可以在周期614期間返回瞌睡模式。從圖6a中示出的時間線圖解可以看到,無線通信硬件可以通過維持在瞌睡模式并僅僅在需要接收數據發(fā)送的短的時間段內處于喚醒模式來節(jié)省功率。
然而在一些情況下,像數據發(fā)送613一樣的數據發(fā)送可能在未預料到的時間發(fā)生,且無線通信硬件可能不處于喚醒狀態(tài)以接收該數據發(fā)送。在這種情況下,數據發(fā)送可以暫時地存儲在基站或相似的發(fā)送源,且可以把該發(fā)送通知給無線通信硬件,并且該硬件能夠接收該發(fā)送作為例行程序檢查的一部分,這種檢查發(fā)生在每一個收聽間隔。轉到圖6b,在時間線620上圖示這樣的情況。如圖6b所示,無線通信硬件可以在周期621期間處于瞌睡模式,并可以在周期622期間由于像期望響應一樣的預期事件被喚醒。然而,還沒有接收到任何信息,無線通信硬件可以在周期623期間返回到瞌睡模式以節(jié)省功率。令人遺憾的是,期望響應可能在時間624到達,而無線通信硬件處于瞌睡狀態(tài)。在這種情況下,期望響應在時間624不可能被接收,但可以在隨后的時間接收,例如當在收聽間隔作出檢查以檢測任何可能等待遞送到無線通信硬件的數據時的時間626。如所指出的,無線通信硬件可以在周期625期間處于喚醒模式,例如,因為定時器陣列指示需要喚醒該硬件以執(zhí)行收聽間隔檢查。
如果無線通信硬件正處于發(fā)送信息的過程中,且發(fā)送繼續(xù)到在其期間應該喚醒該硬件以接收期望發(fā)送的周期,則該硬件可以保持喚醒狀態(tài)。轉到圖6c,如在時間線630上所示出的,在周期631期間無線通信硬件可以被喚醒并發(fā)送信息,周期631可以延長超過一個時間,例如75毫秒標記,在該時間該硬件應該被喚醒以接收期望的發(fā)送。因此,即使無線通信硬件已經完成了它的發(fā)送,它也能在周期632期間保持喚醒,以接收在時間633的發(fā)送。因此,雖然圖3的步驟330指示無線通信硬件可以被置于瞌睡模式,但是圖3的算法可以與圖5的算法互相配合,以便步驟525的喚醒指令使得硬件能夠保持在喚醒狀態(tài)。
考慮到本發(fā)明的原理可以應用到的許多可能的實施例,應該意識到這里參考附圖描述的實施例旨在僅僅是例證性的,并不應當作對本發(fā)明范圍的限定。例如,本領域普通技術人員將會意識到以軟件示出的一些圖示實施例的單元可以實現為硬件,并且反之亦然,或者在不偏離本發(fā)明精神的情況下可以修改圖示的實施例的配置和細節(jié)。同樣,由描述的算法得到的許多結果可以由具有一個或多個不同步驟的算法獲得。因此,如這里描述的發(fā)明打算包含可以落在隨后權利要求及其等同物的范圍內的所有實施例。
權利要求
1.一種節(jié)省無線通信硬件功耗的方法,該方法包括步驟接收關于要發(fā)送分組的調度相關信息,其中,調度相關信息可用于確定接收與要發(fā)送分組有關的期望響應的期望響應時間;使用無線通信硬件發(fā)送要發(fā)送的分組;如果發(fā)送成功,基于期望響應時間來調度無線通信硬件的喚醒狀態(tài);和除非無線通信硬件正在發(fā)送數據、或者另外被調度處于喚醒狀態(tài),否則把無線通信硬件置于瞌睡狀態(tài)。
2.權利要求1的方法,其中調度喚醒狀態(tài)包括把調度信息輸入進定時器陣列。
3.權利要求2的方法,其中調度進一步包括確定定時器值,其中定時器值是基于期望響應時間和安全界限的;如果定時器值未超過定時器陣列,確定定時器索引,其中定時器索引是基于當前定時器索引和由定時器陣列的間隔劃分的定時器值的;如果定時器索引大于定時器陣列的最大索引,調整定時器索引;并在該定時器索引把調度信息輸入進定時器陣列。
4.權利要求2的方法,其中調度信息包括無線通信硬件狀態(tài),指示無線通信狀態(tài)將處于瞌睡狀態(tài)還是處于喚醒狀態(tài);和喚醒類型,指示在喚醒狀態(tài)期間期望接收的發(fā)送類型。
5.權利要求1的方法,進一步包括維護定時器陣列;處理定時器陣列的輸入;和如果處理的定時器陣列輸入指示無線通信硬件將處于喚醒狀態(tài),則把無線通信硬件置于喚醒狀態(tài)。
6.權利要求5的方法,進一步包括如果處理的定時器陣列輸入指示由于再發(fā)生事件無線通信硬件將處于喚醒狀態(tài),則基于再發(fā)生事件來調度無線通信硬件的喚醒狀態(tài)。
7.權利要求5的方法,進一步包括如果期望在喚醒狀態(tài)接收的發(fā)送被接收,則把無線通信硬件置于瞌睡模式。
8.一種計算機可讀介質,具有用于節(jié)省無線通信硬件功耗的計算機可執(zhí)行指令,計算機可讀介質包括用于接收關于要發(fā)送分組的調度相關信息,其中,調度相關信息可確定用于接收與要發(fā)送分組有關的期望響應的期望響應時間;使用無線通信硬件發(fā)送要發(fā)送的分組;如果發(fā)送成功,基于期望響應時間來調度無線通信硬件的喚醒狀態(tài);和除非無線通信硬件正在發(fā)送數據、或者另外被調度處于喚醒狀態(tài),否則把無線通信硬件置于瞌狀態(tài)的計算機可執(zhí)行指令。
9.權利要求8的計算機可讀介質,其中調度喚醒狀態(tài)包括把調度信息輸入進定時器陣列。
10.權利要求9的計算機可讀介質,其中用于調度的計算機可執(zhí)行指令進一步包括用于確定定時器值,其中定時器值是基于期望響應時間和安全界限的;如果定時器值未超過定時器陣列,確定定時器索引,其中定時器索引是基于當前定時器索引和由定時器陣列的間隔劃分的定時器值的;如果定時器索引大于定時器陣列的最大索引,調整定時器索引;并在該定時器索引把調度信息輸入進定時器陣列的計算機可執(zhí)行指令。
11.權利要求9的計算機可讀介質,其中調度信息包括無線通信硬件狀態(tài),指示無線通信狀態(tài)將處于瞌睡狀態(tài)還是處于喚醒狀態(tài);和喚醒類型,指示在喚醒狀態(tài)期間期望接收的發(fā)送類型。
12.權利要求8的計算機可讀介質,進一步包括用于維護定時器陣列;處理定時器陣列的輸入;和如果處理的定時器陣列輸入指示無線通信硬件將處于喚醒狀態(tài),則把無線通信硬件置于喚醒狀態(tài)的計算機可執(zhí)行指令。
13.權利要求12的計算機可讀介質,進一步包括用于如果處理的定時器陣列輸入指示由于再發(fā)生事件無線通信硬件將處于喚醒狀態(tài),則基于再發(fā)生事件來調度無線通信硬件的喚醒狀態(tài)的計算機可執(zhí)行指令。
14.權利要求12的計算可讀介質,進一步包括用于如果期望在喚醒狀態(tài)接收的發(fā)送被接收,則把無線通信硬件置于瞌睡模式的計算機可執(zhí)行指令。
15.一種實現用于無線通信硬件的功率節(jié)省調度的定時器機制,該定時器機制包括一系列的順序處理輸入,其中每一個輸入包括用于指示無線通信硬件的期望狀態(tài)的狀態(tài)字段,和用于指示在無線通信硬件的喚醒狀態(tài)期間期望接收的發(fā)送類型的喚醒類型字段,其中進一步,該系列的輸入用于基于期望響應時間或再發(fā)生事件時間來調度無線通信硬件的喚醒狀態(tài)。
16.權利要求15的定時器機制,其中期望響應時間是基于與要發(fā)送分組相關聯的調度相關信息的。
17.權利要求15的定時器機制,其中處理順序處理輸入的輸入包括如果處理輸入的狀態(tài)字段指示無線通信硬件的期望狀態(tài)是喚醒狀態(tài),則把無線通信硬件置于喚醒狀態(tài)。
18.權利要求15的定時器機制,其中處理順序處理輸入的輸入包括設定順序處理輸入的較后輸入的狀態(tài)字段,以指示無線通信硬件的期望狀態(tài)是喚醒狀態(tài),并置位較后輸入的喚醒類型字段,以指示與再發(fā)生事件相關的,如果處理輸入的喚醒類型字段指示發(fā)送與再發(fā)生事件相關,則執(zhí)行置位狀態(tài)字段和置位喚醒類型字段,并且,其中較后輸入是基于再發(fā)生事件的間隔來選擇的。
19.權利要求15的定時器機制,其中除非無線通信硬件正在發(fā)送數據或者被一系列順序處理輸入的當前處理輸入的狀態(tài)字段指示為處于喚醒狀態(tài),否則無線通信硬件處于瞌睡狀態(tài)。
20.權利要求15的定時器機制,其中定時器機制是定時器陣列。
全文摘要
為了降低無線通信硬件設備的功耗,可以實施功率節(jié)省調度算法。包括DTIM間隔和收聽間隔的再發(fā)生事件可以被調度作為喚醒時期。同樣,基于可以與要發(fā)送數據一起傳遞的例如往返時間的信息,期望響應間隔可以被調度作為喚醒時期。除非無線通信硬件設備正在發(fā)送數據,或者期望在調度喚醒時期之一的發(fā)送,否則可以把無線通信硬件設備置于瞌睡模式。
文檔編號H04B7/26GK1694556SQ20051007831
公開日2005年11月9日 申請日期2005年4月30日 優(yōu)先權日2004年4月30日
發(fā)明者A·阿布西謝克, A·西迪基, A·克蘭茲, I·A·克斯笛克 申請人:微軟公司