潘 鵬,林水生,黃樂天
(電子科技大學(xué)通信與信息工程學(xué)院,四川成都 611731)
隨著通信和多媒體技術(shù)的應(yīng)用需求的發(fā)展,對傳統(tǒng)數(shù)字系統(tǒng)設(shè)計提出了更高要求,設(shè)計的數(shù)字系統(tǒng)兼具軟件的靈活性和硬件的高性能成為發(fā)展趨勢,可重構(gòu)技術(shù)尤其是動態(tài)可重構(gòu)技術(shù)被視為是這一問題的高性能解決方案。動態(tài)可重構(gòu)技術(shù)能夠?qū)崿F(xiàn)相同邏輯區(qū)域在不同時刻,經(jīng)過配置后實現(xiàn)不同的功能,增大系統(tǒng)的靈活性,同時也增加系統(tǒng)設(shè)計的難度。為能夠從性能和可重構(gòu)資源利用率兩方面設(shè)計出滿足應(yīng)用需要的動態(tài)可重構(gòu)系統(tǒng),必須在早期的設(shè)計階段進行設(shè)計空間搜索(DSE)。
DSE的工具和方法能夠幫助設(shè)計者系統(tǒng)地評估各種結(jié)構(gòu)設(shè)計方案、軟硬件劃分算法和調(diào)度算法等,以此來優(yōu)化設(shè)計方案。動態(tài)可重構(gòu)系統(tǒng)的DSE主要有兩類評估方法[1]:(1)算法自組方法。(2)基于框架的仿真建模方法。其中,后者采用一種標準化的框架進行建模和仿真,將系統(tǒng)結(jié)構(gòu)和設(shè)計算法統(tǒng)一于一個框架中。由于此方法模型可再用性高,能夠快速地比較各種設(shè)計方案,較全面地評估系統(tǒng)性能,已成為當(dāng)前國內(nèi)研究動態(tài)可重構(gòu)DSE的主要評估方法。目前,國內(nèi)外研究者提出了不少動態(tài)可重構(gòu)DSE的建模和仿真框架,例如 rSesame[1]、COSMOS[2]、DRCF[3]、SyCERS[4]、Perfecto[5]等。然而,現(xiàn)有的設(shè)計空間搜索框架都具有一定的局限性,例如Marco Santambrogio的SyCERS框架,提出的模型僅針對一種可重構(gòu)系統(tǒng)結(jié)構(gòu),不能適用其他動態(tài)可重構(gòu)系統(tǒng)的結(jié)構(gòu);文獻[6~7]主要從動態(tài)可重構(gòu)系統(tǒng)的結(jié)構(gòu)上考慮建模的方法,不涉及資源管理和設(shè)計算法的問題;而Hsiung Paoann等提出的Perfecto架構(gòu)雖然能適用多種動態(tài)可重構(gòu)SoC的結(jié)構(gòu),但提出的模型側(cè)重于評估軟硬件劃分算法對系統(tǒng)性能的影響,重點從軟硬件劃分算法上優(yōu)化系統(tǒng)設(shè)計,不具體考慮任務(wù)的管理調(diào)度問題。
針對目前缺少一種能夠適用于多種可重構(gòu)系統(tǒng)結(jié)構(gòu),用于評估硬件任務(wù)管理策略的通用模型,本文提出一種基于SystemC的動態(tài)可重構(gòu)系統(tǒng)硬件任務(wù)管理的仿真模型,可以通過指定不同的調(diào)度和布局策略對一個應(yīng)用的硬件任務(wù)在可重構(gòu)系統(tǒng)上執(zhí)行情況進行仿真,根據(jù)仿真結(jié)果評估硬件任務(wù)的管理策略。
動態(tài)可重構(gòu)系統(tǒng)主要由通用處理器和可重構(gòu)硬件組成,通用處理器執(zhí)行控制密集型的任務(wù),執(zhí)行的這些任務(wù)稱為軟件任務(wù);而可重構(gòu)硬件則執(zhí)行計算密集型的任務(wù),這些計算密集型的任務(wù)稱為硬件任務(wù)。在動態(tài)可重構(gòu)系統(tǒng)中執(zhí)行的硬件任務(wù)通常要經(jīng)歷4個階段:(1)調(diào)度。(2)布局。(3)重構(gòu)。(4)執(zhí)行。除非該任務(wù)模塊已經(jīng)在可重構(gòu)硬件上,否則在執(zhí)行前要進行重構(gòu)。硬件任務(wù)的調(diào)度和布局,由系統(tǒng)采用的硬件任務(wù)管理策略決定。對一個應(yīng)用的硬件任務(wù),采用不同的策略管理任務(wù)的調(diào)度和布局,可能會使相同的任務(wù)其安排的開始執(zhí)行時間和布局位置都產(chǎn)生差異,進而影響應(yīng)用的總執(zhí)行時間、重構(gòu)開銷和資源利用率等。
為了模擬在指定管理策略下,硬件任務(wù)在動態(tài)可重構(gòu)系統(tǒng)中的執(zhí)行過程,設(shè)計模型如圖1所示。
圖1 動態(tài)可重構(gòu)硬件任務(wù)管理的模型結(jié)構(gòu)
TS:依照給定的管理策略對硬件任務(wù)隊列進行調(diào)度和布局。TS需要時刻關(guān)注可重構(gòu)資源的空閑數(shù)目,在滿足先后關(guān)系和資源約束的條件下,根據(jù)資源的使用情況安排任務(wù)的開始執(zhí)行的時間和布局位置。
RC:主要負責(zé)可重構(gòu)資源的重構(gòu)操作,包括接收TS發(fā)送的任務(wù)、讀寫配置存儲器以及配置可重構(gòu)資源。同時重構(gòu)控制器還要監(jiān)視可重構(gòu)資源的狀態(tài),為任務(wù)調(diào)度器提供空閑資源的信息。RC一次只能處理一個任務(wù)的重構(gòu)請求,不能同時進行多個任務(wù)的重構(gòu)操作。
CM:存放配置文件。為了模擬重構(gòu)的過程,配置文件需要提供重構(gòu)的功能和開銷等信息。因此,用一組參數(shù) <function_type,config_time,resource_size>表征配置文件,function_type表示配置實現(xiàn)的功能,如實現(xiàn)AES加密算法,config_time表示配置的延時,resource_size表示實現(xiàn)該配置需要的可重構(gòu)資源數(shù)。
RR:主要負責(zé)執(zhí)行硬件任務(wù),約束運行時硬件任務(wù)所占有資源。對于部分可重構(gòu)系統(tǒng),有一維和二維兩種資源模型??梢愿鶕?jù)調(diào)度算法采用不同的布局方式以調(diào)整資源的模式。例如采用一維布局的Horizon調(diào)度算法,可將資源以水平方向等分割成slice單元,任務(wù)占用的資源數(shù)和總資源數(shù)都可用slice的數(shù)量來表示;若采用二維的Static-Grid調(diào)度算法,則將資源劃分均勻的tile網(wǎng)格,tile作為大小形狀都相同的基本重構(gòu)單元,資源的數(shù)量用 tile的數(shù)量來表示。
在這4個功能模塊中,TS要同時負責(zé)硬件任務(wù)的調(diào)度和布局。通常硬件任務(wù)的調(diào)度和布局有兩種管理方法:(1)分別采用相應(yīng)的調(diào)度算法和布局算法管理。(2)將任務(wù)的調(diào)度和布局問題統(tǒng)一于調(diào)度算法中,采用該種調(diào)度算法管理。為了能夠兼容這兩種管理方法,將硬件任務(wù)的調(diào)度和布局統(tǒng)一由TS模塊管理,而不采用設(shè)置兩個模塊分開管理調(diào)度和布局的方法。對于動態(tài)可重構(gòu)系統(tǒng),有任務(wù)在進行配置的同時,其他完成配置的任務(wù)可以執(zhí)行運算。為了便于同步管理硬件任務(wù)重構(gòu)操作和運算執(zhí)行,專門設(shè)置RC模塊管理任務(wù)的重構(gòu)操作,而RR模塊只負責(zé)任務(wù)運算的執(zhí)行。重構(gòu)開銷的信息專門由CM提供,根據(jù)不同的重構(gòu)硬件技術(shù)修改配置文件的參數(shù),能夠模擬不同重構(gòu)系統(tǒng)的重構(gòu)開銷,而不影響到其他模塊的功能,方便對不同可重構(gòu)系統(tǒng)的建模。
模型中處理任務(wù)的流程如圖2所示,當(dāng)TS接收到任務(wù)隊列時,通過RC獲知RR的當(dāng)前狀態(tài),TS根據(jù)指定的管理策略和當(dāng)前RR情況安排任務(wù)執(zhí)行順序和布局位置。在RC空閑的時刻,TS將當(dāng)前最優(yōu)先執(zhí)行的任務(wù)發(fā)送給RC。RC接受到任務(wù)后根據(jù)任務(wù)的功能類型和RR的狀態(tài)判斷是否需要進行重構(gòu)。若任務(wù)布局區(qū)域的可重構(gòu)功能單元已經(jīng)配置了與任務(wù)相同的功能,則無需進行重構(gòu),在任務(wù)開始執(zhí)行的時間到來時,直接將任務(wù)寫入到RR中執(zhí)行;若任務(wù)布局區(qū)域的可重構(gòu)功能單元沒有配置或者配置實現(xiàn)的功能與任務(wù)的功能類型不同,則從CM中讀取配置文件,配置目標重構(gòu)單元。RR完成配置后告知RC,RC等待任務(wù)開始執(zhí)行的時間到來后,將任務(wù)交由RR執(zhí)行。任務(wù)執(zhí)行完后告知RC。RC在可重構(gòu)基本單元的狀態(tài)發(fā)生變化時,需要更新RR的狀態(tài)記錄。
圖2 模型處理任務(wù)的流程
采用 SystemC事務(wù)級建模(TLM,Transaction Level Modeling)的方法搭建動態(tài)可重構(gòu)硬件任務(wù)管理的仿真模型,可以實現(xiàn)模型的功能和通信分離,功能由模塊sc_module實現(xiàn),模塊間的通信通過接口方法調(diào)用(IMC,Interface Method Call)實現(xiàn)。用IMC實現(xiàn)模塊間的通信,需要在各模塊間定義通信的端口(Port)和接口(Interface)。TS、RC、CM、RR之間的通信的端口和接口,如圖3所示。下面以TS模塊和RC模塊為例,說明動態(tài)可重構(gòu)系統(tǒng)硬件任務(wù)管理的SystemC建模。
TS模塊:在接口TS_if內(nèi)提供方法task_in()和task_out(),前者用于外部模塊向TS模塊寫入新的任務(wù),后者提供給RC模塊獲取當(dāng)前要處理的任務(wù)。在模塊中定義了負責(zé)任務(wù)調(diào)度的函數(shù)scheduling()。scheduling()根據(jù)指定的調(diào)度算法實現(xiàn)任務(wù)的調(diào)度,分兩個階段完成任務(wù)的調(diào)度。第一階段的調(diào)度主要確定任務(wù)的執(zhí)行順序,根據(jù)指定的調(diào)度算法安排任務(wù)調(diào)度的順序。第二階段調(diào)度主要根據(jù)獲取的當(dāng)前可重構(gòu)資源的狀態(tài)以及任務(wù)的信息,在滿足具體算法要求的條件下,安排任務(wù)的開始執(zhí)行時間和布局位置。
圖3 動態(tài)可重構(gòu)系統(tǒng)硬件任務(wù)管理的SystemC模型
RC模塊:接口RC_if中定義了方法get_RR_status(),TS模塊通過端口TS2RC_port調(diào)用該接口方法可以獲知可重構(gòu)資源的狀態(tài)信息。模塊中實現(xiàn)監(jiān)視重構(gòu)資源狀態(tài)和配置可重構(gòu)資源的SC_THREAD進程如下:track_RR_status()―記錄當(dāng)前可重構(gòu)資源的狀態(tài),監(jiān)視空閑資源的數(shù)目和位置。狀態(tài)信息包括:(1)當(dāng)前可重構(gòu)基本功能單元實現(xiàn)的功能,例如要實現(xiàn)MD5-1、SHA-1、DES等加密算法,用 RU_function表示。(2)當(dāng)前可重構(gòu)基本功能單元的運行狀態(tài),這里定義了4種狀態(tài):1)IDLE:空閑狀態(tài);2)CONFIGURING:配置中;3)EXECUTING:任務(wù)執(zhí)行中;4)DONE資源配置完或任務(wù)執(zhí)行完畢。狀態(tài)的轉(zhuǎn)移圖如圖4所示。如果采用一維布局的模式,用一維數(shù)組記錄每個基本配置單元的狀態(tài),若采用二維布局則用二維數(shù)組來記錄,數(shù)組中元素間的位置關(guān)系表征實際可重構(gòu)單元的位置關(guān)。Configuration():在任務(wù)執(zhí)行前完成重構(gòu)資源的配置。需要查看任務(wù)分配的資源區(qū)域?qū)崿F(xiàn)的功能是否與任務(wù)的功能相同,如果相同則無需進行重構(gòu),反之則需要載入配置信息,完成資源的配置。在配置過程中,通過端口RC2CM_port讀取CM模塊中的配置文件,獲取重構(gòu)開銷的信息。配置完成后,等待任務(wù)開始執(zhí)行時刻的到來,再通過端口RC2RR_port將任務(wù)寫入到RR模塊相應(yīng)的地址中,交由RR模塊執(zhí)行任務(wù)。
圖4 重構(gòu)資源的狀態(tài)圖
為說明用本文模型在設(shè)計的動態(tài)可重構(gòu)系統(tǒng)的資源約束下,針對一應(yīng)用評估硬件任務(wù)的管理策略,用IEEE Std 1666TM-2005 SystemC在Microsoft Visual Studio 2008平臺搭建上述模型進行仿真。
在仿真之前,先設(shè)定硬件任務(wù)的模型和可重構(gòu)資源約束。對于可重構(gòu)系統(tǒng)中,一個應(yīng)用可以定義成一組軟硬件混合任務(wù)及其依賴關(guān)系的集合,不同的硬件任務(wù)管理策略可以用不同模型描述應(yīng)用的硬件任務(wù)。為簡化實驗,設(shè)定實驗的硬件任務(wù)模型為非周期、非搶占式的,不計任務(wù)之間的通信代價,描述任務(wù)屬性的參數(shù)定義于表1中。其中PT表示任務(wù)間的數(shù)據(jù)依賴關(guān)系,有前驅(qū)任務(wù)的任務(wù)必須在前驅(qū)任務(wù)完成后才能開始執(zhí)行。具體用于實驗的硬件任務(wù)隊列的屬性如表2所示。根據(jù)任務(wù)屬性,設(shè)置好配置文件的參數(shù)。此外,設(shè)定可重構(gòu)資源采用一維模型,重構(gòu)資源的總數(shù)設(shè)定為8個 slice,用 slice1~slice8標記每個slice。
表1 任務(wù)屬性的參數(shù)定義
表2 任務(wù)的屬性
對上述硬件任務(wù)首先采用FCFS(First Come First Serve)調(diào)度算法[8]和FF(First Fit)布局算法來管理任務(wù)的調(diào)度和布局,并且用配置預(yù)取(Configuration Prefeching)[9]的方法提前進行任務(wù)配置,使任務(wù)的配置時間和運算執(zhí)行時間重疊,縮短總的執(zhí)行時間。通過文中模型仿真,可以得到在該策略下任務(wù)執(zhí)行情況的實時信息,用圖5(a)描述。從圖中可以觀察到每個任務(wù)的布局位置、配置開始時間和任務(wù)執(zhí)行開始執(zhí)行時間等,例如T2布局區(qū)域為[slice4,slice8],此區(qū)域的資源配置實現(xiàn)F2功能,任務(wù)開始配置和執(zhí)行的時間分別為12 ms和30 ms時刻。
考慮從任務(wù)總的執(zhí)行時間、重構(gòu)次數(shù)和資源利用率3個方面評估硬件任務(wù)的管理策略。定義資源利用率為
其中,Ntask為任務(wù)的總數(shù);TiS為Ti任務(wù)占用的資源數(shù);TETi為任務(wù)Ti總的執(zhí)行時間,ETtotal為所有任務(wù)總的執(zhí)行時間,Rtotal為資源總數(shù)。從圖5(a)可知道,采用上述管理策略,硬件任務(wù)總的執(zhí)行時間為78 ms,重構(gòu)資源總共進行了5次重構(gòu),資源利用率為60.42%。
如表2所示T1和T5的功能相同都為F1。如果在不影響其他任務(wù)執(zhí)行的情況下,實現(xiàn)T1和T5任務(wù)模塊的重用[9],將減少一次重構(gòu)開銷,并可縮短總執(zhí)行時間。然而,從圖5(a)得知,采用的管理策略沒有能實現(xiàn)T1和T5任務(wù)模塊的重用。因此,可以在滿足任務(wù)數(shù)據(jù)依賴關(guān)系的前提下,按如下思路改進硬件任務(wù)的管理策略:(1)安排T1開始配置的時間,在最晚能夠開始的時間點,最大程度減少T1和T5之間的時間間隔,從而減少其他任務(wù)占用這部分資源的可能性。(2)在T1結(jié)束到T5開始的期間,讓占用資源少的任務(wù)優(yōu)先執(zhí)行,盡量避免其他任務(wù)使用執(zhí)行完T1的重構(gòu)單元。
管理策略改進后,任務(wù)的調(diào)度和布局情況如圖5(b)所示,可以看到任務(wù)的執(zhí)行順序布局發(fā)生都改變,任務(wù)依照T2→T1→T4→T3→T5順序執(zhí)行,T1和T5分配到[slice5,slice7]單元區(qū)域上執(zhí)行,實現(xiàn)的任務(wù)模塊的重用,減少了一次重構(gòu)的開銷。所有任務(wù)執(zhí)行的總時間為76 ms,比之前的管理策略減少了2 ms,此時資源利用率為56.58%。改進后的管理策略雖然降低了資源利用,但減少的執(zhí)行時間和重構(gòu)開銷。
圖5 任務(wù)在兩種管理策略下的調(diào)度和布局情況
從上述實驗看出,利用本文模型,根據(jù)指定的硬件任務(wù)管理策略,對應(yīng)用的硬件任務(wù)在動態(tài)可重構(gòu)系統(tǒng)中執(zhí)行情況進行仿真,可以獲得任務(wù)的實時布局和調(diào)度信息,通過這些信息可以針對一應(yīng)用和可重構(gòu)系統(tǒng)評估硬件任務(wù)的管理策略,找出管理策略的缺陷并加以優(yōu)化。
本文提出了一種基于SystemC的動態(tài)可重構(gòu)硬件任務(wù)管理的仿真模型,并用SystemC實現(xiàn)模型的描述。仿真實驗表明,利用該模型仿真,可以獲知在指定管理策略下,應(yīng)用的硬件任務(wù)在可重構(gòu)系統(tǒng)中的實時調(diào)度布局信息,通過這些信息能夠評估硬件任務(wù)的管理策略。由于本文的仿真模型能夠針對不同的調(diào)度算法進行調(diào)整,不依賴具體的系統(tǒng)結(jié)構(gòu),因而在動態(tài)可重構(gòu)系統(tǒng)的設(shè)計空間搜索過程中,適用于評估硬件任務(wù)的管理策略。
[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,F(xiàn)rance,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.