作者:Ann Steffora Mutschler
在編寫軟件時(shí),設(shè)計(jì)工程師如何確定它將在特定目標(biāo)平臺(tái)上消耗多少功率?雖然這個(gè)問(wèn)題看起來(lái)很簡(jiǎn)單,但答案并非如此。
Synopsys低功耗解決方案集團(tuán)技術(shù)營(yíng)銷總監(jiān)Cary Chin表示,該行業(yè)才剛剛開始發(fā)展在該領(lǐng)域
獲取一些數(shù)據(jù)的能力?!爱?dāng)我們能夠做到這一點(diǎn)時(shí),我認(rèn)為你會(huì)發(fā)現(xiàn)移動(dòng)應(yīng)用程序的編寫方式實(shí)際上與你在筆記本電腦上運(yùn)行的應(yīng)用程序不同,因?yàn)樗鼈儗⒏玫貎?yōu)化功能,并且可能會(huì)在緩存數(shù)據(jù)方面做不同的事情。
不過(guò),要達(dá)到這一點(diǎn)并不容易。ARM的操作系統(tǒng)架構(gòu)師Jason Parker表示,高能效軟件需要從一開始就成為設(shè)計(jì)的一部分?!霸O(shè)計(jì)師需要不斷問(wèn)自己,‘這是解決這個(gè)問(wèn)題最省電的方法嗎?’試圖將電源管理和效率改造到現(xiàn)有設(shè)計(jì)中是一項(xiàng)艱巨的工作,而且所有的銀彈在很久以前就用完了。多處理器設(shè)計(jì)為電源管理開辟了額外的技術(shù)和限制。
了解表面之下發(fā)生的事情是一個(gè)開始。線程和進(jìn)程是表示 CPU 執(zhí)行和可見(jiàn)內(nèi)存空間的軟件抽象。線程表示 CPU 的執(zhí)行狀態(tài),例如程序計(jì)數(shù)器、寄存器和標(biāo)志。他解釋說(shuō),進(jìn)程是受限的進(jìn)程內(nèi)存空間,供一個(gè)或多個(gè)線程在其中執(zhí)行,而MMU則用于提供此內(nèi)存。一個(gè)進(jìn)程中通??梢杂卸鄠€(gè)線程,并且它們都共享相同的數(shù)據(jù)。
在單核處理器中,CPU 由操作系統(tǒng)內(nèi)核調(diào)度程序在線程之間共享,執(zhí)行由線程調(diào)度管理,線程優(yōu)先級(jí)和時(shí)間切片和切換線程稱為上下文切換。相比之下,多處理器 (MP) 將多個(gè)高效 CPU 組合在一起,可以以比單個(gè)高性能 CPU 更低的總功耗提供更高的聚合性能,并提供更多的電源管理選項(xiàng),Parker 指出。
MP系統(tǒng)分為對(duì)稱系統(tǒng)和非對(duì)稱系統(tǒng)?!胺菍?duì)稱系統(tǒng)可以在不同的內(nèi)核上運(yùn)行不同的操作系統(tǒng),協(xié)同工作以提供整個(gè)系統(tǒng)解決方案。例如,智能手機(jī)具有用于 Android 用戶界面的 ARM CortexA8 應(yīng)用處理器,以及在 RF 調(diào)制解調(diào)器中運(yùn)行實(shí)時(shí)電話堆棧的不同 Cortex R4 處理器,以及用于圖形、視頻和低功耗音頻的附加內(nèi)核。這些系統(tǒng)的優(yōu)點(diǎn)是可以定制每個(gè)子系統(tǒng)的處理器和資源,以最小的功耗提供預(yù)期的性能。缺點(diǎn)是系統(tǒng)架構(gòu)通常是固定的,可能無(wú)法實(shí)現(xiàn)未來(lái)的要求,例如新的視頻格式。
同時(shí),對(duì)稱系統(tǒng)在相同的內(nèi)核上運(yùn)行單個(gè)操作系統(tǒng)內(nèi)核,并有一個(gè)連貫的內(nèi)存系統(tǒng)將它們連接在一起,Parker解釋說(shuō)?!癝MP 操作系統(tǒng)將同時(shí)運(yùn)行多個(gè)線程,旨在通過(guò)集群內(nèi)的核心分擔(dān)工作負(fù)載。結(jié)構(gòu)良好的代碼和算法是可并行化的,能夠利用多核的性能?,F(xiàn)有的代碼和串行算法可能無(wú)法利用多個(gè)內(nèi)核。SMP 操作系統(tǒng)中的電源管理系統(tǒng)將通過(guò)使用 DVFS 擴(kuò)展內(nèi)核的性能來(lái)控制功耗,并將關(guān)閉未使用/未充分利用的內(nèi)核。
當(dāng)今復(fù)雜的 SoC 包含 SMP 和 AMP 子系統(tǒng)的混合體,其功耗針對(duì)各自的任務(wù)進(jìn)行了優(yōu)化。例如,“多核Cortex A9系統(tǒng)為開放平臺(tái)操作系統(tǒng)提供了靈活性,其中未來(lái)的應(yīng)用需求是未知的,而LTE調(diào)制解調(diào)器的CPU要求在設(shè)計(jì)時(shí)是已知的,”他說(shuō)。
實(shí)現(xiàn)最佳核心利用率
但是,僅僅了解系統(tǒng)的結(jié)構(gòu)是不夠的。為了實(shí)現(xiàn)軟件對(duì)內(nèi)核的最佳利用率,應(yīng)實(shí)施某些技術(shù),同時(shí)牢記內(nèi)核利用率是由子系統(tǒng)分區(qū)以及系統(tǒng)代碼和算法的進(jìn)一步并行化驅(qū)動(dòng)的。Parker說(shuō):“操作系統(tǒng)調(diào)度器可以通過(guò)將線程及其數(shù)據(jù)保留在相同或本地CPU上來(lái)最大限度地提高執(zhí)行效率,而應(yīng)用程序軟件可以通過(guò)使用線程親和性來(lái)強(qiáng)制執(zhí)行。
最大限度地提高內(nèi)核利用率將推動(dòng)最大性能。然而,對(duì)于每個(gè)硅工藝來(lái)說(shuō),它可能不是最節(jié)能的解決方案,特別是那些具有電源管理功能的解決方案,當(dāng)所需的總軟件負(fù)載只是總性能的一小部分時(shí),可以優(yōu)化線程調(diào)度。例如,在一個(gè) CPU 上總負(fù)載為 80% 的雙核系統(tǒng)中,要問(wèn)的關(guān)鍵問(wèn)題是:
1. 內(nèi)核是否以 100% 的性能運(yùn)行一個(gè) CPU,而關(guān)閉第二個(gè) CPU?
2. 內(nèi)核是否以 50% 的性能運(yùn)行兩個(gè) CPU,頻率、電壓和總功耗較低?
Parker說(shuō),除了子系統(tǒng)分區(qū)之外,還有其他方法可以優(yōu)化軟件利用內(nèi)核的方式,但這取決于手頭的任務(wù),包括使用虛擬機(jī)管理程序?qū)⒍鄠€(gè)操作系統(tǒng)整合到單個(gè)CPU或集群上。此外,虛擬化操作系統(tǒng)的許多實(shí)例可以使用虛擬化分布在多個(gè)內(nèi)核上,例如在 Web 服務(wù)器的情況下。在天平的另一端,令人尷尬的并行問(wèn)題可以移交給 GPU,例如在圖像處理中使用 Open CL。
“中間是事情有趣的地方,”他說(shuō)?!艾F(xiàn)有系統(tǒng)如何跨多個(gè)內(nèi)核進(jìn)行擴(kuò)展?這是一個(gè) 30 年來(lái)一直存在的性能問(wèn)題,以及最近的電源成本問(wèn)題。對(duì)于現(xiàn)有代碼和幾個(gè)內(nèi)核(少于 《》 個(gè))來(lái)說(shuō),使用線程是一種可行的解決方案,但它們很難編程。測(cè)量和分析一如既往地是所需的工程技能。如果沒(méi)有對(duì)系統(tǒng)有很好的了解,就很難充分利用多核硬件。
何時(shí)使用多核
Synopsys 的 Chin 表示,如今一切都朝著多核的方向發(fā)展,“隨著處理器的頻率不斷提高,這推動(dòng)了技術(shù)的發(fā)展,并使電源問(wèn)題越來(lái)越嚴(yán)重。試圖通過(guò)在某些處理單元中將內(nèi)核復(fù)制到雙核、四核、六核或更多內(nèi)核來(lái)增加吞吐量或提高處理能力的想法一直是大多數(shù)處理器制造商所走的道路。在過(guò)去的 8 或 10 年里,人們一直在談?wù)撨@個(gè)問(wèn)題。
“因此,我們看到了很多處理器——英特爾酷睿 i5、酷睿 i7 等四核和六核處理器在今天非常主流,非常有趣,盡管移動(dòng)電子產(chǎn)品的架構(gòu)還沒(méi)有真正走上這條路。我想說(shuō),這更像是異構(gòu)內(nèi)核的想法,在這種內(nèi)核中,您將特定內(nèi)核用于更具體的任務(wù)。在移動(dòng)應(yīng)用程序中,對(duì)優(yōu)化處理器功能以滿足手頭特定任務(wù)的需求更大,“他指出。
但是,某些應(yīng)用程序在多核環(huán)境中的表現(xiàn)比其他應(yīng)用程序更好?!霸诜?wù)器場(chǎng)和移動(dòng)設(shè)備方面,你將看到的性能改進(jìn)之間的最大區(qū)別在于,在服務(wù)器場(chǎng)上,虛擬化、數(shù)據(jù)庫(kù)和谷歌搜索等應(yīng)用程序在算法上是并行化的,可以很容易地進(jìn)行線程化。當(dāng)你在云或服務(wù)器場(chǎng)環(huán)境中時(shí),你也有擁有很多很多用戶的好處,這為整個(gè)場(chǎng)提供了另一個(gè)層次的并行化和功能,“Chin說(shuō)。
在這些環(huán)境中,并行化并擁有盡可能多的內(nèi)核是有意義的,因?yàn)閱?dòng)服務(wù)器場(chǎng)的整個(gè)想法是提高利用率。“我們的想法是,如果可以的話,讓您的農(nóng)場(chǎng)以接近 100% 的利用率運(yùn)行,24/7,無(wú)論是在線金融應(yīng)用程序還是季節(jié)性圣誕節(jié)訂購(gòu)。你希望這與世界其他地區(qū)的使用相平衡,“他繼續(xù)說(shuō)道?!皩?duì)于移動(dòng)應(yīng)用程序,您只能在操作系統(tǒng)和要運(yùn)行的應(yīng)用程序中執(zhí)行一定數(shù)量的線程。在像智能手機(jī)這樣的東西上,這個(gè)想法不是讓它一直運(yùn)行。事實(shí)上,這個(gè)想法恰恰相反。你希望它盡可能少地運(yùn)行。
審核編輯:黃飛
-
處理器
+關(guān)注
關(guān)注
68文章
19897瀏覽量
235390 -
cpu
+關(guān)注
關(guān)注
68文章
11082瀏覽量
217164 -
服務(wù)器
+關(guān)注
關(guān)注
13文章
9797瀏覽量
88019 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7154瀏覽量
125641 -
線程
+關(guān)注
關(guān)注
0文章
508瀏覽量
20239
發(fā)布評(píng)論請(qǐng)先 登錄
如何多核實(shí)現(xiàn)算法?
《RT-Thread 內(nèi)核實(shí)現(xiàn)與應(yīng)用開發(fā)實(shí)戰(zhàn)—基于STM32》分享
嵌入式微內(nèi)核實(shí)時(shí)操作系統(tǒng)的Wolf測(cè)試怎么實(shí)現(xiàn)?
RT-Thread 內(nèi)核實(shí)現(xiàn)與應(yīng)用開發(fā)實(shí)戰(zhàn)指南
FreeRTOS內(nèi)核實(shí)現(xiàn)與應(yīng)用開發(fā)實(shí)戰(zhàn)指南
嵌入式微內(nèi)核實(shí)時(shí)操作系統(tǒng)分析與測(cè)試
嵌入式Linux內(nèi)核實(shí)時(shí)性研究及改進(jìn)
英特爾最小型內(nèi)核實(shí)現(xiàn)邊緣智能
如何利用C/C++編寫應(yīng)用程序加速內(nèi)核運(yùn)行
FreeRTOS 內(nèi)核實(shí)現(xiàn)與應(yīng)用開發(fā)實(shí)戰(zhàn)指南PDF電子書免費(fèi)下載

FreeRTOS內(nèi)核實(shí)現(xiàn)與應(yīng)用開發(fā)實(shí)戰(zhàn)指南
Linux內(nèi)核實(shí)現(xiàn)內(nèi)存管理的基本概念

評(píng)論