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