專利名稱:一種滿足systemC語法的多核處理器的事件處理單元組的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種多核處理器,更具體地,本發(fā)明涉及一種滿足SystemC語 法的多核處理器的事件處理單元組。
背景技術(shù):
近年來,多核處理器技術(shù)得到了蓬勃發(fā)展。究其原因,主要有以下幾點(diǎn) 第一,設(shè)計(jì)需求;硅的成本越來越低,集成度越來越高,多核的規(guī)則結(jié)構(gòu)可簡 單有效的利用更多的硅面積;第二,業(yè)務(wù)需求;多^ 某體業(yè)務(wù)越來越復(fù)雜,要求 平臺的靈活性和處理性能越來越高,同時還要求功耗保持在允許的范圍內(nèi),多 核處理器可潛在提供最高性能功耗比,可供更高性能的計(jì)算和靈活性;第三, 上市時間(Timetomarket)需求;上市時間要求越來越短,多核處理器的集中開發(fā) 可以滿足所需上市時間。
通常,多核處理器有以下兩種發(fā)展模式。
第一類多核處理器不改變現(xiàn)有順序執(zhí)行的設(shè)計(jì)流程和編程模式,只是采用 更先進(jìn)的編譯技術(shù)來適應(yīng)多核的架構(gòu)。
多核在這里起的作用僅是代替單核而提供更多的計(jì)算功能。目前多數(shù)的處 理器,無論是單核還是多核,都采用順序執(zhí)行的編程沖莫型。在這種^^莫型下,為 了支持多任務(wù),引入了支持多任務(wù)的操作系統(tǒng)。操作系統(tǒng)可以為進(jìn)行多任務(wù)編 程和并行執(zhí)行代碼提供途徑。但是,在存在操作系統(tǒng)和多個任務(wù)并行存在的情
況下,整個嵌入式系統(tǒng)又變得相對十分復(fù)雜,調(diào)試難度與單核單任務(wù)相比大大 增加。 一種調(diào)試方式為斷點(diǎn)調(diào)試,當(dāng)處理器在斷點(diǎn)處暫停執(zhí)行時,外部輸入條 件仍然可能發(fā)生變化,因?yàn)樘幚砥鞯臅和#e誤發(fā)生的條件可能不能再現(xiàn)。另 外一種調(diào)試方式為打印輸出,將可能出錯的地方打印出來,由于打印的結(jié)果可 能非常繁多,錯誤難以定位。而且一旦處理器執(zhí)行出錯,可能在錯誤發(fā)生前打 印本身已經(jīng)不能工作。引入了操作系統(tǒng)后的另外一個問題是處理器的空閑運(yùn)轉(zhuǎn) 導(dǎo)致的電量浪費(fèi)。由于有多個任務(wù),雖然外設(shè)可以根據(jù)需要進(jìn)行停止,但處理 器在什么時候應(yīng)該進(jìn)入節(jié)電模式以及何時從節(jié)電模式中恢復(fù)變得難以確定,從而導(dǎo)致電量浪費(fèi)。據(jù)統(tǒng)計(jì),由于上述原因,造成大約一半的嵌入式系統(tǒng)項(xiàng)目失敗。
(2)第二類多核處理器采用并行語言和編程模式,根據(jù)并行語言和編程模
式的需要來設(shè)計(jì)處理器的物理架構(gòu)。采用這種方式設(shè)計(jì)的多核處理器能夠與并 行語言緊密配合,并期望克服第一類處理器調(diào)試?yán)щy和電量浪費(fèi)的缺點(diǎn)。
目前的多核處理器都屬于第一類,而第二類處理器仍然處于發(fā)展初期,沒 有成熟的設(shè)計(jì)應(yīng)用。
對于"事件發(fā)生,,"任務(wù)完成,,這樣的單比特通信問題,在一般多核處理
器中的解決辦法是發(fā)送者將通知信息寫入指定的寄存器或者存儲器;通過中 斷通知給需要該信息的處理器核,或者需要該信息的處理器核不斷地查詢指定 的寄存器或者存儲器直到4僉測到指定的寄存器或者存儲器的值發(fā)生了變化。
在現(xiàn)有多核處理器中,事件處理單元的處理器核為了向可能接收一個事件 的其它處理單元進(jìn)行事件通知,需要軟件分別向可能接收該事件的處理單元發(fā) 送事件通知數(shù)據(jù)包,且不支持一個進(jìn)程同時在多個事件上進(jìn)行等待。
發(fā)明內(nèi)容
為克服現(xiàn)有多核處理器在"事件發(fā)生,,"任務(wù)完成"這樣的單比特通信問 題中的缺陷,本發(fā)明提出一種滿足SystemC語法的多核處理器的事件處理單元 組。
根據(jù)本發(fā)明的一個方面,提出了一種滿足systemC語法的多核處理器的事 件處理單元組,所述事件處理單元組包括按照SystemC語法的sc—event、 sc—event—queue的各種公有函數(shù)、wait(…)函數(shù)的各種形式以及SC一THREAD和 SC—METHOD敏感表實(shí)現(xiàn)的邏輯電路,用于發(fā)送激活和暫停處理器的信號,并 使得軟件開發(fā)工具的映射算法將位于不同處理單元的多個事件處理單元組進(jìn)行 組合,實(shí)現(xiàn)多個sc—event或者sc_event—queue語法單元所定義的功能、wait(...) 函數(shù)的功能、SC一THREAD和SC_METHOD敏感表功能。
所述事件處理單元組,包括
事件接收引擎、接收事件地址列表、恢復(fù)執(zhí)行條件寄存器組和處理器核執(zhí) 行控制器;所述事件接收引擎與交換單元適配器、處理器核執(zhí)行控制器以及接 收事件地址列表相連,所述處理器核執(zhí)行控制器和所述恢復(fù)執(zhí)行條件寄存器組 相連,所述接收事件地址列表和所述恢復(fù)執(zhí)行條件寄存器組通過本地總線接口 單元和處理器核相連,其中,所述事件接收引擎接收來自所述交換單元適配器的數(shù)據(jù)包,確定所 述數(shù)據(jù)包中所包含的接收事件的地址標(biāo)識包括在所述接收事件地址列表中,向
處理器核執(zhí)行控制器輸出事件發(fā)生通知;
其中,所述處理器核執(zhí)行控制器根據(jù)所述恢復(fù)執(zhí)行條件寄存器組的寄存器 狀態(tài)信息,向處理器運(yùn)行時控制器輸出"暫停"或者"執(zhí)行"信號。
所述事件處理單元組,還包括
接收事件ID寄存器,與所述事件接收引擎相連,用于暫存接收事件的名稱, 對應(yīng)于SC—EVNET和SC—EVENT—QUEUE模塊的sc—module—name;
超時計(jì)時器,與所述恢復(fù)執(zhí)行條件寄存器組和所述處理器核執(zhí)行控制器相 連,根據(jù)所述恢復(fù)執(zhí)行條件寄存器組的超時信息,進(jìn)行超時計(jì)時,并發(fā)送超時 事件到所述處理器核執(zhí)行控制器。
所述事件處理單元組,還包括
事件發(fā)送引擎、事件描述表和發(fā)送控制寄存器組;所述事件發(fā)送引擎與交 換單元適配器、發(fā)送控制寄存器組以及時間描述表相連,所述發(fā)送控制寄存器 組和所述時間描述表通過本地總線接口單元和處理器核相連;
其中,所述發(fā)送控制寄存器組將要發(fā)送的事件的描述表起始地址和描述表 長度發(fā)送到所述事件發(fā)送引擎,所述事件發(fā)送引擎查找所述事件描述表,按照 交換單元所要求的包格式將該事件的可選ID和該事件唯一地址標(biāo)識并根據(jù)接收 該事件的事件處理單元組的地址發(fā)送。
其中,所述發(fā)送控制寄存器組包括多個發(fā)送控制寄存器,所述發(fā)送控制寄 存器存儲要發(fā)送事件的描述表起始地址和描述表長度,所述事件描述表存儲要 發(fā)送事件的可選ID、唯一地址標(biāo)識和接收該事件的事件處理單元組的地址。
其中,所述恢復(fù)執(zhí)行條件寄存器組包括與事件寄存器、或事件寄存器、 超時條件寄存器、事件類型寄存器和事件取消寄存器;
其中,所述或事件寄存器和與所述事件寄存器對應(yīng)事件接收地址列表的唯 一地址標(biāo)識,所述事件類型寄存器標(biāo)識事件是SystemC語法的SC—EVENT或者 SC—EVENT—QUEUE。
其中,所述處理器核執(zhí)行控制器對每一個SC—EVENT_QUEUE類型的事件 進(jìn)行累計(jì),當(dāng)事件取消寄存器的對應(yīng)比特被寫入有效值,則累計(jì)值被清零。
其中,當(dāng)所述與事件寄存器被寫入,則新的與事件寄存器的值被送到所述 處理器核執(zhí)行控制器,所述處理器核執(zhí)行控制器輸出處理器"暫停"到處理器 運(yùn)行控制器,當(dāng)所述與事件寄存器所表示的每一事件都由事件接收引擎接收到,則所述處理器核執(zhí)行控制器向信號輸出"執(zhí)行"信號到處理器運(yùn)行時控制器。
其中,當(dāng)所述或事件寄存器被寫入,則新的或事件寄存器的值被送到處理 器核執(zhí)行控制器,處理器核執(zhí)行控制器輸出處理器"暫停,,到處理器運(yùn)行控制 器,當(dāng)或事件寄存器所表示的任一事件由事件接收引擎接收到,則處理器核執(zhí)
行控制器輸出"執(zhí)行"到處理器運(yùn)行時控制器;其中,當(dāng)SC—EVENT—QUEUE類 型的事件的累計(jì)值不為0,此時如果或事件寄存器或者與事件寄存器被寫入,則 認(rèn)為該事件剛被接收,累計(jì)值減l。
其中,用戶代碼中的wait(sc—event)和wait(sc—event一queue)被翁3譯為向接收 事件地址寄存器中寫入接收地址和向事件控制器寄存器中寫入接收命令。
其中,用戶代碼的sc—event.notify()和sc—event—queue.notify()在事件處理單 元組中被如下翻譯處理器核向發(fā)送事件地址寄存器寫入接收該事件的目的地 址和向發(fā)送事件控制寄存器寫入觸發(fā)值,所述事件發(fā)送引擎向所述交換單元適 配器發(fā)送事件通知數(shù)據(jù)包,其中,所述數(shù)據(jù)包的目的地址為發(fā)送事件地址寄存 器的值。
根據(jù)本發(fā)明的事件處理單元組可廣泛應(yīng)用于不同的多核處理器中,尤其是 應(yīng)用于SystemC優(yōu)化的多核處理器中。本發(fā)明有效地實(shí)現(xiàn)了 SystemC語法所要 求的SC_EVENT_QUEUE和SC—EVENT語法單元。不僅在單個模塊內(nèi)支持多個 事件單元,而且支持位于一個處理單元的一個事件單元觸發(fā)事件,位于其它處 理單元的多個事件單元接收該通知消息。
圖1已有的基于二維陣列的8核處理器的示意圖; 圖2為根據(jù)本發(fā)明的實(shí)施例的改進(jìn)的多核處理器示意圖; 圖3為根據(jù)本發(fā)明的實(shí)施例的用于SystemC優(yōu)化的多核處理器的處理單元 示意圖4為根據(jù)本發(fā)明的多核處理器的事件處理單元組的組成結(jié)構(gòu)示意圖; 圖5為根據(jù)本發(fā)明的多核處理器的事件處理單元組的使用示意圖; 圖6是MP3解碼進(jìn)程set—mp3的處理單元資源配置示意圖; 圖7為根據(jù)本發(fā)明的實(shí)施例的外部事件觸發(fā)單元示意具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施例對本發(fā)明提供的一種滿足SystemC語法要求的多核處理器進(jìn)行詳細(xì)描述。
針對SystemC優(yōu)化的多核處理器希望采用SystemC作為多核的軟件開發(fā)語 言。SystemC是C+十的擴(kuò)展庫,1999年,EDA業(yè)界的Cadence、 Synopsys、 ARM 等公司共同組織開發(fā)基于C十+的EDA語言,從而誕生了 SystemC。在2006年, SystemC正式成為IEEE標(biāo)準(zhǔn),成為所有EDA軟件支持的VHDL、 Verilog之后 的第三種自然語言。
SystemC能夠提供更高的設(shè)計(jì)效率、更有效的設(shè)計(jì)流程,從而可以幫助解決 集成電路產(chǎn)業(yè)面臨的爆炸性的復(fù)雜度、上市壓力、成本上升等問題。
SystemC語言本身是C+十的擴(kuò)展,因此,雖然SystemC目前被廣泛應(yīng)用于 集成電路設(shè)計(jì)中的系統(tǒng)驗(yàn)證,它實(shí)際上也可以用來做多核嵌入式開發(fā)軟件。如 果多核處理器支持SystemC語言中的特定語法,那么基于SystemC的多核嵌入 式開發(fā)將有效簡化嵌入式系統(tǒng)的開發(fā)難度,增加開發(fā)效率,并實(shí)現(xiàn)更加有效的 處理器功耗管理。
圖1是與本申請為同一申請人提出的申請?zhí)枮?00710308574.5的專利申請 中的一個滿足SystemC的基于二維陣列的8核處理器的示意圖。在該申請中公 開的SystemC優(yōu)化的多核處理器具有常見的二維陣列結(jié)構(gòu),多個交換單元B及 其連接線C構(gòu)成的片上網(wǎng)絡(luò)。處理單元F通過交換單元適配器連接E到交換單 元S與其它處理單元或者外設(shè)A1-A12用于通信。此外,此多核處理器還包括 連接在相鄰的所述處理單元F之間的用于相鄰處理單元之間同步和數(shù)據(jù)共享的 本地資源單元G,和與所述交換單元B連接的至少一個用于所有處理單元之間 同步和數(shù)據(jù)共享的全局資源單元D。由于本地資源單元G位于相鄰的處理單元 F之間, 一個本地資源單元G只能為所連接的兩個處理單元F所使用,實(shí)際上 約束了被映射到本地資源的用戶代碼中的sc_mutex、 sc—event、 sc—semaphore、 sc_event_queue、 sc—fifo等語法單元只能為兩個進(jìn)程同時使用。因此,本地資源 單元G使用效率較低。
如圖2所示,才艮據(jù)本發(fā)明的實(shí)施例的一種改進(jìn)的SystemC優(yōu)化的多核處理 器。所述多核處理器包括多個交換單元B及其連接線C構(gòu)成片上網(wǎng)絡(luò),SystemC 優(yōu)化的處理單元H通過交換單元適配器E連接到交換單元S,與其它處理單元 或者多個外設(shè)Al-A12進(jìn)行通信。處理單元不通過其具有的本地資源單元與其它 處理單元直接連接,而是通過本地資源單元經(jīng)交換單元適配器與總線相連接, 實(shí)現(xiàn)一個本地資源單元可以為所連接的多個處理單元F所使用。
圖3為^^艮據(jù)本發(fā)明的實(shí)施例的用于SystemC優(yōu)化的多核處理器的處理單元示意圖。多核處理器的處理單元包括一個處理器核HI,以及通過本地總線H2
與處理器核相連接的可選的定時器組H3、可選的片上存儲器H4、可選的處理 器核與交換單元適配器橋H5。處理器交換單元適配器橋H5與本地總線H2和交 換單元適配器E相連接,是處理器核H1直接與外界通信的通道,用于處理器核 直接訪問片上其它處理單元和外設(shè)單元,并用于處理器核指令和數(shù)據(jù)總線接口 與交換單元適配器之間的通信。交換單元適配器E與處理單元內(nèi)的片上存儲器 H4相連接,允許外界訪問處理單元內(nèi)的片上存儲器。
圖3所示的多核處理器,包括一個由SystemC優(yōu)化的事件處理單元組H61、 SystemC優(yōu)化的先進(jìn)先出隊(duì)列單元組H62和SystemC優(yōu)化的互斥和信號量單元 組H63構(gòu)成的處理器核本地資源單元H6。 SystemC優(yōu)化的事件處理單元組H61 、 SystemC優(yōu)化的先進(jìn)先出隊(duì)列單元組H62和SystemC優(yōu)化的互斥和信號量單元 組H63分別連接到交換單元適配器E,用于和外界通信。處理器核本地資源單 元H6、片上存儲器H4、定時器組H3還分別連接到處理器核運(yùn)行時控制器H8, 并通過信號H71、 H72、 H731、 H74、 H75向處理器核運(yùn)行時控制器H8發(fā)送處 理器暫停和繼續(xù)執(zhí)行通知。處理器核運(yùn)行時控制器H8將這些通知合并后向處理 器核輸出運(yùn)行/停止信號H9。
本地資源單元H6的SystemC優(yōu)化的事件處理單元組H61、 SystemC優(yōu)化的 先進(jìn)先出隊(duì)列單元組H62和SystemC優(yōu)化的互斥和信號量單元組H63可以不依 賴于本地資源單元內(nèi)的其它子才莫塊而存在。也就是說,本地資源H6可以包括 SystemC優(yōu)化的事件處理單元組H61 、 SystemC優(yōu)化的先進(jìn)先出隊(duì)列單元組H62 和SystemC優(yōu)化的互斥和信號量單元組H63的其中一個或者多個。
定時器組H3包括多個定時器,每個定時器向事件處理單元組的對應(yīng)單元輸
出一個超時通知信號,多個通知信號構(gòu)成信號組M1。
事件處理單元組按照SystemC語法的sc—event、 sc—event_queue的各種公有
函數(shù)、wait(...)函數(shù)的各種形式以及SC_THREAD和SC一METHOD敏感表實(shí)現(xiàn)
邏輯電路,用于發(fā)送激活和暫停處理器的信號,并允許軟件開發(fā)工具的映射算
法將位于不同處理單元的多個事件處理單元組進(jìn)行組合,完成多個sc_event或
者sc_event—queue語法單元所定義的功能、wait(...)函數(shù)的功能、SC_THREAD
和SC_METHOD敏感表功能。
事件處理單元組的具體設(shè)計(jì)SystemC優(yōu)化的多核處理器的本地資源單元的一個重要組成部分是事件處 理單元組H61 ,事件處理單元組H61用于實(shí)現(xiàn)對SystemC語法的 sc_event.notifyO、 sc—event.cancelO 、 sc—eventnotifyO 、 sc—event一queue.cancelallO、 wait(...)的各種形式、SC一THREAD和SC一METHOD敏感表事件的支持。具體地, 本發(fā)明的實(shí)施例支持的wait(......)函數(shù)語法包括
1、 wait()——等待敏感表中有事件發(fā)生。
2、 wait( const sc—event& e)——等4寺事件發(fā)生,3口下面的例子 sc—event elj
wait( el );
當(dāng)事件el發(fā)生后,進(jìn)程將會激活,wait(el)后面的語句就會被執(zhí)行。
3、 wait( sc—event—or_list&)——等待事件之一發(fā)生,如下面的例子 sc—event el,e2,e3;
wait( el i e2 I e3 );
當(dāng)el、 e2或者e3之一發(fā)生后進(jìn)程將會激活,wait( el | e2 | e3 )后面的語句 就會被執(zhí)行。
4 、 wait( sc_event—and_list&)——等待事件全部發(fā)生。如下面的例子 sc—event el,e2,e3;
wait( el&e2 & e3 );
當(dāng)el 、 e2或者e3全部發(fā)生后,進(jìn)程將會激活,wait( el&e2 & e3 )后面的語 句就會被執(zhí)行。
5 、 wait( double v, sc—time—unit tu)--等4寺由v和tu決定的一l更時間。如下
面的例子
wait( 100, SC_NS );
進(jìn)程將被掛起100納秒后激活,wait(100, SC—NS)后面的語句就會被執(zhí)行。
6、 wait( double v, sc—time—unit tu,const sc—event& e)--等待事件e的發(fā)生
但如果在v和tu決定的一段時間內(nèi)事件沒有發(fā)生將不再等待。如下面的例子 sc event el;wait( 100, SC—NS, el );
如果100納秒內(nèi)有事件el發(fā)生或者時間超過了 100納秒,進(jìn)程將被激活。 7 、 wait( double v, sc—time—unit tu,sc一event—and—list& el)和wait( double v,
sc—time—unit tu,sc—event—or—list& el)--函#史功能類4以前面所述。如下面的例子
wait( 100, SC—NS, el i e2 I e3 ); 〃等待el,e2或者e3, 100納秒后超時。 wait( 100, SC—NS, el & e2 & e3 );〃等待el,e2和e3都發(fā)生,100納秒后超時。 前面所有的(double v, sc—time_unittu)兩個參數(shù)可以用一個sctime型參凝:
替代。如下面的例子
sc一time t( 100, SC一NS );
wait( t ); 〃等效于wait(l00,SC_NS)
wait( t, el ); 〃等效于wait( 100, SC—NS, el );
wait( t, el I e2 I e3 );〃等效于wait( 100, SC—NS, el | e2 | e3 )
wait( t, el & e2 & e3 ); 〃等效于wait( 100, SC—NS, el & e2 & e3 );
事件處理單元組的實(shí)現(xiàn)方法有多種, 一種是事件處理單元組在事件處理單 元組內(nèi)部包括多個獨(dú)立的事件處理單元,位于不同的處理單元的兩個事件處理 單元可構(gòu)成一個對兒,完成這兩個處理單元的處理器核之間的事件通知過程。
本發(fā)明的實(shí)施例公開的SystemC語法優(yōu)化的多核處理器中事件處理單元組 的一種高效微結(jié)構(gòu),是事件處理單元組的一種具體實(shí)現(xiàn),不僅在單個模塊內(nèi)支 持多個事件處理單元,而且支持一對多的多播消息通知位于一個處理單元的 一個事件單元觸發(fā)事件,位于其它處理單元的多個事件單元接收該通知消息。
如圖3所示,根據(jù)本發(fā)明的事件處理單元組H61通過處理單元的本地總線 H2連接到處理器核Hl以使得處理器核Hl能夠?qū)ζ溥M(jìn)行控制,同時連接到交換 單元適配器E以實(shí)現(xiàn)與其它處理單元和外設(shè)單元的通信。此外,事件處理單元 組H61還輸出一個停止/繼續(xù)執(zhí)行信號H73到處理器運(yùn)行時控制器H8。事件處 理單元組還接收來自所在處理單元的其它單元的事件通知,如圖2中來自定時 器組H3的Ml信號和來自先進(jìn)先出隊(duì)列單元組H62的信號M2。
圖4給出了根據(jù)本發(fā)明的一個實(shí)施例的多核處理器的事件處理單元組的實(shí) 例。如圖4所示,根據(jù)本發(fā)明的事件處理單元組內(nèi)部包括如下部件。
(1)發(fā)送控制寄存器組H6111、接收事件地址列表H6112、恢復(fù)執(zhí)行條件 寄存器組H615、事件描述表H6113,這些寄存器和表連接到本地總線接口單元 H612;處理器核Hl通過本地總線接口單元H612對這些寄存器組和表進(jìn)行操作, 控制整個事件處理單元組的工作;(2 )事件發(fā)送引擎H6110,事件發(fā)送引擎H6110連接到發(fā)送控制寄存器組 H6111和事件描述表H6113。發(fā)送控制寄存器組H6111由多個發(fā)送控制寄存器 H61113組成。發(fā)送控制寄存器H61113的內(nèi)容是要發(fā)送的事件的描述表起始地 址和描述表長度,事件描述表H6U3中相應(yīng)位置存儲了該事件的可選ID、該事 件唯一地址標(biāo)識和接收該事件的事件處理單元組的地址。當(dāng)處理器核H1對某一 發(fā)送控制寄存器H61113進(jìn)行寫操作,則表明該寄存器對應(yīng)的事件被觸發(fā)。發(fā)送 控制寄存器組H6111將要發(fā)送的事件的描述表起始地址和描述表長度被送到事 件發(fā)送引擎H6110,事件發(fā)送引擎查找事件描述表H6113,按照交換單元所要 求的包格式將該事件的可選ID和該事件唯一地址標(biāo)識打成數(shù)據(jù)包,根據(jù)接收該 事件的事件處理單元組的地址將數(shù)據(jù)包分別發(fā)送給目的事件處理單元組。
(3 )事件接收引擎H610,連接接收事件列表H613和接收事件ID寄存器 H6114,并向信號H614輸出事件發(fā)生通知。接收事件列表H6112的每一個寄存 器包含待接收事件的唯一地址標(biāo)識。事件接收引擎H610接收來自交換單元適配 器E的數(shù)據(jù)包,查找接收事件地址列表H6112,如果數(shù)據(jù)包所包含的接收事件 的唯一地址標(biāo)識包括在接收事件列表中,則向信號H614輸出事件發(fā)生通知。
(4)處理器核執(zhí)行控制器H616與超時計(jì)時器H6115,處理器核執(zhí)行控制 器H616連接到事件接收引擎H610,接收事件接收引擎H610發(fā)出的事件發(fā)生信 號H614;
處理器核執(zhí)行控制器H616還連接到恢復(fù)執(zhí)行條件寄存器組H615和超時計(jì) 時器H6115?;謴?fù)執(zhí)行條件寄存器組H615包括與事件寄存器H6151、或事件寄 存器H6152、事件類型寄存器H6154、事件取消寄存器H6155、超時條件寄存器 H6153?;蚴录拇嫫鱄6152和與事件寄存器H6151的每一比特對應(yīng)于一個事 件接收地址列表的事件唯一地址標(biāo)識的一個事件,事件類型寄存器H6154的對 應(yīng)比特標(biāo)識該事件是SystemC語法的SC—EVENT還是SC—EVENT—QUEUE,比 如1代表SC—EVENT—QUEUE, 0代表SC—EVENT。處理器核執(zhí)行控制器H616 對每一個SC_EVENT_QUEUE類型的事件進(jìn)行累計(jì),當(dāng)事件取消寄存器H6155 的對應(yīng)比特被寫入有效值,則累計(jì)值被清零。當(dāng)超時條件寄存器H6153被寫入, 超時周期信息H6116被送到超時計(jì)時器H6115,并觸發(fā)超時計(jì)時器開始運(yùn)行。 當(dāng)超時周期到達(dá),則超時事件被送到處理器核執(zhí)行控制器H616。當(dāng)與事件寄存 器H6151被寫入,則新的與事件寄存器H6151的值被送到處理器核執(zhí)行控制器 H616,處理器核執(zhí)行控制器H616向信號H6117輸出處理器"暫停"到處理器 運(yùn)行控制器,當(dāng)與事件寄存器H6151所表示的每一事件都由事件接收引擎H610
13接收到,則處理器核執(zhí)行控制器向信號H6117輸出"執(zhí)行"信號H6117到處理 器運(yùn)行時控制器。當(dāng)或事件寄存器H6152被寫入,則新的或事件寄存器的值被 送到處理器核執(zhí)行控制器H616,處理器核執(zhí)行控制器H616向信號H6117輸出 處理器"暫停"到處理器運(yùn)行控制器,當(dāng)或事件寄存器H6152所表示的任一事 件由事件接收引擎接收到,則處理器核執(zhí)行控制器H616向信號H6117輸出"執(zhí) 行"到處理器運(yùn)行時控制器。任何時候,當(dāng)SC—EVENT—QUEUE類型的事件的累 計(jì)值不為0,此時若或事件寄存器H6152或者與事件寄存器H6151被寫入,則 認(rèn)為該事件剛剛被接收到,累計(jì)值減1 。
LEvent[...] H611是處理器本地事件輸入,比如定時器組產(chǎn)生的超時、先進(jìn) 先出隊(duì)列組的讀寫事件。這些事件被直接送入處理器核執(zhí)行控制器H616。對于 處理器核執(zhí)行控制器H616,這些事件的處理方法與來自事件接收引擎的事件 H614相同。
下面以一個具體應(yīng)用的實(shí)施例,說明本發(fā)明的針對SystemC語法優(yōu)化的多 核處理器的事件處理單元組的使用。用戶基于圖2的多核處理器編寫一個MP3 播放器。用戶可以使用4建盤切換音樂,如圖5所示,該實(shí)現(xiàn)需要兩個進(jìn)程,一 個是SC—THREAD進(jìn)程set—mp3 Ml ,它解碼Mp3,其工作原理是本地定時器每 產(chǎn)生一次中斷,則讀取一幀音樂,進(jìn)行解碼,若接收到來自SC—METHOD進(jìn)程 scm一menu發(fā)送的音樂切換事件ie—switch N3,則讀取相關(guān)的信息,切換到下一 個音樂。另外一個進(jìn)程是SC—METHOD進(jìn)程scm—menu N2,它處理用于的鍵盤 中斷N5,根據(jù)用戶鍵盤輸入信息改變菜單顯示或者通知sct_mp3切換音樂、停 止播放等。
SC一THREAD進(jìn)程sct一mp3的偽代碼如下
Wait(ie—switch);
If(開始播放音樂條件滿足)
Tl.start_periodic(FRAME_TIME);〃Tl是本地定時器 While(true)
{Wait(ie_switch|tl .tout); if(tl—tout—triggered)(解碼新的一幀;} else if(ie—switch—triggered)(切4灸音樂或者4f止才番方文;}SC—METHOD進(jìn)程scm—menu的偽代碼如下
該進(jìn)程對4走盤中斷的上升沿每丈感sensitive kb—int.pos();
進(jìn)程主代碼如下
while(true)
(wait();
讀取鍵盤信息;
if(切換音樂或者停止音樂)ie—switch.notify(); else更新菜單顯示內(nèi)容;
圖6是MP3解碼進(jìn)程sct_mp3的處理單元資源配置情況圖,如圖所示,處 理器核 HI 對位于 H3 的 Tl 進(jìn)行初始化,對應(yīng)代碼 Tl.start_periodic(FRAME—TIME)。之后,Tl開始運(yùn)行。當(dāng)處理器核執(zhí)行到 Wait(ie_switch|tl.tout),寫事件處理單元組H61的或事件寄存器H6152,假設(shè)一 個32位的與/或事件寄存器的低28位對應(yīng)Revent [...]H614,高4位對應(yīng) LEvent[...] H611,則此時或事件寄存器應(yīng)被寫入0x10000001,告知事件處理單 元組接收來自TimerEvent[O]的事件和來自交換單元適配器的ie_switch事件(后 文詳述),之后StopRun信號被置低,使得處理器核停止執(zhí)行。當(dāng)發(fā)生超時即 tl .tout事件發(fā)生,該事件被通過TimerEvent[O]信號H611A以單周期脈沖方式傳 遞到事件處理單元組H61, H61發(fā)現(xiàn)處理器恢復(fù)執(zhí)行條件被滿足,將StopRun 信號H6117置高,表示繼續(xù)"執(zhí)行",處理器繼續(xù)運(yùn)行。
對于外部事件Kb一intN5,被送到圖2的一個外設(shè)外部事件觸發(fā)單元,如 All。 Kbjnt N5實(shí)際上是來自外部的一個信號,首先必須通過外部事件觸發(fā)單 元轉(zhuǎn)換為內(nèi)部信號,它有上升沿和下降沿,分別對應(yīng)上升沿和下降沿事件,因 此,外部事件觸發(fā)單元區(qū)別于事件處理單元內(nèi)部的事件發(fā)送部分的地方在于其
事件描述表包括下降沿事件和上升沿事件兩個描述表(如圖5的F8和F9 )。
外部事件觸發(fā)單元All的具體結(jié)構(gòu)如圖7,接收外部事件的處理單元在系 統(tǒng)初始化的時候?qū)ν獠渴录|發(fā)單元All的下降沿事件和上升沿事件兩個描述 表(如圖7的H6113 )、發(fā)送控制寄存器組(圖5的H6110)進(jìn)行初始化。當(dāng) 有事件發(fā)生,外部事件觸發(fā)單元All就將相應(yīng)的事件發(fā)送給相應(yīng)的處理單元的 事件處理單元組。在這個實(shí)例中,Kbjnt的接收上升沿事件,Kb—int連接到 EEvent[O] Pl。上升沿事件描述表起始地址和長度寄存器的低16位為事件描述表 起始地址,高16位為長度。處理器核P(0,1)將外部事件觸發(fā)單元事件0的上升沿事件描述表起始地址和長度寄存器H61114設(shè)置為0x00020000。在本例中, 假設(shè)上升沿地址描述表只存儲事件唯一地址標(biāo)識和接收該事件的事件處理單元 組的地址。那么,EEvent[O]的上升沿的唯一地址標(biāo)識在這里可以用外部事件觸 發(fā)單元的全局地址加偏移量0標(biāo)識,這個地址#1寫入上升沿事件描述表的地址0 。 接收該事件的事件處理單元組的地址是處理器核P(0,1)所在處理單元,因此,處 理器核P(O,l)所在處理單元的事件處理單元組的基地址-波寫到上升沿事件描述 表的地址1。當(dāng)kbjnt由0變1時,外部事件觸發(fā)單元檢測到該變化,并才艮據(jù)上 升沿事件描述表的信息將一個數(shù)據(jù)包發(fā)送給處理器核P(0,1)所在處理單元的事 件處理單元組。該數(shù)據(jù)包的凈荷包括EEvent[O]的事件唯一地址標(biāo)識和接收該事 件的處理器核P(0,1)所在處理單元的事件處理單元組的地址。在初始化階段,處理器核P(0,1)還將EEvent[O]的事件唯一地址標(biāo)識寫入到 進(jìn)程N(yùn)2 (如圖5所示)所在處理單元的事件處理單元組的接收事件0地址寄存 器。當(dāng)外部事件觸發(fā)單元發(fā)生的數(shù)據(jù)包被進(jìn)程N(yùn)2所在處理單元的事件處理單元 組H61的事件接收引擎H610接收,檢查到進(jìn)程N(yùn)2所在處理單元的事件處理單 元組的接收事件0地址寄存器與數(shù)據(jù)包中的事件唯一地址標(biāo)識匹配,則以脈沖 信號方式通過Revent[O] H614將事件接收信息送到H6117。當(dāng)進(jìn)程scm—menu N2 執(zhí)行到wait(),向H6151寫入Oxl,表示等待接收事件0地址寄存器標(biāo)識的事件 Revent[O] H614,導(dǎo)致處理器核執(zhí)行控制器H616將RunStop H6117置低,處理 器暫停。當(dāng)處理器核執(zhí)行控制器H616接收到Revent[O] H614,發(fā)現(xiàn)或寄存器執(zhí) 行條件被滿足,將RunStopH6117置高,處理器繼續(xù)執(zhí)行。
ie—switch是本例中的一個由處理器核P(0,1)觸發(fā)、由處理器核P(0,0)接收的 內(nèi)部事件。仍然假設(shè)事件描述表起始地址和長度寄存器的低16位為事件描述表 起始地址,高16位為長度。處理器核P(0,1)將事件0的描述表起始地址和描述 表長度寄存器H61113設(shè)置為0x00020000,假設(shè)事件描述表只存儲事件唯一地 址標(biāo)識和接收該事件的事件處理單元組的地址。那么,ie—switch唯一地址標(biāo)識 在這里可以用處理器核P(0,1)所在的處理單元的事件處理單元組的發(fā)送控制寄 存器組H6111全局地址加偏移量0標(biāo)識,這個地址;故寫入事件描述表H6112的 地址0。接收該事件的事件處理單元組的地址是處理器核P(0,0)所在處理單元, 因此,處理器核P(O,O)所在處理單元的事件處理單元組的基地址被寫到處理器核 P(0,1)所在處理單元的事件處理單元組的事件描述表的地址1。當(dāng)處理器核P(O,l) 調(diào)用ie—switch.notify(),事件0的描述表起始地址和描述表長度寄存器C9被寫 入0x00020000 (與其初值一樣),事件發(fā)送引擎C7檢查到這一操作后讀取事件描述表的地址0和事件描述表的地址1,并將它們打包進(jìn)入數(shù)據(jù)包的凈荷發(fā)送到
處理器核P(0,0)所在處理單元的事件處理單元組。處理器核P(0,0)所在處理單元 的事件處理單元組的接收事件地址列表H6112的接收事件0地址在初始化階段 被初始化為處理器核P(0,1)所在的處理單元的事件處理單元組的發(fā)送控制寄存 器組H6111全局地址加偏移量0。如前文所述,當(dāng)處理器核P(0,0)運(yùn)行到 Wait(ie_switch|tl.tout),其事件處理單元組的或寄存器應(yīng)被寫入0x10000001, RunStopC21^皮置低,導(dǎo)致處理器核停止運(yùn)行。當(dāng)處理器核P(0,1)所在的處理單 元的事件處理單元組的事件發(fā)送引擎發(fā)送的數(shù)據(jù)包被事件接收引擎接收,并以 單周期脈沖方式通過Revent[O]傳給處理器核執(zhí)行控制器H616,則RunStop H6117被置高,處理器核得以繼續(xù)運(yùn)行。
根據(jù)本發(fā)明的事件處理單元組可廣泛應(yīng)用于不同的多核處理器中,尤其是 應(yīng)用于SystemC優(yōu)化的多核處理器中。
本發(fā)明有效地實(shí)現(xiàn)了 SystemC語法所要求的SC—EVENT—QUEUE和 SC—EVENT語法單元。不僅在單個模塊內(nèi)支持多個事件單元,而且支持位于一 個處理單元的一個事件單元觸發(fā)事件,位于其它處理單元的多個事件單元接收 該通知消息。
最后應(yīng)說明的是,以上實(shí)施例僅用以描述本發(fā)明的技術(shù)方案而不是對本技 術(shù)方法進(jìn)行限制,本發(fā)明在應(yīng)用上可以延伸為其它的修改、變化、應(yīng)用和實(shí)施 例,并且因此認(rèn)為所有這樣的修改、變化、應(yīng)用、實(shí)施例都在本發(fā)明的精神和 教導(dǎo)范圍內(nèi)。
權(quán)利要求
1、一種滿足systemC語法的多核處理器的事件處理單元組,所述事件處理單元組包括按照SystemC語法的sc_event、sc_event_queue的各種公有函數(shù)、wait(...)函數(shù)的各種形式以及SC_THREAD和SC_METHOD敏感表實(shí)現(xiàn)的邏輯電路,用于發(fā)送激活和暫停處理器的信號,并使得軟件開發(fā)工具的映射算法將位于不同處理單元的多個事件處理單元組進(jìn)行組合,實(shí)現(xiàn)多個sc_event或者sc_event_queue語法單元所定義的功能、wait(...)函數(shù)的功能、SC_THREAD和SC_METHOD敏感表功能。
2、 權(quán)利要求1的事件處理單元組,包括事件接收引擎、接收事件地址列表、恢復(fù)執(zhí)行條件寄存器組和處理器核執(zhí) 行控制器;所述事件接收引擎與交換單元適配器、處理器核執(zhí)行控制器以及接收事件 地址列表分別相連,所述處理器核執(zhí)行控制器和所述恢復(fù)執(zhí)行條件寄存器組相 連,所述接收事件地址列表和所述恢復(fù)執(zhí)行條件寄存器組通過本地總線接口單 元和處理器核相連;其中,所述事件接收引擎接收來自所述交換單元適配器的數(shù)據(jù)包,確定所 述數(shù)據(jù)包中所包含的接收事件的地址標(biāo)識包括在所述接收事件地址列表中,向 處理器核執(zhí)行控制器輸出事件發(fā)生通知;其中,所述處理器核執(zhí)行控制器根據(jù)所述恢復(fù)執(zhí)行條件寄存器組的寄存器 狀態(tài)信息,向處理器運(yùn)行時控制器輸出"暫停"或者"執(zhí)行"信號。
3、 權(quán)利要求2的事件處理單元組,還包括接收事件ID寄存器,與所述事件接收引擎相連,用于暫存接收事件的名稱, 對應(yīng)于SC—EVNET和SC—EVENT—QUEUE模塊的sc—module—name;超時計(jì)時器,與所述恢復(fù)執(zhí)行條件寄存器組和所述處理器核執(zhí)行控制器相 連,根據(jù)所述恢復(fù)執(zhí)行條件寄存器組的超時信息,進(jìn)行超時計(jì)時,并發(fā)送超時事件到所述處理器核執(zhí)行控制器。
4、 權(quán)利要求1的事件處理單元組,還包括事件發(fā)送引擎、事件描述表和發(fā)送控制寄存器組;所述事件發(fā)送引擎與交 換單元適配器、發(fā)送控制寄存器組以及時間描述表分別相連,所述發(fā)送控制寄 存器組和所述時間描述表通過本地總線接口單元和處理器核相連;其中,所述發(fā)送控制寄存器組將要發(fā)送的事件的描述表起始地址和描述表 長度發(fā)送到所述事件發(fā)送引擎,所述事件發(fā)送引擎查找所述事件描述表,按照 交換單元所要求的包格式將該事件的可選ID和該事件唯一地址標(biāo)識并根據(jù)接收 該事件的事件處理單元組的地址發(fā)送。
5、 權(quán)利要求4的事件處理單元組,其中,所述發(fā)送控制寄存器組包括多個 發(fā)送控制寄存器,所述發(fā)送控制寄存器存儲要發(fā)送事件的描述表起始地址和描 述表長度,所述事件描述表存儲要發(fā)送事件的可選ID、唯一地址標(biāo)識和接收該 事件的事件處理單元組的地址。
6、 權(quán)利要求2的事件處理單元組,其中,所述恢復(fù)執(zhí)行條件寄存器組包括 與事件寄存器、或事件寄存器、超時條件寄存器、事件類型寄存器和事件取消 寄存器;其中,所述或事件寄存器和與所述事件寄存器對應(yīng)事件接收地址列表的唯 一地址標(biāo)識,所述事件類型寄存器標(biāo)識事件是SystemC語法的SC_EVENT或者 SC_EVENT_QUEUE。
7、 權(quán)利要求6的事件處理單元組,其中,所述處理器核執(zhí)行控制器對每一 個SC_EVENT—QUEUE類型的事件進(jìn)行累計(jì),當(dāng)事件取消寄存器的對應(yīng)比特被 寫入有效值,則累計(jì)值被清零。
8、 權(quán)利要求6的事件處理單元組,其中,當(dāng)所述與事件寄存器被寫入,則 新的與事件寄存器的值被送到所述處理器核執(zhí)行控制器,所述處理器核執(zhí)行控 制器輸出處理器"暫停"到處理器運(yùn)行控制器,當(dāng)所述與事件寄存器所表示的 每一事件都由事件接收引擎接收到,則所述處理器核執(zhí)行控制器向信號輸出"執(zhí)行"信號到處理器運(yùn)行時控制器。
9、 權(quán)利要求6的事件處理單元組,其中,當(dāng)所述或事件寄存器被寫入,則新的或事件寄存器的值被送到處理器核執(zhí)行控制器,處理器核執(zhí)行控制器輸出 處理器"暫停"到處理器運(yùn)行控制器,當(dāng)或事件寄存器所表示的任一事件由事件接收引擎接收到,則處理器核執(zhí)行控制器輸出"執(zhí)行"到處理器運(yùn)行時控制器; 其中,當(dāng)SC一EVENT一QUEUE類型的事件的累計(jì)值不為0,此時如果或事件寄 存器或者與事件寄存器被寫入,則認(rèn)為該事件剛被接收,累計(jì)值減l。
10、 權(quán)利要求2的事件處理單元組,其中,用戶代碼中的wait(sc一event)和 wait(sc—event—queue)被翻譯為向接收事件地址寄存器中寫入接收地址和向事件 控制器寄存器中寫入接收命令。
11、 權(quán)利要求4的事件處理單元組,其中,用戶代碼的sc一event.notify()和 sc—event—queue.notify()在事件處理單元組中被如下翻譯處理器核向發(fā)送事件地 址寄存器寫入接收該事件的目的地址和向發(fā)送事件控制寄存器寫入觸發(fā)值,所 述事件發(fā)送引擎向所述交換單元適配器發(fā)送事件通知數(shù)據(jù)包,其中,所述數(shù)據(jù) 包的目的地址為發(fā)送事件地址寄存器的值。
全文摘要
本發(fā)明公開提出了一種滿足systemC語法的多核處理器的事件處理單元組,所述事件處理單元組包括按照SystemC語法的sc_event、sc_event_queue的各種公有函數(shù)、wait(...)函數(shù)的各種形式以及SC_THREAD和SC_METHOD敏感表實(shí)現(xiàn)的邏輯電路,用于發(fā)送激活和暫停處理器的信號,并使得軟件開發(fā)工具的映射算法將位于不同處理單元的多個事件處理單元組進(jìn)行組合,實(shí)現(xiàn)多個sc_event或者sc_event_queue語法單元所定義的功能、wait(…)函數(shù)的功能、SC_THREAD和SC_METHOD敏感表功能。本發(fā)明事件處理單元組在單個模塊內(nèi)支持多個事件,而且支持位于一個處理單元的一個事件單元觸發(fā)事件,位于其它處理單元的多個事件單元接收該通知消息。
文檔編號G06F17/50GK101315648SQ200810117020
公開日2008年12月3日 申請日期2008年7月22日 優(yōu)先權(quán)日2008年7月22日
發(fā)明者祥 劉, 劉玉東, 張金龍, 曦 陳, 毅 黃 申請人:中國科學(xué)院計(jì)算技術(shù)研究所