專利名稱:用于縮減使用同時多線程處理器的帶緩沖的應(yīng)用的能耗的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)系統(tǒng)領(lǐng)域,更具體地,涉及用于縮減計算機(jī)系統(tǒng)的功耗的方法和裝置。
背景多線程技術(shù)(multithreading)是將指令分割成多個執(zhí)行流(或線程),以便它們可以被并行地處理的技術(shù)。
圖1A是圖示可以被用來支持多線程技術(shù)的現(xiàn)有技術(shù)系統(tǒng)的實施例的框圖。系統(tǒng)100包括兩個物理處理器105和110,并且可以被用來執(zhí)行多線程軟件應(yīng)用。物理處理器105和110中的每一個可以包括類似的資源(例如體系結(jié)構(gòu)狀態(tài)、執(zhí)行資源、緩存等)集合。所述兩個物理處理器可以共享公共系統(tǒng)總線115和公共主存儲器120。
典型地,為了增加并行性,系統(tǒng)100可以采用調(diào)度技術(shù),每當(dāng)線程準(zhǔn)備被分派時,所述調(diào)度技術(shù)分派該線程。
附圖簡要說明下面的附圖僅僅為了圖示說明的目的公開本發(fā)明的各個實施方案,并且不想要對本發(fā)明的范圍進(jìn)行限制。
圖1A是圖示可以被用來支持多線程技術(shù)的現(xiàn)有技術(shù)系統(tǒng)的實施例的框圖。
圖1B是根據(jù)一個實施方案圖示具有支持超線程技術(shù)的單個處理器的系統(tǒng)的實施例的框圖。
圖1C是根據(jù)一個實施方案圖示使用數(shù)據(jù)緩沖區(qū)的應(yīng)用的實施例的框圖。
圖2是根據(jù)一個實施方案圖示多線程化系統(tǒng)(multithreading system)中的不同狀態(tài)的框圖。
圖3A和3B根據(jù)一個實施方案圖示軟件應(yīng)用可以使用的緩沖區(qū)的兩個實施例。
圖4A和4B根據(jù)一個實施方案圖示在多線程化系統(tǒng)中被分派的線程的實施例。
圖5是根據(jù)一個實施方案圖示在多線程化系統(tǒng)中使用延遲分派方案所分派的線程的圖6是根據(jù)一個實施方案圖示視頻解碼過程的實施例的圖。
詳細(xì)說明對于一個實施方案,公開了用于管理系統(tǒng)中的資源的方法。所述方法包括監(jiān)控與軟件應(yīng)用相關(guān)聯(lián)的緩沖區(qū)和監(jiān)控系統(tǒng)中的線程?;诋?dāng)前緩沖等級(level)和線程狀態(tài)中的至少一個,可用資源(例如,電壓、頻率、體系結(jié)構(gòu)參數(shù)等)可以被增加或減少。
在下面的描述中,為了解釋的目的,闡述了很多具體細(xì)節(jié)以提供對本發(fā)明的完整理解。然而,本領(lǐng)域技術(shù)人員將會清楚,無需這些具體細(xì)節(jié)可以實踐本發(fā)明。此外,公知結(jié)構(gòu)、過程和設(shè)備以框圖的形式被示出或者以概括的方式被提及,以提供沒有過多細(xì)節(jié)的解釋。
超線程技術(shù)是一項來自加利福尼亞州圣塔克萊拉市的Intel公司的技術(shù),所述技術(shù)使得使用單個物理處理器能夠并行地執(zhí)行線程。超線程技術(shù)是同時多線程技術(shù)(SimultaneousMulti-threading Technology,SMT)的一種形式,其中軟件應(yīng)用的多個線程可以在一個物理處理器上同時被執(zhí)行。這可以通過復(fù)制體系結(jié)構(gòu)狀態(tài)來達(dá)到,其中每個體系結(jié)構(gòu)狀態(tài)共享處理器執(zhí)行資源的一個集合。
圖1B是圖示具有支持超線程技術(shù)的單個處理器的系統(tǒng)的實施例的框圖。系統(tǒng)101包括具有兩個體系結(jié)構(gòu)狀態(tài)185和190的物理處理器150,所述兩個體系結(jié)構(gòu)狀態(tài)185和190使得物理處理器150被感知為兩個邏輯處理器155、160。所述兩個邏輯處理器155、160共享相同的執(zhí)行資源165、緩存170、系統(tǒng)總線175和主存儲器180。依賴于邏輯處理器155、160中的哪一個可用,物理處理器150可以以交織的方式調(diào)度多個線程。超線程技術(shù)導(dǎo)致處理器執(zhí)行資源165和總吞吐量的增加的利用率。
超線程技術(shù)使得執(zhí)行單元更加繁忙,并且因此與不支持超線程技術(shù)的處理器相比,執(zhí)行單元可能消耗更多的功率。對于現(xiàn)代系統(tǒng),尤其是電池操作的移動系統(tǒng),功耗正成為重要的考慮因素。在這些電池操作的系統(tǒng)中,對于系統(tǒng)的整體性能評估,用于給定的固定應(yīng)用的平均功耗可能是所要考慮的一個至關(guān)重要的參數(shù)。已經(jīng)提出用于縮減功耗的不同技術(shù),包括例如動態(tài)電壓管理(Dynamic Voltage Management,DVM)。使用DVM,通過變化所應(yīng)用的頻率和/或電壓,可以配置處理器的性能和功耗。
應(yīng)用約束許多軟件應(yīng)用受數(shù)據(jù)傳送要求的約束。圖1C是根據(jù)一個實施方案圖示使用數(shù)據(jù)緩沖區(qū)的應(yīng)用的實施例的框圖。如圖1C所圖示,第一應(yīng)用182可以產(chǎn)生數(shù)據(jù)并且將其儲存在第一數(shù)據(jù)緩沖區(qū)184中。第一數(shù)據(jù)緩沖區(qū)184中的數(shù)據(jù)可以隨后被用作到第二應(yīng)用192的輸入。第二應(yīng)用192可以隨后產(chǎn)生要被儲存在第二數(shù)據(jù)緩沖區(qū)194中的數(shù)據(jù)。當(dāng)?shù)谝粦?yīng)用182和第二應(yīng)用192不被任何數(shù)據(jù)傳送要求約束時,任意地變化將數(shù)據(jù)儲存在第一數(shù)據(jù)緩沖區(qū)184或第二數(shù)據(jù)緩沖區(qū)194中的頻率以及從這些緩沖區(qū)中取得數(shù)據(jù)的頻率可以對第一應(yīng)用182和第二應(yīng)用192沒什么影響。
然而,當(dāng)?shù)谝粦?yīng)用182和第二應(yīng)用192被某些形式的數(shù)據(jù)傳送要求約束時,不考慮該因素可能會妨礙用戶感受和/或軟件應(yīng)用可靠性。例如,對于流式多媒體或其他實時應(yīng)用,在不當(dāng)時刻的低頻率處理器可以導(dǎo)致應(yīng)用失敗,導(dǎo)致跳幀或產(chǎn)生質(zhì)量降低的圖像。
對于一個實施方案,通過監(jiān)控利用一個或更多個緩沖區(qū)的一個或更多個軟件應(yīng)用,可以進(jìn)行系統(tǒng)中資源的管理。軟件應(yīng)用可以包括一個或更多個線程。線程可以被多次分派。在系統(tǒng)中可以有兩個或更多個并發(fā)運(yùn)行的線程。這些線程可以來自同一軟件應(yīng)用或者來自不同軟件應(yīng)用。軟件應(yīng)用可以包括實時軟件應(yīng)用。系統(tǒng)可以包括支持多線程技術(shù)的一個或更多個處理器(例如支持超線程技術(shù)的處理器)。所述系統(tǒng)可以被稱為多線程化系統(tǒng)。
狀態(tài)圖2是根據(jù)一個實施方案圖示可以被用來管理多線程化系統(tǒng)中的資源的不同狀態(tài)的一個實施例的框圖。系統(tǒng)200可以包括應(yīng)用狀態(tài)205、第一線程狀態(tài)206、第一機(jī)器狀態(tài)207和資源管理器210。依賴于應(yīng)用狀態(tài)205、第一線程狀態(tài)206和第一機(jī)器狀態(tài)207,資源管理器210可以例如將系統(tǒng)200從第一機(jī)器狀態(tài)207轉(zhuǎn)換到第二機(jī)器狀態(tài)220,和/或?qū)⑾到y(tǒng)中的線程從第一線程狀態(tài)206轉(zhuǎn)換到第二線程狀態(tài)215。
機(jī)器狀態(tài)第一機(jī)器狀態(tài)207和第二機(jī)器狀態(tài)220是系統(tǒng)200在任何特定時刻可以處于的狀態(tài)的實施例。對于一個實施方案,機(jī)器狀態(tài)可以與系統(tǒng)200中的一個或更多個硬件組件的配置或性能等級相關(guān)聯(lián)。機(jī)器狀態(tài)可以與應(yīng)用到處理器的頻率和/或電壓的等級、亂序(out-of-order)項的數(shù)量、硬件緩沖區(qū)、存儲器或緩存的大小、算術(shù)邏輯單元(ArthmeticLogic Unit,ALU)、寄存器等相關(guān)。例如,當(dāng)應(yīng)用到處理器的頻率/電壓被降低時,系統(tǒng)200可以處于低功耗狀態(tài)(例如第一機(jī)器狀態(tài)207)。類似地,當(dāng)應(yīng)用到處理器的頻率/電壓被增加時,系統(tǒng)200可以處于正常功耗狀態(tài)(例如第二機(jī)器狀態(tài)220)??梢源嬖谠S多不同的機(jī)器狀態(tài)。
資源管理器資源管理器210可以負(fù)責(zé)確定系統(tǒng)200中當(dāng)前可用的資源的等級。資源管理器210可以增加或減少可用資源,并且因此可以將系統(tǒng)200從第一機(jī)器狀態(tài)207轉(zhuǎn)換到第二機(jī)器狀態(tài)220。例如,資源管理器210可以進(jìn)行操作以動態(tài)地調(diào)整應(yīng)用到系統(tǒng)200中的處理器的頻率和/或電壓。資源管理器210還可以改變軟件應(yīng)用所使用的緩沖區(qū)的大小。一般情況下,資源管理器210可以配置系統(tǒng)200中的硬件電路的至少一部分。硬件電路可以包括例如處理器、存儲器、緩存、芯片組等硬件組件。配置硬件電路的操作可以包括對一個或更多個硬件組件進(jìn)行斷電或通電。這可以使得資源管理器210能夠間接地影響軟件應(yīng)用的執(zhí)行。例如,增加可用資源的操作可以導(dǎo)致軟件應(yīng)用以較高的速率執(zhí)行,并且減少可用資源的操作可以導(dǎo)致軟件應(yīng)用以較低的速率執(zhí)行。
通過將線程從第一線程狀態(tài)206轉(zhuǎn)換到第二線程狀態(tài)215,資源管理器210還可以節(jié)約資源。例如,第一線程狀態(tài)206可以是準(zhǔn)備被分派(ready-to-be-dispatched)(或就緒)狀態(tài),并且第二線程狀態(tài)215可以是延遲被分派(或排隊)狀態(tài)。改變線程的線程狀態(tài)可以改變它的執(zhí)行就緒程度(readiness)(例如從就緒到排隊,或從排隊到就緒),并且可以幫助縮減系統(tǒng)200的功耗。注意,依賴于情況,資源管理器210可以改變或不改變線程的線程狀態(tài)和/或系統(tǒng)200的機(jī)器狀態(tài)。
應(yīng)用狀態(tài)在任何特定時刻,軟件應(yīng)用可以處于不同的應(yīng)用狀態(tài)205。例如,軟件應(yīng)用可以正在緩沖區(qū)中緩沖數(shù)據(jù),并且緩沖區(qū)的當(dāng)前緩沖等級可以指示緩沖區(qū)可能接近下溢狀況,這表示一個應(yīng)用狀態(tài)。隨著緩沖區(qū)的當(dāng)前緩沖等級的改變,軟件應(yīng)用可以處于不同的應(yīng)用狀態(tài)。軟件應(yīng)用所利用的緩沖區(qū)的當(dāng)前緩沖等級可以被監(jiān)控,以確定正常狀況和潛在的臨界狀況。所述臨界狀況可以包括緩沖區(qū)下溢狀況、緩沖區(qū)上溢狀況等。
依賴于當(dāng)前緩沖等級和如何使用緩沖區(qū)(例如輸入或輸出緩沖區(qū)),數(shù)據(jù)被置入緩沖區(qū)或從緩沖區(qū)中被讀的速率可以被增加或降低。這可以要求資源管理器210增加或減少系統(tǒng)200中的可用資源。例如,當(dāng)輸入緩沖區(qū)的當(dāng)前緩沖等級指示潛在的緩沖區(qū)上溢狀況時,資源管理器210可以增加輸入緩沖區(qū)的大小。作為另一個實施例,資源管理器210可以增加應(yīng)用到系統(tǒng)200中的處理器的頻率/電壓。
圖3A和圖3B根據(jù)一個實施方案圖示軟件應(yīng)用可以使用的緩沖區(qū)的兩個實施例。圖3A圖示當(dāng)軟件應(yīng)用包括涉及一個緩沖區(qū)300中的數(shù)據(jù)的操作時的情形的實施例。例如,軟件應(yīng)用可以從緩沖區(qū)300讀數(shù)據(jù)。數(shù)據(jù)可以以變化的速率被接收到緩沖區(qū)300內(nèi)(如指向緩沖區(qū)300的方向箭頭所圖示),并且軟件應(yīng)用可以對該速率具有最小控制。
對于一個實施方案,緩沖區(qū)300的緩沖等級302可以被用來確定系統(tǒng)200中對資源的要求。例如,當(dāng)緩沖等級302在預(yù)定的低緩沖標(biāo)記L0之下時,應(yīng)用到系統(tǒng)200中的處理器的頻率和電壓可以被降低,從而軟件應(yīng)用可以以較低的速率從緩沖區(qū)讀(如從緩沖區(qū)300離開的方向箭頭所示)。這可以幫助保護(hù)緩沖區(qū)300以免出現(xiàn)潛在的緩沖區(qū)下溢狀況。類似地,當(dāng)緩沖等級302在預(yù)定的高緩沖標(biāo)記H0之上時,應(yīng)用到處理器的頻率和電壓可以被增加,從而軟件應(yīng)用可以以較高的速率從緩沖區(qū)300讀數(shù)據(jù),以保護(hù)緩沖區(qū)300以免出現(xiàn)潛在的緩沖區(qū)上溢狀況。在本實施例中,陰影區(qū)域圖示緩沖區(qū)300中的數(shù)據(jù)。
圖3B圖示當(dāng)軟件應(yīng)用包括涉及兩個緩沖區(qū)305和315中的數(shù)據(jù)的操作時的情形的實施例。對于一個實施方案,緩沖區(qū)305和315中的每一個可以分別與預(yù)定的低緩沖標(biāo)記L1和L2,以及分別與預(yù)先確定的高緩沖標(biāo)記H1和H2相關(guān)聯(lián)。與緩沖區(qū)305和315中的每一個相關(guān)聯(lián)的分別是當(dāng)前緩沖等級310和320。對于一個實施方案,軟件應(yīng)用可以是例如多媒體軟件應(yīng)用的實時軟件應(yīng)用。實時軟件應(yīng)用的一個特性是周期性期限的潛在可能性,例如以30幀每秒顯示視頻數(shù)據(jù)的要求。這樣的軟件應(yīng)用通??梢跃哂幸恍┚彌_區(qū)來滿足(meet)每個期限以確保流暢的重放、再現(xiàn)、記錄等??梢宰⒁獾剑趯嵤├惺褂玫男g(shù)語“幀”可以與視頻應(yīng)用或音頻應(yīng)用相關(guān)聯(lián)。更一般地,術(shù)語“幀”可以被視為要被處理的數(shù)據(jù)段。
在當(dāng)前的實施例中,兩個緩沖區(qū)305和315可以在視頻解碼器過程中被使用。緩沖區(qū)305可以是比特流(bitstream)緩沖區(qū),并且可以以第一速率330從網(wǎng)絡(luò)或數(shù)據(jù)源接收數(shù)據(jù)(如指向緩沖區(qū)305的方向箭頭所圖示)。第一速率330可以是可變的。緩沖區(qū)305中的數(shù)據(jù)可以被視頻解碼器過程操縱,并且隨后被儲存在緩沖區(qū)315中(如指向緩沖區(qū)315的方向箭頭所圖示)。視頻解碼器過程可以以第二速率340來操作。緩沖區(qū)315可以是未壓縮幀緩沖區(qū)。數(shù)據(jù)可以隨后以第三速率350從緩沖區(qū)315中被讀取(如離開緩沖區(qū)315的方向箭頭所圖示)以被顯示。在任何給定時刻,第一速率330、第二速率340和第三速率350可以彼此互不相同。對于一個實施方案,資源管理器210可以改變系統(tǒng)200的機(jī)器狀態(tài)以及系統(tǒng)200中線程的線程狀態(tài),以改變第一速率330、第二速率340和第三速率350中的一個或更多個。這樣的改變可以動態(tài)地進(jìn)行。因為一些軟件應(yīng)用可能對流入數(shù)據(jù)速率和流出數(shù)據(jù)速率兩者都有約束,所以這樣的改變可能是必需的。
對于一個實施方案,當(dāng)對流入數(shù)據(jù)速率和流出數(shù)據(jù)速率兩者都存在約束時,結(jié)合圖3A和圖3B描述的緩沖區(qū)監(jiān)控操作的組合可以被用來管理系統(tǒng)200中的資源。參照圖3B中的圖,取決于緩沖區(qū)305和315的緩沖區(qū)填充等級(fullness level),對系統(tǒng)200中的資源的要求可以不同。對于一個實施方案,當(dāng)緩沖區(qū)305的緩沖等級310指示緩沖區(qū)305中的數(shù)據(jù)量低(在低等級標(biāo)記L1之下)或正常(在低等級標(biāo)記L1和高等級標(biāo)記H1之間),并且緩沖區(qū)315的緩沖等級320指示緩沖區(qū)315中的數(shù)據(jù)高(在高等級標(biāo)記H2之上)時,可以降低對資源的要求以降低第二速率340。這可以包括例如降低應(yīng)用到處理器的頻率和電壓。這可以使得軟件應(yīng)用能夠以較低的第二速率340將數(shù)據(jù)寫入緩沖區(qū)315,以保護(hù)緩沖區(qū)315以免出現(xiàn)潛在的緩沖區(qū)上溢狀況。
對于一個實施方案,當(dāng)緩沖區(qū)305的緩沖等級310指示緩沖區(qū)305中的數(shù)據(jù)量正常(在低等級標(biāo)記L1和高等級標(biāo)記H1之間)或高(在高等級標(biāo)記H1之上),并且緩沖區(qū)315的緩沖等級320指示緩沖區(qū)315中的數(shù)據(jù)低(在低等級標(biāo)記L2之下)時,可以增加對資源的要求以增加第二速率340。這可以包括例如增加應(yīng)用到處理器的頻率和電壓。這可以使得軟件應(yīng)用能夠以較高的第二速率340將數(shù)據(jù)寫入緩沖區(qū)315,以保護(hù)緩沖區(qū)315以免出現(xiàn)潛在的緩沖區(qū)下溢狀況。
除了監(jiān)控緩沖等級310和320之外,數(shù)據(jù)依賴性(dependency)是在管理系統(tǒng)200中的資源時可能需要考慮的因素。例如,為了在期限之前解壓縮/壓縮幀,有時可能必需先解壓縮/壓縮錨幀(anchor frame)。當(dāng)存在數(shù)據(jù)依賴性時,資源管理器210可能需要做一些與正常情況下它所做的不同的工作,以管理資源。
在其中軟件應(yīng)用是視頻播放器應(yīng)用(不同于視頻解碼器應(yīng)用)的實施例中,當(dāng)緩沖區(qū)305和315中的數(shù)據(jù)量高,并且下一幀依賴于當(dāng)前幀時,軟件應(yīng)用可能需要對顯示速率重新采樣。對顯示速率重新采樣可以包括例如以比1/30秒(用于視頻播放器應(yīng)用的正常第三速率350)高的速率來顯示幀,從而緩沖區(qū)315可以具有足夠的空間來儲存以第二速率340儲存的已解碼幀。
此外,當(dāng)下一幀不依賴于當(dāng)前幀,并且緩沖區(qū)305和315中的數(shù)據(jù)量高(分別在高等級標(biāo)記H1和H2之上)時,軟件應(yīng)用可能需要拋棄或丟棄幀。例如,從緩沖區(qū)305移除的幀可以被拋棄,而不是儲存在緩沖區(qū)315中。這可以幫助防止緩沖區(qū)305和315的潛在的緩沖區(qū)上溢。拋棄或丟棄幀的操作可以包括例如不執(zhí)行相關(guān)線程。數(shù)據(jù)的緩沖和數(shù)據(jù)的依賴性是所述應(yīng)用狀態(tài)的實施例。表1提供上面的實施例的概括,其中,在圖3B中圖示的緩沖區(qū)305和315在表1中分別被列出為比特流緩沖區(qū)和未壓縮幀緩沖區(qū)。示為“-”的表項指示該信息對要被進(jìn)行的動作來說可以是不相關(guān)的。
表1線程狀態(tài)線程狀態(tài)可以與軟件應(yīng)用中的線程如何被分派相關(guān)聯(lián)。如以上所描述,軟件應(yīng)用可以具有可以并發(fā)運(yùn)行的多個線程。對于一個實施方案,與軟件應(yīng)用相關(guān)聯(lián)的線程的分派可以被延遲以增加多個線程并發(fā)運(yùn)行的機(jī)會。延遲線程的分派可以幫助降低對資源的要求,并且因此可以允許系統(tǒng)200從例如第一機(jī)器狀態(tài)207轉(zhuǎn)換到第二機(jī)器狀態(tài)220。例如,當(dāng)沒有其他線程正在運(yùn)行時,線程可以從準(zhǔn)備被分派(或就緒)狀態(tài)(例如第一線程狀態(tài)206)被轉(zhuǎn)換到延遲被分派(或排隊)狀態(tài)(例如第二線程狀態(tài)215)。線程可以被排隊或延遲,直到另一個線程就緒,從而兩個線程可以一起被分派??梢宰⒁獾?,一起被分派的線程可以與同一軟件應(yīng)用相關(guān)聯(lián),或者它們可以與不同軟件應(yīng)用相關(guān)聯(lián)。
典型地,為了最大的吞吐量,就緒線程可以立刻被分派。這可以允許線程盡可能快地結(jié)束。一般情況下,對于吞吐量導(dǎo)向的軟件應(yīng)用,這工作得很好。分派線程時的任何延遲可以被視為可能影響軟件應(yīng)用的性能。當(dāng)一個線程結(jié)束它的工作時,它可以將數(shù)據(jù)寫入緩沖區(qū)以供下一個線程繼續(xù)工作。
圖4A圖示兩個示例性線程401和402。每個線程可以在不同時刻被重復(fù)地分派。在本實施例中,每次線程被分派,它被稱為一個活動。例如,活動405和410可以與在不同時刻被分派的同一線程401相關(guān)聯(lián)。類似地,活動415和420可以與同一線程402相關(guān)聯(lián)。在本實施例中,第二線程402可以依賴于第一線程401,并且只可以在第一線程401完成后立刻被分派。例如,活動415可以在活動405完成后被分派。類似地,活動420可以在活動410完成后被分派。在實時視頻軟件應(yīng)用中,可以存在一個捕捉視頻的線程、一個編碼比特流的線程以及另一個發(fā)送出比特流的線程。這些線程可以通過視頻幀緩沖區(qū)(例如,緩沖區(qū)315)和比特流緩沖區(qū)(例如,緩沖區(qū)305)而一直自然地同步。正常情況下,當(dāng)數(shù)據(jù)就緒時,下一個線程將立刻對數(shù)據(jù)進(jìn)行工作。
線程被分派(作為一個活動)的時刻和同一線程被分派(作為另一個活動)的下一時刻之間的時段可以被稱為循環(huán)周期(cycle period)。依賴于軟件應(yīng)用,循環(huán)周期可大可小。當(dāng)循環(huán)周期小時,可能存在一些與另一個活動的執(zhí)行重疊。參照圖4A,兩個活動405和410來自同一線程401。在本實施例中,活動405和410之間的循環(huán)周期400相比于活動405和活動415的組合執(zhí)行時間來說是小的。因此,在活動410和活動415之間存在執(zhí)行重疊?;顒?15在它準(zhǔn)備被分派之前可能需要等待活動405完成。這可以是因為活動415的執(zhí)行依賴于活動405的完成和輸出。然而,活動410可以不依賴于活動415的完成,并且因此可以在活動415完成前被分派。注意,這可以導(dǎo)致活動410和活動415之間的執(zhí)行重疊,如重疊時段490所指示。
活動415可以是唯一正在運(yùn)行的活動,直到活動410被分派的時刻。這可以意味著,當(dāng)系統(tǒng)200支持多個邏輯處理器時,只有一個邏輯處理器可以忙于執(zhí)行活動415,而另一個邏輯處理器可以是空閑的或暫停的,直到活動410被分派。在活動410被分派后,在時段490期間,所述兩個邏輯處理器可以忙于并發(fā)地執(zhí)行兩個活動410和415?;顒?15是唯一正在運(yùn)行的活動的時段可以被稱為軟件應(yīng)用的單活動區(qū)段(section),并且活動415和活動410并發(fā)地運(yùn)行的時段可以被稱為軟件應(yīng)用的多線程化區(qū)段。因為存在執(zhí)行重疊,所以軟件應(yīng)用的完成可以比使用一次運(yùn)行一個線程的正常處理器來運(yùn)行軟件應(yīng)用更快。
當(dāng)循環(huán)周期大時,在各活動間可能不存在任何執(zhí)行重疊。例如,如圖4B所圖示,線程403可以包括活動455和460,并且線程404可以包括活動465。注意到在本實施例中,活動455和460之間的循環(huán)周期450大于活動465和455的總執(zhí)行時間。因此,在活動460和465之間可以沒有執(zhí)行重疊。在本實施例中,在活動465準(zhǔn)備被分派之前,它可能需要等待活動455的完成,但活動460可以不需要等待活動465的完成而被分派。當(dāng)在各活動間不存在執(zhí)行重疊時,多線程化系統(tǒng)200可以像正常的單線程化系統(tǒng)一樣運(yùn)轉(zhuǎn),并且活動可以被視為串行地運(yùn)行。
圖5是根據(jù)一個實施方案圖示在使用延遲分派方案的多線程化系統(tǒng)中被分派的線程的實施例的框圖。對于一個實施方案,資源管理器210可以以協(xié)調(diào)的方式來分派活動,而不是當(dāng)活動準(zhǔn)備被分派時立刻分派它們。例如,資源管理器210可以協(xié)調(diào)多個活動(或線程)的分派以增加執(zhí)行重疊。
圖5中的附示兩個線程501和502的實施例。線程501包括活動505和510。線程502包括活動515和520。在本實施例中,當(dāng)活動505完成其執(zhí)行時,活動515可以處于準(zhǔn)備被分派狀態(tài)。所述準(zhǔn)備被分派狀態(tài)可以被稱為第一線程狀態(tài)206,如圖2中實施例所描述。然而,資源管理器可以延遲活動515的分派直到活動510準(zhǔn)備被分派,而不是在活動505完成后立刻分派活動515。活動515的延遲狀態(tài)可以被稱為第二線程狀態(tài)215,如圖2中實施例所描述。通過延遲,活動510和515可以一起被分派,從而它們可以并發(fā)地運(yùn)行。這被圖示為重疊時段525。
在一些情況下,在活動515可以被分派之前,活動515可能必須被延遲多于一個循環(huán)周期500,以便執(zhí)行重疊可以發(fā)生。可替換地,如果有另一個活動等待被分派,則活動515的分派可以不需要被延遲。該另一個活動的分派可能之前已經(jīng)被延遲。在這種情況下,兩個活動可以一起被分派。
活動510和515中的一個或兩個正在運(yùn)行的時段可以被稱為非暫停時段530。在非暫停時段530期間,系統(tǒng)200可以保持繁忙并且消耗資源。注意非暫停時段530還包括重疊時段525。通過延遲活動515的分派,引入了沒有執(zhí)行的時段。該時段可以被稱為暫停或空閑時段535。對于一個實施方案,在暫停時段535期間,系統(tǒng)200可以沒那么繁忙,并且因此可以需要較少的資源。例如,當(dāng)使用支持超線程技術(shù)的處理器時,在暫停時段期間對資源的要求可以較低,因為兩個邏輯處理器都可以空閑。當(dāng)邏輯處理器中的一個或兩個繁忙時,對資源的要求可以是大致相似的。因此,將一個邏輯處理器的繁忙周期與另一個邏輯處理器的繁忙周期重疊以節(jié)約資源是有利的。
對于一個實施方案,可以實現(xiàn)超時方案來避免過度地延遲線程。例如,超時方案可以包括設(shè)置預(yù)定的延遲量,活動在被分派之前可以在隊列中被延遲所述預(yù)定的延遲量。對于另一個實施方案,活動可以具有不同的優(yōu)先級,并且每個優(yōu)先級可以與被分派前的不同延遲時間相關(guān)聯(lián)??梢宰⒁獾?,可能存在這樣的情況,即使可能不存在正在運(yùn)行的任何其他活動,活動可能需要不經(jīng)延遲而被分派。例如,活動可以被標(biāo)志為“關(guān)鍵的(critical)”,并且每當(dāng)該活動就緒時,它的分派要立刻進(jìn)行。
應(yīng)用狀態(tài)、線程狀態(tài)和機(jī)器狀態(tài)對于一個實施方案,資源管理器210可以評估軟件應(yīng)用的應(yīng)用狀態(tài)和線程的線程狀態(tài),以確定是否將系統(tǒng)200從一個機(jī)器狀態(tài)轉(zhuǎn)換到另一機(jī)器狀態(tài)。在結(jié)合圖3B所描述的實施例中,線程可以包括對源自緩沖區(qū)305的幀進(jìn)行解碼的活動。對幀進(jìn)行解碼的操作可以直接或間接地影響緩沖區(qū)305中的數(shù)據(jù)量。當(dāng)緩沖區(qū)305的緩沖等級310指示緩沖區(qū)305中的數(shù)據(jù)量低(在低等級標(biāo)記L1之下),并且緩沖區(qū)315的緩沖等級320指示緩沖區(qū)315中的數(shù)據(jù)正常(在低等級標(biāo)記L2和高等級標(biāo)記H2之間)時,資源管理器210可以在確定是否分派當(dāng)前活動前評估系統(tǒng)200中的其他活動。對于一個實施方案,當(dāng)存在另一個正在運(yùn)行的活動,并且該活動與當(dāng)前活動相關(guān)(例如對當(dāng)前幀之前的幀進(jìn)行解碼)時,資源管理器210可以通過縮減可用資源(例如降低應(yīng)用到處理器的頻率/電壓)來改變系統(tǒng)200的機(jī)器狀態(tài)。這可以減慢正在運(yùn)行的活動的執(zhí)行,并且可以降低耗盡或下溢出緩沖區(qū)305的潛在可能性,因為緩沖區(qū)305中的數(shù)據(jù)量已經(jīng)是低的。
對于另一個實施方案,當(dāng)存在另一個正在運(yùn)行的活動并且該活動與當(dāng)前活動不相關(guān)(例如正在運(yùn)行的活動沒有正在對當(dāng)前幀之前的幀進(jìn)行解碼)時,當(dāng)前活動的分派可以被延遲。這可以包括例如將當(dāng)前活動在隊列中放置一個或更多個循環(huán)周期。通過延遲當(dāng)前活動的分派,耗盡緩沖區(qū)305的潛在可能性可以被降低。
一般地,延遲一個或更多個活動的集合的分派以及縮減可用資源可以減少潛在的緩沖區(qū)下溢或上溢狀況。延遲一個或更多個活動的集合的分派可以允許更有效地利用同時多線程化處理器上的處理器資源。表2提供上面實施例的概括。
緩沖區(qū)305→比特流緩沖等級→低緩沖區(qū)315→未壓縮幀緩沖區(qū)→正常
表2對于一個實施方案,當(dāng)緩沖等級310指示緩沖區(qū)305中的數(shù)據(jù)量正常(在低等級標(biāo)記L1和高等級標(biāo)記H1之間),并且緩沖等級320指示緩沖區(qū)315中的數(shù)據(jù)量正常(在低等級標(biāo)記L2和高等級標(biāo)記H2之間)時,資源管理器210可以在分派當(dāng)前活動之前評估系統(tǒng)200中的其他活動。當(dāng)存在另一個正在運(yùn)行的活動時,或者當(dāng)存在另一個準(zhǔn)備被分派的活動時,當(dāng)前活動被資源管理器210分派,從而可以存在執(zhí)行重疊。然而,當(dāng)不存在其他正在運(yùn)行的活動時,或者當(dāng)不存在其他準(zhǔn)備被分派的活動時,資源管理器210可以延遲當(dāng)前活動的分派。在這種情況下,延遲可以不依賴于緩沖區(qū)305和315中的數(shù)據(jù)的當(dāng)前緩沖等級(因為它們兩個都處于正常等級)。然而,延遲可以增加執(zhí)行重疊的潛在可能性,這可以幫助降低對資源的要求。表3提供上面的實施例的概括。
緩沖區(qū)305→比特流緩沖等級→正常緩沖區(qū)315→未壓縮幀緩沖等級→正常
表3對于一個實施方案,當(dāng)緩沖等級310指示緩沖區(qū)305中的數(shù)據(jù)量高(在高等級標(biāo)記H1之上)并且緩沖區(qū)315的當(dāng)前緩沖等級320指示緩沖區(qū)315中的數(shù)據(jù)正常(在低等級標(biāo)記L2和高等級標(biāo)記H2之間)時,資源管理器210可以在分派當(dāng)前活動之前評估系統(tǒng)200中的其他活動。當(dāng)存在另一個正在運(yùn)行的活動時,或者當(dāng)存在另一個準(zhǔn)備被分派的活動時,當(dāng)前活動可以被分派,從而存在執(zhí)行重疊。然而,當(dāng)不存在其他正在運(yùn)行的活動時,或者當(dāng)不存在其他準(zhǔn)備被分派的活動時,資源管理器210可以分派當(dāng)前活動,以盡可能快地將數(shù)據(jù)移出緩沖區(qū)305。這是因為緩沖區(qū)305中的數(shù)據(jù)量處于高等級,并且在分派當(dāng)前活動時任何不必要的延遲可以潛在地導(dǎo)致緩沖區(qū)溢出狀況發(fā)生在緩沖區(qū)305上。對于一個實施方案,除分派當(dāng)前活動之外,資源管理器210還可以增加可用資源(例如增加應(yīng)用到處理器的頻率/電壓),以增加數(shù)據(jù)從緩沖區(qū)305中被讀取或處理的速率。這將系統(tǒng)200從一個機(jī)器狀態(tài)轉(zhuǎn)換到另一個機(jī)器狀態(tài),并且可以幫助避免緩沖區(qū)305的潛在的緩沖區(qū)上溢狀況。表4提供上面的實施例的概括。
緩沖區(qū)305→比特流緩沖等級→高緩沖區(qū)315→未壓縮幀緩沖區(qū)→正常
表4對于另一個實施方案,應(yīng)用狀態(tài)和/或線程狀態(tài)可以被靈活地創(chuàng)建,以用于多線程化系統(tǒng)中的資源管理。例如,應(yīng)用可以被細(xì)分為線程形式的子任務(wù)。即使應(yīng)用不是多線程的,這也可以進(jìn)行??梢詾榫€程建立數(shù)據(jù)緩沖區(qū),并且數(shù)據(jù)緩沖區(qū)可以被用于暫時的應(yīng)用數(shù)據(jù)儲存。此外,可以建立緩沖區(qū)指示符等級來定義緩沖區(qū)上溢和/或下溢狀況。隨后可以通過相對上溢或下溢指示符來確定當(dāng)前緩沖區(qū)填充等級來監(jiān)控緩沖區(qū)的狀態(tài)。通過監(jiān)控緩沖區(qū)的狀態(tài)和/或線程的狀態(tài),可以調(diào)節(jié)多線程化系統(tǒng)中的資源。
圖6是根據(jù)一個實施方案圖示視頻解碼過程的實施例的圖。在框605,幀被接收并且準(zhǔn)備被解碼。該幀可以從緩沖區(qū)(例如圖3B中圖示的緩沖區(qū)305)被接收。在框610,進(jìn)行測試以確定在未壓縮幀緩沖區(qū)(例如圖3B中的緩沖區(qū)315)中是否有足夠的未壓縮幀。當(dāng)緩沖區(qū)315中沒有足夠的數(shù)據(jù)時(例如當(dāng)前緩沖等級320在低等級標(biāo)記L2之下),過程可以流向框690,在框690中適當(dāng)?shù)慕獯a活動被分派來對該幀進(jìn)行解碼。
當(dāng)(在緩沖區(qū)315中)存在足夠的未壓縮幀時,過程從框610流向框615,在框615中進(jìn)行測試以確定下一幀是否依賴于當(dāng)前幀。當(dāng)存在依賴性時,過程從框615流向框640,在框640中進(jìn)行測試以確定是否存在另一個正在運(yùn)行的活動或線程。當(dāng)存在另一個正在運(yùn)行的活動時,當(dāng)前活動被分派來允許執(zhí)行重疊。
當(dāng)不存在其他正在運(yùn)行的活動時,過程從框640流向框645,在框645中進(jìn)行測試以確定是否存在另一個活動準(zhǔn)備被分派。該活動可以是之前已經(jīng)被延遲的活動。如框660中所示,當(dāng)存在準(zhǔn)備被分派的活動時,當(dāng)前活動和準(zhǔn)備被分派的活動可以一起被分派。
當(dāng)不存在其他準(zhǔn)備被分派的活動時,從框645使當(dāng)前活動被延遲分派。這可以包括例如將當(dāng)前活動置入隊列中,如框650中所示。當(dāng)前活動可以在隊列中等待,直到另一個活動準(zhǔn)備被分派。對于一個實施方案,可以使用預(yù)定的時間段來限制活動在隊列中等待的時間。對于另一個實施方案,如框655中所示,進(jìn)行測試來確定當(dāng)前活動是否是不能被延遲的,并且如果當(dāng)前活動不能被延遲,當(dāng)前活動被分派,如框690中所示。
當(dāng)下一幀不依賴于當(dāng)前幀時,過程從框615流向框620,在框620中進(jìn)行測試來確定是否存在準(zhǔn)備被解碼的另一幀。當(dāng)存在準(zhǔn)備被解碼的另一幀時,當(dāng)前幀和所述另一幀可以一起被解碼(例如兩個活動一起被分派)。當(dāng)沒有其他幀要被解碼時,過程從框620流向框650,在框650中排隊操作可以發(fā)生,如以上所描述。
這些各種方法的操作可以被計算機(jī)系統(tǒng)中的處理器實現(xiàn),所述處理器執(zhí)行儲存在可以被視為機(jī)器可讀儲存介質(zhì)的存儲器中的計算機(jī)程序指令序列。存儲器可以是隨機(jī)訪問存儲器、只讀存儲器、例如大容量儲存設(shè)備的持久性儲存存儲器,或者這些設(shè)備的任何組合。指令序列的執(zhí)行可以導(dǎo)致處理器進(jìn)行例如圖6的實施例中的那些操作。
指令可以通過網(wǎng)絡(luò)連接從儲存設(shè)備或者從一個或更多個其他計算機(jī)系統(tǒng)(例如服務(wù)器計算機(jī)系統(tǒng))被加載(load)進(jìn)計算機(jī)系統(tǒng)的存儲器。指令可以被并發(fā)地儲存在幾個儲存設(shè)備(例如DRAM和硬盤,例如虛擬存儲器)中。因此,這些指令的執(zhí)行可以直接由處理器進(jìn)行。在其他情況下,指令可以不由處理器直接進(jìn)行,或者對處理器來說,它們可以不是直接可執(zhí)行的。在這些情形下,通過導(dǎo)致處理器執(zhí)行解釋指令的解釋器,或通過導(dǎo)致處理器執(zhí)行將接收到的指令轉(zhuǎn)變成可以直接被處理器執(zhí)行的指令的編譯器,所述執(zhí)行可以被執(zhí)行。在其他實施方案中,可以使用硬連線電路來代替指令或與指令組合來實現(xiàn)本發(fā)明。例如,資源管理器可以被實現(xiàn)為包括進(jìn)行上面描述的一個或更多個操作(例如監(jiān)控應(yīng)用狀態(tài)、監(jiān)控線程狀態(tài)、調(diào)整資源等)的邏輯。因此,本發(fā)明不限于硬件電路和軟件的任何具體組合,或者不限于被計算機(jī)系統(tǒng)執(zhí)行的指令的任何具體的源。
已經(jīng)公開了用于管理系統(tǒng)中的資源的方法和系統(tǒng)。通過監(jiān)控數(shù)據(jù)的緩沖和協(xié)調(diào)軟件應(yīng)用的線程的分派,對資源的要求可以被減少或增加。這可以幫助增加處理器空閑時間。
雖然已經(jīng)參照具體的示例性實施方案描述了本發(fā)明,但是,顯然可以對這些實施方案可以做出各種修改和改動,而不背離如權(quán)利要求書中所闡述的本發(fā)明的更寬的精神和范圍。例如,雖然本說明書涉及線程和活動的分派,但是被描述的技術(shù)還可以被用來調(diào)度例如進(jìn)程、任務(wù)、進(jìn)程段、任務(wù)段等的其他實體。并且,所述技術(shù)還可以與其他多線程化處理器一起使用,并且所述技術(shù)不限于支持超線程技術(shù)的處理器。例如,處理器可以是具有雙核,以及能夠并發(fā)地執(zhí)行多個線程的處理器。因此,本說明書和權(quán)利要求書要被視為圖示說明性而非限制性的。
權(quán)利要求
1.一種方法,包括監(jiān)控在系統(tǒng)中運(yùn)行的應(yīng)用的狀態(tài),其中所述監(jiān)控所述應(yīng)用的所述狀態(tài)的操作包括監(jiān)控與所述應(yīng)用相關(guān)聯(lián)的一個或更多個緩沖區(qū);控制所述系統(tǒng)中的一個或更多個線程的分派,并且其中所述系統(tǒng)中的至少一個線程與所述應(yīng)用相關(guān)聯(lián);以及至少基于所述應(yīng)用的所述狀態(tài)和所述系統(tǒng)中的所述一個或更多個線程的所述狀態(tài),管理所述系統(tǒng)中的資源。
2.如權(quán)利要求1所述的方法,其中線程包括一個或更多個活動,并且其中所述控制所述系統(tǒng)中的所述一個或更多個線程的所述分派的操作包括評價所述一個或更多個活動的執(zhí)行就緒程度。
3.如權(quán)利要求2所述的方法,其中所述控制所述系統(tǒng)中的所述一個或更多個線程的所述分派的操作包括使準(zhǔn)備被分派的活動延遲被分派。
4.如權(quán)利要求3所述的方法,其中,使第一活動延遲被分派,以等待第二活動就緒,從而所述第一和第二活動兩者可以一起被分派,并且其中所述第一和第二活動來自一個或更多個應(yīng)用。
5.如權(quán)利要求1所述的方法,還包括監(jiān)控所述系統(tǒng)的機(jī)器狀態(tài),其中所述監(jiān)控所述機(jī)器狀態(tài)的操作包括確定所述系統(tǒng)中可用的資源,以及基于所述應(yīng)用的所述狀態(tài)和所述系統(tǒng)中的所述一個或更多個線程的所述狀態(tài),增加或減少所述系統(tǒng)中可用的所述資源。
6.如權(quán)利要求5所述的方法,其中所述資源包括可配置硬件組件。
7.如權(quán)利要求6所述的方法,其中所述可配置硬件組件包括所述系統(tǒng)中的一個或更多個處理器、硬件緩沖區(qū)、存儲器、緩存、算術(shù)邏輯單元(ALU)和寄存器。
8.如權(quán)利要求7所述的方法,其中所述增加或減少所述系統(tǒng)中可用的所述資源的操作包括配置應(yīng)用到所述系統(tǒng)中的至少所述一個或更多個處理器的頻率。
9.如權(quán)利要求8所述的方法,其中所述增加或減少所述系統(tǒng)中可用的所述資源的操作包括配置應(yīng)用到所述系統(tǒng)中的至少所述一個或更多個處理器的電壓。
10.如權(quán)利要求7所述的方法,其中所述增加或減少所述系統(tǒng)中的所述資源的操作包括對所述系統(tǒng)中的電路的至少部分通電或者斷電。
11.如權(quán)利要求1所述的方法,其中所述監(jiān)控與所述應(yīng)用相關(guān)聯(lián)的所述一個或更多個緩沖區(qū)的操作包括監(jiān)控所述一個或更多個緩沖區(qū)的緩沖區(qū)填充等級。
12.如權(quán)利要求11所述的方法,其中所述監(jiān)控所述緩沖區(qū)填充等級的操作包括,對于與所述應(yīng)用相關(guān)聯(lián)的每個緩沖區(qū),將緩沖等級與預(yù)定的緩沖區(qū)填充等級比較,其中所述預(yù)定的緩沖區(qū)填充等級包括高等級標(biāo)記和低等級標(biāo)記。
13.如權(quán)利要求12所述的方法,其中所述比較操作確定緩沖區(qū)上溢和緩沖區(qū)下溢狀況。
14.一種包括可執(zhí)行指令的計算機(jī)可讀介質(zhì),當(dāng)所述可執(zhí)行指令在處理系統(tǒng)中被執(zhí)行時,導(dǎo)致所述處理系統(tǒng)進(jìn)行方法,所述方法包括監(jiān)控在系統(tǒng)中運(yùn)行的應(yīng)用的狀態(tài),其中所述監(jiān)控所述應(yīng)用的所述狀態(tài)的操作包括監(jiān)控與所述應(yīng)用相關(guān)聯(lián)的一個或更多個緩沖區(qū)的緩沖區(qū)填充等級;控制所述系統(tǒng)中的一個或更多個線程的分派,并且其中所述系統(tǒng)中的至少一個線程與所述應(yīng)用相關(guān)聯(lián);以及至少基于所述應(yīng)用的所述狀態(tài)和所述系統(tǒng)中的所述一個或更多個線程的所述狀態(tài),管理所述系統(tǒng)中的資源。
15.如權(quán)利要求14所述的計算機(jī)可讀介質(zhì),其中所述控制所述系統(tǒng)中的所述一個或更多個線程的所述分派的操作包括使準(zhǔn)備被分派的線程延遲被分派。
16.如權(quán)利要求14所述的計算機(jī)可讀介質(zhì),還包括監(jiān)控所述系統(tǒng)的機(jī)器狀態(tài),其中所述監(jiān)控所述機(jī)器狀態(tài)的操作包括確定所述系統(tǒng)中可用的資源,以及基于所述應(yīng)用的所述狀態(tài)和所述系統(tǒng)中的所述一個或更多個線程的所述狀態(tài),增加或減少所述系統(tǒng)中可用的所述資源。
17.如權(quán)利要求16所述的計算機(jī)可讀介質(zhì),其中所述資源包括可配置硬件組件。
18.如權(quán)利要求16所述的計算機(jī)可讀介質(zhì),其中所述增加或減少所述系統(tǒng)中可用的所述資源的操作包括配置應(yīng)用到所述系統(tǒng)中的至少所述一個或更多個處理器的頻率和/或電壓。
19.如權(quán)利要求14所述的計算機(jī)可讀介質(zhì),其中所述監(jiān)控所述緩沖區(qū)填充等級的操作包括,對于與所述應(yīng)用相關(guān)聯(lián)的每個緩沖區(qū),將緩沖等級與預(yù)定的緩沖區(qū)填充等級比較,其中所述預(yù)定的緩沖區(qū)填充等級包括高等級標(biāo)記和低等級標(biāo)記。
20.一種方法,包括通過監(jiān)控在系統(tǒng)中運(yùn)行的應(yīng)用所使用的一個或更多個緩沖區(qū)的緩沖區(qū)填充等級,并且通過協(xié)調(diào)所述系統(tǒng)中的線程的分派,來管理所述系統(tǒng)中的資源。
21.如權(quán)利要求20所述的方法,其中所述控制所述一個或更多個緩沖區(qū)的所述緩沖區(qū)填充等級的操作包括監(jiān)控所述一個或更多個緩沖區(qū)中每一個的緩沖等級來確定緩沖區(qū)上溢或下溢狀況。
22.如權(quán)利要求20所述的方法,其中所述協(xié)調(diào)所述系統(tǒng)中的所述線程的所述分派的操作被進(jìn)行以增加線程執(zhí)行中的重疊。
23.如權(quán)利要求22所述的方法,其中增加所述線程執(zhí)行中的所述重疊的操作包括將線程從就緒狀態(tài)改變到排隊狀態(tài)。
24.如權(quán)利要求23所述的方法,其中所述線程保持在所述排隊狀態(tài),直到存在另一個線程處于所述就緒狀態(tài),從而兩個線程可以一起被分派。
25.如權(quán)利要求20所述的方法,其中所述協(xié)調(diào)所述系統(tǒng)中的所述線程的分派的操作包括確定線程依賴性,并且其中當(dāng)在所述應(yīng)用的當(dāng)前線程和下一線程之間存在依賴性,并且全部所述緩沖區(qū)的所述緩沖區(qū)填充等級指示潛在的上溢狀況時,所述系統(tǒng)中的所述資源被增加。
26.如權(quán)利要求20所述的方法,其中當(dāng)全部所述緩沖區(qū)的所述緩沖區(qū)填充等級到達(dá)臨界階段時,所述系統(tǒng)中的所述資源被調(diào)整。
27.一種包括可執(zhí)行指令的計算機(jī)可讀介質(zhì),當(dāng)所述可執(zhí)行指令在處理系統(tǒng)中被執(zhí)行時,導(dǎo)致所述處理系統(tǒng)進(jìn)行方法,所述方法包括通過監(jiān)控在系統(tǒng)中運(yùn)行的應(yīng)用所使用的一個或更多個緩沖區(qū)的緩沖區(qū)填充等級,并且通過協(xié)調(diào)在所述系統(tǒng)中的線程的分派,來管理所述系統(tǒng)中的資源。
28.如權(quán)利要求27所述的計算機(jī)可讀介質(zhì),其中所述監(jiān)控所述緩沖區(qū)填充等級的操作包括監(jiān)控緩沖區(qū)上溢或下溢狀況,并且相應(yīng)地增加或減少所述系統(tǒng)中的所述資源以避免所述緩沖區(qū)上溢或下溢狀況。
29.如權(quán)利要求27所述的計算機(jī)可讀介質(zhì),其中所述協(xié)調(diào)所述系統(tǒng)中的所述線程的所述分派的操作包括將線程從就緒狀態(tài)改變到排隊狀態(tài),以及分派線程,以增加執(zhí)行重疊。
30.一種方法,包括監(jiān)控系統(tǒng)中的一個或更多個線程的狀態(tài),其中所述監(jiān)控所述一個或更多個線程的所述狀態(tài)的操作包括監(jiān)控所述一個或更多個線程的分派就緒程度;以及至少基于所述系統(tǒng)中的所述一個或更多個線程的所述狀態(tài),管理所述系統(tǒng)中的資源,其中所述資源包括所述系統(tǒng)中的可配置硬件組件。
31.如權(quán)利要求30所述的方法,其中所述管理所述系統(tǒng)中的所述資源的操作包括配置應(yīng)用到所述系統(tǒng)中的至少一個或更多個處理器的頻率和/或電壓。
32.如權(quán)利要求30所述的方法,其中所述管理所述系統(tǒng)中的所述資源的操作還包括對所述系統(tǒng)中的電路的部分通電或者斷電。
33.如權(quán)利要求30所述的方法,還包括管理在所述系統(tǒng)中運(yùn)行的應(yīng)用的狀態(tài),其中所述應(yīng)用的所述狀態(tài)包括所述應(yīng)用所使用的一個或更多個緩沖區(qū)的緩沖區(qū)填充等級,并且其中基于所述應(yīng)用的所述狀態(tài),所述系統(tǒng)中的所述資源被增加或減少。
34.一種方法,包括監(jiān)控在系統(tǒng)中運(yùn)行的應(yīng)用的狀態(tài),其中所述監(jiān)控所述應(yīng)用的所述狀態(tài)的操作包括監(jiān)控與所述應(yīng)用相關(guān)聯(lián)的一個或更多個緩沖區(qū)的緩沖區(qū)填充等級;以及基于所述應(yīng)用的所述狀態(tài),管理所述系統(tǒng)中的資源。
35.如權(quán)利要求34所述的方法,還包括管理所述系統(tǒng)中的一個或更多個線程的執(zhí)行就緒程度,并且其中所述管理所述資源的操作還基于與所述應(yīng)用相關(guān)聯(lián)的至少一個線程的所述執(zhí)行就緒程度。
36.如權(quán)利要求35所述的方法,其中所述執(zhí)行就緒程度包括準(zhǔn)備被分派狀態(tài)和延遲被分派狀態(tài)。
37.如權(quán)利要求36所述的方法,其中所述管理所述系統(tǒng)中的所述一個或更多個線程的所述執(zhí)行就緒程度的操作包括將線程從準(zhǔn)備被分派狀態(tài)置入延遲被分派狀態(tài)。
38.如權(quán)利要求37所述的方法,其中所述監(jiān)控所述一個或更多個緩沖區(qū)的所述緩沖區(qū)填充等級的操作包括確定潛在的緩沖區(qū)下溢或上溢狀況;以及配置所述系統(tǒng)中的一個或更多個組件來改變所述系統(tǒng)中可用的資源,以避免潛在的緩沖區(qū)下溢或上溢狀況。
39.一種系統(tǒng),包括存儲器,所述存儲器儲存數(shù)據(jù)和指令;在總線上被耦合到所述存儲器的處理器,所述處理器可操作以執(zhí)行指令,所述處理器包括總線單元,所述總線單元從所述存儲器接收指令序列;執(zhí)行單元,所述執(zhí)行單元被耦合到所述總線單元,所述執(zhí)行單元執(zhí)行所述指令序列,所述指令序列導(dǎo)致所述執(zhí)行單元監(jiān)控在系統(tǒng)中運(yùn)行的應(yīng)用的狀態(tài),其中所述監(jiān)控所述應(yīng)用的所述狀態(tài)的操作包括監(jiān)控與所述應(yīng)用相關(guān)聯(lián)的一個或更多個緩沖區(qū)的緩沖區(qū)填充等級;控制所述系統(tǒng)中的一個或更多個線程的分派,并且其中所述系統(tǒng)中的至少一個線程與所述應(yīng)用相關(guān)聯(lián);以及至少基于所述應(yīng)用的所述狀態(tài)和所述系統(tǒng)中的所述一個或更多個線程的所述狀態(tài),管理所述系統(tǒng)中的資源。
40.如權(quán)利要求39所述的系統(tǒng),其中所述控制所述系統(tǒng)中的所述一個或更多個線程的所述分派的操作包括使準(zhǔn)備被分派的線程延遲被分派。
41.如權(quán)利要求39所述的系統(tǒng),還包括指令,所述指令導(dǎo)致所述執(zhí)行單元監(jiān)控所述系統(tǒng)的機(jī)器狀態(tài),其中所述監(jiān)控所述機(jī)器狀態(tài)的操作包括確定所述系統(tǒng)中可用的資源,以及基于所述應(yīng)用的所述狀態(tài)和所述系統(tǒng)中的所述一個或更多個線程的所述狀態(tài),增加或減少所述系統(tǒng)中可用的資源。
42.如權(quán)利要求41所述的系統(tǒng),其中所述資源包括可配置硬件組件。
43.如權(quán)利要求41所述的系統(tǒng),其中所述增加或減少所述系統(tǒng)中可用的所述資源的操作包括配置應(yīng)用到所述系統(tǒng)中的至少所述一個或更多個處理器的頻率和電壓。
44.一種系統(tǒng),包括多線程化處理器;以及資源管理器,所述資源管理器被耦合到所述多線程化處理器,所述資源管理器監(jiān)控在所述系統(tǒng)中運(yùn)行的應(yīng)用的狀態(tài),所述應(yīng)用的所述狀態(tài)包括所述應(yīng)用所使用的一個或更多個緩沖區(qū)的緩沖區(qū)填充等級,所述資源管理器還針對執(zhí)行就緒程度監(jiān)控所述系統(tǒng)中的一個或更多個線程的狀態(tài),其中依賴于所述應(yīng)用的狀態(tài)和/或所述系統(tǒng)中的所述一個或更多個線程的所述狀態(tài),所述資源管理器增加或減少所述系統(tǒng)中可用的資源。
45.如權(quán)利要求44所述的系統(tǒng),其中所述資源管理器將線程的執(zhí)行就緒程度從就緒狀態(tài)改變到排隊狀態(tài),以增加與另一個線程執(zhí)行的后續(xù)線程執(zhí)行重疊。
46.如權(quán)利要求45所述的系統(tǒng),其中當(dāng)不存在線程執(zhí)行時,所述資源管理器將線程的所述執(zhí)行就緒程度從就緒狀態(tài)改變到排隊狀態(tài),以增加后續(xù)的系統(tǒng)空閑時間。
47.如權(quán)利要求46所述的系統(tǒng),其中所述資源管理器增加或減少所述系統(tǒng)中可用的所述資源,以避免緩沖區(qū)下溢或上溢狀況發(fā)生在所述一個或更多個緩沖區(qū)上。
48.一種裝置,包括監(jiān)控在系統(tǒng)中運(yùn)行的應(yīng)用的狀態(tài)的邏輯,所述應(yīng)用的所述狀態(tài)包括所述應(yīng)用所使用的一個或更多個緩沖區(qū)的緩沖區(qū)填充等級;針對執(zhí)行就緒程度監(jiān)控所述系統(tǒng)中的一個或更多個線程的狀態(tài)的邏輯;以及依賴于所述應(yīng)用的所述狀態(tài)和/或所述系統(tǒng)中的所述一個或更多個線程的所述狀態(tài)來調(diào)整所述系統(tǒng)中可用的資源的邏輯。
49.如權(quán)利要求48所述的裝置,還包括當(dāng)確定不存在其他線程正在運(yùn)行或準(zhǔn)備被分派時,將線程的所述執(zhí)行就緒程度從就緒狀態(tài)改變到排隊狀態(tài)的邏輯。
50.如權(quán)利要求48所述的裝置,其中所述調(diào)整所述系統(tǒng)中可用的資源的邏輯包括確定一個或更多個緩沖區(qū)的所述緩沖區(qū)填充等級是否處于臨界階段的邏輯。
全文摘要
計算機(jī)系統(tǒng)中的資源管理可以縮減系統(tǒng)的能耗。這可以通過監(jiān)控關(guān)于軟件應(yīng)用的應(yīng)用狀態(tài)和/或監(jiān)控多線程化系統(tǒng)中的線程狀態(tài),并且隨后在系統(tǒng)中做出資源調(diào)整來完成。應(yīng)用狀態(tài)的監(jiān)控可以通過監(jiān)控為軟件應(yīng)用所使用的暫時數(shù)據(jù)建立的數(shù)據(jù)緩沖區(qū)來進(jìn)行。依賴于緩沖等級,資源可以被增加或減少。資源的調(diào)整可以以改變系統(tǒng)中的處理器的電壓和頻率的形式和其他方式來進(jìn)行。減少資源可以幫助縮減能耗。資源的管理還可以通過監(jiān)控與系統(tǒng)中的一個或多個軟件應(yīng)用相關(guān)聯(lián)的線程并且控制線程的分派來進(jìn)行。就緒線程可以被延遲以增加多個線程并發(fā)運(yùn)行的機(jī)會。多個線程的并發(fā)運(yùn)行可以幫助增加系統(tǒng)空閑時間的機(jī)會,并且因此能耗可以被減少。
文檔編號G06F9/48GK1938685SQ200580009952
公開日2007年3月28日 申請日期2005年1月14日 優(yōu)先權(quán)日2004年2月6日
發(fā)明者M·楊, Y-k·陳 申請人:英特爾公司