什么是Win10的“現(xiàn)代待機(jī)”?為什么它未來會(huì)越來越重要?
那么這個(gè)現(xiàn)代待機(jī)為什么會(huì)被發(fā)明出來?中間經(jīng)歷了哪些坎坷?怎么看自己的機(jī)器支持不支持它?這些問題我們今天就一起來探究一下。當(dāng)然作為一個(gè)技術(shù)專欄,也會(huì)介紹一下其中的技術(shù)難點(diǎn),這對(duì)理解這項(xiàng)技術(shù)為什么遲遲不能推廣緊密相關(guān)。
緣起
PC機(jī)在出現(xiàn)的前十幾年,關(guān)注的主要是提高性能,而不是節(jié)省電力。在筆記本這種便攜式設(shè)備出現(xiàn)后,才開始考慮如何省電,以延長電池的供電時(shí)間,這樣各種省電狀態(tài)被發(fā)明了出來,ACPI標(biāo)準(zhǔn)囊獲了這些發(fā)明,其中包括系統(tǒng)級(jí)的S1、S3、S4;CPU級(jí)的C0/C1/C2/C3;設(shè)備級(jí)別的D0/D1/D3等等。
一切工作的很好:筆記本暫時(shí)不用,合上蓋子,進(jìn)入S3狀態(tài);想要用的時(shí)候,打開蓋子,在一秒鐘以后,進(jìn)入操作系統(tǒng)。動(dòng)作如行云流水,比關(guān)機(jī)重開機(jī)體驗(yàn)好太多。這下各方都滿意了,也變成了約定俗成的標(biāo)準(zhǔn)操作方法,沒有任何人有疑問,直到智能手機(jī)出現(xiàn)在地平線上。
蘋果的iPhone教育了市場(chǎng),讓大家看到,手機(jī)還可以這么用,這么好用!記得那時(shí)我拜訪Apple總部,相熟的工程師從兜里拿出一個(gè)手機(jī)向我炫耀,說公司每個(gè)發(fā)了一個(gè)。我微微一笑,沒說什么。心里想:“蘋果剛做手機(jī),能做好嗎?有黑莓好嗎?我口袋里的摩托羅拉表示不服!”朋友看我不以為然,立刻表演了起來,左劃劃,右劃劃。我表示這些是奇技淫巧,好麻煩!誰知道沒過幾年,大家都開始用起來智能手機(jī),高通和MTK等等芯片廠商大賺特賺,這里按下不表。
另一頭,Wintel兩兄弟坐不住了,也要向智能手機(jī)進(jìn)發(fā)。Windows CE + Intel CPU是否可以掃平他們呢?現(xiàn)在我們當(dāng)然知道結(jié)果,可當(dāng)時(shí)的人們并非沒有信心,當(dāng)時(shí)人們認(rèn)為有一個(gè)明顯的優(yōu)勢(shì):可以把Wintel巨量的用戶無縫導(dǎo)入Windows Phone市場(chǎng)。CPU的性能當(dāng)然沒有問題,但一個(gè)擺在眼前的難題是功耗。為此閹割了指令集和流水線,定制出Atom系列CPU,但問題并沒有完全解決。
iPhone幾乎沒有任何人會(huì)關(guān)閉電話,按下電源鍵也只是關(guān)閉屏幕而已,重要的短信和推送的消息都會(huì)收到并提醒,人們想用手機(jī)時(shí)按一下鍵,屏幕立刻亮了起來,無需等待。如果誰指望胃口被養(yǎng)叼了的用戶能夠忍受某新手機(jī),按下電源鍵就完全變木頭,想用的時(shí)候要一秒鐘以后才有反應(yīng),那一定是瘋了。S3睡眠不能滿足客戶,但僅僅關(guān)閉屏幕,讓CPU進(jìn)入C2或者C3,功耗又比ARM陣營高的多,此路也不通。看過我介紹C State文章的同學(xué)們應(yīng)該知道:
老狼:CPU省電的秘密(二):CStates
?
zhuanlan.zhihu.com
圖標(biāo)
最深的C State只是讓CPU內(nèi)核部分進(jìn)入了功耗幾乎為 0的狀態(tài),而CPU的uncore/SA/NorthComplex部分則繼續(xù)工作(近期的UFS改善了這點(diǎn)),更糟的是PCH(SouthComplex)和主板上其他的芯片也無怨無悔的全力工作并貢獻(xiàn)自己的功耗。
ARM陣營的大部分手機(jī)待機(jī)功耗只有數(shù)毫瓦,而Wintel新樣機(jī)的待機(jī)功耗高達(dá)到數(shù)百毫瓦。如何填補(bǔ)其中的巨大黑洞,成為了微軟和英特爾工程師必須解決的問題。
解決方案
為了匹敵ARM陣營的特性,Wintel一起提出了Instant On/Off(ConnectedStandby)的技術(shù)。顧名思義,這項(xiàng)技術(shù)要求按下電源鍵立刻屏幕點(diǎn)亮、系統(tǒng)可用,同時(shí)要求系統(tǒng)在待機(jī)狀態(tài)(Standby)模式下,網(wǎng)絡(luò)通信等必要設(shè)備必須能夠喚醒設(shè)備,以保持通信通知等暢通。系統(tǒng)0秒啟動(dòng)和保持可用,要求必須是S0的開機(jī)狀態(tài),同時(shí)又要求待機(jī)功耗在數(shù)毫瓦,大致是S3的功耗,這種奇怪的組合就是所謂S0ix(最深的是S0i3)的由來了。
為了達(dá)成這個(gè)目標(biāo),從硬件到軟件做了極大的改動(dòng),付出了非常多的努力。我們都知道,只是把Clock Gating住,可以降低功耗,但要達(dá)成0功耗,必須關(guān)閉電力輸入,就是要Power Gating。而關(guān)閉電力,就意味著芯片里面的狀態(tài)機(jī)全部復(fù)位了,粗淺的理解就是寄存器等全部清0了,要恢復(fù)可用,必須重新初始化寄存器,這就是S3回來的時(shí)候,BIOS在那個(gè)1秒鐘主要干的事情。而現(xiàn)在又要求不能有這個(gè)1秒鐘,所以寄存器內(nèi)容或者說狀態(tài)機(jī)狀態(tài)就不能丟失,怎么做到呢?
只有靠芯片自己記住自己的狀態(tài)了。芯片內(nèi)部電源管理模塊會(huì)按照步驟,一步步關(guān)閉芯片內(nèi)部區(qū)域(S0->S0i1->S0i2->S0i3),并把寄存器/狀態(tài)保存在內(nèi)部的nvram中,并切斷這些區(qū)域的供電,讓其功耗接近0;在恢復(fù)的時(shí)候,則反著來,一步步恢復(fù)寄存器。相當(dāng)于做了個(gè)快照,一會(huì)再恢復(fù)回來。由于這個(gè)過程是硬件完成的,速度很快。
對(duì)芯片外部的設(shè)備來說,不需要通知的設(shè)備要進(jìn)入D3cold狀態(tài),功耗為0。這一般由BIOS報(bào)告ACPI,操作GPIO來關(guān)閉設(shè)備的Power rail。對(duì)于需要喚醒的設(shè)備,必須支持一種叫做Runtime D3(RTD3)的狀態(tài),把信息offload到該設(shè)備處理,并在必須時(shí)才喚醒CPU和其他處于低功耗的設(shè)備。
對(duì)整個(gè)系統(tǒng)來說,是從外到內(nèi)部一步步進(jìn)入S0i3的狀態(tài)中去的:
先是CPU/SOC外部設(shè)備進(jìn)入D3cold,接下來通訊設(shè)備進(jìn)入RTD3,下來是芯片組和uncore,然后是Core和GPU,最后是掃尾的電路。一步一步,中間如果誰拒絕進(jìn)入低功耗狀態(tài),整個(gè)鏈路就會(huì)中斷,回到普通的運(yùn)行模式。
軟件也需要調(diào)優(yōu),不能有任何軟件拒絕系統(tǒng)進(jìn)入deepest idle runtime platform state (DRIPS)。Window會(huì)通過一系列步驟才能達(dá)到最后的低功耗狀態(tài),詳見參考資料1[1]
別看這么多步驟,效果還是非常讓人滿意的,最終達(dá)成了和手機(jī)相同的用戶體驗(yàn)。細(xì)心的同學(xué)可能看出來了,如果要讓這個(gè)過程順利完成,僅僅因?yàn)閃indows和Intel CPU支持是不夠的,必須主板,外圍器件和BIOS都支持并很好的調(diào)優(yōu)過,才能順利達(dá)成,是個(gè)系統(tǒng)工程。
尾聲
我們都知道Windows Phone并沒有一統(tǒng)江湖,反而寂寂無聲了。但Connected Standby這種好技術(shù)和它帶來的用戶體驗(yàn)卻不能放棄。Windows 10把它拔高成Modern Standby,并支持兩種mode:
Connected Standby是待機(jī)后Wifi、network等還有效,Disconnected Standby是這些也進(jìn)入D3cold了。它們和老式的S3的區(qū)別是都支持Instant On,也就是即開即用。
怎么看自己的電腦是不是支持Modern Standby呢?打開Command窗口或者PowerShell:
紅框就是所謂的現(xiàn)代待機(jī)。顯然我的機(jī)器并不支持它。
最后是一些其他的信息:
1.雖然現(xiàn)在只有部分筆記本支持Connected Standby,但未來臺(tái)式機(jī)也會(huì)支持它。并且過一段時(shí)間S3甚至都會(huì)被淘汰。
2. S3和Connected Standby是互斥的。
