新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 面向動態應用的靈活操作系統

        面向動態應用的靈活操作系統

        —— 利用賽靈思 FPGA 的動態重配置功能,同構多線程執行模型可同時兼得軟件靈活性和硬件性能
        作者: 時間:2011-09-01 來源:電子產品世界 收藏

                一臺在未知的土地上行進的自動機器人;一部能夠根據信號強度改變解壓縮格式的視頻解碼器;一套寬帶電子對抗系統;一種用于機動車輛的自適應圖像跟蹤算法……這些都屬于大量涌現的隨環境瞬變做出快速響應的新興嵌入式或者關鍵任務應用。在過去,靜態決策最壞情況分配曾為嚴格的實時約束提供了解決方案,而現在靈活性也成為一項要求。法國某研究項目建議使用的解決方案是一種分布在 資源上,對軟硬件線程進行管理的操作系統。

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

                我們的目標是設計一種支持新的系統分區類型的架構,讓軟/硬件組件遵循同一執行模型。這就要求高度靈活的可擴展操作系統。

                近年來,特別是在嵌入式系統中,隨著片上系統 (SoC) 密度的增大,可以通過并行處理任務和數據,來增加運算單元,最終滿足設計約束的要求。目前,隨著異構計算內核的加入,這種趨勢仍在繼續。不過這種技術遇到了難以逾越的復雜性障礙,因為它需要對編程模型進行更高層次的抽象。

                為了攻克這些難題,我們建議定義一個統一的執行模型,不管線程是映射到硬件還是軟件上都可以使用。該執行模型的硬件實現高度依賴動態可重配置邏輯的使用。全分布式架構結合傳統多核軟件子系統,可同時兼備軟/硬件的優點。軟件部分很適用于智能化事件控制和決策,而硬件部分則擅長于提高能效、吞吐量以及數字運算。通過兩者的結合,無論是針對每種特定的應用,還是針對某一應用的某一特定狀態,我們都能在性能與資源利用率之間實現最佳平衡。

                新型 平臺具有高度的靈活性和可擴展性,且集成度高,能夠在單個或兩個芯片上集成一個完整的異構動態運算系統。

                自適應硬件在諸如導彈電子和軟件無線電等功耗和系統尺寸有限,同時對環境高度敏感的應用中非常有用。采用動態重配置技術,可以在不增加系統功耗或電路板尺寸的情況下,實現支持不同應用模式的專用架構。傳統解決方案側重于控制部分,現在看來似乎已經不能有效地滿足執行單元的數量及其異構性要求。只有采用兼具靈活性和可擴展性的分布式方案,才能夠創建出面向未來的架構。

                雖然這種技術潛力無限,但對整個業界來說,動態重配置的使用仍然有相當大的難度。工程師需要一種清晰明確的設計方式,既能夠充分地發揮動態重配置的優勢,又不影響應用描述,而且最重要的是,不增加開發成本。為了將動態性和高性能結合起來,我們建議采用基于多線程的執行模型對異構性進行抽象。開發人員可以將應用當作線程集來進行編程,而不必考慮線程是在標準處理器還是專用硬件上執行。在這種情況下,動態重配置的作用是進行線程優先調度(thread preemption)和上下文切換。由法國國家研究署 (French National Research Agency (ANR)) 贊助的 FOSFOR(靈活的可重配置平臺操作系統)項目就專門負責開發這種新一代嵌入式、分布式實時操作系統。

        FOSFOR 架構基礎

                我們的目標是設計一種支持新的系統分區類型的架構,讓軟/硬件組件遵循同一執行模型。這就要求高度靈活的可擴展操作系統,能夠為軟件域和硬件域提供相似的接口。與傳統方法不同,這種操作系統是完全分布式的,整個平臺從應用的角度來看是同構的。這就意味著既能以靜態方式,也能以動態方式在軟件(處理器)或者硬件(可重配置單元)中部署應用線程,對分布式服務進行無差別的訪問。

                為了實現高效率,我們在緊鄰可重配置區的硬件中實現操作系統服務。我們在異構操作系統內核之間實現了一個通信層,以確保從應用角度看服務是同構的。因此,將操作系統當作大量模塊和執行單元部署在架構上,可以充分發揮虛擬化機制的優勢,從而使應用線程在未預知任務的情況下運行和通信。

                從編程人員的角度來看,該應用只是個線程集。我們可以利用 的動態重配置功能來提議這種硬件線程的新概念,同時也可采用與軟件線程相同的方式來實現這一概念。我們的實現方式充分發揮了專用計算 IP 模塊的性能優勢。

                除了要考慮到多處理器 SoC 中的執行單元,存儲器結構還必須滿足以下幾項要求:應用線程需要的數據存儲、每個線程執行上下文的存儲以及線程間的數據交換。對于執行上下文的存儲,我們認為有多種可能性。一種方式是集中存儲執行上下文,這樣為將其分配到不同執行單元提供介質。我們可以確認平臺內的三種通信流:應用數據、控制信號和重配置/執行上下文。對于硬件線程之間的高帶寬數據路徑,我們使用專用的片上網絡 (NoC)。

         
        圖 1:通用 FOSFOR 架構
        圖中文字:
        靈活的操作系統  軟件  線程  應用  中間件(虛擬化、分布、靈活性)  操作系統 1(X 服務)  操作系統 n(Y 服務)  硬件抽象層 (HAL)  軟件通信單元  硬件通信單元  硬件  軟件節點 (GPP)  硬件節點(可重配置區域)  片上網絡  共享存儲器

        全局架構

        全局架構如圖 1 所示,其組成包括:

        ? 一系列非專用(通用)處理器 (GPP)。GPP 負責支持軟件線程的執行,以及包括線程調度在內的一系列操作系統服務。GPP 在指令集架構和提供的服務數量方面不必同構。
        ? 一系列動態可重配置分區(也稱可重配置區域 (RR))。動態可重配置分區負責并行或串行執行一系列硬件線程。與 GPP 相似,由于采用硬件操作系統 (HwOS),RR 也支持操作系統服務的執行。這些區域對應著精粒度 (FPGA) 或粗粒度(可重配置處理器)架構。
        ? 共享著一條或多條物理通信通道的虛擬通信通道,用于控制、數據和配置。控制通道負責把操作系統服務之間的通信分配給執行單元(GPP 和 RR)。數據通道負責傳輸與環境(器件、傳感器)有關的信息和線程之間的信息交換。配置通道負責在配置存儲器和執行單元之間傳輸軟件線程(二進制代碼)和硬件線程(部分比特流)的配置。

                每個處理器都有自己的本地存儲器。該存儲器負責存儲本地數據,在適用的情況下,也可存儲軟件代碼。連接到數據通道的共享存儲器可以實現不同處理器上線程間的數據共享。每個執行單元都可以訪問共享存儲器上存儲的數據和軟件執行資源程序。每個資源還可以訪問配置存儲器,以保存和恢復其執行上下文。采用這種結構,可以在任何執行資源上實現任何線程或服務。

                在 RR 內部,只有硬件任務需要動態重配置。負責托管任務的動態區域 (DR) 被包含操作系統服務硬件實現的靜態區域 (SR) 所包圍,同時在 RR 內外部提供通信介質。內部數據流通信依靠專用的片上網絡。DR 和 SR 之間的接口采用總線宏并且有固定的位置。為實現該約束以及通信介質異構性的抽象,我們采用中間件方案來提供到可重配置分區的虛擬訪問。RR 根據圖 2 中定義的模型構建。FOSFOR 原型平臺由能夠直接支持這種架構模型的動態可重配置 FPGA 器件構成。我們選用了 Virtex-5® 器件,因為其能夠重配置矩形區域。

                我們根據預先測算的應用線程資源需求定義了調度/布局算法,以確保每個 RR 中 FPGA 元件(LUT、寄存器、分布式存儲器、I/O)的高效利用。


         圖 2 — 可重配置區域結構
        圖中文字:
        控制  上下文(比特流)  靜態區域  可重配置區域  靜態區域  數據  硬件操作系統  控制 動態區域  線程  數據  片上網絡  硬件分區


        操作系統、片上網絡及中間件

                為具備靈活性,FOSFOR 架構使用了至少兩個操作系統實例:一個為運行在每個處理器上且負責處理軟件線程的軟件操作系統;另一個為能夠管理硬件線程的硬件操作系統。為了在性能、開發時間以及標準化之間實現最佳平衡,我們使用了現有的軟件操作系統和全新的硬件操作系統。

                該硬件操作系統利用 FPGA 的動態部分重配置功能,在調度硬件線程方面與傳統操作系統調度軟件線程一樣靈活。


                對軟件操作系統的要求是實時行為、能夠處理多個處理器并提供基本的進程間通信服務。我們選用了一個免費的開源操作系統 RTEMS出于兼容性原因,我們選用了 LEON Sparc 軟核處理器,同軟件節點一樣,其也是免費和開源的。

                該硬件操作系統(HwOS)利用 FPGA 的動態部分重配置功能,在調度硬件線程方面與傳統操作系統調度軟件線程一樣靈活。硬件線程由動態和靜態兩大部分組成。動態部分內含一個用來執行線程功能的 IP 模塊和一個用來使服務調用次序與硬件操作系統同步的有限狀態機。靜態部分則內含一個與硬件操作系統相連的控制接口和一個用于與其它軟硬件任務進行交換數據的網絡接口。

                為支持多種線程間數據傳輸需要,我們開發出了一種靈活的片上網絡 DRAFT。傳統操作系統的通信服務足以支持軟件線程間的通信。但在我們的設計中,操作系統還需要支持硬件線程間的通信。為此,我們專門設計了 DRAFT 網絡。我們針對一個或者多個 DR 逐一綜合硬件線程,同時靜態地定義每個 DR 接口。

                通信接口的靜態定義讓我們可以定義靜態的片上網絡。一般來說,硬件線程要求高帶寬和低時延,故片上網絡必須提供高性能。我們為 DRAFT 選擇的拓撲是一種胖樹拓撲的擴展。我們設計的主要目的是為了限制資源開銷,同時實現高性能的線程間通信。

                硬件平臺的異構性是設計人員部署應用時面臨的主要的復雜性障礙。在 FOSFOR 項目中,這種異構性不僅來自軟件域中的不同嵌入式處理器,還來自在單個平臺上同時集成軟件和硬件計算模型的做法。

                采用中間件在硬件和軟件間建立抽象層,并提供同構編程模型,可以很好地解決這一問題。中間件實現了一組虛擬通道,可以在不必理會線程的實現區域的情況下進行線程間通信。這些服務跨平臺分布,提供了一個靈活的可擴展抽象層,讓 FOSFOR 構想臻于完善。

        性能加速

                構建硬件操作系統的主要原因出于性能和靈活性方面的考慮。該操作系統本可以采用純軟件或純硬件。由于每次調用操作系統原語都會涉及開銷,即線程等待時間,操作系統速度越快,浪費的時間就越少。為了評估開銷,我們必須就硬件操作系統的時序和原始的軟件操作系統 RTEMS 做一比較。

                硬件本地運行只需要數十個周期,而為了訪問共享存儲器,硬件全局運行需要數百個周期。經我們評估,與軟件操作系統的運行結果相比,本地創建-刪除操作速度提高了 60 倍,其它操作速度也提高了約 50 倍。

                硬件操作系統的資源使用(表 1)相差較大,這主要取決于激活的服務的數量及功能,比如我們為每項服務選擇對象(信號量、線程等)的數量。我們使用賽靈思 Virtex-5 FX100T 來實現系統。表中列出了硬件操作系統使用的資源。余下的資源可用于實現其它系統組件及硬件線程自身。

        實現的結構數量

        8

        16

        32

        CLB Slice

        2,408 (15%)

        3,151 (20%)

        4,327 (27%)

        D 觸發器

        5,498 (8.5%)

        6,650 (10.4%)

        8,918 (13.9%)

        BRAM

        8 (3.5%)

        16 (7%)

        32 (14%)


        表 1 — 硬件操作系統 (Virtex-5 FX100) 的資源使用情況

                對于網絡性能,在 DRAFT 連接 8 個32 位字寬、緩沖深度為 4 個字,頻率為100MHz 的組件的配置下,片上網絡可使每個連接的組件的最大數據速率高達 1,040Mbps。網絡的拓撲和路由協議保證不會出現爭用和擁堵現象。在兩個互連的組件間,至少一直保留著一條通信路徑。數據通過 DRAFT 的平均時延接近 45 個時鐘周期(450 納秒),這符合許多應用的要求。

        展望

                我們提議采用一種創新型的操作系統,可以在由多個處理器和動態可重配置硬件 IP 模塊構成的異構多核架構上提供基于多線程的同構執行模型。硬件操作系統負責管理硬件線程,一般用于線程創建和抑制,以及信息量和消息隊列服務。在通信方面,我們建議改進用于數據交換的胖樹拓撲片上網絡、用于硬件線程管理的專用總線以及為實現操作系統間同步的通信層。

                從行業角度來看,下一步是演示為確保執行模型的同構性而添加的硬件的功能,這可以真正提升編程效率,同時還能在專用 IP 模塊上保持較低性能開銷。

                我們將在一個代表性的、基于搜索跟蹤算法的泰雷茲公司應用上演示我們的方法。跟蹤線程將被映射到可重配置分區,并根據目標探測情況動態地創建。

         



        關鍵詞: 賽靈思 FPGA

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 新建县| 保定市| 山丹县| 清涧县| 贵溪市| 双城市| 上虞市| 宿松县| 泗阳县| 调兵山市| 阜阳市| 东乌珠穆沁旗| 小金县| 台州市| 景洪市| 汤阴县| 扬州市| 彝良县| 邵阳县| 苏尼特右旗| 峨边| 泰和县| 聂荣县| 永宁县| 乌兰浩特市| 芒康县| 清涧县| 永清县| 台安县| 莆田市| 获嘉县| 上蔡县| 肥城市| 潞西市| 马尔康县| 施甸县| 康马县| 株洲市| 乐平市| 通道| 织金县|