統一優(yōu)先級軟/硬件任務(wù)協(xié)同調度下的任務(wù)間通信機制

發(fā)布時(shí)間:2010-3-24 08:56    發(fā)布者:李寬
關(guān)鍵詞: 機制 , 任務(wù) , 通信 , 硬件
引言

目前,在面向應用的嵌入式體系結構的研究中,為了能同時(shí)利用通用處理器(CPU)的靈活性和專(zhuān)用集成電路(ASIC)的高效性,一些研究者將系統中性能要求較高的模塊用FPGA等可編程器件實(shí)現,與通用處理器集成可重構片上系統。隨著(zhù)現場(chǎng)可編程門(mén)陣列(FPGA)技術(shù)的.快速發(fā)展,可重構技術(shù)開(kāi)始受到研究者們越來(lái)越多的關(guān)注。但是可重構計算的發(fā)展現狀是硬件遠遠領(lǐng)先于軟件,在可重構計算中需要一個(gè)操作系統來(lái)管理新的可重構硬件資源,屏蔽硬件細節,并向開(kāi)發(fā)人員提供高層次的編程模型。因此一些研究者將由可編程器件實(shí)現的任務(wù)模塊抽象為硬件任務(wù),并納入可重構實(shí)時(shí)操作系統的統一管理,由可重構實(shí)時(shí)操作系統負責任務(wù)調度、系統資源管理以及任務(wù)間的通信和同步等工作。

迄今,對可重構系統任務(wù)間通信的研究取得了一些成果。例如,Miljan Vuletic等人在參考文獻中將純軟件任務(wù)環(huán)境的虛擬存儲訪(fǎng)問(wèn)向可重構環(huán)境進(jìn)行了擴展,以方便應用編程和移植;Philip Garcia等人在參考文獻中對硬件任務(wù)接口進(jìn)行了研究,以實(shí)現對硬件任務(wù)的統一封裝。但這些研究?jì)H著(zhù)眼于底層數據的交互,而沒(méi)有考慮通信中伴隨的上層任務(wù)間的同步和互斥邏輯;另外,張磊等人在參考文獻中對軟/硬件任務(wù)互斥進(jìn)行了研究,但沒(méi)有考慮大量數據跨越CPU和FPGA邊界的情況。因此,本文在這些研究成果的基礎上,結合底層實(shí)現和上層邏輯對基于統一優(yōu)先級調度的可重構系統中軟/硬件任務(wù)間通信進(jìn)行探討。

1 可重構系統中軟/硬件任務(wù)間通信分析

1.1 相關(guān)概念

硬件任務(wù),是指由可重構硬件資源實(shí)現的功能模塊,相對于軟件任務(wù)具有以下特點(diǎn):

    ①硬件任務(wù)的數量受限于可重構資源的數量;
    ②硬件任務(wù)可以實(shí)現微觀(guān)并行;
    ③硬件任務(wù)通過(guò)配置可重構資源來(lái)建立,建立時(shí)間長(cháng),不可以忽略不計;
    ④由于硬件任務(wù)在運行的切換開(kāi)銷(xiāo)較大,因此不必像軟件任務(wù)那樣進(jìn)行切換來(lái)分享CPU,而是可以獨享相應的資源。

為了支持統一優(yōu)先級調度,軟/硬件任務(wù)可統一表示為T(mén)i(ai,ei,di,ci,wi,hi)。其中,ai表示任務(wù)到達時(shí)間,ei表示任務(wù)最壞運行時(shí)間,di表示任務(wù)完成截止時(shí)間,ci表示任務(wù)配置時(shí)間,wi和hi表示硬件任務(wù)的寬度和高度。由于硬件任務(wù)和軟件任務(wù)具有不同的特點(diǎn),從而可將其中任務(wù)間的通信和同步分為3類(lèi),即軟件任務(wù)(SWT)之間、軟/硬件任務(wù)之間以及硬件任務(wù)(HWT)之間。

1.2 分層的通信模型

對于任何一個(gè)操作系統來(lái)說(shuō),任務(wù)間的通信和同步都是必不可少的。系統中各任務(wù)的運行不僅與任務(wù)的應用邏輯相關(guān)還與系統的狀態(tài)相關(guān),而系統的狀態(tài)又由系統中運行的多個(gè)任務(wù)決定,因此任務(wù)間的通信往往伴隨著(zhù)同步和互斥的實(shí)現。為了便于任務(wù)間的通信,從傳統純軟件任務(wù)環(huán)境向可重構環(huán)境的擴展,將其分為邏輯機制和物理實(shí)現兩個(gè)層次。其中邏輯層主要負責多個(gè)任務(wù)間同步控制以及數據的保護,與底層的數據交互無(wú)關(guān);而物理層則負責底層數據交互的實(shí)現,即邏輯層和物理層以松耦合的方式組合,從而方便了系統的移植和通信機制的擴展。

就邏輯機制層而言,在傳統的純軟件任務(wù)的環(huán)境中,運行于CPU上的多個(gè)軟件任務(wù)具有宏觀(guān)上并行微觀(guān)上串行的特點(diǎn),操作系統在對這些任務(wù)的資源共享和數據交互的管理上已有信號量、互斥量、消息隊列等成熟的通信機制。但在可重構系統中,軟件任務(wù)和硬件任務(wù)分別運行于CPU和FPGA上,軟/硬件任務(wù)間及硬件任務(wù)間具有微觀(guān)并行性,因此需要擴展這些通信機制對硬件任務(wù)的支持,以實(shí)現跨越CPU和FPGA邊界的軟/硬件任務(wù)間通信。這主要表現在針對不同類(lèi)型的任務(wù)采取不同的后續措施上,同時(shí)向上層應用提供統一的通信接口。

而對于物理層的實(shí)現,考慮到分布式存儲中消息傳遞方式實(shí)現的通信開(kāi)銷(xiāo)較大且實(shí)現復雜,采用圖1所示的系統結構。CPU、FPGA以及系統主存掛接到總線(xiàn)上組成RSOPC。CPU除運行一定的用戶(hù)軟件任務(wù)之外,還負責提供操作系統服務(wù),包括任務(wù)調度、資源管理、通信和同步管理等。操作系統通過(guò)統一的軟/硬件任務(wù)視圖——任務(wù)控制塊來(lái)對各個(gè)任務(wù)進(jìn)行管理。硬件任務(wù)(HWT)運行于FPGA上,并由FPGA給每個(gè)硬件任務(wù)提供一個(gè)統一的硬件任務(wù)接口(HTI)供操作系統和硬件任務(wù)的交互,同時(shí)每個(gè)硬件任務(wù)在CPU上有代理任務(wù)與其對應。而軟件任務(wù)的代碼和數據以及硬件任務(wù)的配置數據都存放于系統內存中,CPU通過(guò)片上總線(xiàn)讀取存儲器中的硬件任務(wù)配置數據對FPGA進(jìn)行配置。



為了方便應用編程和移植,系統主存和FPGA的局部存儲器統一編址,且該地址由基址和偏移兩部分組成;芬皂(yè)為單位,而偏移不超過(guò)頁(yè)的大小,即設系統的地址空間為2n,頁(yè)大小為2k,則基址的取值范圍為[O,2n/2k],而偏移的取值范圍為[O,2k]。Main_Memory和 Local_Memory分配有不同的基址,在編譯器的支持下,全局數據和軟件任務(wù)的局部數據存放于Main_Memory,而硬件任務(wù)的局部數據存放于 Local_Memory。在應用層,任務(wù)可通過(guò)統一的全局地址訪(fǎng)問(wèn)數據,在物理實(shí)現上硬件任務(wù)只能直接訪(fǎng)問(wèn)Local_Memory的數據;而當其數據需跨越CPU和FPGA邊界時(shí),則通過(guò)如消息隊列服務(wù)等固定的幾種方式向OS發(fā)出申請,并由0S控制數據的遷移以及遷移前后被遷移數據地址在 Main_Memory范圍和Local_Memmory范圍的映射,地址的映射主要通過(guò)設置HWTI中的地址寄存器來(lái)實(shí)現,詳見(jiàn)2.2.2節。在這種設計前提下,進(jìn)行應用設計時(shí)不必關(guān)心任務(wù)的實(shí)現方式。

2 可重構系統中消息隊列通信機制

消息隊列是一種靈活的通信機制,它允許一個(gè)任務(wù)或中斷服務(wù)子程序向另一個(gè)任務(wù)發(fā)送以指針?lè )绞蕉x的變量或其他任務(wù)。

2.1 μC/OS—II簡(jiǎn)介

μC/OS—II是一個(gè)專(zhuān)門(mén)為計算機嵌入式應用設計的源碼開(kāi)放的可移植、可固化、多任務(wù)的占先式實(shí)時(shí)內核,提供基于靜態(tài)優(yōu)先級的搶占式調度,且具有執行效率高、占用空間小、實(shí)時(shí)性能優(yōu)良和可擴展性強等特點(diǎn)。在任務(wù)通信方面,μC/OS—II提供了信號量、互斥量、消息隊列、消息郵箱和事件標志組五種通信機制。

2.2 消息隊列通信實(shí)現的支持機制

2.2.1 硬件任務(wù)接口與硬件任務(wù)代理

軟/硬件任務(wù)問(wèn)消息隊列通信的邏輯框圖如圖2所示。軟/硬件任務(wù)分別通過(guò)自身和代理調用0SQ_Request向0S申請消息隊列服務(wù),使得在通信邏輯層 OS可將軟/硬件任務(wù)同等看待。這方便了現有通信邏輯向可重構系統的擴展,同時(shí)OS提供的通信服務(wù)由軟件實(shí)現相對于硬件實(shí)現更具靈活性。



由圖2可見(jiàn),硬件任務(wù)在申請消息隊列服務(wù)時(shí)需要硬件任務(wù)接口(HWTI)、硬件任務(wù)代理(HWTAgent)和中斷的支持。一次典型的消息申請消息服務(wù)的執行過(guò)程可描述為:

    ①硬件任務(wù)將申請的服務(wù)類(lèi)型及參數等放入HWTI中的相應寄存器;
    ②硬件任務(wù)向CPU發(fā)送中斷;
    ③CPU響應中斷,在中斷服務(wù)程序里喚醒硬件任務(wù)代理;
    ④硬件任務(wù)代理獲得調度,調用系統調用以取得消息,將消息在Local Memory的地址存入HWTI中的地址寄存器中并喚醒硬件任務(wù);
    ⑤硬件任務(wù)繼續執行。

HWTI是用戶(hù)硬件任務(wù)和操作系統之間的橋梁,由一組寄存器組成,主要包括控制寄存器、狀態(tài)寄存器、參數寄存器、地址寄存器等。

HWTAgent本質(zhì)上是一個(gè)運行于CPU上的軟件任務(wù),它充當了OS與運行于FPGA上的硬件任務(wù)的橋梁。HWTAgent的存在使得在通信邏輯層OS 可以將硬件任務(wù)和軟件任務(wù)同等看待,從而方便了軟/硬件任務(wù)統一優(yōu)先級的調度,而HWTAgent對應代碼段的執行則實(shí)現通信物理層功能。 HWTAgent,的設置同時(shí)也是出于這樣一種考慮:中斷服務(wù)程序應執行盡可能少的代碼,否則將影響系統的實(shí)時(shí)性。由于在消息隊列通信中需要設置HW— TI中的寄存器,同時(shí)可能涉及大量數據的遷移,若將這部分工作由中斷服務(wù)來(lái)完成,將會(huì )影響對后續高優(yōu)先級硬件任務(wù)請求的響應。而設置HWTAgent后,中斷服務(wù)程序只需將請求類(lèi)型放入TCB然后激活HWTAgent即可,而將其他的任務(wù)交由軟件任務(wù)HWTAgent來(lái)完成,從而能盡快響應后續高優(yōu)先級硬件任務(wù)的請求。

2.2.2 硬件任務(wù)對全局數據的訪(fǎng)問(wèn)

由前所述,數據訪(fǎng)問(wèn)的同步和保護等服務(wù)由運行于CPU上的0S提供。當硬件任務(wù)向OS申請消息時(shí),若分配得的消息存在于Main_Memory上,則 HWTAgent會(huì )把消息從Main_Memory遷移到Local_Memory;而當數據遷移完成后HWTAgent還需完成消息地址的轉換,即將硬件任務(wù)當前可用的消息在Local_Memory中的地址存入HWTI中的地址寄存器中。由于Main_Memory和Local_Memory統一編址,0S控制著(zhù)系統的存儲布局信息,因此地址的轉換是可以實(shí)現的。

2.3 可重構系統中消息隊列通信的實(shí)現

針對消息隊列的操作主要有4種,即創(chuàng )建消息隊列、刪除消息隊列、申請消息和發(fā)送消息。這里規定消息的申請不能由中斷服務(wù)子程序調用,主要是因為消息的申請可能引起任務(wù)的阻塞,而消息隊列的創(chuàng )建和刪除只能由軟件任務(wù)調用。這也是可以理解的,因為硬件任務(wù)一般作為大數據處理的加速器使用,而應用的控制邏輯仍由軟件任務(wù)實(shí)現。

由1.2的敘述可知,需擴展消息隊列通信對硬件任務(wù)的支持,同時(shí)為了維護邏輯層與物理層的松耦合性,有關(guān)數據遷移和地址轉換的部分均由HWTAgent完成。采取如下具體措施,以實(shí)現基于統一優(yōu)先級的軟/硬件任務(wù)間消息隊列通信:

①在有關(guān)消息隊列的內核部分增加一個(gè)查找被阻塞任務(wù)中最高優(yōu)先級的系統調用0SQFindHighPrio(),若消息隊列當前有被阻塞任務(wù)則返回其中具有最高優(yōu)先級任務(wù)的優(yōu)先級,否則返回一1;

②針對硬件任務(wù)服務(wù)申請的中斷服務(wù)程序只需調用OSAgentRdy()喚醒請求任務(wù)對應的代理任務(wù),OSAgent—Rdy()定義為 OSAgentRdy(INT8U reqType,INT8U tid,void*param),其中reqType為請求類(lèi)型,tid為請求任務(wù)的id,param為請求附帶的參數;

③HWTAgent獲得調用后根據情況執行后續操作(針對因申請消息隊列服務(wù)而喚醒的部分),其執行偽代碼如下(記當前操作的消息隊列為Q,發(fā)出申請的任務(wù)為T(mén),具有最高優(yōu)先級的被阻塞任務(wù)為T(mén)1):




以上執行過(guò)程可描述如下:①判斷申請的服務(wù)類(lèi)型;②若是發(fā)送消息請求則調用OSQFindHighPrio()查找被阻塞的最高優(yōu)先級;③若Q中沒(méi)有被阻塞的任務(wù)或被阻塞任務(wù)中具有最高優(yōu)先級的任務(wù)是SWT,則需進(jìn)行數據遷移;④利用遷移后的消息地址調用OSQPost;⑤否則Q中具有最高優(yōu)先級的被阻塞任務(wù)為HWT,不需數據遷移而直接激活該任務(wù);⑥否則若是獲取消息請求則調用OSQPend()以獲取消息;⑦若獲得的消息存放于 Main_Memory,則需進(jìn)行數據遷移;⑧由于獲得消息而激活發(fā)送請求的硬件任務(wù)T。

3 模擬實(shí)驗及分析

本文針對由CPU和FPGA組成的可重構系統提出了一種分層的軟/硬件任務(wù)間通信方式,并在其上實(shí)現了消息隊列通信?紤]到CPU具有更高的靈活性而 FPGA具有更高的數據量處理效率,將硬件任務(wù)作為大數據處理的加速器使用,而通信的系統控制部分由運行于CPU上的0S負責。這一實(shí)現具有以下優(yōu)點(diǎn):

    ①由軟件實(shí)現系統控制更具靈活性,分層的通信結構使系統層次更加清晰,方便移植;
    ②向上層應用程序員屏蔽軟硬件底層差異,使得應用程序員可以將注意力集中于應用邏輯的處理上;
    ③硬件任務(wù)代理的設置減輕了中斷服務(wù)程序的壓力,保證了對后續高優(yōu)先級硬件任務(wù)請求的響應能力。

為了證明HWTAgent能保證后續高優(yōu)先級硬件任務(wù)的請求能得到及時(shí)響應,現對有HwTAgent和無(wú)HWTAgent兩種情況下同級中斷的響應時(shí)間進(jìn)行比較。記消息長(cháng)度為L(cháng),使用和不使用HWTAgent時(shí)響應時(shí)間分別為t1和t2,單位為CPU時(shí)鐘周期數。

圖3為使用與不使用HWAgent下對后續硬件任務(wù)請求的響應時(shí)間隨消息長(cháng)度改變的情況。



由圖3可知,不采用HWTAgent時(shí)最壞情況下的響應時(shí)間會(huì )隨消息長(cháng)度的增加而延長(cháng);而使用HWTAgent后,響應時(shí)間為一固定值,且接近最好情況的響應時(shí)間?梢(jiàn),HWTAgent可有效地保證對后續高優(yōu)先級硬件任務(wù)請求的響應能力。

結語(yǔ)

本文對可重構系統中任務(wù)間的通信機制進(jìn)行了探討,提出了一種分層的通信機制,方便了通信邏輯層的擴展以及通信物理層的移植,并在其上實(shí)現了消息隊列通信,且用模擬實(shí)驗證明了其有效性。

參考文獻

   1. 周學(xué)功 可重構嵌入式系統樣機平臺與操作系統研究 2007
   2. Vuletid M.Pozzi L.Ienne P Seamless Hardware-Software Integration in Reconfigurable Computing Systems 2005(2)
   3. Garcia P.Compton K A Reconfigurable Hardware Interface for a Modern Computing System 2007
   4. 張磊.郭兵.張傳武.沈艷 基于統一調度的RTOS軟/硬件任務(wù)資源競爭機制研究與設計 [期刊論文] -計算機應用2007(11)
   5. 周博.王石記.邱衛東.彭澄廉 SHUM- UCOS:基于統一多任務(wù)模型可重構系統的實(shí)時(shí)操作系統 [期刊論文] -計算機學(xué)報2006(2)
   6. Labrosses Jean J.邵貝貝 嵌入式實(shí)時(shí)操作系統μC/OS-II 2003

作者:曾蜀芳,郭兵 (四川大學(xué)) 沈艷 (電子科技大學(xué))
來(lái)源:單片機與嵌入式系統應用 2009 (4)
本文地址:http://selenalain.com/thread-9790-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页