睡眠管理方法及相關(guān)裝置的制造方法
【專利摘要】本發(fā)明實(shí)施例提供睡眠管理方法及相關(guān)裝置,以減少淺睡眠以及狀態(tài)切換。上述睡眠管理方法應(yīng)用于一終端,包括:在本幀繪圖完成后,準(zhǔn)備用于下一幀繪圖的繪圖緩沖區(qū);在所述繪圖緩沖區(qū)準(zhǔn)備完畢后,預(yù)測(cè)睡眠延時(shí)時(shí)間D;在等待所述睡眠延時(shí)時(shí)間D后,發(fā)送結(jié)束通知以喚醒處于睡眠狀態(tài)的所述應(yīng)用。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例在下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢后,并不立即發(fā)送結(jié)束通知,而是預(yù)測(cè)并等待睡眠延時(shí)時(shí)間D后,再發(fā)送結(jié)束通知。這樣可將睡眠由淺睡眠推至深睡眠,深睡眠可以使操作系統(tǒng)獲得更多的資源與負(fù)載釋放。同時(shí),減少了睡眠次數(shù),進(jìn)而可減少狀態(tài)切換,從而減輕了因頻繁狀態(tài)切換而帶來(lái)的負(fù)擔(dān)。
【專利說(shuō)明】
睡眠管理方法及相關(guān)裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及控制技術(shù)領(lǐng)域,具體涉及睡眠管理方法及相關(guān)裝置,尤其涉及圖形繪制中進(jìn)行睡眠管理的方法和裝置。
【背景技術(shù)】
[0002]很多便攜式裝置(例如手機(jī)、平板電腦等)都有需要進(jìn)行重畫或作幀間切換的場(chǎng)景。以安裝有美國(guó)谷歌公司(Google Inc.)推出的安卓(Android)操作系統(tǒng)的手機(jī)為例,其上的應(yīng)用(例如游戲)繪制下一幀畫面,都叫做重畫(invalidate or redraw)。而幀間切換,指的是兩次繪圖中間的繪圖緩沖區(qū)切換。
[0003]在兩次繪圖中間會(huì)產(chǎn)生許多短暫的睡眠,可稱為淺睡眠,淺睡眠耗時(shí)在數(shù)十微秒(micro-second)左右。
[0004]以游戲應(yīng)用為例,請(qǐng)參見圖1a和圖lb,游戲應(yīng)用先進(jìn)行第一幀繪圖(也即執(zhí)行第一幀繪圖緩沖區(qū)的繪制任務(wù)),完成后,游戲應(yīng)用會(huì)等待下一幀的繪圖緩沖區(qū),以進(jìn)行第二幀繪圖的繪制。在等待操作系統(tǒng)(例如Android、Windows、Mac0S等)準(zhǔn)備下一個(gè)繪圖緩沖區(qū)的過(guò)程中,游戲應(yīng)用會(huì)進(jìn)入第一次淺睡眠(即圖1中的睡眠A)掛起;在準(zhǔn)備好下一個(gè)繪圖緩沖區(qū)后,操作系統(tǒng)會(huì)發(fā)送結(jié)束通知,接收到結(jié)束通知后,游戲應(yīng)用從睡眠狀態(tài)切換到工作狀態(tài),進(jìn)行緩沖區(qū)切換(也即正式切換所有的繪制指令到新的緩沖區(qū)上,或者稱為進(jìn)行真正的繪制指令目標(biāo)地切換);
[0005]在Android操作系統(tǒng)上,一般應(yīng)用的幀率恒定維持在60fps,游戲應(yīng)用則會(huì)針對(duì)場(chǎng)景需求來(lái)控制幀率。以恒定幀率60fps為例子,幀與幀之間的時(shí)間間隔是(1000/60 =16.67ms)。當(dāng)游戲應(yīng)用進(jìn)行緩沖區(qū)切換后,所用時(shí)間(繪圖用時(shí)X+睡眠A+緩沖區(qū)切換用時(shí)E)可能還未達(dá)到16.67ms,為了維持幀率,游戲需要進(jìn)行第二次淺睡眠(即圖1中的睡眠B)。
[0006]在睡眠B結(jié)束后,才開始進(jìn)行第二幀繪圖。同理,在第二幀繪圖的繪圖過(guò)程中,也可能會(huì)出現(xiàn)兩次淺睡眠。
[0007]因此在現(xiàn)有技術(shù)中,每一次繪圖過(guò)程中至少可能出現(xiàn)兩次淺睡眠,經(jīng)歷繪圖->第一次淺睡眠_(dá)>緩沖區(qū)切換_>第二次淺睡眠,共3次狀態(tài)切換。
[0008]假設(shè)操作系統(tǒng)忙碌狀態(tài)不固定,往往會(huì)產(chǎn)生許多更小更短暫的淺睡眠,從而會(huì)有更多的狀態(tài)切換。而多次的工作狀態(tài)/睡眠狀態(tài)切換會(huì)造成操作系統(tǒng)忙碌,并給操作系統(tǒng)帶來(lái)不必要的負(fù)擔(dān)。這是因?yàn)?狀態(tài)切換意味著操作系統(tǒng)須對(duì)應(yīng)用做特別處理,例如應(yīng)用進(jìn)入睡眠,操作系統(tǒng)必須把應(yīng)用狀態(tài)做保存以方便下次喚醒可以從睡眠處繼續(xù)往下執(zhí)行,操作系統(tǒng)必須整理應(yīng)用使用的資源例如內(nèi)存,進(jìn)行重整或者釋放。
【發(fā)明內(nèi)容】
[0009]有鑒于此,本發(fā)明實(shí)施例提供睡眠管理方法及相關(guān)裝置,以減少淺睡眠以及狀態(tài)切換。
[0010]為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供如下技術(shù)方案:[0011 ] 一種睡眠管理方法,所述方法應(yīng)用于一終端,所述方法包括:
[0012]在應(yīng)用完成本幀繪圖后,準(zhǔn)備用于下一幀繪圖的繪圖緩沖區(qū);
[0013]在所述用于下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢后,預(yù)測(cè)睡眠延時(shí)時(shí)間;
[0014]在等待所述睡眠延時(shí)時(shí)間后,發(fā)送結(jié)束通知以喚醒處于睡眠狀態(tài)的所述應(yīng)用。
[0015]可選的,所述預(yù)測(cè)睡眠延時(shí)時(shí)間包括:根據(jù)前η幀繪圖過(guò)程中的淺睡眠時(shí)間估算所述睡眠延時(shí)時(shí)間;其中,η為正整數(shù)。
[0016]可選的,所述根據(jù)所述前η幀繪圖過(guò)程中的淺睡眠時(shí)間估算所述睡眠延時(shí)時(shí)間包括:對(duì)所述前η幀繪圖過(guò)程中的淺睡眠時(shí)間進(jìn)行加權(quán)求和,得到的加權(quán)求和結(jié)果作為所述睡眠延時(shí)時(shí)間。
[0017]可選的,所述根據(jù)所述前η幀繪圖過(guò)程中的淺睡眠時(shí)間估算所述睡眠延時(shí)時(shí)間包括:對(duì)所述前η幀繪圖過(guò)程中的淺睡眠時(shí)間進(jìn)行加權(quán)求和,得到的加權(quán)求和結(jié)果作為所述睡眠延時(shí)時(shí)間。
[0018]可選的,所述根據(jù)前η幀繪圖過(guò)程中的淺睡眠時(shí)間估算所述睡眠延時(shí)時(shí)間包括:對(duì)所述前η幀繪圖過(guò)程中的淺睡眠時(shí)間進(jìn)行加權(quán)求和,得到的加權(quán)求和結(jié)果H;根據(jù)本幀繪圖用時(shí)X和上一幀緩沖區(qū)切換用時(shí)Ε,對(duì)所述加權(quán)求和結(jié)果H進(jìn)行調(diào)整,得到所述睡眠延時(shí)時(shí)間。
[0019]可選的,所述根據(jù)本幀繪圖用時(shí)X和上一幀緩沖區(qū)切換用時(shí)Ε,對(duì)所述加權(quán)求和結(jié)果H進(jìn)行調(diào)整,得到所述睡眠延時(shí)時(shí)間包括:判斷所述χ、Ε、Η和AO之和是否等于Τ;在判斷出所述χ、Ε、Η和AO之和不等于T時(shí),調(diào)整H的取值,令χ、Ε、Η和AO之和等于Τ,調(diào)整后的H為所述睡眠延時(shí)時(shí)間;其中,所述T表示相鄰兩幀繪圖之間的時(shí)間間隔,所述AO表示應(yīng)用完成本幀繪圖時(shí)刻至所述下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢時(shí)刻之間睡眠的時(shí)間。
[0020]一種睡眠管理裝置,所述睡眠管理裝置應(yīng)用于一終端,所述睡眠管理裝置包括:
[0021]準(zhǔn)備單元,用于在應(yīng)用完成本幀繪圖后,準(zhǔn)備用于下一幀繪圖的繪圖緩沖區(qū);
[0022]預(yù)測(cè)單元,用于在所述準(zhǔn)備單元準(zhǔn)備完畢后,預(yù)測(cè)睡眠延時(shí)時(shí)間;
[0023]觸發(fā)單元,用于在等待所述睡眠延時(shí)時(shí)間后,發(fā)送結(jié)束通知以喚醒處于睡眠狀態(tài)的所述應(yīng)用。
[0024]可選的,在預(yù)測(cè)睡眠延時(shí)時(shí)間的方面,所述預(yù)測(cè)單元用于:根據(jù)前η幀繪圖過(guò)程中的淺睡眠時(shí)間估算所述睡眠延時(shí)時(shí)間;η為正整數(shù)。
[0025]可選的,在所述根據(jù)前η幀繪圖過(guò)程中的淺睡眠時(shí)間估算所述睡眠延時(shí)時(shí)間的方面,所述預(yù)測(cè)單元用于:對(duì)所述前η幀繪圖過(guò)程中的淺睡眠時(shí)間進(jìn)行加權(quán)求和,得到的加權(quán)求和結(jié)果作為所述睡眠延時(shí)時(shí)間。
[0026]可選的,在所述根據(jù)所述前η幀繪圖過(guò)程中的淺睡眠時(shí)間估算所述睡眠延時(shí)時(shí)間的方面,所述預(yù)測(cè)單元用于:對(duì)所述前η幀繪圖過(guò)程中的淺睡眠時(shí)間進(jìn)行加權(quán)求和,得到的加權(quán)求和結(jié)果H;根據(jù)本幀繪圖用時(shí)X和上一幀緩沖區(qū)切換用時(shí)Ε,對(duì)所述加權(quán)求和結(jié)果H進(jìn)行調(diào)整,得到所述睡眠延時(shí)時(shí)間。
[0027]可選的,在根據(jù)本幀繪圖用時(shí)X和上一幀緩沖區(qū)切換用時(shí)E,對(duì)所述加權(quán)求和結(jié)果H進(jìn)行調(diào)整,得到所述睡眠延時(shí)時(shí)間的方面,所述預(yù)測(cè)單元用于:判斷所述x、E、H和AO之和是否等于T;在判斷出所述x、E、H和AO之和不等于T時(shí),調(diào)整H的取值,令x、E、H和AO的和等于T,調(diào)整后的H為所述睡眠延時(shí)時(shí)間;其中,所述T表示相鄰兩幀繪圖之間的時(shí)間間隔,所述AO表示應(yīng)用完成本幀繪圖時(shí)刻至所述下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢時(shí)刻之間睡眠的時(shí)間。
[0028]一種終端,包括上述的睡眠管理裝置。
[0029]與現(xiàn)有技術(shù)不同的是,本發(fā)明實(shí)施例在下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢后,并不立即發(fā)送結(jié)束通知,而是預(yù)測(cè)并等待睡眠延時(shí)時(shí)間D后,再發(fā)送結(jié)束通知。
[0030]從應(yīng)用的角度而言,從本幀繪圖完成時(shí)刻到下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢時(shí)刻之間,其一直處于睡眠狀態(tài),假定其睡眠時(shí)長(zhǎng)為A’。之后,從下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢時(shí)刻到接收到結(jié)束通知時(shí)刻之間,應(yīng)用仍處于睡眠狀態(tài)(睡眠時(shí)長(zhǎng)為D)。也即,應(yīng)用連續(xù)睡眠時(shí)間為A’+D,從而實(shí)現(xiàn)了將短暫睡眠進(jìn)行合并。
[0031 ] 因此,本發(fā)明實(shí)施例增加了睡眠時(shí)間,可將睡眠由淺睡眠推至深睡眠,而深睡眠可以使操作系統(tǒng)獲得更多的資源與負(fù)載釋放。同時(shí),由于睡眠時(shí)間增加則睡眠次數(shù)相應(yīng)減少,進(jìn)而可減少狀態(tài)切換,減輕了因頻繁狀態(tài)切換而帶來(lái)的操作系統(tǒng)忙礙和負(fù)擔(dān)。
【附圖說(shuō)明】
[0032]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
[0033]圖la、Ib為現(xiàn)有技術(shù)繪圖過(guò)程示例性流程圖;
[0034]圖2a、2b、3a、3b、4和5為本發(fā)明實(shí)施例提供的睡眠管理方法示例性流程圖;
[0035]圖6為本發(fā)明實(shí)施例提供的睡眠管理裝置的示例性結(jié)構(gòu)圖;
[0036]圖7為本發(fā)明實(shí)施例提供的終端的示例性結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0037]前述提及,在兩次繪圖中間會(huì)產(chǎn)生許多淺睡眠,比如前述為了達(dá)到固定幀率所產(chǎn)生的睡眠B、等待操作系統(tǒng)準(zhǔn)備下一個(gè)繪圖緩沖區(qū)的睡眠A,還有其他等待作業(yè)所產(chǎn)生的睡眠等等,這會(huì)導(dǎo)致多次狀態(tài)切換,不利于資源與負(fù)載釋放。
[0038]而本發(fā)明提供一種睡眠管理方法、睡眠管理裝置及終端,以解決上述問題。
[0039]上述睡眠管理方法和裝置可應(yīng)用于便攜式裝置(例如手機(jī)、平板電腦、游戲機(jī)等)。
[0040]睡眠管理裝置可作為操作系統(tǒng)的一個(gè)模塊或組件(例如,An dr ο i d系統(tǒng)的Surfaceflinger組件、Windows系統(tǒng)的GWES組件),執(zhí)行上述睡眠管理方法。或者,對(duì)于應(yīng)用而言,也可認(rèn)為是操作系統(tǒng)執(zhí)行了上述睡眠管理方法。
[0041]下面以繪制兩幀繪圖(下稱第一幀繪圖和第二幀繪圖)為例,對(duì)上述睡眠管理方法進(jìn)行介紹。
[0042]圖2a和2b示出了上述睡眠管理方法的一種示例性流程,其至少可包括如下步驟:
[0043]步驟200:應(yīng)用繪制本幀繪圖(此時(shí)為第一幀繪圖)。
[0044I應(yīng)用(例如運(yùn)行在Android系統(tǒng)中的應(yīng)用程序)如何繪圖請(qǐng)參考現(xiàn)有技術(shù),在此不作贅述。
[0045]本幀繪圖完成后,應(yīng)用通知操作系統(tǒng)進(jìn)行緩沖區(qū)切換,并把繪制后的緩沖區(qū)結(jié)果提交到操作系統(tǒng),并最終輸出至屏幕。
[0046]步驟201:睡眠管理裝置(操作系統(tǒng))準(zhǔn)備下一幀繪圖的繪圖緩沖區(qū);
[0047 ] 在步驟201中,應(yīng)用進(jìn)入睡眠狀態(tài)。
[0048]步驟202:在下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢后,睡眠管理裝置(操作系統(tǒng))預(yù)測(cè)睡眠延時(shí)時(shí)間。
[0049]在一個(gè)示例中,可獲取歷史淺睡眠時(shí)間,然后,根據(jù)歷史淺睡眠時(shí)間估算睡眠延時(shí)時(shí)間。
[0050]但在本實(shí)施例中,由于步驟202發(fā)生于第一幀繪圖過(guò)程中,因此,無(wú)法獲取到歷史淺睡眠時(shí)間。此時(shí),可直接將睡眠延時(shí)時(shí)間置為O。當(dāng)然,也可采用出廠設(shè)置值或默認(rèn)值作為睡眠延時(shí)時(shí)間。
[0051]步驟203:在等待睡眠延時(shí)時(shí)間后,睡眠管理裝置(操作系統(tǒng))發(fā)送結(jié)束通知以喚醒處于睡眠狀態(tài)的前述應(yīng)用。
[0052]上述結(jié)束通知用于喚醒處于睡眠狀態(tài)的前述應(yīng)用。
[0053]需要說(shuō)明的是,與現(xiàn)有技術(shù)不同的是,本發(fā)明實(shí)施例在下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢后,并不立即發(fā)送結(jié)束通知,而是預(yù)測(cè)并等待睡眠延時(shí)時(shí)間后,再發(fā)送結(jié)束通知。
[0054]假定在步驟202預(yù)測(cè)出的睡眠延時(shí)時(shí)間為0,則步驟203中,在下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢后,將立即發(fā)送結(jié)束通知。
[0055]更具體的,對(duì)于Android系統(tǒng)而言,應(yīng)用在繪圖過(guò)程中主要與Android系統(tǒng)的Surfaceflinger系統(tǒng)組件進(jìn)行交互,由Surfaceflinger系統(tǒng)組件發(fā)結(jié)束通知以喚醒應(yīng)用;對(duì)于Windows系統(tǒng)而言,應(yīng)用是與Windows系統(tǒng)的GWES系統(tǒng)組件交互,由GWES系統(tǒng)組件發(fā)結(jié)束通知以喚醒應(yīng)用。
[0056]步驟204:接收到結(jié)束通知的應(yīng)用進(jìn)行緩沖區(qū)切換,也即將繪制指令切換到新的緩沖區(qū),以便于繼續(xù)進(jìn)行下一幀繪制。
[0057]需要說(shuō)明的是,緩沖區(qū)切換、繪圖都需要占用一定的時(shí)間。
[0058]還需要說(shuō)明的是,在實(shí)際場(chǎng)景中,應(yīng)用(例如游戲應(yīng)用)與系統(tǒng)組件(如surfacef linger for Android)或是圖形處理器(GPU)之間,都是一來(lái)一回(一個(gè)提要求并等待,一個(gè)執(zhí)行對(duì)應(yīng)操作并響應(yīng))交互的。
[0059]以Android系統(tǒng)為例,步驟200或206中的繪制本幀繪圖,是由應(yīng)用與GPU之間來(lái)回交互完成的(繪制到應(yīng)用單獨(dú)向surfacef linger申請(qǐng)到的緩沖區(qū)里面)。
[0000]Surfacef linger負(fù)責(zé)將所有應(yīng)用提交的緩沖區(qū)進(jìn)行清染疊加輸出到屏幕,并切換到下一個(gè)繪制緩沖區(qū),并在等待睡眠延時(shí)時(shí)間后喚醒應(yīng)用。接著應(yīng)用游戲就可以進(jìn)行下一禎繪圖了。
[0061]步驟205:為了維持幀率,應(yīng)用進(jìn)入淺睡眠(睡眠B)。
[0062]需要說(shuō)明的是,在第一次繪圖過(guò)程中,睡眠延時(shí)時(shí)間的預(yù)測(cè)可能不夠準(zhǔn)確,有可能在進(jìn)行緩沖區(qū)切換后,還要再進(jìn)行一次淺睡眠。
[0063]以恒定幀率60fps為例子,幀與幀之間的時(shí)間間隔是(1000/60 = 16.67ms)。當(dāng)應(yīng)用完成緩沖切換后,所用時(shí)間(繪圖用時(shí)X+睡眠A+緩沖區(qū)切換用時(shí)E)可能還未達(dá)到16.67ms,為了維持幀率,應(yīng)用需要進(jìn)入睡眠B。
[0064]步驟206:應(yīng)用繪制本幀繪圖(此時(shí)為第二幀繪圖)。
[0065]步驟207:睡眠管理裝置(操作系統(tǒng))準(zhǔn)備用于下一幀繪圖的繪圖緩沖區(qū);
[0066]在步驟207中,應(yīng)用進(jìn)入睡眠狀態(tài)。
[0067]步驟208:在下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢后,睡眠管理裝置(操作系統(tǒng))預(yù)測(cè)睡眠延時(shí)時(shí)間。
[0068]在一個(gè)示例中,可獲取歷史淺睡眠時(shí)間,然后,根據(jù)歷史淺睡眠時(shí)間估算睡眠延時(shí)時(shí)間。更具體的,歷史淺睡眠時(shí)間可具體指緩沖區(qū)切換后出現(xiàn)的淺睡眠時(shí)間。
[0069]由于是第二幀繪圖,所以可參考第一幀繪圖中出現(xiàn)的淺睡眠時(shí)間(即睡眠B)來(lái)預(yù)測(cè)睡眠延時(shí)時(shí)間。
[0070]步驟209:在等待睡眠延時(shí)時(shí)間后,睡眠管理裝置(操作系統(tǒng))發(fā)送結(jié)束通知。上述結(jié)束通知用于喚醒處于睡眠狀態(tài)的應(yīng)用。
[0071]步驟210:應(yīng)用進(jìn)行緩沖區(qū)切換。
[0072]收到結(jié)束通知的應(yīng)用結(jié)束睡眠,進(jìn)行緩沖區(qū)切換。
[0073]假定在第二幀繪圖過(guò)程中預(yù)測(cè)出的睡眠延時(shí)時(shí)間的長(zhǎng)度為D,從應(yīng)用的角度而言,從第二幀繪圖完成時(shí)刻到下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢時(shí)刻之間,其一直處于睡眠狀態(tài),假定其睡眠時(shí)長(zhǎng)為A’。之后,從下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢時(shí)刻到接收到結(jié)束通知時(shí)刻之間,應(yīng)用仍處于睡眠狀態(tài)(睡眠時(shí)長(zhǎng)為D)。也即,應(yīng)用連續(xù)的睡眠時(shí)間為A’+D,與現(xiàn)有技術(shù)及第一幀繪圖過(guò)程相比,其在一定程度上合并了短暫睡眠(A’和D),將應(yīng)用為等待操作系統(tǒng)準(zhǔn)備下一個(gè)緩沖區(qū)所進(jìn)行的睡眠拉長(zhǎng)了。這樣,應(yīng)用進(jìn)行緩沖區(qū)切換后,可能不用再進(jìn)入短暫睡眠,從而起到將睡眠由淺睡眠推至深睡眠的作用。
[0074]而深睡眠可以使操作系統(tǒng)獲得更多的資源與負(fù)載釋放。同時(shí),由于睡眠時(shí)間被拉長(zhǎng),則睡眠次數(shù)可相應(yīng)減少,進(jìn)而可減少狀態(tài)切換,減輕因頻繁狀態(tài)切換而帶來(lái)的負(fù)擔(dān),達(dá)到操作系統(tǒng)優(yōu)化與省電的目的。
[0075]由于前期可參考的歷史淺睡眠時(shí)間數(shù)據(jù)并不多,上述睡眠管理方法在前期預(yù)測(cè)睡眠延時(shí)時(shí)間上可能并不太準(zhǔn)確,隨著完成的繪圖幀數(shù)的增加,可參考的歷史淺睡眠時(shí)間數(shù)據(jù)也會(huì)逐漸增多,則對(duì)睡眠延時(shí)時(shí)間的預(yù)測(cè)隨之會(huì)越來(lái)越準(zhǔn)確,進(jìn)而本發(fā)明實(shí)施例要求保護(hù)的睡眠管理方法在睡眠時(shí)間優(yōu)化上的優(yōu)勢(shì)也會(huì)越來(lái)越明顯。
[0076]下面,將以第N幀繪圖過(guò)程(N不小于4)為例,對(duì)上述睡眠管理方法進(jìn)行更為詳細(xì)的介紹。請(qǐng)參見圖3a和圖3b,其至少可包括如下步驟:
[0077]步驟300:應(yīng)用繪制本幀繪圖(此時(shí)為第N幀繪圖)。
[0078]本幀繪圖完成后,應(yīng)用通知操作系統(tǒng)進(jìn)行緩沖區(qū)切換,并把繪制后的緩沖區(qū)結(jié)果提交回操作系統(tǒng),并最終輸出至屏幕。
[0079]步驟300與前述的步驟200或206相類似,在此不作贅述。
[0080]步驟301:睡眠管理裝置(操作系統(tǒng))準(zhǔn)備用于下一幀繪圖的繪圖緩沖區(qū)。
[0081 ]步驟301與前述的步驟201或207相類似,在此不作贅述。
[0082]步驟302:在用于下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢后,睡眠管理裝置(操作系統(tǒng))根據(jù)前η幀繪圖過(guò)程中的淺睡眠時(shí)間(η為正整數(shù))估算睡眠延時(shí)時(shí)間D’。
[0083]在一個(gè)示例中,可對(duì)前η幀繪圖過(guò)程中的淺睡眠時(shí)間進(jìn)行加權(quán)求和,得到的加權(quán)求和結(jié)果作為睡眠延時(shí)時(shí)間。
[0084]更具體的,歷史淺睡眠時(shí)間可具體指緩沖區(qū)切換后出現(xiàn)的淺睡眠時(shí)間。
[0085]在本實(shí)施例中,η的取值可為3。當(dāng)然,本領(lǐng)域技術(shù)人員可根據(jù)實(shí)際需要對(duì)η的取值進(jìn)行設(shè)計(jì),在此不作贅述。
[0086]假設(shè)前三幀的淺睡眠時(shí)間分別是cl、c2、c3,其中,Cl為最近一幀(也即第N-1幀)的淺睡眠時(shí)間,c3為第N-3幀的淺睡眠時(shí)間。
[0087]則睡眠延時(shí)時(shí)間D’可使用公式D’ =wl*Dl+w2*D2+w3*D3求得。
[0088]更具體的,wl+w2+w3 = I且wl>w2>w3 ;wl>w2>w3代表時(shí)間越接近的幀,其淺睡眠時(shí)間的參考價(jià)值越高。
[0089]步驟303:在等待睡眠延時(shí)時(shí)間后,睡眠管理裝置(操作系統(tǒng))發(fā)送結(jié)束通知。
[0090]步驟304:接收到結(jié)束通知的應(yīng)用進(jìn)行緩沖區(qū)切換(也即將繪制指令切換到新的緩沖區(qū),以便于繼續(xù)進(jìn)行下一幀繪制)。
[0091]步驟303和304分別與前述的步驟209、210相類似,在此不作贅述。
[0092]在本實(shí)施例中,根據(jù)前η幀繪圖過(guò)程中的淺睡眠時(shí)間(η為正整數(shù))估算睡眠延時(shí)時(shí)間,可以使得睡眠處時(shí)時(shí)間的預(yù)測(cè)更加合理。
[0093]圖4示出了上述睡眠管理方法的又一種示例性流程,其至少可包括如下步驟:
[0094]步驟400:應(yīng)用繪制第N幀繪圖;
[0095]步驟400與前述的步驟300、200、206相類似,在此不作贅述。
[0096]步驟401:睡眠管理裝置(操作系統(tǒng))準(zhǔn)備用于下一幀繪圖的繪圖緩沖區(qū)。
[0097]步驟401與前述的步驟201、207或301相類似,在此不作贅述。
[0098]步驟402:在用于下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢后,對(duì)前η幀繪圖過(guò)程中的淺睡眠時(shí)間進(jìn)行加權(quán)求和,得到的加權(quán)求和結(jié)果H ;
[0099]在本實(shí)施例中,η的取值可為3。當(dāng)然,本領(lǐng)域技術(shù)人員可根據(jù)實(shí)際需要對(duì)η的取值進(jìn)行設(shè)計(jì),在此不作贅述。
[0100]假設(shè)前三幀的淺睡眠時(shí)間分別是cl、c2、c3,其中,Cl為最近一幀(也即第N-1幀)的淺睡眠時(shí)間,c3為第N-3幀的淺睡眠時(shí)間。
[0101]則H 可使用公式 H=wl*Dl+w2*D2+w3*D3 求得。
[0102]更具體的,wl+w2+w3 = I且wl>w2>w3 ;wl>w2>w3代表時(shí)間越接近的幀,其淺睡眠時(shí)間的參考價(jià)值越高。
[0103]步驟403:根據(jù)本幀繪圖用時(shí)X和上一幀緩沖區(qū)切換用時(shí)E,對(duì)加權(quán)求和結(jié)果H進(jìn)行調(diào)整,得到睡眠延時(shí)時(shí)間D’。
[0104]由于每一幀的繪圖花費(fèi)時(shí)間可能不盡相同,而每一幀的緩沖區(qū)切換花費(fèi)時(shí)間也可能不盡相同。因此,本實(shí)施例引入本幀繪圖用時(shí)X和上一幀緩沖區(qū)切換用時(shí)E來(lái)對(duì)加權(quán)求和結(jié)果H進(jìn)行調(diào)整,以使得到的睡眠延時(shí)時(shí)間更為合理。
[0105]步驟404:在等待睡眠延時(shí)時(shí)間后,睡眠管理裝置(操作系統(tǒng))發(fā)送結(jié)束通知。
[0106]步驟404與前述的步驟209、303相類似,在此不作贅述。
[0107]步驟405:接收到結(jié)束通知的應(yīng)用進(jìn)行緩沖區(qū)切換。
[0108]步驟405與前述的步驟209、210、304相類似,在此不作贅述。
[0109]下面將以更詳細(xì)的實(shí)施例,來(lái)介紹如何調(diào)整加權(quán)求和結(jié)果。請(qǐng)參見圖5,其示出了上述睡眠管理方法的又一種示例性流程,其至少可包括如下步驟:
[0110]步驟500至502請(qǐng)參考圖4所示的步驟400至402,在此不作贅述。
[0111]步驟503:判斷本幀繪圖用時(shí)X、上一幀緩沖區(qū)切換用時(shí)E、加權(quán)求和結(jié)果H和AO之和是否等于T;若是,進(jìn)入步驟505,否則進(jìn)入步驟504;
[0112]其中,T表示相鄰兩幀繪圖之間的時(shí)間間隔;以恒定幀率60fps為例子,T=16.67ms0
[0113]AO表示從應(yīng)用完成本幀繪圖時(shí)刻至下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢時(shí)刻之間的睡眠的時(shí)間,也即,在執(zhí)行步驟501所花費(fèi)的時(shí)間。
[0114]步驟504:調(diào)整H的取值,令x、E、H和AO之和等于T,調(diào)整后的H為睡眠延時(shí)時(shí)間;
[0115]步驟505:在等待睡眠延時(shí)時(shí)間后,睡眠管理裝置(操作系統(tǒng))發(fā)送結(jié)束通知。
[0116]步驟505與前述的步驟209、303、404相類似,在此不作贅述。
[0117]步驟506:接收到結(jié)束通知的應(yīng)用進(jìn)行緩沖區(qū)切換。
[0118]步驟506與前述的步驟209、210、304和405相類似,在此不作贅述。
[0119]在本實(shí)施例中,通過(guò)調(diào)整H,使H滿足x、E、H和AO的和等于T,這樣可盡量維持幀率。
[0120]圖6示出了上述睡眠管理裝置的一種示例性結(jié)構(gòu),其可包括:
[0121]準(zhǔn)備單元I,用于在應(yīng)用完成本幀繪圖后,準(zhǔn)備用于下一幀繪圖的繪圖緩沖區(qū);
[0122]準(zhǔn)備單元I可執(zhí)行圖2a和圖2b所示的步驟201、207,圖3a和圖3b所示的步驟301、圖4所示的步驟401、圖5所示的步驟501。
[0123]預(yù)測(cè)單元2,用于在準(zhǔn)備單元I準(zhǔn)備完畢后,預(yù)測(cè)睡眠延時(shí)時(shí)間:
[0124]預(yù)測(cè)單元2可執(zhí)行圖2a和圖2b所示的步驟202、208,圖3a和圖3b所示的步驟302、圖4所示的步驟402和403、圖5所示的步驟502-504。
[0125]觸發(fā)單元3,用于在等待睡眠延時(shí)時(shí)間后,發(fā)送結(jié)束通知以喚醒處于睡眠狀態(tài)的應(yīng)用。
[0126]觸發(fā)單元3可執(zhí)行圖2a和圖2b所示的步驟203、209,圖3a和圖3b所示的步驟303、圖4所示的步驟404、圖5所示的步驟505。
[0127]本發(fā)明實(shí)施例還要求保護(hù)終端,其可包括上述的睡眠管理裝置。
[0128]圖7示出了上述終端的一種通用計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)。
[0129]上述計(jì)算機(jī)系統(tǒng)可包括總線、處理器701、內(nèi)存702、通信接口703、輸入設(shè)備704和輸出設(shè)備705。處理器701、內(nèi)存702、通信接口 703、輸入設(shè)備704和輸出設(shè)備705通過(guò)總線相互連接。其中:
[0130]總線可包括一通路,在計(jì)算機(jī)系統(tǒng)各個(gè)部件之間傳送信息。
[0131]處理器701可以是通用處理器,例如通用中央處理器(CPU)、網(wǎng)絡(luò)處理器(NetworkProcessor,簡(jiǎn)稱NP)、微處理器等,也可以是特定應(yīng)用集成電路(applicat1n-specificintegrated circuit,ASIC),或一個(gè)或多個(gè)用于控制本發(fā)明方案程序執(zhí)行的集成電路。還可以是數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)成可程序設(shè)計(jì)門陣列(FPGA)或者其他可程序設(shè)計(jì)邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件。
[0132]處理器701至少可包括主處理器和GPU(圖形處理器)。
[0133]內(nèi)存702中保存有執(zhí)行本發(fā)明技術(shù)方案的程序,還可以保存有操作系統(tǒng)和其他關(guān)鍵業(yè)務(wù)。具體地,程序可以包括程序代碼,程序代碼包括計(jì)算機(jī)操作指令。更具體的,內(nèi)存702可以包括只讀存儲(chǔ)器(read-only memory,R0M)、可存儲(chǔ)靜態(tài)信息和指令的其他類型的靜態(tài)存儲(chǔ)設(shè)備、隨機(jī)存取內(nèi)存(random access memory,RAM)、可存儲(chǔ)信息和指令的其他類型的動(dòng)態(tài)存儲(chǔ)設(shè)備、磁盤存儲(chǔ)器、flash等等。
[0134]輸入設(shè)備704可包括接收用戶輸入的數(shù)據(jù)和信息的裝置,例如鍵盤、鼠標(biāo)、攝像頭、掃描儀、光筆、語(yǔ)音輸入設(shè)備、觸摸屏、計(jì)步器或重力傳感器等。
[0135]輸出設(shè)備705可包括允許輸出信息給用戶的裝置,例如顯示屏、打印機(jī)、揚(yáng)聲器等。
[0136]通信接口703可包括使用任何收發(fā)器一類的裝置,以便與其他設(shè)備或通信網(wǎng)路通信,如以太網(wǎng),無(wú)線接入網(wǎng)(RAN),無(wú)線局域網(wǎng)(WLAN)等。
[0137]處理器701執(zhí)行內(nèi)存702中所存放的程序,以及調(diào)用其他設(shè)備,可用于實(shí)現(xiàn)本發(fā)明前述實(shí)施例所提供的睡眠管理方法中的各個(gè)步驟。
[0138]本說(shuō)明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。對(duì)于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法部分說(shuō)明即可。
[0139]專業(yè)人員還可以進(jìn)一步意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來(lái)實(shí)現(xiàn),為了清楚地說(shuō)明硬件和軟件的可互換性,在上述說(shuō)明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來(lái)使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
[0140]結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來(lái)實(shí)施。軟件模塊可以置于隨機(jī)內(nèi)存(RAM)、內(nèi)存、只讀存儲(chǔ)器(R0M)、電可程序設(shè)計(jì)R0M、電可擦除可程序設(shè)計(jì)R0M、寄存器、硬盤、可移動(dòng)磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。
[0141]對(duì)所公開的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。
【主權(quán)項(xiàng)】
1.一種睡眠管理方法,所述方法應(yīng)用于一終端,其特征在于,所述方法包括: 在應(yīng)用完成本幀繪圖后,準(zhǔn)備用于下一幀繪圖的繪圖緩沖區(qū); 在所述用于下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢后,預(yù)測(cè)睡眠延時(shí)時(shí)間; 在等待所述睡眠延時(shí)時(shí)間后,發(fā)送結(jié)束通知以喚醒處于睡眠狀態(tài)的所述應(yīng)用。2.如權(quán)利要求1所述的方法,其特征在于,所述預(yù)測(cè)睡眠延時(shí)時(shí)間包括: 根據(jù)前η幀繪圖過(guò)程中的淺睡眠時(shí)間估算所述睡眠延時(shí)時(shí)間;其中,η為正整數(shù)。3.如權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述前η幀繪圖過(guò)程中的淺睡眠時(shí)間估算所述睡眠延時(shí)時(shí)間包括: 對(duì)所述前η幀繪圖過(guò)程中的淺睡眠時(shí)間進(jìn)行加權(quán)求和,得到的加權(quán)求和結(jié)果作為所述睡眠延時(shí)時(shí)間。4.如權(quán)利要求2所述的方法,其特征在于,所述根據(jù)前η幀繪圖過(guò)程中的淺睡眠時(shí)間估算所述睡眠延時(shí)時(shí)間包括: 對(duì)所述前η幀繪圖過(guò)程中的淺睡眠時(shí)間進(jìn)行加權(quán)求和,得到的加權(quán)求和結(jié)果H; 根據(jù)本幀繪圖用時(shí)X和上一幀緩沖區(qū)切換用時(shí)Ε,對(duì)所述加權(quán)求和結(jié)果H進(jìn)行調(diào)整,得到所述睡眠延時(shí)時(shí)間。5.如權(quán)利要求4所述的方法,其特征在于,所述根據(jù)本幀繪圖用時(shí)X和上一幀緩沖區(qū)切換用時(shí)Ε,對(duì)所述加權(quán)求和結(jié)果H進(jìn)行調(diào)整,得到所述睡眠延時(shí)時(shí)間包括: 判斷所述x、E、H和AO之和是否等于T ; 在判斷出所述x、E、H和AO之和不等于T時(shí),調(diào)整H的取值,令x、E、H和AO之和等于T,調(diào)整后的H為所述睡眠延時(shí)時(shí)間; 其中,所述T表示相鄰兩幀繪圖之間的時(shí)間間隔,所述AO表示應(yīng)用完成本幀繪圖時(shí)刻至所述下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢時(shí)刻之間睡眠的時(shí)間。6.—種睡眠管理裝置,所述睡眠管理裝置應(yīng)用于一終端,其特征在于,所述睡眠管理裝置包括: 準(zhǔn)備單元,用于在應(yīng)用完成本幀繪圖后,準(zhǔn)備用于下一幀繪圖的繪圖緩沖區(qū); 預(yù)測(cè)單元,用于在所述準(zhǔn)備單元準(zhǔn)備完畢后,預(yù)測(cè)睡眠延時(shí)時(shí)間; 觸發(fā)單元,用于在等待所述睡眠延時(shí)時(shí)間后,發(fā)送結(jié)束通知以喚醒處于睡眠狀態(tài)的所述應(yīng)用。7.如權(quán)利要求6所述的裝置,其特征在于,在預(yù)測(cè)睡眠延時(shí)時(shí)間的方面,所述預(yù)測(cè)單元用于:根據(jù)前η幀繪圖過(guò)程中的淺睡眠時(shí)間估算所述睡眠延時(shí)時(shí)間;η為正整數(shù)。8.如權(quán)利要求7所述的裝置,其特征在于,在所述根據(jù)前η幀繪圖過(guò)程中的淺睡眠時(shí)間估算所述睡眠延時(shí)時(shí)間的方面,所述預(yù)測(cè)單元用于: 對(duì)所述前η幀繪圖過(guò)程中的淺睡眠時(shí)間進(jìn)行加權(quán)求和,得到的加權(quán)求和結(jié)果作為所述睡眠延時(shí)時(shí)間。9.如權(quán)利要求7所述的裝置,其特征在于,在所述根據(jù)所述前η幀繪圖過(guò)程中的淺睡眠時(shí)間估算所述睡眠延時(shí)時(shí)間的方面,所述預(yù)測(cè)單元用于: 對(duì)所述前η幀繪圖過(guò)程中的淺睡眠時(shí)間進(jìn)行加權(quán)求和,得到的加權(quán)求和結(jié)果H; 根據(jù)本幀繪圖用時(shí)X和上一幀緩沖區(qū)切換用時(shí)Ε,對(duì)所述加權(quán)求和結(jié)果H進(jìn)行調(diào)整,得到所述睡眠延時(shí)時(shí)間。10.如權(quán)利要求9所述的裝置,其特征在于,在根據(jù)本幀繪圖用時(shí)X和上一幀緩沖區(qū)切換用時(shí)E,對(duì)所述加權(quán)求和結(jié)果H進(jìn)行調(diào)整,得到所述睡眠延時(shí)時(shí)間的方面,所述預(yù)測(cè)單元用于: 判斷所述x、E、H和AO之和是否等于T ; 在判斷出所述x、E、H和AO之和不等于T時(shí),調(diào)整H的取值,令x、E、H和AO的和等于T,調(diào)整后的H為所述睡眠延時(shí)時(shí)間; 其中,所述T表示相鄰兩幀繪圖之間的時(shí)間間隔,所述AO表示應(yīng)用完成本幀繪圖時(shí)刻至所述下一幀繪圖的繪圖緩沖區(qū)準(zhǔn)備完畢時(shí)刻之間睡眠的時(shí)間。11.一種終端,其特征在于,包括如權(quán)利要求6-10中任意一項(xiàng)所述的睡眠管理裝置。
【文檔編號(hào)】G06F9/48GK106095541SQ201610377374
【公開日】2016年11月9日
【申請(qǐng)日】2016年5月31日
【發(fā)明人】張文彥, 白宗正
【申請(qǐng)人】深圳市萬(wàn)普拉斯科技有限公司