潘 鵬,林水生,黃樂天
(電子科技大學通信與信息工程學院,四川成都 611731)
隨著通信和多媒體技術的應用需求的發展,對傳統數字系統設計提出了更高要求,設計的數字系統兼具軟件的靈活性和硬件的高性能成為發展趨勢,可重構技術尤其是動態可重構技術被視為是這一問題的高性能解決方案。動態可重構技術能夠實現相同邏輯區域在不同時刻,經過配置后實現不同的功能,增大系統的靈活性,同時也增加系統設計的難度。為能夠從性能和可重構資源利用率兩方面設計出滿足應用需要的動態可重構系統,必須在早期的設計階段進行設計空間搜索(DSE)。
DSE的工具和方法能夠幫助設計者系統地評估各種結構設計方案、軟硬件劃分算法和調度算法等,以此來優化設計方案。動態可重構系統的DSE主要有兩類評估方法[1]:(1)算法自組方法。(2)基于框架的仿真建模方法。其中,后者采用一種標準化的框架進行建模和仿真,將系統結構和設計算法統一于一個框架中。由于此方法模型可再用性高,能夠快速地比較各種設計方案,較全面地評估系統性能,已成為當前國內研究動態可重構DSE的主要評估方法。目前,國內外研究者提出了不少動態可重構DSE的建模和仿真框架,例如 rSesame[1]、COSMOS[2]、DRCF[3]、SyCERS[4]、Perfecto[5]等。然而,現有的設計空間搜索框架都具有一定的局限性,例如Marco Santambrogio的SyCERS框架,提出的模型僅針對一種可重構系統結構,不能適用其他動態可重構系統的結構;文獻[6~7]主要從動態可重構系統的結構上考慮建模的方法,不涉及資源管理和設計算法的問題;而Hsiung Paoann等提出的Perfecto架構雖然能適用多種動態可重構SoC的結構,但提出的模型側重于評估軟硬件劃分算法對系統性能的影響,重點從軟硬件劃分算法上優化系統設計,不具體考慮任務的管理調度問題。
針對目前缺少一種能夠適用于多種可重構系統結構,用于評估硬件任務管理策略的通用模型,本文提出一種基于SystemC的動態可重構系統硬件任務管理的仿真模型,可以通過指定不同的調度和布局策略對一個應用的硬件任務在可重構系統上執行情況進行仿真,根據仿真結果評估硬件任務的管理策略。
動態可重構系統主要由通用處理器和可重構硬件組成,通用處理器執行控制密集型的任務,執行的這些任務稱為軟件任務;而可重構硬件則執行計算密集型的任務,這些計算密集型的任務稱為硬件任務。在動態可重構系統中執行的硬件任務通常要經歷4個階段:(1)調度。(2)布局。(3)重構。(4)執行。除非該任務模塊已經在可重構硬件上,否則在執行前要進行重構。硬件任務的調度和布局,由系統采用的硬件任務管理策略決定。對一個應用的硬件任務,采用不同的策略管理任務的調度和布局,可能會使相同的任務其安排的開始執行時間和布局位置都產生差異,進而影響應用的總執行時間、重構開銷和資源利用率等。
為了模擬在指定管理策略下,硬件任務在動態可重構系統中的執行過程,設計模型如圖1所示。

圖1 動態可重構硬件任務管理的模型結構
TS:依照給定的管理策略對硬件任務隊列進行調度和布局。TS需要時刻關注可重構資源的空閑數目,在滿足先后關系和資源約束的條件下,根據資源的使用情況安排任務的開始執行的時間和布局位置。
RC:主要負責可重構資源的重構操作,包括接收TS發送的任務、讀寫配置存儲器以及配置可重構資源。同時重構控制器還要監視可重構資源的狀態,為任務調度器提供空閑資源的信息。RC一次只能處理一個任務的重構請求,不能同時進行多個任務的重構操作。
CM:存放配置文件。為了模擬重構的過程,配置文件需要提供重構的功能和開銷等信息。因此,用一組參數 <function_type,config_time,resource_size>表征配置文件,function_type表示配置實現的功能,如實現AES加密算法,config_time表示配置的延時,resource_size表示實現該配置需要的可重構資源數。
RR:主要負責執行硬件任務,約束運行時硬件任務所占有資源。對于部分可重構系統,有一維和二維兩種資源模型。可以根據調度算法采用不同的布局方式以調整資源的模式。例如采用一維布局的Horizon調度算法,可將資源以水平方向等分割成slice單元,任務占用的資源數和總資源數都可用slice的數量來表示;若采用二維的Static-Grid調度算法,則將資源劃分均勻的tile網格,tile作為大小形狀都相同的基本重構單元,資源的數量用 tile的數量來表示。
在這4個功能模塊中,TS要同時負責硬件任務的調度和布局。通常硬件任務的調度和布局有兩種管理方法:(1)分別采用相應的調度算法和布局算法管理。(2)將任務的調度和布局問題統一于調度算法中,采用該種調度算法管理。為了能夠兼容這兩種管理方法,將硬件任務的調度和布局統一由TS模塊管理,而不采用設置兩個模塊分開管理調度和布局的方法。對于動態可重構系統,有任務在進行配置的同時,其他完成配置的任務可以執行運算。為了便于同步管理硬件任務重構操作和運算執行,專門設置RC模塊管理任務的重構操作,而RR模塊只負責任務運算的執行。重構開銷的信息專門由CM提供,根據不同的重構硬件技術修改配置文件的參數,能夠模擬不同重構系統的重構開銷,而不影響到其他模塊的功能,方便對不同可重構系統的建模。
模型中處理任務的流程如圖2所示,當TS接收到任務隊列時,通過RC獲知RR的當前狀態,TS根據指定的管理策略和當前RR情況安排任務執行順序和布局位置。在RC空閑的時刻,TS將當前最優先執行的任務發送給RC。RC接受到任務后根據任務的功能類型和RR的狀態判斷是否需要進行重構。若任務布局區域的可重構功能單元已經配置了與任務相同的功能,則無需進行重構,在任務開始執行的時間到來時,直接將任務寫入到RR中執行;若任務布局區域的可重構功能單元沒有配置或者配置實現的功能與任務的功能類型不同,則從CM中讀取配置文件,配置目標重構單元。RR完成配置后告知RC,RC等待任務開始執行的時間到來后,將任務交由RR執行。任務執行完后告知RC。RC在可重構基本單元的狀態發生變化時,需要更新RR的狀態記錄。

圖2 模型處理任務的流程
采用 SystemC事務級建模(TLM,Transaction Level Modeling)的方法搭建動態可重構硬件任務管理的仿真模型,可以實現模型的功能和通信分離,功能由模塊sc_module實現,模塊間的通信通過接口方法調用(IMC,Interface Method Call)實現。用IMC實現模塊間的通信,需要在各模塊間定義通信的端口(Port)和接口(Interface)。TS、RC、CM、RR之間的通信的端口和接口,如圖3所示。下面以TS模塊和RC模塊為例,說明動態可重構系統硬件任務管理的SystemC建模。
TS模塊:在接口TS_if內提供方法task_in()和task_out(),前者用于外部模塊向TS模塊寫入新的任務,后者提供給RC模塊獲取當前要處理的任務。在模塊中定義了負責任務調度的函數scheduling()。scheduling()根據指定的調度算法實現任務的調度,分兩個階段完成任務的調度。第一階段的調度主要確定任務的執行順序,根據指定的調度算法安排任務調度的順序。第二階段調度主要根據獲取的當前可重構資源的狀態以及任務的信息,在滿足具體算法要求的條件下,安排任務的開始執行時間和布局位置。

圖3 動態可重構系統硬件任務管理的SystemC模型
RC模塊:接口RC_if中定義了方法get_RR_status(),TS模塊通過端口TS2RC_port調用該接口方法可以獲知可重構資源的狀態信息。模塊中實現監視重構資源狀態和配置可重構資源的SC_THREAD進程如下:track_RR_status()―記錄當前可重構資源的狀態,監視空閑資源的數目和位置。狀態信息包括:(1)當前可重構基本功能單元實現的功能,例如要實現MD5-1、SHA-1、DES等加密算法,用 RU_function表示。(2)當前可重構基本功能單元的運行狀態,這里定義了4種狀態:1)IDLE:空閑狀態;2)CONFIGURING:配置中;3)EXECUTING:任務執行中;4)DONE資源配置完或任務執行完畢。狀態的轉移圖如圖4所示。如果采用一維布局的模式,用一維數組記錄每個基本配置單元的狀態,若采用二維布局則用二維數組來記錄,數組中元素間的位置關系表征實際可重構單元的位置關。Configuration():在任務執行前完成重構資源的配置。需要查看任務分配的資源區域實現的功能是否與任務的功能相同,如果相同則無需進行重構,反之則需要載入配置信息,完成資源的配置。在配置過程中,通過端口RC2CM_port讀取CM模塊中的配置文件,獲取重構開銷的信息。配置完成后,等待任務開始執行時刻的到來,再通過端口RC2RR_port將任務寫入到RR模塊相應的地址中,交由RR模塊執行任務。

圖4 重構資源的狀態圖
為說明用本文模型在設計的動態可重構系統的資源約束下,針對一應用評估硬件任務的管理策略,用IEEE Std 1666TM-2005 SystemC在Microsoft Visual Studio 2008平臺搭建上述模型進行仿真。
在仿真之前,先設定硬件任務的模型和可重構資源約束。對于可重構系統中,一個應用可以定義成一組軟硬件混合任務及其依賴關系的集合,不同的硬件任務管理策略可以用不同模型描述應用的硬件任務。為簡化實驗,設定實驗的硬件任務模型為非周期、非搶占式的,不計任務之間的通信代價,描述任務屬性的參數定義于表1中。其中PT表示任務間的數據依賴關系,有前驅任務的任務必須在前驅任務完成后才能開始執行。具體用于實驗的硬件任務隊列的屬性如表2所示。根據任務屬性,設置好配置文件的參數。此外,設定可重構資源采用一維模型,重構資源的總數設定為8個 slice,用 slice1~slice8標記每個slice。

表1 任務屬性的參數定義

表2 任務的屬性
對上述硬件任務首先采用FCFS(First Come First Serve)調度算法[8]和FF(First Fit)布局算法來管理任務的調度和布局,并且用配置預取(Configuration Prefeching)[9]的方法提前進行任務配置,使任務的配置時間和運算執行時間重疊,縮短總的執行時間。通過文中模型仿真,可以得到在該策略下任務執行情況的實時信息,用圖5(a)描述。從圖中可以觀察到每個任務的布局位置、配置開始時間和任務執行開始執行時間等,例如T2布局區域為[slice4,slice8],此區域的資源配置實現F2功能,任務開始配置和執行的時間分別為12 ms和30 ms時刻。
考慮從任務總的執行時間、重構次數和資源利用率3個方面評估硬件任務的管理策略。定義資源利用率為

其中,Ntask為任務的總數;TiS為Ti任務占用的資源數;TETi為任務Ti總的執行時間,ETtotal為所有任務總的執行時間,Rtotal為資源總數。從圖5(a)可知道,采用上述管理策略,硬件任務總的執行時間為78 ms,重構資源總共進行了5次重構,資源利用率為60.42%。
如表2所示T1和T5的功能相同都為F1。如果在不影響其他任務執行的情況下,實現T1和T5任務模塊的重用[9],將減少一次重構開銷,并可縮短總執行時間。然而,從圖5(a)得知,采用的管理策略沒有能實現T1和T5任務模塊的重用。因此,可以在滿足任務數據依賴關系的前提下,按如下思路改進硬件任務的管理策略:(1)安排T1開始配置的時間,在最晚能夠開始的時間點,最大程度減少T1和T5之間的時間間隔,從而減少其他任務占用這部分資源的可能性。(2)在T1結束到T5開始的期間,讓占用資源少的任務優先執行,盡量避免其他任務使用執行完T1的重構單元。
管理策略改進后,任務的調度和布局情況如圖5(b)所示,可以看到任務的執行順序布局發生都改變,任務依照T2→T1→T4→T3→T5順序執行,T1和T5分配到[slice5,slice7]單元區域上執行,實現的任務模塊的重用,減少了一次重構的開銷。所有任務執行的總時間為76 ms,比之前的管理策略減少了2 ms,此時資源利用率為56.58%。改進后的管理策略雖然降低了資源利用,但減少的執行時間和重構開銷。

圖5 任務在兩種管理策略下的調度和布局情況
從上述實驗看出,利用本文模型,根據指定的硬件任務管理策略,對應用的硬件任務在動態可重構系統中執行情況進行仿真,可以獲得任務的實時布局和調度信息,通過這些信息可以針對一應用和可重構系統評估硬件任務的管理策略,找出管理策略的缺陷并加以優化。
本文提出了一種基于SystemC的動態可重構硬件任務管理的仿真模型,并用SystemC實現模型的描述。仿真實驗表明,利用該模型仿真,可以獲知在指定管理策略下,應用的硬件任務在可重構系統中的實時調度布局信息,通過這些信息能夠評估硬件任務的管理策略。由于本文的仿真模型能夠針對不同的調度算法進行調整,不依賴具體的系統結構,因而在動態可重構系統的設計空間搜索過程中,適用于評估硬件任務的管理策略。
[1] SIGDEL K,THOMPSON M,GALUZZI C,et al.rSesame-A generic system-level runtime simulation framework for reconfigurable architectures[C].Sydney,Australia:Proceedings of The 2009 International Conference on Field-Programmable Technology,2009:460-464.
[2] WU K,MADSEN J.COSMOS:A system-level modelling and simulation framework for coprocessor-coupled reconfigurable systems[C].Proceedings of 2007 International Conference on Embedded Computer Systems:Architectures,Modeling and Simulation.Samos,Greece,2007:128 -136.
[3] PELKONEN A,MASSELOS K,CUPAK M.System-level modeling of dynamically reconfigurable hardware with SystemC[C].Proceedings of the 10th Reconfigurable Architectures Workshop,International Parallel and Distributed Processing Symposium.Nice,France,2003:174-181.
[4] SANTAMBROGIO M.Hardware-Software co-design methodologies for dynamically recon?gurable systems[D].Italy:Politecnico Di Milano,2008.
[5] HSIUNG P A,LIN C S,LIAO C F.Perfecto:A Systemc-based Design-space Exploration Framework for Dynamically Reconfigurable Architectures [J]. ACM Trans.Reconfigurable Technol.Syst.,2008,1(3):1 -30.
[6] KITAMICHI J,UEDA K,KURODA K.A modeling of a dynamically reconfigurable processor using systemc[C].Hyderabad,India:Proceedings of the 21st International Conference on VLSI Design,2008:91-96.
[7] RAABE A,HARTMANN P A,ANLAUF J K.ReChannel:describing and simulating reconfigurable hardware in systemc[J].ACM Transactions on Design Automation of Electronic Systems,2008,13(1):1 -18.
[8] WALDER H,PLATZNER M.Online scheduling for blockpartitioned reconfigurable devices[C].Proceedings of the Conference on Design,Automation and Test in Europe(DATE),IEEE Computer Society,2003:10290-10295.
[9] RESANO J,MOZOS D,VERKEST D,et al.A reconfigurable manager for dynamically reconfigurable hardware[J].Design & Test of Computers,IEEE,Sept. - Oct,2005,22(5):452-460.