發布日期:2022-07-15 點擊率:40
軟件日益增加的對系統級芯片(SoC)設計的重要性已不是什么新鮮事,同樣今天的SoC通常含有幾種不同類型的處理器也已很常見。不過,令人驚訝的是,業界很少對這些技術發展可能造成的影響進行討論。
當一個嵌入式系統只包括一個工業標準微處理器時,實時操作系統(RTOS)通常還承擔任務管理的工作。這個RTOS可能是商業版的,但更可能是內部自己開發的。在任一種情況下,其工作都是調度、分派、監控和在各種計算任務后整理內存,并為它們提供一個統一的、獨立于硬件的系統資源接口。
事實上也是這樣,而且有證據表明,過去的自己開發的RTOS正逐步讓位于更小的和低版稅的第三方產品。不過,RTOS在遇到含有多處理內核的SoC器件時通常會碰壁,尤其是當各種處理內核的架構不同時。市場上很少有能支持對稱多處理的RTOS產品,更不用說由CPU、DSP和定制模塊構成的異質架構了。
最常見的情況是,位于中央CPU上的RTOS通過信標、郵箱、擴音器或任何該架構能設計出來的東西與在其它模塊上運行的特別(Ad-Hoc)控制程序進行通信。如果有些模塊不是軟件可編程的,那么就可能需要一個set-and-test寄存器接口。
所有的事情都在向專用化轉變。評估和性能分析變得充滿挑戰性,經理們緊張不安。人們開始非常關心嵌入式軟件的大小,CPU的執行周期預算和SoC的能耗正在進入RTOS的工作范疇,而非工作負荷。
新創公司Ignios正在致力于解決這種狀況。這家公司已經創建了一套應用程序接口(API),它們可用來控制系統中每一個任務的狀態、以及中斷處理和任務間通信。這些API獨立于SoC中的特定硬件模塊、任務以及系統所使用的RTOS。
但是,為確保芯片中每一模塊上的控制寄存器、中斷處理和任務管理能夠與API正確通信,仍有大量依賴于硬件的編程工作要做。而且,在任務管理上,還存在許多時間和功率方面的問題。
圖:1.硬件任務主控器
2.系統存儲器
3.硬件引擎
4.SystemWeaver
5.系統互聯
6.DMA引擎
7.資料來源:Ignios Ltd.
因此,Ingios走出了下面關鍵的一步。該公司創建了一個硬件IP模塊,用來處理任務調度和任務間通信。
正如該公司業務開發副總裁Dan Chester所描述的,該模塊類似于一個能夠創建并遍歷任務控制塊鏈表的精細狀態機。那些任務描述符,以及可用硬件資源的描述符,被存儲在一個本地快速RAM中。整個封包由硬件IP、存儲器和API代碼組成,被稱為SystemWeaver。
在實際運作中,SystemWeaver IP通常放在總線、一個交叉條(crossbar)或SoC的其它單元上。設計人員可以直接從個別模塊向SystemWeaver模塊發送中斷信號,但這不是必需的。
除了將SystemWeaver模塊插入到SoC設計之外,SoC中的每一個處理單元可能還另外需要少許軟件或硬件。當一個任務被阻塞或完成時,為了向SystemWeaver模塊發送信號,這些軟件或硬件是必需的;Chester估計,這需要在每個模塊上增加不超過10kb的代碼。在非編程模塊中,該功能由一個小型狀態機處理。
最后,必須在SystemWeaver本地存儲器中建立任務和系統資源結構。
一旦系統被初始化,SystemWeaver硬件就扮演RTOS內核中的任務控制器的角色,建立一個就緒任務清單,并在硬件資源可用時將任務分配到每一資源。這個模塊也作為任務間通信媒介。
任務/數據對
數據集和任務代碼綁定在一起,當任務準備就緒時,該任務/數據對被分派到第一個可用的處理器。也可以執行優先級排序和其它服務質量(QoS)分配方案。
如果需要,一個數據集也可以與運行在不同處理器模塊上的兩個任務邦定,這樣當高速資源緊張時,該任務可以在稍慢的不太重要的資源上運行。還有其它好的選擇,例如用于處理運行時間可重配置硬件資源的方案。
當一個任務被阻塞或完成時,正在執行該任務的處理器向SystemWeaver模塊發出信號,后者查看其任務清單,然后分配一個新的任務給這個處理器。
Chester認為,可以把整個第三方RTOS作為一個任務來啟動,允許它在SystemWeaver環境中運行,控制自己的任務或是簡單地把任務控制責任轉交給SystemWeaver模塊。Ignios正在尋求與RTOS供應商的合作,在選擇RTOS產品和系統間發展更緊密的協同關系。
從功能上來說,SystemWeaver模塊沒有做任何RTOS內部的工作。不過,任務分配的全部關鍵路徑都發生在硬件中,從而大幅減少任務間的延遲,并從控制CPU中刪除了相當多的高優先級負載。
這個方案的另一個好處是,由SystemWeaver API創建的抽象層通常可用來管理系統級調試。它允許設計人員在任務級檢查整個系統,而不必深究6個不同處理器的源代碼,也不需要費力理解一、兩個硬件狀態機的狀態。
Ignios可提供該硬件模塊的一個全面SystemC模型,它可用于實現系統建模、集成和驗證。
SystemWeaver 1.0版本目前正向重點客戶授權。該版本包括針對硬件模塊的可綜合RTL、API代碼、SystemC模型以及使用該模塊的SoC的一些參考設計數據。
作者:Ron Wilson