面向動(dòng)態(tài)應用的靈活操作系統
一臺在未知的土地上行進(jìn)的自動(dòng)機器人;一部能夠根據信號強度改變解壓縮格式的視頻解碼器;一套寬帶電子對抗系統;一種用于機動(dòng)車(chē)輛的自適應圖像跟蹤算法……這些都屬于大量涌現的隨環(huán)境瞬變做出快速響應的新興嵌入式或者關(guān)鍵任務(wù)應用。在過(guò)去,靜態(tài)決策最壞情況分配曾為嚴格的實(shí)時(shí)約束提供了解決方案,而現在靈活性也成為一項要求。法國某研究項目建議使用的解決方案是一種分布在 FPGA 資源上,對軟硬件線(xiàn)程進(jìn)行管理的操作系統。
本文引用地址:http://dyxdggzs.com/article/123139.htm我們的目標是設計一種支持新的系統分區類(lèi)型的架構,讓軟/硬件組件遵循同一執行模型。這就要求高度靈活的可擴展操作系統。
近年來(lái),特別是在嵌入式系統中,隨著(zhù)片上系統 (SoC) 密度的增大,可以通過(guò)并行處理任務(wù)和數據,來(lái)增加運算單元,最終滿(mǎn)足設計約束的要求。目前,隨著(zhù)異構計算內核的加入,這種趨勢仍在繼續。不過(guò)這種技術(shù)遇到了難以逾越的復雜性障礙,因為它需要對編程模型進(jìn)行更高層次的抽象。
為了攻克這些難題,我們建議定義一個(gè)統一的執行模型,不管線(xiàn)程是映射到硬件還是軟件上都可以使用。該執行模型的硬件實(shí)現高度依賴(lài)動(dòng)態(tài)可重配置邏輯的使用。全分布式架構結合傳統多核軟件子系統,可同時(shí)兼備軟/硬件的優(yōu)點(diǎn)。軟件部分很適用于智能化事件控制和決策,而硬件部分則擅長(cháng)于提高能效、吞吐量以及數字運算。通過(guò)兩者的結合,無(wú)論是針對每種特定的應用,還是針對某一應用的某一特定狀態(tài),我們都能在性能與資源利用率之間實(shí)現最佳平衡。
新型 FPGA 平臺具有高度的靈活性和可擴展性,且集成度高,能夠在單個(gè)或兩個(gè)芯片上集成一個(gè)完整的異構動(dòng)態(tài)運算系統。
自適應硬件在諸如導彈電子和軟件無(wú)線(xiàn)電等功耗和系統尺寸有限,同時(shí)對環(huán)境高度敏感的應用中非常有用。采用動(dòng)態(tài)重配置技術(shù),可以在不增加系統功耗或電路板尺寸的情況下,實(shí)現支持不同應用模式的專(zhuān)用架構。傳統解決方案側重于控制部分,現在看來(lái)似乎已經(jīng)不能有效地滿(mǎn)足執行單元的數量及其異構性要求。只有采用兼具靈活性和可擴展性的分布式方案,才能夠創(chuàng )建出面向未來(lái)的架構。
雖然這種技術(shù)潛力無(wú)限,但對整個(gè)業(yè)界來(lái)說(shuō),動(dòng)態(tài)重配置的使用仍然有相當大的難度。工程師需要一種清晰明確的設計方式,既能夠充分地發(fā)揮動(dòng)態(tài)重配置的優(yōu)勢,又不影響應用描述,而且最重要的是,不增加開(kāi)發(fā)成本。為了將動(dòng)態(tài)性和高性能結合起來(lái),我們建議采用基于多線(xiàn)程的執行模型對異構性進(jìn)行抽象。開(kāi)發(fā)人員可以將應用當作線(xiàn)程集來(lái)進(jìn)行編程,而不必考慮線(xiàn)程是在標準處理器還是專(zhuān)用硬件上執行。在這種情況下,動(dòng)態(tài)重配置的作用是進(jìn)行線(xiàn)程優(yōu)先調度(thread preemption)和上下文切換。由法國國家研究署 (French National Research Agency (ANR)) 贊助的 FOSFOR(靈活的可重配置平臺操作系統)項目就專(zhuān)門(mén)負責開(kāi)發(fā)這種新一代嵌入式、分布式實(shí)時(shí)操作系統。
FOSFOR 架構基礎
我們的目標是設計一種支持新的系統分區類(lèi)型的架構,讓軟/硬件組件遵循同一執行模型。這就要求高度靈活的可擴展操作系統,能夠為軟件域和硬件域提供相似的接口。與傳統方法不同,這種操作系統是完全分布式的,整個(gè)平臺從應用的角度來(lái)看是同構的。這就意味著(zhù)既能以靜態(tài)方式,也能以動(dòng)態(tài)方式在軟件(處理器)或者硬件(可重配置單元)中部署應用線(xiàn)程,對分布式服務(wù)進(jìn)行無(wú)差別的訪(fǎng)問(wèn)。
為了實(shí)現高效率,我們在緊鄰可重配置區的硬件中實(shí)現操作系統服務(wù)。我們在異構操作系統內核之間實(shí)現了一個(gè)通信層,以確保從應用角度看服務(wù)是同構的。因此,將操作系統當作大量模塊和執行單元部署在架構上,可以充分發(fā)揮虛擬化機制的優(yōu)勢,從而使應用線(xiàn)程在未預知任務(wù)的情況下運行和通信。
從編程人員的角度來(lái)看,該應用只是個(gè)線(xiàn)程集。我們可以利用賽靈思 FPGA 的動(dòng)態(tài)重配置功能來(lái)提議這種硬件線(xiàn)程的新概念,同時(shí)也可采用與軟件線(xiàn)程相同的方式來(lái)實(shí)現這一概念。我們的實(shí)現方式充分發(fā)揮了專(zhuān)用計算 IP 模塊的性能優(yōu)勢。
除了要考慮到多處理器 SoC 中的執行單元,存儲器結構還必須滿(mǎn)足以下幾項要求:應用線(xiàn)程需要的數據存儲、每個(gè)線(xiàn)程執行上下文的存儲以及線(xiàn)程間的數據交換。對于執行上下文的存儲,我們認為有多種可能性。一種方式是集中存儲執行上下文,這樣為將其分配到不同執行單元提供介質(zhì)。我們可以確認平臺內的三種通信流:應用數據、控制信號和重配置/執行上下文。對于硬件線(xiàn)程之間的高帶寬數據路徑,我們使用專(zhuān)用的片上網(wǎng)絡(luò ) (NoC)。
圖 1:通用 FOSFOR 架構
圖中文字:
靈活的操作系統 軟件 線(xiàn)程 應用 中間件(虛擬化、分布、靈活性) 操作系統 1(X 服務(wù)) 操作系統 n(Y 服務(wù)) 硬件抽象層 (HAL) 軟件通信單元 硬件通信單元 硬件 軟件節點(diǎn) (GPP) 硬件節點(diǎn)(可重配置區域) 片上網(wǎng)絡(luò ) 共享存儲器
全局架構
全局架構如圖 1 所示,其組成包括:
? 一系列非專(zhuān)用(通用)處理器 (GPP)。GPP 負責支持軟件線(xiàn)程的執行,以及包括線(xiàn)程調度在內的一系列操作系統服務(wù)。GPP 在指令集架構和提供的服務(wù)數量方面不必同構。
? 一系列動(dòng)態(tài)可重配置分區(也稱(chēng)可重配置區域 (RR))。動(dòng)態(tài)可重配置分區負責并行或串行執行一系列硬件線(xiàn)程。與 GPP 相似,由于采用硬件操作系統 (HwOS),RR 也支持操作系統服務(wù)的執行。這些區域對應著(zhù)精粒度 (FPGA) 或粗粒度(可重配置處理器)架構。
? 共享著(zhù)一條或多條物理通信通道的虛擬通信通道,用于控制、數據和配置??刂仆ǖ镭撠煱巡僮飨到y服務(wù)之間的通信分配給執行單元(GPP 和 RR)。數據通道負責傳輸與環(huán)境(器件、傳感器)有關(guān)的信息和線(xiàn)程之間的信息交換。配置通道負責在配置存儲器和執行單元之間傳輸軟件線(xiàn)程(二進(jìn)制代碼)和硬件線(xiàn)程(部分比特流)的配置。
每個(gè)處理器都有自己的本地存儲器。該存儲器負責存儲本地數據,在適用的情況下,也可存儲軟件代碼。連接到數據通道的共享存儲器可以實(shí)現不同處理器上線(xiàn)程間的數據共享。每個(gè)執行單元都可以訪(fǎng)問(wèn)共享存儲器上存儲的數據和軟件執行資源程序。每個(gè)資源還可以訪(fǎng)問(wèn)配置存儲器,以保存和恢復其執行上下文。采用這種結構,可以在任何執行資源上實(shí)現任何線(xiàn)程或服務(wù)。
在 RR 內部,只有硬件任務(wù)需要動(dòng)態(tài)重配置。負責托管任務(wù)的動(dòng)態(tài)區域 (DR) 被包含操作系統服務(wù)硬件實(shí)現的靜態(tài)區域 (SR) 所包圍,同時(shí)在 RR 內外部提供通信介質(zhì)。內部數據流通信依靠專(zhuān)用的片上網(wǎng)絡(luò )。DR 和 SR 之間的接口采用總線(xiàn)宏并且有固定的位置。為實(shí)現該約束以及通信介質(zhì)異構性的抽象,我們采用中間件方案來(lái)提供到可重配置分區的虛擬訪(fǎng)問(wèn)。RR 根據圖 2 中定義的模型構建。FOSFOR 原型平臺由能夠直接支持這種架構模型的動(dòng)態(tài)可重配置 FPGA 器件構成。我們選用了 Virtex-5® 器件,因為其能夠重配置矩形區域。
我們根據預先測算的應用線(xiàn)程資源需求定義了調度/布局算法,以確保每個(gè) RR 中 FPGA 元件(LUT、寄存器、分布式存儲器、I/O)的高效利用。
圖 2 — 可重配置區域結構
圖中文字:
控制 上下文(比特流) 靜態(tài)區域 可重配置區域 靜態(tài)區域 數據 硬件操作系統 控制 動(dòng)態(tài)區域 線(xiàn)程 數據 片上網(wǎng)絡(luò ) 硬件分區
操作系統、片上網(wǎng)絡(luò )及中間件
為具備靈活性,FOSFOR 架構使用了至少兩個(gè)操作系統實(shí)例:一個(gè)為運行在每個(gè)處理器上且負責處理軟件線(xiàn)程的軟件操作系統;另一個(gè)為能夠管理硬件線(xiàn)程的硬件操作系統。為了在性能、開(kāi)發(fā)時(shí)間以及標準化之間實(shí)現最佳平衡,我們使用了現有的軟件操作系統和全新的硬件操作系統。
該硬件操作系統利用賽靈思 FPGA 的動(dòng)態(tài)部分重配置功能,在調度硬件線(xiàn)程方面與傳統操作系統調度軟件線(xiàn)程一樣靈活。
對軟件操作系統的要求是實(shí)時(shí)行為、能夠處理多個(gè)處理器并提供基本的進(jìn)程間通信服務(wù)。我們選用了一個(gè)免費的開(kāi)源操作系統 RTEMS出于兼容性原因,我們選用了 LEON Sparc 軟核處理器,同軟件節點(diǎn)一樣,其也是免費和開(kāi)源的。
該硬件操作系統(HwOS)利用賽靈思 FPGA 的動(dòng)態(tài)部分重配置功能,在調度硬件線(xiàn)程方面與傳統操作系統調度軟件線(xiàn)程一樣靈活。硬件線(xiàn)程由動(dòng)態(tài)和靜態(tài)兩大部分組成。動(dòng)態(tài)部分內含一個(gè)用來(lái)執行線(xiàn)程功能的 IP 模塊和一個(gè)用來(lái)使服務(wù)調用次序與硬件操作系統同步的有限狀態(tài)機。靜態(tài)部分則內含一個(gè)與硬件操作系統相連的控制接口和一個(gè)用于與其它軟硬件任務(wù)進(jìn)行交換數據的網(wǎng)絡(luò )接口。
為支持多種線(xiàn)程間數據傳輸需要,我們開(kāi)發(fā)出了一種靈活的片上網(wǎng)絡(luò ) DRAFT。傳統操作系統的通信服務(wù)足以支持軟件線(xiàn)程間的通信。但在我們的設計中,操作系統還需要支持硬件線(xiàn)程間的通信。為此,我們專(zhuān)門(mén)設計了 DRAFT 網(wǎng)絡(luò )。我們針對一個(gè)或者多個(gè) DR 逐一綜合硬件線(xiàn)程,同時(shí)靜態(tài)地定義每個(gè) DR 接口。
通信接口的靜態(tài)定義讓我們可以定義靜態(tài)的片上網(wǎng)絡(luò )。一般來(lái)說(shuō),硬件線(xiàn)程要求高帶寬和低時(shí)延,故片上網(wǎng)絡(luò )必須提供高性能。我們?yōu)?DRAFT 選擇的拓撲是一種胖樹(shù)拓撲的擴展。我們設計的主要目的是為了限制資源開(kāi)銷(xiāo),同時(shí)實(shí)現高性能的線(xiàn)程間通信。
硬件平臺的異構性是設計人員部署應用時(shí)面臨的主要的復雜性障礙。在 FOSFOR 項目中,這種異構性不僅來(lái)自軟件域中的不同嵌入式處理器,還來(lái)自在單個(gè)平臺上同時(shí)集成軟件和硬件計算模型的做法。
采用中間件在硬件和軟件間建立抽象層,并提供同構編程模型,可以很好地解決這一問(wèn)題。中間件實(shí)現了一組虛擬通道,可以在不必理會(huì )線(xiàn)程的實(shí)現區域的情況下進(jìn)行線(xiàn)程間通信。這些服務(wù)跨平臺分布,提供了一個(gè)靈活的可擴展抽象層,讓 FOSFOR 構想臻于完善。
性能加速
構建硬件操作系統的主要原因出于性能和靈活性方面的考慮。該操作系統本可以采用純軟件或純硬件。由于每次調用操作系統原語(yǔ)都會(huì )涉及開(kāi)銷(xiāo),即線(xiàn)程等待時(shí)間,操作系統速度越快,浪費的時(shí)間就越少。為了評估開(kāi)銷(xiāo),我們必須就硬件操作系統的時(shí)序和原始的軟件操作系統 RTEMS 做一比較。
硬件本地運行只需要數十個(gè)周期,而為了訪(fǎng)問(wèn)共享存儲器,硬件全局運行需要數百個(gè)周期。經(jīng)我們評估,與軟件操作系統的運行結果相比,本地創(chuàng )建-刪除操作速度提高了 60 倍,其它操作速度也提高了約 50 倍。
硬件操作系統的資源使用(表 1)相差較大,這主要取決于激活的服務(wù)的數量及功能,比如我們?yōu)槊宽椃?wù)選擇對象(信號量、線(xiàn)程等)的數量。我們使用賽靈思 Virtex-5 FX100T 來(lái)實(shí)現系統。表中列出了硬件操作系統使用的資源。余下的資源可用于實(shí)現其它系統組件及硬件線(xiàn)程自身。
實(shí)現的結構數量 |
8 |
16 |
32 |
CLB Slice |
2,408 (15%) |
3,151 (20%) |
4,327 (27%) |
D 觸發(fā)器 |
5,498 (8.5%) |
6,650 (10.4%) |
8,918 (13.9%) |
BRAM |
8 (3.5%) |
16 (7%) |
32 (14%) |
表 1 — 硬件操作系統 (Virtex-5 FX100) 的資源使用情況
對于網(wǎng)絡(luò )性能,在 DRAFT 連接 8 個(gè)32 位字寬、緩沖深度為 4 個(gè)字,頻率為100MHz 的組件的配置下,片上網(wǎng)絡(luò )可使每個(gè)連接的組件的最大數據速率高達 1,040Mbps。網(wǎng)絡(luò )的拓撲和路由協(xié)議保證不會(huì )出現爭用和擁堵現象。在兩個(gè)互連的組件間,至少一直保留著(zhù)一條通信路徑。數據通過(guò) DRAFT 的平均時(shí)延接近 45 個(gè)時(shí)鐘周期(450 納秒),這符合許多應用的要求。
展望
我們提議采用一種創(chuàng )新型的操作系統,可以在由多個(gè)處理器和動(dòng)態(tài)可重配置硬件 IP 模塊構成的異構多核架構上提供基于多線(xiàn)程的同構執行模型。硬件操作系統負責管理硬件線(xiàn)程,一般用于線(xiàn)程創(chuàng )建和抑制,以及信息量和消息隊列服務(wù)。在通信方面,我們建議改進(jìn)用于數據交換的胖樹(shù)拓撲片上網(wǎng)絡(luò )、用于硬件線(xiàn)程管理的專(zhuān)用總線(xiàn)以及為實(shí)現操作系統間同步的通信層。
從行業(yè)角度來(lái)看,下一步是演示為確保執行模型的同構性而添加的硬件的功能,這可以真正提升編程效率,同時(shí)還能在專(zhuān)用 IP 模塊上保持較低性能開(kāi)銷(xiāo)。
我們將在一個(gè)代表性的、基于搜索跟蹤算法的泰雷茲公司應用上演示我們的方法。跟蹤線(xiàn)程將被映射到可重配置分區,并根據目標探測情況動(dòng)態(tài)地創(chuàng )建。
評論