?

基于DVFS的低功耗智能電表設計與應用

2022-08-12 09:30季海濤孫孟玉張云端張芳敏黃炳潔
工業儀表與自動化裝置 2022年4期
關鍵詞:空閑電表功耗

季海濤,孫孟玉,張云端,張芳敏,黃炳潔

(1.上海電力大學,上海 200090;2.江蘇林洋能源股份有限公司,江蘇 南通 226200)

0 引言

在綠色發展和可持續發展的背景下,隨著嵌入式設備的不斷發展,嵌入式設備的功能不斷增加,所用資源越來越豐富,隨之而來的功耗也在不斷增加。智能電表在電力系統中發揮著重要的作用,且使用廣泛、數量巨大、功能豐富,不得不考慮智能電表在使用過程中的功耗問題。

文獻[1]簡單介紹了集成電路工藝、硬件和軟件對嵌入式系統功耗的影響并給出了相應的建議。文獻[2]利用超時和斷續中斷配合硬件定時器充分利用CPU資源,此外將睡眠函數放在循環中,更多的進入睡眠降低功耗。文獻[3]中溫度采集系統,任務較為單一,采集一次之后就立馬切換到低功耗模式,最大程度上降低系統功耗,但是可復制性不高。文獻[4]提出一種新的自適應DPM(Dynamic Power Management)預測策略, 在面對長空閑和短空閑時, 系統都能自適應調整, 提高了預測準確度, 從而降低了功耗。文獻[5]提出了低速模式、運行模式等切換來降低功耗同時基于動態電壓頻率調節(Dynamic voltage frequency scaling,DVFS)策略使用累計迭代來預測負載信息,進而動態改變電壓頻率來降低功耗。文獻[6]提出了BP-DVFS策略,基于神經網絡在預測下一階段的CPU利用率,但此方法應用在嵌入式系統中消耗CPU資源太大,不太合適。智能電表中采用低功耗技術不僅可以電表中的能量損耗,節能環保,還可以延長智能電表壽命使得免于頻繁更換[7],進而降低智能電表的使用成本。

1 CMOS電路功耗來源

在CMOS電路中,主要的功耗來源于兩部分:動態功耗和靜態功耗,其中動態功耗又分為開關功耗和短路功耗,短路功耗通常是開關功耗的1/20[8-10]。

系統整體功耗P計算公式為式(1):

P=Pdynamic+Pstatic

(1)

其中動態功耗的計算公式(2)為:

Pdynamic=αCV2f

(2)

其中靜態功耗的計算公式(3)為:

Pstatic=IstaticV

(3)

其中:Pdynamic為動態功耗;Pstatic為靜態功耗;C表示電容;α為電路翻轉因子;V表示電壓;f為時鐘頻率;Istatic表示靜態電流之和。

動態功耗在CMOS電路中起決定性作用,它占了全部功耗的一半以上。由上述的分析可知除了一些工藝和封裝上的設計和改進,改變電壓和頻率對降低功耗來說尤為明顯。該文一方面改進了工作模式的切換方法,讓系統更長時間的運行在低功耗模式,另一方面降低了芯片的電壓并采用頻率調節的方法來進一步降低系統功耗。

2 功耗動態管理方案

2.1 工作模式切換

根據任務的優先級不同,將任務分成四種任務屬性,優先級從高到低分別是:偶發任務,周期任務,延期任務和空閑任務。根據功耗的大小不同,將處理器設置了三種工作模式,功耗由高到低分別是:正常(Active)模式,空閑(Idle)模式,睡眠(Sleep)模式。根據預測的空閑任務的時間長短,系統會選擇符合條件的工作模式來降低功耗。在正常模式下,系統運行在高速時鐘下,所有數字和模擬外設都高速運行;在空閑模式下,降低降低工作頻率,通過條件判定是否進入下一模式;在睡眠模式下,芯片自動關閉CPU時鐘,Flash進入STOP模式,硬件自動關閉RCHF、PLL、XTHF、TRNG,SVD、比較器、ADC仍可以在 SLEEP 模式下工作。數字外設模塊可以使用RCMF、XTLF、RCLP等低速時鐘繼續工作,需要恢復信號使其重新運行。工作模式切換見下圖1。

圖1 工作模式切換圖

根據空閑任務的時間長短從而進入不同的工作模式,實現工作模式的動態切換,方案的具體實現步驟如下:

(1)配置各個任務模塊的運行模式和優先級;

(2)當用戶任務模塊在某一時刻因等待事件或延時而被掛起或阻塞時,空閑任務立刻獲取CPU資源;

(3)空閑任務開始執行后,立即降低CPU運行頻率;

(4)然后空閑任務判斷是否具有進一步降低功耗的條件使CPU睡眠。計算每個用戶任務當前預計阻塞的時長,周期任務和延期任務取剩余延時時間,偶發任務取32位最大值,然后取其中最小值作為睡眠時間;

(5)睡眠時間小于限定的最小值,則CPU不進入睡眠;計算的睡眠時間值介于最小值和最大值之間,則CPU取計算時間進入睡眠模式;睡眠時間大于限定的最大值則取最大值,則CPU進入睡眠模式;

(6) 將睡眠時間值配置到定時器。該定時器計時到后將觸發中斷喚醒CPU。關閉任務調度器,維持部分外設正常工作,并使CPU進入睡眠模式,等待中斷喚醒;

(7)定時器計時到時喚醒后,CPU退出低功耗狀態,打開任務調度器,恢復任務調度。退出空閑任務前恢復CPU全速運行頻率;

(8)停電、按鍵、外部通信等突發事件使用的外設配置到CPU的喚醒源中,在CPU睡眠期間當事件發生時,可立即喚醒CPU,確保系統的實時性不受睡眠的影響。

實施步驟流程圖見下圖2。

圖2 實施步驟流程圖

2.2 動態電壓頻率調節

動態電壓頻率調節DVFS是目前嵌入式設備降低功耗中使用最廣泛,行之有效的著名方法。對于嵌入式設備來說,處理速度不像高性能處理器那么重要,只要在規定的時間完成處理即可, 動態電壓頻率調節可以有效的降低功耗且保證嵌入式設備的性能[11-12]。

典型DVFS系統工作流程如下[13-14]:

(1)獲取與系統負載有關的信號,計算當前系統負載;

(2)根據當前系統負載,預測系統之后所需的計算性能;

(3)將預測的性能轉換成需要的頻率,之后進行頻率和電壓的調整。

文獻[15]提出了使用DVFS技術后所節約的功耗為式(4):

EDVFS=Psysf1t1+Pidlef1tdelay-Psysf2(t1+tdelay)

(4)

EDVFS=(Psysf1-Psysf2)t1-(Psysf2-Pidlef1)tdelay

(5)

其中:Psysf1是頻率在f1下的系統功耗;Psysf2是頻率在f2下的系統功耗;Pidlef1是空閑任務產生的功耗;t1是芯片處于高速運行的時間;tdelay是芯片處于空閑狀態運行的時間。

將Psysf1分成CPU在f1下的功耗Pcf1和其他外設的功耗Pd,

將Psysf2分成CPU在f2下的功耗Pcf2和其他外設的功耗Pd,得:

EDVFS=(Pcf1-Pcf2)t1-(Pcf2+Pd-Pcidle-Pdidle)tdelay

(6)

EDVFS=(Pcf1-Pcf2)t1-((Pcf2-Pcidle)+(Pd-Pdidle))tdelay

(7)

EDVFS=ΔPCt1-ΔPEtdelay

(8)

EDVFS=ER-EE

(9)

其中:ER=ΔPCt1,EE=ΔPEtdelay,ΔPC=(Pcf1-Pcf2)代表頻率從f1降到f2時,節約的功耗;ΔPE=((Pcf2-Pcidle)+(Pd-Pdidle))是應用DVFS后增加的功耗??芍孌VFS發揮降低功耗的作用,必須滿足EDVFS=ER-EE>0。

該文主要利用操作系統的各個任務模塊實時的CPU利用率,再記錄下頻繁使用的任務中部時的CPU利用率,據前一時間片和任務中部的利用率按照一定的比例來預測下一時刻的CPU利用率,進而轉換成相應的頻率電壓。簡易示意圖見下圖3。

圖3 動態電壓頻率調節示意圖

根據綜合而來的CPU利用率,再事先設定好CPU利用率對應的頻率和電壓,通過簡單的PLL單元進行倍頻處理,簡單的PLL單元倍頻示意圖(見圖4),得知,輸出的時鐘頻率是基準時鐘頻率的N倍。再利用DC-DC變換器來進行升壓和降壓處理。將計算得出的新電壓和頻率,再反饋到芯片中,以新的頻率電壓來完成之后的工作。

圖4 PLL單元倍頻示意圖

3 實驗驗證

3.1 動態功耗管理方案在智能電表上應用

該智能電表采用雙芯管理方案,其中管理芯是復旦微的低功耗芯片FM33A06XEV,計量芯是鉅泉HT5017芯片,操作系統選擇裁剪后的FreeRTOS。實現如下功能:精確計量電能;測量電壓、電流、功率、頻率等多種實時電參數;采用短碼式液晶顯示;具有開表蓋開尾蓋、強磁等多種事件檢測、記錄功能。搭載可插拔電池,實現下電按鍵后顯示。該智能電表為采用先進的超低功耗大規模集成電路技術及SMT工藝制造的高新技術產品,關鍵元器件選用國際知名品牌的長壽命器件,提高了產品的可靠性和壽命。復旦微芯片FM33A06XEV應用在該智能電表中,工作電壓在工作時保持恒定,由傳統的5 V降低到3.3 V。智能電表框圖見圖5。

圖5 智能電表框圖

根據上文中的任務屬性和智能電表中的任務模塊,將不同的任務模塊,設置成相應的任務屬性,進而完成工作模式的切換。

(1)系統管理任務模塊:主要是處理實時性要求高的突發事務,使系統有能力對外部請求或變化的實時響應。將其配置為偶發任務;

(2)計量任務模塊:主要是負責與計量芯之間的通信信道維護,請求數據的接收與解析處理,應答數據的組幀與發送。將其配置為周期任務;

(3)顯示任務模塊:顯示電表狀態、電量、時間等信息,執行完一輪顯示后,延遲固定一段時間,將其配置為延期任務;

(4)通信任務模塊:主要是負責與電表外部通信信道維護,請求數據的接收與解析處理,應答數據的組幀與發送。接收來自外部突發的通信請求,上位機通過RS485通道,采用DLMS協議抄讀和配置電表中的各項數據。通信完成后,通信任務立刻進入到等待狀態,直到通道上接收到新的數據。將其配置為偶發任務;

(5)電表業務任務模塊:主要是處理實時性要求不高的事務和數據維護。負責電表相關的業務處理。將其配置為周期任務;

(6)空閑任務模塊,主要負責系統閑時的功耗管理,CPU運行頻率的調節和運行模式的切換??臻e任務模塊時鐘處于等待或執行狀態,當上述任務模塊都不在運行時,空閑任務模塊獲得CPU資源運行,此時若有一個模塊進入就緒狀態時,空閑任務立刻釋CPU,進入等待狀態。

將智能電表中的系統任務、顯示任務、計量任務、通信任務、電表業務任務和空閑任務的六個任務設置由高到低的任務優先級。利用智能電表中的高精度定時器來統計系統運行總時間CPU_RunTime,再打開FreeRTOS中的宏定義編寫相應的代碼來獲取任務運行的時間appStatus[id].runtime,再利用增量來計算單位時間內的各個任務的CPU利用率。再聯合頻繁任務中所記錄的CPU利用率,根據相應的計算比例得出該任務中的CPU利用率。由于該芯片的電壓在工作時間維持不變,故獲取CPU利用率后,利用PLL單元對工作頻率進行改變。在智能電表內部設定好各階段CPU利用率所對應的頻率,通過智能電表中的PLL單元對頻率進行更改。

3.2 方案驗證

3.2.1 工作模式切換

按上述智能電表任務模塊所設置的任務屬性,再根據圖2完成工作模式切換在智能電表上的應用。嵌入式處理器在不同工作模式下的智能電表整機功耗對比見下表1。

表1 智能電表不同工作模式下的功耗

3.2.2 動態電壓頻率調節

使用多功能標準表,采用220 V,60 Hz電壓來測量智能電表的功耗。智能電表中芯片電壓恒定3.3 V。同時,選取了校時、負荷記錄和廠內總清這三個具有代表性的任務中應用該文中的動態頻率調節,利用上位機發送操作指令,多次測量,監控記錄處于不同狀態下的功耗情況見表2。由表可知采用動態管理方案后校時事件功耗降低了41.30%,負荷記錄事件功耗降低了26.74%,而CPU利用率幾乎百分百的廠內總清事件,功耗幾乎沒有降低。在智能電表正式使用后,很少有CPU利用率百分百的情況,該方案可以有效的降低智能電表功耗,延長智能電表使用壽命。

表2 智能電表不同事件下的功耗

4 結束語

該文根據操作系統模塊化的設計理念,設計了一種基于操作系統模塊的動態功耗管理方案。根據預估空閑任務的時間長短,若空閑任務時間長度足夠,在保證完成空閑任務的任務的情況下,進行工作模式切換,盡最大可能降低系統的功耗。若空閑任務時間沒有達到切換工作模式的標準,根據各個任務模塊所占CPU的利用率,來預測之后的負載運行情況,進而匹配相應的頻率電壓并配置到系統中使用。在智能電表上應用該方案,實驗結果表明,該方案在較小的硬件代價成功實現,沒有占據過多的算力,一定程度上降低了功耗。未來將進一步建立更合適的模型,提升預測的準確率,從而使電壓頻率調節的更加合理,使系統延遲開銷更低,更好地降低功耗。

猜你喜歡
空閑電表功耗
基于任務映射的暗硅芯片功耗預算方法
電表“對”與“錯”歸類巧掌握
“鳥”字謎
西灣村采風
“蹦叭”跳動電表數
彪悍的“寵”生,不需要解釋
揭開GPU功耗的面紗
停電那點事兒
數字電路功耗的分析及優化
WLAN和LTE交通規則
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合