摘 要: 分區操作系統是綜合化航空電子領域中的核心技術。隨著單核性能極限的到來,處理器結構向著多核發展。將兩者結合起來,在多核分區操作系統的基礎上研究分析多核處理器結構為分區操作系統帶來的影響。經分析實驗數據得出多核處理器結構在多核處理器中共享Cache結構和內核中臨界資源并發訪問兩方面對分區操作系統產生影響。
關鍵詞: 多核;分區;操作系統
綜合化航空電子IMA(Integrated Modular Avionics)系統是第四代航空電子的發展方向。綜合化航空電子致力于最大化利用計算機硬件資源,減少航空電子設備對飛行器的負載,提高飛行器運載能力。
分區機制是綜合化航空電子的核心技術。分區機制是指將系統資源(內存、I/O等)進行配置,建立多個分區,分區中包含系統所分配的資源,分區與分區之間相互隔離。分區包括時間分區和空間分區。時間分區是指系統為分區之間提供時間維度的隔離,分區都有屬于自己的處理器獨立使用時間,并且時間不受其他分區影響;空間分區是指系統為分區之間提供空間維度的隔離,空間包括內存地址空間及I/O地址空間。通過空間分區隔離技術分區無法訪問本分區外的空間資源,而外分區同樣無法訪問本分區內空間資源。不同應用運行于不同的分區內,應用之間由于分區間的隔離而無法感知到其他分區應用的存在而認為獨享整個硬件資源。所以通過分區機制可以實現將運行于不同硬件上的應用運行于同一硬件平臺,并且相互之間互不影響,從而實現綜合化航空電子系統。
單核處理器已經達到性能瓶頸,無法靠增加頻率、帶寬帶來性能的提升。處理器結構正向多核發展。處理器這種結構上的變化在多方面影響操作系統的設計與實現,比如多核處理器系統中任務并發訪問臨界資源以及多核處理器結構中Cache一致性等。
多核處理器在硬件層面的變化會影響到操作系統及相關應用,本文通過實驗分析了多核結構帶來的影響。
1 多核分區操作系統
1.1 LESOS操作系統
LESOS是北航嵌入式實驗室一款多核分區操作系統。該操作系統在硬件上支持現在常見的多核處理器SMP(Symmetrical Multi-Processing)結構,在軟件上支持線程、進程、虛擬內存管理等功能。系統中相應的參數如表1所示。
本文后續工作都基于此操作系統完成。
1.2 分區模型
分區操作系統中,分區是資源的載體,任務是操作的載體。系統為分區分配其所需的資源,如內存、I/O、處理器執行時間等;分區則通過具體的任務完成相應的功能。一個分區中包含有若干不同的任務,每個任務有不同的任務優先級;分區內部的所有任務共享此分區內部資源。系統中每個任務屬于且只能屬于一個分區,任務不能脫離分區單獨存在。
1.3 分區調度
雙層調度模型選擇一個要執行的任務,首先需要在分區一級進行調度,選擇相應的分區作為候選分區,然后在候選分區的所有任務中選擇相應的任務作為候選任務。由于在調度過程中需要在兩個級別進行兩次選擇,所以稱為雙層調度。
首先在分區內部的調度中,調度器的調度單位是任務。此層調度使用的是基于優先級搶占式的調度算法,目的是使分區內部重要的任務能夠及時得到處理。調度器在所需調度的分區內部所有的任務中選擇優先級最高的任務作為此次調度的結果。
其次在分區之間的調度中,調度器的調度單位是分區。此層調度使用靜態時間片輪轉調度算法,目的是使各個分區之間都能夠得到相應的運行時間,不會因為某些分區的異常而導致其他分區無法運行。調度器依據當前系統時間以及靜態調度表選擇適當分區作為此次調度的結果。
最后為了支持多核處理器,調度器為每個處理器核心維護一張靜態調度表,這樣每個處理器可以在自身的靜態調度表中進行調度,從而避免相互影響。每個處理器需要獲得一個要執行的任務時,首先通過處理器本身的靜態表進行分區調度選擇合適的分區,然后在選中的分區中進行分區內部的任務調度選擇出合適的任務,此任務就是處理器下一個要執行的任務。
2 測試及數據
多核處理器與單核處理器結構上的不同會影響操作系統及上層應用程序的行為、性能。本文在前述工作的基礎上通過以下實驗研究分析多核處理器結構為分區操作系統所帶來的影響。
2.1 測試環境
本文的實現工作是基于Freescale的HPCNet-8641D平臺。平臺中兩顆PowerPC E600處理器運行于SMP模式。平臺基本參數如下:處理器頻率1 GHz,系統總線頻率400 MHz,內存512 MB。兩顆處理器中分別包含指令、數據為32 KB的一級Cache以及共享1 MB的二級Cache。此外,平臺還有Dual-UART、千兆以太網卡等外設接口。
2.2 多核分區對Cache的影響
由于多核處理器結構從物理層面上引入了共享Cache,所以本文設計以下實驗分析多核處理器結構在Cache方面對上層應用的影響。
首先,在單核分區操作系統上分別執行不同大小數據量的讀、寫、拷貝任務,測試訪問不同大小數據量的相關操作執行時間。因為在多核處理器上,Cache分為兩級,一級為32 KB處理器本地Cache,以及共享1 MB的二級Cache,所以在設計實驗時將數據量分為兩類,一類是一級Cache內不同數據量的訪問測試,另一類是大于一級Cache大小數據量訪問的測試。其次,在多核分區操作系統上處于不同處理器上的分區同時運行上述任務,收集相關測試數據。最后,將兩者同性質的數據進行比較,結果如圖1~圖6所示。
通過以上數據可以得出以下幾點結論:(1)對于一級Cache容量(32 KB)大小以內的數據訪問,單核分區系統與多核分區系統執行性能相差無幾,這是因為此時對數據的訪問大多集中于分區所在處理器本身的Cache中,所以多核分區性能并沒有受到影響;(2)當任務訪問數據量大于一級Cache容量(32 KB)后,多核分區中的數據訪問任務性能要略低于單核分區中相關任務的性能。這是因為此時分區同時運行在不同的處理器上,分區中數據訪問任務存在對共享的二級Cache的爭用,導致分區數據訪問過程中二級Cache命中率降低,從而引起多核分區中數據訪問性能下降。
2.3 多核分區間對鎖的競爭
在多核處理器結構系統中,運行于不同處理器上的分區會對某一臨界資源并發訪問。操作系統為保證此種并發訪問結果的一致性,需要加鎖以保護臨界資源。在訪問相應臨界資源時,任務需要先獲得相應互斥鎖,然后再對資源進行訪問、修改,最后釋放互斥鎖。以下實驗研究分析多核處理器結構中增加鎖開銷帶來的影響。
首先,構造分區任務,分區任務在執行過程中循環調用malloc函數,申請1 MB的內存,然后調用free函數釋放剛申請的內存,在任務執行過程中分別統計調用malloc及free函數所使用的時間。其次,按照不同的分區之間相關系數將構造的分區任務分別運行于不同處理器的分區之中。最后,測試不同用例中分區任務的運行情況,統計、分析實驗數據。
實驗按照以下方式構造不同相關系數的分區任務,相關系數如圖7所示。不同處理器上的兩個完全相同的分區同時運行,此時兩個分區由于行為完全一致,所以兩個分區之間的相關系數為1。然后將一個處理器上的分區與之前一個分區錯開20%的執行時間,兩個分區之間只有80%的重疊部分,這樣兩個分區之間的相關系數為0.8。依此類推,當兩個分區執行時間完全不重疊時,給定時間內只有一個分區運行不會受其他分區影響,所以此時分區之間的相關系數為0。
經過上述兩個對比實驗可以得到以下兩點結論,首先,多核處理器由于在硬件上處理器之間需要共享Cache,并發運行的分區會對共享Cache爭用,從而影響其他分區的運行結果。此種情況由硬件結構決定,軟件可做工作很少。其次,多核分區系統在內核中保護臨界資源的鎖開銷會影響分區運行的性能。為了避免此種性能損失,系統在安排分區時可以進行優化,將相關性不高的分區安排在同時運行,避免高相關性分區同時運行,從而降低對臨界資源的爭用,提升系統性能。
參考文獻
[1] Airlines electronic engineering committee(AEEC).Avionics application software standard interface(ARINC specification 653-1)[S].ARINC, Inc., 2003.
[2] RUSHBY J.Partitioning in avionics architectures:requirements, mechanisms and assurance[R]. Technical Report NASA CR-1999-209347,SRI International,California,USA,1999.
[3] POWELL M L, KLEIMAN S R, BARTON S, et al. SunOS multi-thread architecture[A]. USENIX Winter Conference[C], 1991.
[4] KEPECS J. Lightweight processes for UNIX implementation and applications[A]. USENIX Summer Conference[C]. 1985:299-308.
[5] BLACK R, FLETCHER M. Next generation space avionics: a highly reliable layered system implementation[A]. IEEE, 2004.