新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM big.LITTLE大小核架構在Linux和Android內核下多核調度算法

        ARM big.LITTLE大小核架構在Linux和Android內核下多核調度算法

        作者: 時間:2016-11-10 來源:網絡 收藏
        在2013年,big.LITTLE家族又增加了新的SoC實現,有2個Cortex-A15+3個Cortex-A7核的ARM的參考測試芯片TC2,以及在三星Galaxy S4手機中應用的Samsung-LSI的4個Cortex-A15核+4個Cortex-A7核的Octa-core芯片。Linaro在ARM的big.LITTLE SoCs上針對LinuxAndroid內核做了很多的性能優化(包括負載控制、針對big.LITTLE架構的性能和電源管理),以提高多核multi-core程序的能效,增加待機時間。最新的多核多任務的調度方法包括內核里交換器(或者說CPU遷移算法CPU Migration/IKS In Kernel Switcher)、全局任務調度(Global Task Scheduling,或者大小核MP/ big.LITTLE MP)。

        本文引用地址:http://www.104case.com/article/201611/317416.htm

        圖1. big.LITTLE SoCs的多核任務調度算法

        早期的big.LITTLE軟模型才去簇遷移或者CPU遷移(cluster migration或者CPU migration)調度算法,即軟件在核間切換,但不能把所有的核同時運行。最新的軟件模型,全局任務調度(Global Task Scheduling)能同時使能所有的核,直接控制各核間的線程分配。大小核切換是使用動態電壓和頻率調整(dynamic voltage and frequency scaling (DVFS))方法讓任務在高電壓的大核和低電壓的小核間切換,進而提高各種負載情況下的能效。核間任務切換時間為30微秒,而DVFS驅動每50微秒評估OS和核。GTS算法下會根據線程的負載進行負荷均衡。以上多核任務調度算法都是在內核層次進行的,因而不用對用戶應用程序進行任何修改。

        CPU遷移算法IKS – In Kernel Switcher (CPU Migration)

        IKS是Linaro開發的適用于對稱的Cortex-A7和Cortex-A15核組的芯片。每一對Cortex-A7和Cortex-A15核組在Linux內核里被視為虛擬的對稱核。線程在互斥的兩個對稱核里運行,即要么在高性能的Cortex-A15內運行,要么在低功耗的Cortex-A7核內運行,即最高性能只取決于Cortex-A15的核。IKS算法在Linux內核里已經實現,容易測試和產品化。

        圖2. IKS(4+4)和Cortex-A7和Cortex-A15核組架構圖

        全局任務調度(Global Task Scheduling ,大小核MP/ big.LITTLE MP)

        ARM開發的GTS算法也在Linaro里被稱為big.LITTLE MP。此算法下,所有的大小核在Linxu內核下都可見用于任務調度,日前的Linaro構建里都包含了該調度算法。

        圖3. GTS(4+4)和Cortex-A7和Cortex-A15核組架構圖

        相比IKS算法,GTS算法有如下的優勢:

        • 更精細的核間負載控制,因為調度器Scheduler能直接切換核間任務,內核的額外開銷減少從而減少功耗
        • 調度器Scheduler里的實現相比基于cpufreq框架的實現決策更快,相比IKS大概有10%的性能提升。
        • GTS支持非對稱的架構,如2個Cortex-A15核加上4個Cortex-A7核;
        • 可以同時應用所有的峰值處理能力,如圖3中的處理能力為4個Cortex-A15核加上4個Cortex-A7核的處理能力。

        big.LITTLE MP內核補丁能創建一個處理當前任務的Cortex-A15和Cortex-A7核列表,然后根據歷史負載統計分配并跟蹤每個任務并進行核間任務切換。高處理能力需求的往Cortex-A15轉移,而低處理能力需求的往低功耗的Cortex-A7核遷移。

        表1. big.LITTLE IKS vs big.LITTLE MP(GTS)內核調度算法比較

        big.LITTLE IKS CPU Migration

        big.LITTLE MP、GTS

        核配置

        Cortex-A15+Cortex-A7核對

        任意數量的Cortex-A15核+Cortex-A7核,并且可以同時運行。

        對內核影響

        最低限度的修改,修改只應用于governor

        對內核修改較多,包括調度器scheduler、流程標注等

        最大處理能力

        所有的Cortex-A15

        所有的Cortex-A15核+Cortex-A7核

        任務切換

        基于cpufreq框架

        直接使用scheduler,10%性能提升;

        可用性

        存在Linaro的每月構建里

        存在Linaro的每月構建里

        Kernel.org

        在3.11或者3.12里會存在

        在后續的幾個季度內會上傳

        以上的調度算法以Cortex-A15核+Cortex-A7核的多核SoCs為例,但更多的big.LITTLE SoCs可能采用ARM更新的Cortex-A57+ Cortex-A53的架構一樣適用。

        總結

        以上的big.LITTLE架構的任務調度算法已經在Linaro的構建里存在,并且有些算法在實際的系統中做了性能評估。如三星最新的Galaxy S4手機采用的是8核系統,即4個Cortex-A15核加上4個Cortex-A7核的系統已經采用基于簇的遷移算法。即便是采用性能最不經濟的cluster Migration算法在高通Qualcomm的多核Snapdragon系統中證明其能效的優越性。Samsung在Exynos 5中已經用Cortex-A7的能耗帶來了類似Cortex-A15級別的性能。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 茌平县| 云南省| 安西县| 南宁市| 临沂市| 彭水| 静宁县| 交口县| 利津县| 深水埗区| 封开县| 阿巴嘎旗| 张家界市| 台北市| 卢湾区| 胶南市| 政和县| 宜都市| 松溪县| 阿城市| 黄大仙区| 海兴县| 仁布县| 罗定市| 嘉荫县| 阿克苏市| 武隆县| 吉林省| 洛南县| 黄山市| 改则县| 射阳县| 库尔勒市| 蚌埠市| 赤峰市| 丰县| 鄄城县| 林州市| 连州市| 金堂县| 勐海县|