• 沒有找到結果。

摘要

由於SOC (System On Chip)技術的進步,諸 如監控、量測、家電等各種不同的領域都有研發 人員採用 SOC 晶片製成各式各樣的嵌入式系 統。這些嵌入式系統都具有輕薄短小的特點,而 它們的問世所帶來的好處就是讓生活更方便、更 有效率。除了性能的優劣及功能的多寡外,功率 消耗也是設計嵌入式系統時的一個重要考量因 素。目前對嵌入式系統率消耗的研究多是從架構 設計、硬體電路、作業系統等方面著手。我們認 為在設計嵌入式系統時,每一個環節都應該盡力 避免無謂的功率消耗,而在設計過程中,開發應 用程式的階段顯然是較被忽略的一環。所以本論 文討論如何從應用程式的層次改善嵌入式系統 之功率消耗。

關鍵字:嵌入式系統、功率消耗

壹、緒論

為了讓生活更方便、工作更有效率,人們都 希望所用的工具、設備更輕便、功能更多、操控 連絡的範圍更遠。隨著VLSI 技術的進步,SOC 晶片變成可行[3, 4],並以嵌入式系統的形式逐 漸出現在日常生活、通訊、工業、醫療、軍事等 應用上。目前在SOC 嵌入式系統的應用方面,

以8 位元及 32 位元為主,8 位元系統已算是成 熟的設計,而32 位元的系統可說是方興未艾,

已經有許多 32 位元的嵌入式系統作成,例如 PDA、機上盒、大哥大、網路電話等,其它像家 庭娛樂、遠端監控也都陸續有32 位元的嵌入式 系統問世。

SOC 嵌入式系統的設計流程如圖一所示,要 得出好的設計,必需考量很多因素,包括:硬體 的考量(如 SOC 晶片的選擇、系統記憶體的配 置、IP 或介面 IC 的選用)、軟體的考量(如作業 系統的選擇、應用程式應達成的功能) [5]。而這 些考量因素所要求的目標除了使設計的產品具 有合適的性能及功能外,還希望產品的功率消耗

降至合理範圍內[6]。這是因為嵌入式系統所使 用之環境可能沒有方便的交流電源插座,而需要 以電池提供電源。如果系統耗電量過大,頻繁的 電池更換變成擾人的負擔,重要的工作如常因為 電池供電不足而中斷更是掃興。再者,32 位元 嵌入式系統中很重要的一項功能就是無線傳輸 [1],這項功能在整體系統的功率消耗所佔的比 率相當大。所以功率消耗是設計嵌入式系統時的 一個重要考量因素。

圖1:SOC 嵌入式系統的設計流程 貳、目標

目前所看到的研究多是從架構設計、硬體電 路、作業系統等方面對 SOC 的功率消耗進行改 善[7, 8, 9, 10]。其中包括時脈的閘控、Vdd電源 的定時關閉、匯流排的架構設計、記導體的讀寫 策略、及動態的電源管理等。我們認為在設計嵌 入式系統時,每一個環節都應該盡力避免無謂的 功率消耗,而在設計過程中,開發應用程式的階 段顯然是較被忽略的一環。因此我們針對「如何 從應用程式對嵌入式系統進行節能」進行較深入 的研究。

我們針對以 SOC 晶片配合週邊介面的整體 定規格

軟硬體分割

軟體合成 硬體合成

軟硬體共同模擬/驗証 設計完成

作業系統 硬體平台

驅動程式 驅動程式

驅 動 程 式 應用程式 應用程式 應用程式

驅 動 程 式

(a)

作業系統 硬體平台 驅動程式

應用程式 應用程式

(b) 嵌入式系統進行功率消耗的研究,在這樣的嵌入

式系統中,硬體架構及電路已然成形,作業系統 及相關驅動程式亦已決定,圖二(a)之陰影區所示 者即為已定案之部份。我們專門針對圖二(a)中未 加陰影的部份(即應用程式)進行功率消耗的改 進。另外,雖然在實務上常透過系統組態的規劃 使系統的性能及功率消耗達到最佳化,如圖二(b) 粗線所框之區域即為經過組態規劃的結果,但因 為這道步驟和應用程式的寫法無關,所以在這項 研究中也不將系統組態的規劃列入考慮。

圖2:硬體平台、作業系統、驅動程式、及應用 程式

所以,假定系統電路中有 n 個功能方塊,若 將各功能方塊視為不同的電路模組 bi (i=1 to n),且各電路模組的功率消耗為 p(bi),我們的目 標就是透過應用程式將整個嵌入式系統的功率 消耗 Pe降至最低,即

Pe = min ( ) (1)

參、實驗方法及過程 一、軟硬體平台

我們的實驗平台採用市售的SOC 開發系統[1, 2],硬體部份包括 S3C4510 CPU、SDRAM、Flash ROM、擴充記憶體、Ethernet、UART、USB、

CODEC (語音模組)、LCD 模組、CF 卡、及影像 模組,作業系統則是採用 uCLinux。編譯工具以 GNU Tool Chain 為主。另外,還利用電流量測 模組針對SOC 開發系統中不同的功能方塊進行 個別測試。 電流量測模組之等效電阻為 Z,用 來將電流值轉成電壓訊號並以數位電表(DVM) 顯示,所顯示之電壓值 V 和待測模組之消耗電 流I 呈 V = I × Z 的關係,若將硬體平台之電路以 模組的形式表示,而且我們準備量測某個電路的

消耗功率,則待測電路、其它電路模組、電流量 測模組、及顯示用之數位電表間的關係可以用圖 3 表示,其中的 Vdd 及 Gnd 分別表示電源的正 負端。

二、實驗過程

圖 4 為本項研究之應用程式開發流程,

透過 make 檔的協助,編譯程式編譯連結 library 可得出 image 檔,顯然這個流程和典 型的應用程式開發過程一樣。

我們所進行的實驗基本上分成兩個階 段:功率消耗的分析及應用程式最佳化。在 第一階段量測不同的電路模組在待機狀態 和工作狀態下所耗用的功率,同時監讀待測 模組在工作狀態下對其它模組的影響。就第 一階段所得的結果進行分析後,我們就可以 進入第二階段,也就是應用程式的最佳化。

圖3:電流量測模組與實驗平台 Vdd

電流量 測模組

DVM

Gnd

電路 模組 跳線

電路 模組 跳線

=

1ton i

bi

p( )

make

C/C++ 應

用程式 Library Make 檔

Image

gcc ld

34 圖4:應用程式之開發流程

應用程式最佳化的主要策略包括:(a)耗 電量大的工作優先完成,(b)所有的工作盡量 以較短的時間完成,(c)所有的工作盡量以較 省電的方式完成。

讓耗電量大的工作優先完成的基本原則 就是一旦該工作啟動後,就讓它一氣呵成,

盡量不要打斷它。因為無線傳輸所耗用的功 率在整個系統的功率消耗中佔了相當的比 率,因此這項策略對於無線傳輸而言尤其重 要。

要讓工作儘快完成的方法包括:

(1).

以資料代碼代替資料

例如在無線傳 輸前,資料接收端預建資料檢視表,

進行傳輸時所傳送的是資料代碼而非 資料,資料接收端收到資料代碼後再 以資料代碼為索引,到資料檢視表中 取得正確的資料。

(2).

以巨集代替副程式

減少叫用副程式 時在堆疊存放返回位址,及結束副程 式時由堆疊取出返回位址所耗用的時 間。

(3).

以較快的指令代替較慢的指令

例如 在數學運算時,乘除指令所耗用的時脈 數遠比加減指令大,所以盡量用加減指 令代替乘除指令。此外,有些乘除的運 算可以直接用移位指令完成,而移位指 令的速度不但比乘除指令快詪多,也比 加減指令還快。

(4). 減

少對記憶體的存取

將經常存取的 變數置於暫存器中,而非記憶體中,以 C 語言為例,以下的宣告即可將變數 x 放在暫存器中。

reg int x;

當某項工作以較短的時間完成時,事實 上它就是以較省電的方式完成。但我們實現 第三項策略的方法還包括:

(1).

以較省電的路徑完成任務

例如,可以 進行有線傳輸時就以有線傳輸代替無 傳輸。

(2).

減少不必要的

LCD

顯示

這是因為

LCD 電路模組在顯示圖形或字元時所 耗用的功率比不顯示時高。

(3).

以快速演算法代替慢速演算法

若無法 找到同樣精確且速度較快的演算法,只 要不影響系統的運作,則速度較快但精 確度稍差的演算法也是很好的選擇。

以上三個讓系統省電的方法都可以經由 應用程式來完成。

圖 5 為本項研究所使用之硬體平台。圖 中 包 括 S3C4510-based 電路板、ICE、及 DVM,應用程式編譯成 IMAGE 後係載入電 路板上的SDRAM 中。

圖5:以應用程式進行功率消耗所用之平台

肆、結果與討論

我 們 針 對 SOC 開 發 系 統 中串 列 介 面 、 CODEC、及 Ethernet 介面、LCD 顯示等功能方 塊分別測試。在不同條件下對各功能方塊所量測 之電流值以mA 為單位分別表示如下。

表一串列介面

等待接收資料 串列介

開機後待 機狀態

連續傳

送資料 輪詢模 式

中斷模 式 UART 186 186 186 186

CPU 840 1060 1064 1030 記憶體 91 431 444 426

表二 CODEC 介面 CODEC 介

開機後待 機狀態

程式 啟動

開始 錄音

開始 放音 CODEC 模 34 50 51 51

CPU 841 1058 1062 1062 記憶體 90 430 428 428

表三 Ethernet介面 Ethernet介面 開機後待

機狀態

接收封 包

傳送封 包 Ethernet模組 673 674 674

CPU 840 1040 1038 記憶體 90 430 429

由表一至表三中,我們可以發現各功能模組 一旦由待機狀態進入工作狀態,功能模組本身、

CPU、記憶體的耗電量幾乎是固定值。

改善方法之一就是使不用的電路回到待機 狀態。以表四的LCD 顯示功能為例,由標示陰 影的欄位可看出,經由程式來強迫LCD 恢復待 機可節省LCD 模組之功率消耗達 1/3。

表四 LCD 顯示 LCD 顯

示 開機後待 機狀態 填滿

字元 填滿 空格

填滿字元數 秒後強迫恢 復待機 LCD 模

組 12 18 17 12 CPU 841 1045 1045 1032 記憶體 90 438 439 442

相關文件