摘要:針對所采用的微處理器核和現場可編程門陣列混合可重構計算平臺,實現了一個硬件透明的編程模型。該模型能夠提供一個類似軟件函數的硬件函數給設計人員,它可以屏蔽底層硬件實現的物理細節,使設計人員能簡單方便地使用硬件加速器。
關鍵詞:可重構;透明編程;操作系統
中圖分類號:TP316文獻標識碼:A文章編號:1009-3044(2009)33-9581-02
Researching on hard-soft Partition of Reconfigurable Computing Operating System
ZOU Yi
(Hengyang Normal University, Hengyang 421008, China)
Abstract: To address the platform of heterogeneous multi-core reconfigurable computing architecture, it implements a hardware transparent programming model for reconfigurable system development, which provides hardware functions similar to software functions for designers to use the hardware accelerators , it hides the details of underlying hardware accelerators and makes easy for designer to use.
Key words: reconfiguration; hardware transparent programming; operating system
FPGA出現以后,由于既具有專用集成電路的高性能,又具有通用處理器的靈活性,在嵌入式系統中得到越來越廣泛的應用。但是在傳統的設計中,FPGA類似于專用集成電路,一般都是作為硬件加速器由用戶直接管理使用,操作系統作為資源管理者和人機交互的接口并沒有參與管理以提供給用戶一個友好的界面,最多是提供一些驅動作為支持。隨著可重構計算研究的深入,人們發現這種方式忽略了FPGA內在的可重構特性以及任務潛在的并行性,增大了系統設計難度,也降低了FPGA的性能。最近幾年,面向可重構計算的操作系統,即可重構硬件操作系統技術成為一個新的研究熱點。研究者們發現操作系統不僅能夠給應用開發者提供便利,而且可以為應用程序提供運行時的支持。因此,在近年來國內外的文獻中,對可重構操作系統方面展開了許多研究。
Miljan Vuleti′c提出了一個軟硬件無縫集成的模型,通過把硬件相關的一些操作委托給操作系統完成,實現硬件對高層程序員的透明,同時在加速器內部增加了一個類MMU的組件WMU和加速器內部緩存來實現硬件的可移植性[1-3]。但是在大規模的應用系統中,可能存在若干個高密度計算的代碼段,需要若干個不同的硬件加速器來分別實現這些代碼段,如果同時實現這些帶有自己的WMU和內部緩存的硬件加速器就需要大量的硬件資源,不僅增加了系統的成本,同時因為單片的FPGA很難滿足系統要求,需要多個FPGA同時工作,系統設計者又不得不考慮多個FPGA之間的通信問題,同時單片FPGA的利用率反而會下降[4]。在可重構硬件FPGA不斷向廣度和深度發展的同時,很多研究人員也在不斷的改進操作系統對可重構器件的支持,使得操作系統逐步開始參與硬件資源的管理。在文獻[5]中David Andrews等研究人員定義了支持可重構硬件管理的操作系統,把硬件功能模塊作為任務進行管理,提出了統一多線程的模型。他們的方法比較通用,還有其它一些研究小組也采用了類似的思路[6-7]。
本文提出一個基于自重構系統的硬件透明的編程模型[8]。該模型在操作系統和輔助硬件的支持下,對用戶屏蔽了硬件的實現細節,使得用戶只需按照一定格式提供需要進行計算的數據以及相關的一些控制參數就可以像訪問一個軟件函數一樣去調用一個硬件加速器來實現所要求的功能,而不再需要了解硬件具體的實現細節。
1 硬件透明編程模型
1.1 透明編程模型操作系統的框架
可重構計算提供了微處理器和ASIC(專用集成電路)之外的第三種解決方案,它整合了硬件電路的高性能和高可靠性以及微處理器的可編程功能,它能充分利用單片FPGA可重構硬件支持動態重構的優點,一方面對底層可重構資源充分利用,另一方面對應用程序開發人員實現硬件透明編程。在操作系統的支持下,編譯和綜合工具會根據特定的函數名稱來識別硬件函數,并把硬件函數和輸入參數等映射到可重構硬件上執行。
本文在以uC/OS-II嵌入式實時操作系統為基礎的硬件透明編程操作系統平臺上,實現動態可重構,并對硬件函數進行預配置,獲得硬件運算加速,以降低重構開銷,從而提高系統的性能。使用的實驗平臺是Xilinx公司的Virtex-II系列的產品,可重構資源管理使用的是一維模型,畢竟二維模型還不成熟,對系統性能的提升難度較大。
硬件透明編程操作系統的體系結構把動態可重構計算系統作為一組由微處理器和硬件加速器組成的共享內存的混合處理單元,其編程模型為程序員提供一個類似于常規軟件開發環境的接口。將系統框架分為五層(如圖1所示),具體分層如下:
應用層:為設計者提供包含軟件函數和硬件函數的抽象函數庫,用于描述應用程序。這個硬件函數庫包含了需要利用硬件加速器實現的各種功能。在這里軟件和硬件對用戶來說都是一組接口,用戶在使用時不需要關注實現的細節。
操作系統層:為進程通信、同步和硬件函數調用提供機制和支持,并跟蹤和管理可重配置資源,如調度軟件任務或配置硬件任務等。由于硬件任務的動態創建和釋放,可重配置資源的使用情況也在不斷變化的。資源管理器會跟蹤這些變化,并且能夠及時反饋給操作系統。在需要對可重構資源進行操作時,操作系統能根據資源管理單元的情況來命令配置控制器對可重構資源進行相應的操作。
軟硬件結合層:配置控制器從配置文件數據庫中讀取出對應硬件加速模塊的配置文件,并配置到可重構資源管理單元指定的位置。提供控制和存取可重構資源管理單元等的基本接口。
體系結構層:是以一個或者多個微處理器和可重構器件作為處理單元,以可重構資源控制管理器和綜合、配置單元作為支持單元的體系結構。后文將對系統的體系結構進行詳細分析。
硬件層:指系統里面真正的物理組件,比如微處理器實體、可編程器件、內存模塊、內部連接網絡等底層物理器件。
1.2 透明編程模型操作系統的體系結構
動態可重構計算系統的一個重要組成部分是體系結構,其結構圖如圖2所示,下面著重介紹系統的體系結構模型中的關鍵組件:
微處理單元:包括微處理器和硬件加速器。在圖2中表示為微處理器和FPGA上可重構區域的專用處理模塊。其中專用硬件處理模塊可以是IP核,也可以是自行設計的硬件模塊,用虛線框表示說明專用處理模塊可動態改變。
存儲系統:微處理器和硬件加速器可能有片上內存資源作為局部高速緩存。他們也能通過存儲器接口單元存取片外的內存。片外和片內的存儲設備共享統一的線性地址內存空間。內存接口單元有專門管理片內和片外存儲設備存取的電路。
互連總線:處理單元采用共享內存的方式通信。連接到總線的每個單元都有唯一的地址來標識自己,總線控制器管理總線上的數據流通。
可重構資源管理模塊:負責維護動態可重構資源狀態信息、從硬件函數庫中讀配置字節流文件、執行綜合和配置命令。
標準化接口:硬件加速模塊能接收的數據模式是固定的,為了實現硬件函數對不同數據類型的支持,就需要標準化輸入參數。比如當函數的輸入參數中有向量(如數組)時,通常參數給出的是向量的起始地址,在這樣的情況下,如果硬件加速器有足夠的緩存那么就可以把向量全部讀取過來放在緩存中,然后分別處理;也可以讓硬件加速器自己訪問內存來讀取數據。
2 總結
在傳統的編程模型中,設計人員需要理解體系結構和可重構器件實現的物理細節,這樣增大了開發負擔,降低了開發效率。本文實現了一個硬件透明的編程模型。該模型能夠提供一個類似軟件函數的硬件函數給設計人員,它屏蔽了底層硬件實現的物理細節,使設計人員能簡單方便地使用硬件加速器。下一步的工作包括豐富和完善包含軟硬件函數的抽象函數庫,動態可重構計算系統的動態軟硬件劃分也是今后的研究中需要考慮的方面。
參考文獻:
[1] Vuletid M, Pozzi L, Ienne P. Seamless hardware-software integration in reconfigurable computing systems[J].Design Test of Computers,2005, 22(2):102-113.
[2] Vuletid M, Pozzi L, Ienne P. Programming Transparency and Portable Hardware Interfacing towards General-Purpose Reconfigurable Computing。In: Proceedings of the 15th IEEE International Conference on Application-Specific Systems, Architectures and Processors (ASAP'04): 339-351.
[3] Vuletid M, Pozzi L, Ienne P. Virtual Memory Window for Application-Specific Reconfigurable Coprocessors, DAC 2004, June 7–11, 2004, San Diego, California, USA. 948~953
[4] 覃祥菊,朱明程.FPGA動態可重構技術原理及實現方法分析[J].電子器件,2004,27(2):64-69.
[5] Andrews D., Niehaus D.Programming models for hybrid FPGA-CPU computational components: A missing link. IEEE Transactions on Micro, 2004, 24(4):42-53.
[6] 周博,王石記,邱衛東,彭澄廉.SHUM-UCOS:基于統一多任務模型可重構系統的實時操作系統[J].計算機學報,2006,29(2):208-218.
[7] Walder H., Platzner M. Reconfigurable hardware operating systems: From design concepts to realizations. In: Proceedings of the 3rd International Conference on Engineering of Reconfigurable Systems and Architectures (ERSA'03), Las Vegas (NV), USA, 2003: 284-287.
[8] 謝巍.支持可重構硬件透明編程的操作系統研究:[湖南大學碩士論文].長沙:湖南大學,2007,18-24.