Cassie Ren,復(fù)睿微電子架構(gòu)專家,畢業(yè)于新加坡國(guó)立大學(xué),曾就職于新加坡瑞昱半導(dǎo)體,在芯片低功耗、信息安全等領(lǐng)域工作經(jīng)驗(yàn)豐富。
背景
從陸續(xù)出臺(tái)的相關(guān)政策上來(lái)看,自動(dòng)駕駛行業(yè)是當(dāng)前國(guó)家重點(diǎn)支持的領(lǐng)域,近些年來(lái),我國(guó)的自動(dòng)駕駛行業(yè)也在多方的支持下蓬勃發(fā)展。隨著軟件和硬件條件的日趨成熟,新車搭載L2級(jí)別自動(dòng)駕駛功能正逐漸成為智能汽車的前裝標(biāo)配。當(dāng)前我國(guó)量產(chǎn)乘用車的自動(dòng)駕駛級(jí)別也在從L2向L3+過(guò)渡,甚至很多科技公司已經(jīng)開(kāi)始研發(fā)L4級(jí)別的自動(dòng)駕駛芯片及其解決方案。隨著市場(chǎng)對(duì)汽車自動(dòng)駕駛等級(jí)需求的提高,汽車搭載的自動(dòng)駕駛芯片的算力需求也越來(lái)越高,而算力更高的芯片也會(huì)帶來(lái)更高的功耗。對(duì)于消費(fèi)者和車廠來(lái)說(shuō),功耗問(wèn)題一直都是他們關(guān)注的焦點(diǎn),如何實(shí)現(xiàn)低功耗高性能,是芯片設(shè)計(jì)方及其上游要一起解決的問(wèn)題。
1降低功耗的優(yōu)點(diǎn)
為什么需要功耗管理呢?這里來(lái)簡(jiǎn)單聊一下。
1) 功耗過(guò)大會(huì)縮短使用時(shí)間,常用手機(jī)等電子設(shè)備的我們也知道,頻繁充電會(huì)大大降低我們的用戶體驗(yàn)。
2) 功耗過(guò)大會(huì)造成更高的溫度,較高的溫度會(huì)引起電子遷移或者其他的熱失效機(jī)制,從而降低芯片的穩(wěn)定性。
3) 對(duì)于汽車而言,自動(dòng)駕駛芯片的功耗超過(guò)一定限度,則會(huì)需要車廠采用水冷措施來(lái)降溫而不是風(fēng)冷系統(tǒng),這也會(huì)提高整車的制造成本。
4) 功耗大也會(huì)影響電池壽命,使電池壽命更短,這也從一定程度上提高了用戶的成本及降低了用戶的產(chǎn)品體驗(yàn)。
所以片上系統(tǒng)的功耗是一個(gè)非常重要的話題,作為芯片設(shè)計(jì)方,使搭載到智能汽車的自動(dòng)駕駛芯片擁有更低的功耗貫穿了我們工作的始終,從前期芯片非自研IP選型,到中期芯片設(shè)計(jì),到后期的軟件及解決方案,我們將從每個(gè)階段盡量降低芯片的功耗,在保證算力的同時(shí)提供更穩(wěn)定更具市場(chǎng)競(jìng)爭(zhēng)力的自動(dòng)駕駛芯片。
2降低功耗的方式[1]
2.1基本概念
首先要介紹兩個(gè)概念:動(dòng)態(tài)功耗和靜態(tài)功耗。SoC的功耗包括動(dòng)態(tài)功耗(Dynamic Power)和靜態(tài)功耗(Static Power)。
動(dòng)態(tài)功耗(Dynamic Power)
動(dòng)態(tài)功耗是因?yàn)?a target="_blank">信號(hào)值改變帶來(lái)的功耗損失。動(dòng)態(tài)功耗由兩部分組成:開(kāi)關(guān)功耗(switching power)和內(nèi)部功耗(internal power)。開(kāi)關(guān)功耗是外部電容充放電消耗的功率(如圖1所示),內(nèi)部功耗是電路邏輯狀態(tài)變化時(shí)流過(guò)PMOS-NMOS堆的短路電流消耗的功率(如圖2所示)。
圖1
圖2
靜態(tài)功耗(Static Power)
靜態(tài)功耗是設(shè)備還在上電狀態(tài)但是沒(méi)有信號(hào)值改變時(shí)消耗的功率。在CMOS設(shè)備中,靜態(tài)功耗來(lái)源于漏電(如圖3所示)。
圖3
2.2降低功耗的方式
2.2.1 降低供電電壓(Supply VoltageReduction)
最基礎(chǔ)的降低功耗的方式是降低供電電壓。功耗與電壓的平方成正比。所以如果降低50%的電壓,功耗會(huì)降低75%(如圖4所示)。CMOS技術(shù)的不斷更新迭代使供電電壓越來(lái)越低以降低功耗,供電電壓從上世紀(jì)八十年代的5V降低到當(dāng)前0.75V甚至更低。
圖4
2.2.2 時(shí)鐘門控(Clock Gating)
時(shí)鐘門控(clock gating)是一種降低動(dòng)態(tài)功耗的方式。對(duì)于那些很多個(gè)時(shí)鐘周期下都需要保持同一個(gè)數(shù)值的寄存器來(lái)說(shuō),這種降低功耗的方式非常有用,因?yàn)檫@種方式可避免每個(gè)時(shí)鐘周期都重新加載寄存器而帶來(lái)的不必要的功耗損失。這個(gè)方法最大的挑戰(zhàn)是如何找到最優(yōu)的位置來(lái)放置時(shí)鐘門控,以保證在合適的時(shí)間開(kāi)關(guān)時(shí)鐘。
時(shí)鐘門控技術(shù)沿用了多年,也很成熟。Power Compiler等綜合工具可以監(jiān)測(cè)到低吞吐量的數(shù)據(jù)路徑,然后在時(shí)鐘路徑上合適的位置自動(dòng)插入時(shí)鐘門控單元。時(shí)鐘門控的實(shí)現(xiàn)也比較簡(jiǎn)單,它只需要改網(wǎng)表,而不需要額外增加電源供電或者其它電源設(shè)施。
2.2.3 多Vt庫(kù)單元(Multiple-Vt Library Cells)
一些CMOS技術(shù)支持具有不同電壓閾值的標(biāo)準(zhǔn)庫(kù)單元。在這種情況下,單元庫(kù)可以提供兩種甚至更多不同的閾值電壓單元來(lái)實(shí)現(xiàn)相同的邏輯功能。舉個(gè)例子:庫(kù)里可以提供兩種反相器單元:一種是low-Vt晶體管,一種是high-Vt晶體管。
Low-Vt單元有更高的速度,但是同時(shí)擁有更大的漏電流。High-Vt單元有更低的漏電流,但是速度更慢。所以綜合工具可以根據(jù)速度和功耗的tradeoff來(lái)選擇合適類型的單元。比如可以用low-Vt單元在timing-critical的路徑以達(dá)到更高的速度,至于對(duì)timing要求不是很高的路徑可選用high-Vt單元以減少功耗。
2.2.4 多電壓設(shè)計(jì)(Multi-voltage Design)
芯片不同的部分有不同的速度需求。比如CPU和RAM需要比外設(shè)擁有更高的速度。就像前面提到的,低電壓不僅會(huì)降低功耗也會(huì)降低速度。為了得到最大的速度和更低的功耗,可以給CPU和RAM提供較高的供電電壓,而給外設(shè)部分提供較低的供電電壓。但是在同一個(gè)芯片上提供兩個(gè)或多個(gè)供電會(huì)增加設(shè)計(jì)復(fù)雜性和成本。比如需要更多的管腳來(lái)給芯片供電,而且電源網(wǎng)格必須將每個(gè)電壓源分別分配給適當(dāng)?shù)哪K。
2.2.5 電源開(kāi)關(guān)(Power Switching)
電源開(kāi)關(guān)是在芯片的某個(gè)模塊長(zhǎng)時(shí)間不用的情況下,通過(guò)關(guān)掉電源的方式來(lái)節(jié)省功耗的一種方式。比如一個(gè)手機(jī)芯片,當(dāng)手機(jī)處于待機(jī)模式的時(shí)候關(guān)掉聲音處理模塊。當(dāng)用戶收到電話或者打電話的時(shí)候,這個(gè)模塊會(huì)被喚醒。
電源開(kāi)關(guān)進(jìn)一步降低了靜態(tài)功耗和動(dòng)態(tài)功耗。但是它也帶來(lái)了一些挑戰(zhàn),比如它的實(shí)現(xiàn)需要一個(gè)電源控制器,一個(gè)電源開(kāi)關(guān)網(wǎng)絡(luò),隔離單元(isolation cells)和retention寄存器。
電源控制器就是一個(gè)決定什么時(shí)候上下電的邏輯模塊。但是上電和下電會(huì)帶來(lái)一定的時(shí)間和功耗代價(jià),所以控制器必須決定一個(gè)合適的時(shí)間來(lái)開(kāi)關(guān)電源。
一個(gè)可以被下電的模塊必須從電源開(kāi)關(guān)網(wǎng)絡(luò)中收到供電,電源網(wǎng)絡(luò)由大量在always-on的電源軌道和供電引腳單元之間有source-to-drain連接的晶體管組成。電源開(kāi)關(guān)必須在該模塊周圍或者內(nèi)部。這個(gè)網(wǎng)絡(luò),當(dāng)打開(kāi)電源時(shí),連接了電源和邏輯門,當(dāng)關(guān)上電源時(shí),電源供電就從邏輯門斷開(kāi)連接。
我們常常會(huì)把High-Vt晶體管用作電源開(kāi)關(guān)(power switch),因?yàn)樗梢杂懈〉穆╇娏鞑⑶椅覀円膊魂P(guān)心它的開(kāi)關(guān)速度。如圖5所示,PMOS header 開(kāi)關(guān)可以被放在VDD和模塊供電電源管腳中間,或者NMOS footer 開(kāi)關(guān)可以被放在VSS和模塊地管腳中間。 ?
圖5
上面描述的電源開(kāi)關(guān)策略是粗粒度的開(kāi)關(guān)策略,因?yàn)檫@個(gè)電源開(kāi)關(guān)可以控制整個(gè)模塊的上下電。如果是細(xì)粒度策略,則每個(gè)庫(kù)單元都有自己的電源開(kāi)關(guān),允許更細(xì)粒度的控制電源上下電。這種方式可以更好的節(jié)省功耗,但是也要求更大的面積。
2.2.6 動(dòng)態(tài)電壓頻率調(diào)整(Dynamic Voltage FrequencyScaling)
根據(jù)前面提到的多電壓(Multi-voltage)的概念,我們可以將其拓展成操作過(guò)程中根據(jù)當(dāng)前的工作負(fù)載而動(dòng)態(tài)調(diào)整電壓。比如一個(gè)芯片在做簡(jiǎn)單的計(jì)算時(shí)可以用更低的電壓和更低的頻率,如果需要更高的性能,則可以提高電壓和頻率。這種實(shí)時(shí)調(diào)整電壓和頻率的方式叫做DVFS。
芯片的供電電壓可以被設(shè)計(jì)為多個(gè)檔位或者一個(gè)連續(xù)的范圍,動(dòng)態(tài)調(diào)壓要求多檔位的供電及一個(gè)能準(zhǔn)確判斷給定任務(wù)的最優(yōu)電壓值的邏輯模塊。因?yàn)橐治龊涂紤]到不同的電壓等級(jí)和頻率的結(jié)合,所以這對(duì)設(shè)計(jì)、執(zhí)行、驗(yàn)證和測(cè)試來(lái)說(shuō)都是不小的挑戰(zhàn)。
我們可以將動(dòng)態(tài)調(diào)壓和電源開(kāi)關(guān)結(jié)合起來(lái),讓模塊既可以根據(jù)當(dāng)前工作負(fù)載調(diào)整電壓也可以在完全不用的時(shí)候關(guān)掉電源,以達(dá)到更多的功耗節(jié)省。
3功耗管理模塊[2]
隨著當(dāng)代SoC的復(fù)雜程度的提高,越來(lái)越多的芯片設(shè)計(jì)者選擇將SoC中的功耗管理的角色獨(dú)立出來(lái),選擇一個(gè)小的處理器結(jié)合軟件來(lái)負(fù)責(zé)整個(gè)SoC的功耗管理。
以前是用操作系統(tǒng)(OS)來(lái)管理SoC的功耗和性能,但是慢慢發(fā)現(xiàn)形成和維護(hù)一個(gè)通用的OS kernel來(lái)支持不同供應(yīng)商非常困難,且現(xiàn)在的SoC也有越來(lái)越多的限制,也迫使有能多的功能安全和信息安全的要求,這些對(duì)OS來(lái)說(shuō)都過(guò)于復(fù)雜以至于無(wú)法在管理的同時(shí)滿足最優(yōu)負(fù)載性能。這就迫使工業(yè)界把基于OS的集中的控制機(jī)制剝離出來(lái),形成一個(gè)專門用來(lái)控制和管理功耗和性能的小系統(tǒng)。
前面提到動(dòng)態(tài)調(diào)壓調(diào)頻(DVFS), DVFS會(huì)根據(jù)OS的工作負(fù)載選擇{頻率,電壓}對(duì),這就要求OSkernel要知道該平臺(tái)支持的所有的{頻率,電壓}對(duì)的信息,然后還要知道如何讀取和設(shè)置它們。每個(gè)SoC的讀取和設(shè)置信息對(duì)的方式不同,所以如果需要OS kernel來(lái)管理功耗和性能,就需要根據(jù)每個(gè)SoC的設(shè)計(jì)更改kernel,這個(gè)與大家想保持kernel的通用性的想法相悖。因此,我們可以將平臺(tái)支持的{頻率,電壓}對(duì)記錄在功耗管理小系統(tǒng)中,并將性能等級(jí)與頻率電壓對(duì)進(jìn)行一一對(duì)應(yīng),OS kernel僅需發(fā)出調(diào)整頻率電壓請(qǐng)求給小系統(tǒng),小系統(tǒng)便可根據(jù)請(qǐng)求對(duì)頻率和電壓進(jìn)行相應(yīng)的調(diào)整。這樣做既達(dá)到了控制的效果,也維護(hù)了OS kernel的通用性。
在功能安全方面,當(dāng)出現(xiàn)偶發(fā)事件時(shí),通常來(lái)說(shuō)硬件的反應(yīng)時(shí)間小于固件的反應(yīng)時(shí)間小于內(nèi)核Kernel的反應(yīng)時(shí)間。圖6展示了典型場(chǎng)景下,硬件hardware、固件firmware、OSKernel對(duì)SoC平臺(tái)偶發(fā)事件的反應(yīng)時(shí)間。從圖6可以看出,kernel的反應(yīng)時(shí)間遠(yuǎn)大于固件的反應(yīng)時(shí)間。而且,Kernel也無(wú)法知道SoC上所有功能安全相關(guān)的操作,所以這些事情也可以委派給到功耗控制小系統(tǒng)。該小系統(tǒng)有更快的反應(yīng)時(shí)間且可以提供功能安全的保證,也可以享有控制SoC內(nèi)其他的硬件的權(quán)力。
圖6
此外,在信息安全方面,OS的DVFS實(shí)現(xiàn)在kernel,kernel位于BL1,而B(niǎo)L1是不可信(untrusted)的。如果kernel擁有頻率和電壓的控制權(quán)是比較危險(xiǎn)的。不可信的軟件可能會(huì)把SoC平臺(tái)置于overclocked或者undervolted的狀態(tài)。所以我們把對(duì)頻率和電壓的控制權(quán)轉(zhuǎn)交給一個(gè)可信的firmware,這個(gè)firmware可以對(duì)要求的性能等級(jí)進(jìn)行可信度檢查,以避免惡意編程帶來(lái)的危害。
4系統(tǒng)低功耗模式及設(shè)計(jì)
ACPI[3]定義了G0~G3四種電源狀態(tài),G0是工作狀態(tài),G3是關(guān)電狀態(tài)。G1和G2又分出了S0ix到S5的睡眠狀態(tài),且定義了每種睡眠狀態(tài)下CPU,GPU及memory等模塊的狀態(tài)(如表1所示)。
表1
對(duì)于SoC而言,首先需要支持工作和關(guān)電兩種電源狀態(tài),然而介于這兩種狀態(tài)之間的睡眠態(tài)是應(yīng)用場(chǎng)景需求決定的。當(dāng)前汽車行業(yè)仍處于一個(gè)發(fā)展階段,對(duì)于自動(dòng)駕駛芯片的功耗模式定義尚未形成較固定的方案。根據(jù)當(dāng)前自動(dòng)駕駛芯片串聯(lián)座艙芯片的場(chǎng)景來(lái)分析,現(xiàn)在很多汽車會(huì)支持前裝哨兵模式,該模式則需要在汽車熄火且人離開(kāi)汽車后,汽車上的傳感器可以感知物體靠近來(lái)喚醒車身上的攝像頭。喚醒攝像頭意味著控制其的芯片也需被喚醒,使其將周圍發(fā)生的情況通過(guò)攝像頭記錄并保存下來(lái)。然而,如果該功能下自動(dòng)駕駛芯片完全關(guān)電,喚醒時(shí)芯片從上電到可以工作的時(shí)間可能要10秒以上,這是無(wú)法滿足場(chǎng)景需求的。所以這就要求在該模式下自動(dòng)駕駛芯片支持一個(gè)快速喚醒的低功耗狀態(tài)。為什么需要一個(gè)低功耗狀態(tài)?因?yàn)槿绻€保持之前的工作狀態(tài),芯片的耗電量會(huì)比較大,從而造成車機(jī)很快沒(méi)電,非常影響用戶體驗(yàn)及電池壽命。所以前裝哨兵模式需要自動(dòng)駕駛芯片必須支持至少一種低功耗模式。
此外,一些車廠可選擇汽車熄火后不完全給自動(dòng)駕駛芯片和座艙芯片關(guān)電,而是選擇讓它們處于一種超低功耗的模式。這樣做帶來(lái)的好處是一旦點(diǎn)火,車機(jī)系統(tǒng)可以非常快的啟動(dòng)到離開(kāi)車前的狀態(tài)。一般座艙芯片會(huì)采用Android系統(tǒng),Android系統(tǒng)的啟動(dòng)可能需要十秒以上的時(shí)間,也就是說(shuō)用戶從啟動(dòng)汽車到看到顯示屏顯示可能需要十幾秒甚至更久的時(shí)間,這會(huì)大大降低用戶的產(chǎn)品體驗(yàn)。低功耗模式可以將下電前的軟件現(xiàn)場(chǎng)保存在DDR連接的DRAM顆粒中,并使DRAM顆粒處于一種retention狀態(tài),且僅保持一個(gè)耗電量很小的處理器小系統(tǒng)在工作。這個(gè)小處理器在收到喚醒信號(hào)后,可以將現(xiàn)場(chǎng)快速恢復(fù)到車機(jī)系統(tǒng)到離車前狀態(tài)。這個(gè)狀態(tài)耗電量很小,且可以快速喚醒,可以在耗費(fèi)很小電量的同時(shí)解決因操作系統(tǒng)啟動(dòng)較慢而造成的不良體驗(yàn)的問(wèn)題。這種功能也需要自動(dòng)駕駛芯片支持低功耗模式。
4.1系統(tǒng)低功耗模式設(shè)計(jì)
4.1.1 電源域
首先要介紹一下電源域概念,電源域是指同一個(gè)電壓域內(nèi),共享相同電源開(kāi)關(guān)邏輯的模塊合集。前面有提到,多電壓設(shè)計(jì)是降低功耗的一種方式,不同的電壓就會(huì)是不同的電源域。對(duì)于現(xiàn)在功能比較復(fù)雜的SoC而言,多電源域設(shè)計(jì)是必須的選擇。
4.1.2 基于多電源域的低功耗模式設(shè)計(jì)
前面提到自動(dòng)駕駛芯片的應(yīng)用場(chǎng)景,如果要支持低功耗模式,如何降低功耗?整體思路就是要把該模式下不需要用到的模塊做關(guān)電處理,以節(jié)省動(dòng)態(tài)功耗和靜態(tài)功耗。而對(duì)于無(wú)法做關(guān)電處理的模塊,我們保留其供電,但是在供電狀態(tài)下,選擇該模塊的低功耗模式以達(dá)到最多的功耗節(jié)省。比如memory,我們需要用到連接到LPDDR的DRAM顆粒保存軟件?,F(xiàn)場(chǎng)的信息,RAM的特性是一旦下電,數(shù)據(jù)就會(huì)消失,所以我們會(huì)采用保存其數(shù)據(jù)不消失但最省電的一種功耗模式-Retention模式。之前我們還提到,SoC的功耗管理模塊是一個(gè)以一個(gè)處理器為核心的小系統(tǒng),所以該場(chǎng)景下需要該處理器保持運(yùn)行,以監(jiān)測(cè)外界的喚醒信息及幫助其他處理器核快速恢復(fù)現(xiàn)場(chǎng)。之前介紹了電源域,電源域中通常會(huì)有一個(gè)常電(Always-On)電源域,該電源域享有最高的電源等級(jí),即在所有電源域中它掉電的優(yōu)先級(jí)最低。低功耗模式下,該處理器要在上電狀態(tài),所以該處理器處于Always On電源域。處理器要運(yùn)行,還需要內(nèi)存來(lái)及時(shí)讀寫(xiě)變量,所以該處理器要使用的SRAM也是在電狀態(tài)。此外,還要有GPIO作為接收喚醒中斷信息的源頭,該GPIO收到喚醒中斷信息并將其傳給處理器,處理器接收到喚醒中斷后啟動(dòng)其恢復(fù)現(xiàn)場(chǎng)程序。所以總的來(lái)說(shuō),該低功耗模式下需要一個(gè)管理功耗的子系統(tǒng)處于運(yùn)行狀態(tài)和DRAM顆粒處于Retention模式,其中子系統(tǒng)應(yīng)包括一個(gè)處理器核,一塊運(yùn)行程序的內(nèi)存,用于接收喚醒信號(hào)的GPIO,用于與PMIC通信的接口,及用于聯(lián)通各個(gè)子模塊的內(nèi)部總線等。這樣的一個(gè)功耗管理小系統(tǒng)加DRAM顆粒retention狀態(tài)的設(shè)計(jì)即可滿足在耗電量極低的情況下快速喚醒整片SoC的需求。示意圖如圖7,其中亮黃色為功耗管理小系統(tǒng),處于Always-On電源域。除此之外,有一路供電給到DDR PHY以保持DRAM的Retention狀態(tài)。
圖7
結(jié)語(yǔ)
本文對(duì)自動(dòng)駕駛芯片的功耗管理做了一個(gè)簡(jiǎn)單的介紹,除了上面提到的部分,還有很多可以節(jié)省出功耗的方法。芯片只是這個(gè)行業(yè)鏈上的一個(gè)部分,整個(gè)系統(tǒng)的功耗控制才是最終的目標(biāo),需要每個(gè)環(huán)節(jié)上的人做出努力。
審核編輯:湯梓紅
評(píng)論
查看更多