以前設計過power management的FSM。想把它總結出來,但是,每個chip的情形都不相同,要總結出它所有的規則是困難的。但我還是想把自己的經驗提供出來給大家參考,請大家多多指教! 如果有任何更好的方法或是觀念,歡迎留言給我,讓我也能學習到更好的方法。
我的想法裏,認為power management有一個大的觀念可以去思考,在此提出來。不見得每個都適用,主要還是要看你自己的系統真實的情形
。
Fist-In-Last-Out(FILO), 最先關的,最後醒。為什麼要這麼說,以下舉幾個例子來說明。
1. 降頻節省power :
如果你想降頻節省某一塊的power,你會怎麼做? 1). 降低頻率. 2). power domain由1.8V切換到1.3V。如果你想要恢復到原來的速度時,又應該怎麼做? 1). 1.3V切回到1.8V. 2). 恢復原來的頻率。
這不就是FILO嗎?很多地方幾乎都是用這個方法,這樣子做比較保守,但也相對的安全。FILO是個大規則,所有的行為都是按照這個原則下去規劃。
2. 不重要的比重要的先關:
在規劃power management時,不重要的永遠是第一個被關掉,這是因為如果發生錯誤時,也不會影響到整個系統。而醒過來時,則是按照FILO原則,重要的先醒,然後才是不重要的。(FILO規則)
3. 先關遠的,再關近的:
醒過來的順序則是相反,近的先醒,然後才是遠的。(還是FILO規則)
4. 四肢(interface、bus)先關,然後才是腦(CPU),醒過來時則是腦先醒、然後才是四肢。(FILO規則)
5. 有些人會把關power和reset一起處理。所以如果你確定要關power,那你就先reset,然後關power。醒來時,就先開power,然後再放開reset。
以上的例子,都是用FILO的觀念去規劃省電的機制。FILO並不能適用在所有的架構下,找出會讓系統穩定的方法,並確保glitch free,您就是找到一個適合的方法。
以上的觀念,希望能對你有所幫助。
沒有留言:
張貼留言