引言
目前,在面向應用的嵌入式體系結構的研究中,為了能同時利用通用處理器(CPU)的靈活性和專用集成電路(ASIC)的高效性,一些研究者將系統(tǒng)中性能要求較高的模塊用FPGA等可編程器件實現(xiàn),與通用處理器集成可重構片上系統(tǒng)。隨著現(xiàn)場可編程門陣列(FPGA)技術的.快速發(fā)展,可重構技術開始受到研究者們越來越多的關注。但是可重構計算的發(fā)展現(xiàn)狀是硬件遠遠領先于軟件,在可重構計算中需要一個操作系統(tǒng)來管理新的可重構硬件資源,屏蔽硬件細節(jié),并向開發(fā)人員提供高層次的編程模型。因此一些研究者將由可編程器件實現(xiàn)的任務模塊抽象為硬件任務,并納入可重構實時操作系統(tǒng)的統(tǒng)一管理,由可重構實時操作系統(tǒng)負責任務調度、系統(tǒng)資源管理以及任務間的通信和同步等工作。
迄今,對可重構系統(tǒng)任務間通信的研究取得了一些成果。例如,Miljan Vuletic等人在參考文獻中將純軟件任務環(huán)境的虛擬存儲訪問向可重構環(huán)境進行了擴展,以方便應用編程和移植;Philip Garcia等人在參考文獻中對硬件任務接口進行了研究,以實現(xiàn)對硬件任務的統(tǒng)一封裝。但這些研究僅著眼于底層數(shù)據(jù)的交互,而沒有考慮通信中伴隨的上層任務間的同步和互斥邏輯;另外,張磊等人在參考文獻中對軟/硬件任務互斥進行了研究,但沒有考慮大量數(shù)據(jù)跨越CPU和FPGA邊界的情況。因此,本文在這些研究成果的基礎上,結合底層實現(xiàn)和上層邏輯對基于統(tǒng)一優(yōu)先級調度的可重構系統(tǒng)中軟/硬件任務間通信進行探討。
1 可重構系統(tǒng)中軟/硬件任務間通信分析
1.1 相關概念
硬件任務,是指由可重構硬件資源實現(xiàn)的功能模塊,相對于軟件任務具有以下特點:
①硬件任務的數(shù)量受限于可重構資源的數(shù)量;
②硬件任務可以實現(xiàn)微觀并行;
③硬件任務通過配置可重構資源來建立,建立時間長,不可以忽略不計;
④由于硬件任務在運行的切換開銷較大,因此不必像軟件任務那樣進行切換來分享CPU,而是可以獨享相應的資源。
為了支持統(tǒng)一優(yōu)先級調度,軟/硬件任務可統(tǒng)一表示為Ti(ai,ei,di,ci,wi,hi)。其中,ai表示任務到達時間,ei表示任務最壞運行時間,di表示任務完成截止時間,ci表示任務配置時間,wi和hi表示硬件任務的寬度和高度。由于硬件任務和軟件任務具有不同的特點,從而可將其中任務間的通信和同步分為3類,即軟件任務(SWT)之間、軟/硬件任務之間以及硬件任務(HWT)之間。
1.2 分層的通信模型
對于任何一個操作系統(tǒng)來說,任務間的通信和同步都是必不可少的。系統(tǒng)中各任務的運行不僅與任務的應用邏輯相關還與系統(tǒng)的狀態(tài)相關,而系統(tǒng)的狀態(tài)又由系統(tǒng)中運行的多個任務決定,因此任務間的通信往往伴隨著同步和互斥的實現(xiàn)。為了便于任務間的通信,從傳統(tǒng)純軟件任務環(huán)境向可重構環(huán)境的擴展,將其分為邏輯機制和物理實現(xiàn)兩個層次。其中邏輯層主要負責多個任務間同步控制以及數(shù)據(jù)的保護,與底層的數(shù)據(jù)交互無關;而物理層則負責底層數(shù)據(jù)交互的實現(xiàn),即邏輯層和物理層以松耦合的方式組合,從而方便了系統(tǒng)的移植和通信機制的擴展。
就邏輯機制層而言,在傳統(tǒng)的純軟件任務的環(huán)境中,運行于CPU上的多個軟件任務具有宏觀上并行微觀上串行的特點,操作系統(tǒng)在對這些任務的資源共享和數(shù)據(jù)交互的管理上已有信號量、互斥量、消息隊列等成熟的通信機制。但在可重構系統(tǒng)中,軟件任務和硬件任務分別運行于CPU和FPGA上,軟/硬件任務間及硬件任務間具有微觀并行性,因此需要擴展這些通信機制對硬件任務的支持,以實現(xiàn)跨越CPU和FPGA邊界的軟/硬件任務間通信。這主要表現(xiàn)在針對不同類型的任務采取不同的后續(xù)措施上,同時向上層應用提供統(tǒng)一的通信接口。
而對于物理層的實現(xiàn),考慮到分布式存儲中消息傳遞方式實現(xiàn)的通信開銷較大且實現(xiàn)復雜,采用圖1所示的系統(tǒng)結構。CPU、FPGA以及系統(tǒng)主存掛接到總線上組成RSOPC。CPU除運行一定的用戶軟件任務之外,還負責提供操作系統(tǒng)服務,包括任務調度、資源管理、通信和同步管理等。操作系統(tǒng)通過統(tǒng)一的軟/硬件任務視圖——任務控制塊來對各個任務進行管理。硬件任務(HWT)運行于FPGA上,并由FPGA給每個硬件任務提供一個統(tǒng)一的硬件任務接口(HTI)供操作系統(tǒng)和硬件任務的交互,同時每個硬件任務在CPU上有代理任務與其對應。而軟件任務的代碼和數(shù)據(jù)以及硬件任務的配置數(shù)據(jù)都存放于系統(tǒng)內存中,CPU通過片上總線讀取存儲器中的硬件任務配置數(shù)據(jù)對FPGA進行配置。
為了方便應用編程和移植,系統(tǒng)主存和FPGA的局部存儲器統(tǒng)一編址,且該地址由基址和偏移兩部分組成。基址以頁為單位,而偏移不超過頁的大小,即設系統(tǒng)的地址空間為2n,頁大小為2k,則基址的取值范圍為[O,2n/2k],而偏移的取值范圍為[O,2k]。Main_Memory和 Local_Memory分配有不同的基址,在編譯器的支持下,全局數(shù)據(jù)和軟件任務的局部數(shù)據(jù)存放于Main_Memory,而硬件任務的局部數(shù)據(jù)存放于 Local_Memory。在應用層,任務可通過統(tǒng)一的全局地址訪問數(shù)據(jù),在物理實現(xiàn)上硬件任務只能直接訪問Local_Memory的數(shù)據(jù);而當其數(shù)據(jù)需跨越CPU和FPGA邊界時,則通過如消息隊列服務等固定的幾種方式向OS發(fā)出申請,并由0S控制數(shù)據(jù)的遷移以及遷移前后被遷移數(shù)據(jù)地址在 Main_Memory范圍和Local_Memmory范圍的映射,地址的映射主要通過設置HWTI中的地址寄存器來實現(xiàn),詳見2.2.2節(jié)。在這種設計前提下,進行應用設計時不必關心任務的實現(xiàn)方式。
2 可重構系統(tǒng)中消息隊列通信機制
消息隊列是一種靈活的通信機制,它允許一個任務或中斷服務子程序向另一個任務發(fā)送以指針方式定義的變量或其他任務。
2.1 μC/OS—II簡介
μC/OS—II是一個專門為計算機嵌入式應用設計的源碼開放的可移植、可固化、多任務的占先式實時內核,提供基于靜態(tài)優(yōu)先級的搶占式調度,且具有執(zhí)行效率高、占用空間小、實時性能優(yōu)良和可擴展性強等特點。在任務通信方面,μC/OS—II提供了信號量、互斥量、消息隊列、消息郵箱和事件標志組五種通信機制。
2.2 消息隊列通信實現(xiàn)的支持機制
2.2.1 硬件任務接口與硬件任務代理
軟/硬件任務問消息隊列通信的邏輯框圖如圖2所示。軟/硬件任務分別通過自身和代理調用0SQ_Request向0S申請消息隊列服務,使得在通信邏輯層 OS可將軟/硬件任務同等看待。這方便了現(xiàn)有通信邏輯向可重構系統(tǒng)的擴展,同時OS提供的通信服務由軟件實現(xiàn)相對于硬件實現(xiàn)更具靈活性。
由圖2可見,硬件任務在申請消息隊列服務時需要硬件任務接口(HWTI)、硬件任務代理(HWTAgent)和中斷的支持。一次典型的消息申請消息服務的執(zhí)行過程可描述為:
①硬件任務將申請的服務類型及參數(shù)等放入HWTI中的相應寄存器;
②硬件任務向CPU發(fā)送中斷;
③CPU響應中斷,在中斷服務程序里喚醒硬件任務代理;
④硬件任務代理獲得調度,調用系統(tǒng)調用以取得消息,將消息在Local Memory的地址存入HWTI中的地址寄存器中并喚醒硬件任務;
⑤硬件任務繼續(xù)執(zhí)行。
HWTI是用戶硬件任務和操作系統(tǒng)之間的橋梁,由一組寄存器組成,主要包括控制寄存器、狀態(tài)寄存器、參數(shù)寄存器、地址寄存器等。
HWTAgent本質上是一個運行于CPU上的軟件任務,它充當了OS與運行于FPGA上的硬件任務的橋梁。HWTAgent的存在使得在通信邏輯層OS 可以將硬件任務和軟件任務同等看待,從而方便了軟/硬件任務統(tǒng)一優(yōu)先級的調度,而HWTAgent對應代碼段的執(zhí)行則實現(xiàn)通信物理層功能。 HWTAgent,的設置同時也是出于這樣一種考慮:中斷服務程序應執(zhí)行盡可能少的代碼,否則將影響系統(tǒng)的實時性。由于在消息隊列通信中需要設置HW— TI中的寄存器,同時可能涉及大量數(shù)據(jù)的遷移,若將這部分工作由中斷服務來完成,將會影響對后續(xù)高優(yōu)先級硬件任務請求的響應。而設置HWTAgent后,中斷服務程序只需將請求類型放入TCB然后激活HWTAgent即可,而將其他的任務交由軟件任務HWTAgent來完成,從而能盡快響應后續(xù)高優(yōu)先級硬件任務的請求。
2.2.2 硬件任務對全局數(shù)據(jù)的訪問
由前所述,數(shù)據(jù)訪問的同步和保護等服務由運行于CPU上的0S提供。當硬件任務向OS申請消息時,若分配得的消息存在于Main_Memory上,則 HWTAgent會把消息從Main_Memory遷移到Local_Memory;而當數(shù)據(jù)遷移完成后HWTAgent還需完成消息地址的轉換,即將硬件任務當前可用的消息在Local_Memory中的地址存入HWTI中的地址寄存器中。由于Main_Memory和Local_Memory統(tǒng)一編址,0S控制著系統(tǒng)的存儲布局信息,因此地址的轉換是可以實現(xiàn)的。
2.3 可重構系統(tǒng)中消息隊列通信的實現(xiàn)
針對消息隊列的操作主要有4種,即創(chuàng)建消息隊列、刪除消息隊列、申請消息和發(fā)送消息。這里規(guī)定消息的申請不能由中斷服務子程序調用,主要是因為消息的申請可能引起任務的阻塞,而消息隊列的創(chuàng)建和刪除只能由軟件任務調用。這也是可以理解的,因為硬件任務一般作為大數(shù)據(jù)處理的加速器使用,而應用的控制邏輯仍由軟件任務實現(xiàn)。
由1.2的敘述可知,需擴展消息隊列通信對硬件任務的支持,同時為了維護邏輯層與物理層的松耦合性,有關數(shù)據(jù)遷移和地址轉換的部分均由HWTAgent完成。采取如下具體措施,以實現(xiàn)基于統(tǒng)一優(yōu)先級的軟/硬件任務間消息隊列通信:
①在有關消息隊列的內核部分增加一個查找被阻塞任務中最高優(yōu)先級的系統(tǒng)調用0SQFindHighPrio(),若消息隊列當前有被阻塞任務則返回其中具有最高優(yōu)先級任務的優(yōu)先級,否則返回一1;
②針對硬件任務服務申請的中斷服務程序只需調用OSAgentRdy()喚醒請求任務對應的代理任務,OSAgent—Rdy()定義為 OSAgentRdy(INT8U reqType,INT8U tid,void*param),其中reqType為請求類型,tid為請求任務的id,param為請求附帶的參數(shù);
③HWTAgent獲得調用后根據(jù)情況執(zhí)行后續(xù)操作(針對因申請消息隊列服務而喚醒的部分),其執(zhí)行偽代碼如下(記當前操作的消息隊列為Q,發(fā)出申請的任務為T,具有最高優(yōu)先級的被阻塞任務為T1):
以上執(zhí)行過程可描述如下:①判斷申請的服務類型;②若是發(fā)送消息請求則調用OSQFindHighPrio()查找被阻塞的最高優(yōu)先級;③若Q中沒有被阻塞的任務或被阻塞任務中具有最高優(yōu)先級的任務是SWT,則需進行數(shù)據(jù)遷移;④利用遷移后的消息地址調用OSQPost;⑤否則Q中具有最高優(yōu)先級的被阻塞任務為HWT,不需數(shù)據(jù)遷移而直接激活該任務;⑥否則若是獲取消息請求則調用OSQPend()以獲取消息;⑦若獲得的消息存放于 Main_Memory,則需進行數(shù)據(jù)遷移;⑧由于獲得消息而激活發(fā)送請求的硬件任務T。
3 模擬實驗及分析
本文針對由CPU和FPGA組成的可重構系統(tǒng)提出了一種分層的軟/硬件任務間通信方式,并在其上實現(xiàn)了消息隊列通信??紤]到CPU具有更高的靈活性而 FPGA具有更高的數(shù)據(jù)量處理效率,將硬件任務作為大數(shù)據(jù)處理的加速器使用,而通信的系統(tǒng)控制部分由運行于CPU上的0S負責。這一實現(xiàn)具有以下優(yōu)點:
①由軟件實現(xiàn)系統(tǒng)控制更具靈活性,分層的通信結構使系統(tǒng)層次更加清晰,方便移植;
②向上層應用程序員屏蔽軟硬件底層差異,使得應用程序員可以將注意力集中于應用邏輯的處理上;
③硬件任務代理的設置減輕了中斷服務程序的壓力,保證了對后續(xù)高優(yōu)先級硬件任務請求的響應能力。
為了證明HWTAgent能保證后續(xù)高優(yōu)先級硬件任務的請求能得到及時響應,現(xiàn)對有HwTAgent和無HWTAgent兩種情況下同級中斷的響應時間進行比較。記消息長度為L,使用和不使用HWTAgent時響應時間分別為t1和t2,單位為CPU時鐘周期數(shù)。
圖3為使用與不使用HWAgent下對后續(xù)硬件任務請求的響應時間隨消息長度改變的情況。
由圖3可知,不采用HWTAgent時最壞情況下的響應時間會隨消息長度的增加而延長;而使用HWTAgent后,響應時間為一固定值,且接近最好情況的響應時間??梢?,HWTAgent可有效地保證對后續(xù)高優(yōu)先級硬件任務請求的響應能力。
結語
本文對可重構系統(tǒng)中任務間的通信機制進行了探討,提出了一種分層的通信機制,方便了通信邏輯層的擴展以及通信物理層的移植,并在其上實現(xiàn)了消息隊列通信,且用模擬實驗證明了其有效性。
責任編輯:gt
-
處理器
+關注
關注
68文章
19896瀏覽量
235299 -
集成電路
+關注
關注
5425文章
12070瀏覽量
368516 -
嵌入式
+關注
關注
5152文章
19675瀏覽量
317656
發(fā)布評論請先 登錄
可重用機床編碼技術及重構算法研究
FPGA的重構方式
基于FPGA的可重構系統(tǒng)結構分析
有什么FPGA可重構方法可以對EPCS在線編程?
怎么實現(xiàn)基于FPGA的動態(tài)可重構系統(tǒng)設計?
對微機系統(tǒng)軟件抗干擾方法進行研究
動態(tài)可重構系統(tǒng)的通信結構分析

可重構設計的測控站監(jiān)控系統(tǒng)研究與實現(xiàn)

基于SytemC動態(tài)可重構系統(tǒng)硬件任務管理模型

面向可重構系統(tǒng)的一種功耗相關硬件任務調度算法設計

基于FPGA硬件平臺的可重構系統(tǒng)調度算法詳解

評論