分配策略 基於AUTOSAR的任務分配策略

2021-10-16 04:32:50 字數 2678 閱讀 9743

隨著汽車電子應用程式對處理器效能需求的不斷提高,現代汽車電子系統中的電子控制單元(ecu)已公升級為多核結構.

多核結構處理器

在系統級設計中,汽車電子應用程式由若干構件(swc)組成. 每個構件實現了應用程式的某一特定功能. 若干構件通過相互協作共同實現應用程式的具體行為. 然而,在ecu設計中, 作業系統排程的物件卻是任務(task). 因此,在進行ecu配置時,須將構件內的可執行實體(runnable entity)對映到具體任務中,以供作業系統排程執行,這個過程被稱為"可執行實體到任務的對映"。

一種較為簡單的對映方法是將每個可執行實體單獨封裝為乙個任務, 簡稱方法1。但是如此大量的任務會使得系統被頻繁排程,增加系統的排程開銷。

另一種較為實用的方法是將擁有相同週期的可執行實體對映為乙個任務,簡稱方法2。然而,該方法忽略了可執行實體之間的依賴關係和資料通訊,且缺乏在對映過程中對任務實時性的分析。在實際中,可執行實體到任務對映主要根據autosar標準中關於任務生成的規範,依靠軟體工程師的豐富經驗來手動完成. 目前的自動對映方法(如方法1和方法2)還不能很好地滿足汽車電子系統對實時性的需求。

有沒有更優化更有效的方法來分配任務呢?思考研究一下:

在autosar架構中, 汽車電子應用軟體由構件(software component)組成. 構件的具體行為依靠可執行實體以及可執行實體之間的相互協作來實現. 通常情況下, 乙個構件包含乙個或多個可執行實體(runnable entity). 可執行實體是一段用於實現乙個簡單演算法或某一特定功能的程式**.

可執行實體之間的通訊一般分為構件內部的通訊和構件之間的通訊. 位於同一構件的可執行實體可以共享構件內部的變數, 而位於不同構件之間的可執行實體則只能通過埠通訊. 一般而言, 每個構件存在若干個埠(port), 這些埠或用於資料通訊, 或用於功能呼叫. 用於傳送資料或提供服務的埠被稱為p-port,而用於接收資料或請求服務的埠被稱為r-port.

構件之間的通訊關係

上圖中有兩個swcs, c1 and c2. c1裡面有3個runnables, c2裡面有3個runables. 其中a和b分別為構件c1和c2的內部變數, r1和r2共享資料a, r4和r5共享資料b.

再舉個acc自動巡航的例子:

acc: 自動巡航系統 automotive adaptive cruise control system

汽車電子巡航控制系統主要由6個構件組成, 分別為感測器資料收集目標物件選擇自由巡航控制跟蹤控制與加速仲裁巡航控制acc狀態機以及巡航控制acc車輛觀測器. 根據這6個構件的功能和通訊拓撲結構構建了39個可執行實體、3個觸發關係、7個構件間的資料通訊和23個構件內的共享資料,如上所示。

接下來就是正題了,如何把這些runnables分配到具體處理器可以排程的task裡面去呢?

rte觸發事件呈現出週期性,但由於任務搶占、任務阻塞等原因而有著明顯的抖動.因此,由這些rte事件所觸發的可執行實體也存在著明顯的抖動, 即抖動會從以上乙個可執行實體傳遞到下乙個執行實體.

可執行實體的執行順序

很容易理解:將不同週期的可執行實體對映到乙個任務內,將會使任務被頻繁排程.

a是正常觸發執行,b為被阻塞後,會明顯存在抖動現象。

減少抖動時間減少阻塞時間減少排程頻繁度減少資料通訊量

對於目標1

具有觸發關係的任務將會被合併到乙個任務中,從而消除觸發呼叫帶來的任務抖動。

對於目標2

將兩個存在共享變數的可執行實體對映到乙個任務中,那麼這個共享變數就成為了任務的內部變數. 在任務內部,可執行實體順序執行,從而避免了阻塞。

對於目標3

一般而言,順序觸發的可執行實體都具有相同的週期. 將其對映到乙個任務之後,任務的週期不變. 在任務每一次排程中都會將其中的可執行實體順序執行一遍, 而非單獨排程每個可執行實體,從而減少了系統排程的頻率.

對於目標4

如果可執行實體之間的資料通訊在任務內部進行,那麼系統的通訊開銷將會減少.

當然也可以數學建模,通過ipl(整數線性規劃)來自動優化分配策略,過程比較數學,這裡就不展開了,有興趣的可以自己搜尋相關**來了解學習。

基於AssetBundle的資源分配策略

unity的assetbundle打包機制給予我們很大的靈活性,我們能自由地將asset分配到任意乙個assetbundle包。但是在進行專案資源管理時,還是有一些規則可以參考的 主要通過資源的型別來進行分組,這樣對於不同的應用平台都具有一定的適用性。比如對於audio檔案的壓縮設定,在osx和wi...

基於Xml 的IOC 容器 分配解析策略

xmlbeandefinitionreader 類中的doloadbeandefinition 方法是從特定xml 檔案中實際載入bean 配置資源的方法,該方法在載入bean 配置資源之後將其轉換為document 物件,接下來呼叫registerbeandefinitions 啟動spring ...

分配策略 全馬 半馬的比賽體能分配策略

文 徐國峰 有不少跑者習慣先決定目標成績,再計算配速,用來分配全馬賽事中的體能。但我會建議盡量不要拿 配速 來當作比賽的體能分配依據,這樣會在比賽中會變成在追配速。像是有些人把 丹尼爾博士跑步方程式 中的 m配速 當成全馬的配速,這是很不妥的。丹尼爾博士在書中寫到的所有配速 都不能當成比賽配速的標準...