專利名稱:半導(dǎo)體器件的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及可動態(tài)地變更配置(configuration)信息的半導(dǎo)體器件,尤其涉及對配置的管理、和具有管理配置的處理器的半導(dǎo)體器件的系統(tǒng)開銷(overhead)的減少有用的技術(shù)。
背景技術(shù):
近年來,伴隨信息處理設(shè)備的普及和性能提高,各種應(yīng)用程序和各種格式陸續(xù)出現(xiàn)。例如,關(guān)于動圖像的壓縮方式,就有MPEG1、MPEG2、MPEG4、H.264、Windows(注冊商標)media等多種格式。
但是,存在這樣的問題,即為了用軟件實現(xiàn)近來的動圖像壓縮方式,需要處理器的通用性和高處理性能,在目前以嵌入用途使用的通用處理器中難以實現(xiàn)。進而,現(xiàn)在,隨著半導(dǎo)體制造技術(shù)的進步,使用LSI能夠?qū)崿F(xiàn)的電路規(guī)模逐漸擴大,需要有效利用了大規(guī)模電路的LSI。
對于這樣的問題,專利文獻1、專利文獻2中公開了,可動態(tài)重構(gòu)的處理器所代表的那樣的,使用通過變更指定了如何構(gòu)成硬件的配置信息來改變動作的LSI來謀求解決的例子。
在相關(guān)的在先技術(shù)中,提出了用于不介入其它的控制器、CPU而獨立地進行動態(tài)重構(gòu)的控制結(jié)構(gòu),雖然有分支的支持(support),但基本上是順序的控制機理,近來采用以往的控制結(jié)構(gòu)在嵌入式設(shè)備中進行重要的多任務(wù)處理、實時處理是很困難的。
專利文獻1日本特開平10-4345號公報專利文獻2日本特開2001-312481號公報
發(fā)明內(nèi)容
在專利文獻1、專利文獻2所示出的現(xiàn)有的方法中,動態(tài)重構(gòu)的控制,使用外部的控制器用處理器或比較簡單的定序器,通過簡單的狀態(tài)轉(zhuǎn)移、分支來進行線程(thread)的控制。因此,例如在同時執(zhí)行多項任務(wù)的多任務(wù)處理中,必須由控制用處理器來進行線程的復(fù)雜的控制。在此,所謂的線程,表示用動態(tài)重構(gòu)處理器的一個配置數(shù)據(jù)進行的處理。另外,任務(wù)由多個線程構(gòu)成。
這時,為了切換線程,必須由動態(tài)重構(gòu)處理器對控制用處理器進行中斷,控制用處理器判斷情況后確定接著要執(zhí)行的線程,通知給動態(tài)重構(gòu)處理器,因此系統(tǒng)開銷很大。
作為系統(tǒng)開銷,有控制用處理器中的中斷處理、接著要執(zhí)行的線程的確定處理、與動態(tài)重構(gòu)處理器的通信時間、以及直到動態(tài)重構(gòu)處理器執(zhí)行接下來的線程的等待時間等,成為使整個芯片性能降低的原因。
今后,嵌入式設(shè)備越來越復(fù)雜、各種功能將被安裝,與此相伴地有關(guān)多任務(wù)的如上述那樣的問題將變得顯著。其原因是,在多任務(wù)中,任務(wù)之間的切換頻繁發(fā)生,且每次都要由CPU進行上述處理。
本發(fā)明的目的在于,提供一種在動態(tài)重構(gòu)處理器的利用中易于實現(xiàn)多任務(wù)的功能,減少進行多任務(wù)處理時的系統(tǒng)開銷,能夠更高效地利用芯片。
簡單說明本申請所公開的發(fā)明中的具有代表性的結(jié)構(gòu)的概要,則如下所述。
在管理動態(tài)重構(gòu)處理器的線程的定序器中,包括線程管理表和線程切換管理表。所謂線程,表示使用用于進行動態(tài)重構(gòu)的一個配置數(shù)據(jù)進行的處理。
線程管理表,包含線程序號、線程有效標志、配置地址、優(yōu)先順序、配置加載標志(configuration load flag)、狀態(tài)、標志寄存器、標志屏蔽寄存器、屏蔽設(shè)定寄存器(mask setting register)、以及標志復(fù)位屏蔽寄存器。
線程切換管理表,包含線程切換序號、線程切換有效標志、切換前線程、切換后線程、線程切換中斷、以及線程切換條件。
根據(jù)本發(fā)明的結(jié)構(gòu)和方式,能夠減少在包含動態(tài)重構(gòu)處理器的芯片中進行多任務(wù)處理時的系統(tǒng)開銷。
圖1是表示本發(fā)明的一個實施方式的芯片結(jié)構(gòu)的圖。
圖2是表示本發(fā)明的一個實施方式的動態(tài)重構(gòu)處理器FE的模塊結(jié)構(gòu)的圖。
圖3是表示用于說明本發(fā)明的動作的處理內(nèi)容的圖。
圖4是表示本發(fā)明的一個實施方式的線程管理表的結(jié)構(gòu)的圖。
圖5是表示本發(fā)明的一個實施方式的線程管理表的、伴隨著標志寄存器變化的動作的圖。
圖6是表示本發(fā)明的一個實施方式的線程切換管理表的結(jié)構(gòu)的圖。
圖7是表示本發(fā)明的一個實施方式的線程切換管理表的、伴隨著切換條件變化的動作的圖。
圖8是表示本發(fā)明的一個實施方式的線程管理表的、伴隨著狀態(tài)變化的動作的圖。
圖9是以現(xiàn)有結(jié)構(gòu)進行圖3所示的處理時的動作的一例。
圖10是使用本發(fā)明進行圖3所示的處理時的動作的一例。
圖11是表示本發(fā)明的一個實施方式的線程管理表的第二結(jié)構(gòu)的圖。
具體實施例方式
以下,根據(jù)附圖詳細說明根據(jù)本發(fā)明的有代表性的實施例。以下,相同參照序號、符號表示相同的結(jié)構(gòu)或者類似的結(jié)構(gòu)。
圖1是表示作為本發(fā)明的對象的芯片結(jié)構(gòu)的一例。圖1所示的芯片,包含CPU、直接存儲器存取控制器DMAC、中斷控制器INTC、動態(tài)重構(gòu)處理器FE、內(nèi)置存儲器MEM、以及總線狀態(tài)控制器BSC。這6個模塊,用處理器總線102進行連接。
CPU是本芯片中的主處理器,進行其它模塊的管理、被編程的主要處理。中斷控制器INTC是管理對CPU的中斷的模塊。對CPU的中斷全部在此處受理,進行優(yōu)先級判斷后確定要通知的中斷。動態(tài)重構(gòu)處理器FE的中斷信號線101連接在中斷控制器INTC。實際上,也從其它的模塊向中斷控制器輸出信號,但與本發(fā)明關(guān)系很小,因此,在此處省略。直接存儲器存取控制器DMAC是用于不利用CPU來進行數(shù)據(jù)傳送的模塊。預(yù)先由CPU進行設(shè)定,通過發(fā)送啟動信號,能夠自動地傳送數(shù)據(jù)。動態(tài)重構(gòu)處理器FE是以包括多個運算器且具有高性能為特點的處理器。在本實施例中,最初的設(shè)定由CPU進行,啟動一次以后,按照所設(shè)定的數(shù)據(jù)自動地進行動作。內(nèi)置存儲器MEM是用于CPU進行的處理的片內(nèi)存儲器(on chip memory)。總線狀態(tài)控制器BSC,進行處理器總線102的管理、外部總線100與處理器總線102之間的數(shù)據(jù)的橋接(bridge)等。
圖2是表示動態(tài)重構(gòu)處理器FE的模塊結(jié)構(gòu)的一例的圖。動態(tài)重構(gòu)處理器FE,包總線接口BUSIF、配置控制器CFGCNT、可動態(tài)重構(gòu)的單元陣列RCA、定序器(sequencer)SEQ、以及FE內(nèi)部總線200。
總線接口BUSIF,連接到處理器總線102和內(nèi)部總線200,進行總線間的數(shù)據(jù)的收發(fā)。配置控制器CFGCNT,按照定序器SEQ的指示,向可動態(tài)重構(gòu)的單元陣列RCA發(fā)送配置數(shù)據(jù)。在此,所謂配置數(shù)據(jù)是指可動態(tài)重構(gòu)的單元陣列RCA的重構(gòu)信息。配置控制器CFGCNT內(nèi)部具有配置緩沖器,可以存儲多個的配置數(shù)據(jù)。在本實施例中,假定從動態(tài)重構(gòu)處理器FE外部向配置緩沖器進行的數(shù)據(jù)傳送,是由CPU、直接存儲器存取控制器DMAC等動態(tài)重構(gòu)處理器FE以外的模塊來進行的方法,但也可以是與CPU的高速緩沖存儲器一樣地,配置控制器CFGCNT自動地加載(load)配置數(shù)據(jù)的方式。配置數(shù)據(jù)存儲在內(nèi)置存儲器MEM或外部存儲器,在配置數(shù)據(jù)緩沖器中僅存儲需要的配置數(shù)據(jù),從而可以減小配置緩沖器的容量??蓜討B(tài)重構(gòu)的單元陣列RCA,由進行運算的多個運算單元、內(nèi)部存儲器、支持內(nèi)部存儲器與運算單元進行通信的加載存儲單元、以及連接各單元的布線構(gòu)成。本發(fā)明的特點在于,可動態(tài)重構(gòu)的單元陣列RCA內(nèi)部的結(jié)構(gòu)沒有被特殊限定,但可利用配置數(shù)據(jù)進行高速重構(gòu),使用內(nèi)部存儲器的數(shù)據(jù)進行計算。
定序器SEQ是控制動態(tài)重構(gòu)處理器FE的模塊,是本發(fā)明的主要模塊。根據(jù)設(shè)定進行對配置控制器CFGCNT的配置數(shù)據(jù)加載的指示、可動態(tài)重構(gòu)的單元陣列RCA的啟動和停止、配置切換的指示、以及配置切換的管理。定序器SEQ包含線程管理表、線程切換管理表、以及中斷源寄存器。關(guān)于這些表的內(nèi)容和利用這些內(nèi)容的動作,在后面進行說明。
在此,本實施例中的線程,表示用可動態(tài)重構(gòu)的單元陣列RCA的一個配置數(shù)據(jù)進行的處理。動態(tài)重構(gòu)處理器FE通過切換線程,可進行各種處理。
圖3是表示以下的說明中使用的處理例子的內(nèi)容的圖。圖中的圓圈表示線程,實線箭頭表示線程的切換,虛線箭頭表示作為執(zhí)行條件的標志的設(shè)置(set)、四方形表示任務(wù)。各任務(wù)由線程和線程切換構(gòu)成,通過內(nèi)部的條件、來自動態(tài)重構(gòu)處理器FE外部的標志的設(shè)置來進行動作。該圖所示的處理由T1、T2、T3三個任務(wù)構(gòu)成。
任務(wù)T1由線程Th3和線程Th4兩個線程構(gòu)成。線程切換Tr4表示從線程Th3到線程Th4的切換,線程切換Tr5表示從線程Th4到線程Th3的切換。線程Th3,以設(shè)置由線程切換Tr5設(shè)置的標志、由動態(tài)重構(gòu)處理器FE的外部設(shè)置的標志flg1、以及由任務(wù)T2設(shè)置的flg2三個標志為啟動條件。線程Th4,以設(shè)置由線程切換Tr4設(shè)置的標志為啟動條件。
任務(wù)T2由線程Th0、線程Th1、和線程Th2三個線程構(gòu)成。線程切換Tr0表示從線程Th0到Th1的切換,線程切換Tr1表示從線程Th1到Th2的切換,線程切換Tr2表示從線程Th2到Th0的切換,線程切換Tr3表示從線程Th2到Th1的切換。線程Th0,以線程切換Tr2或由動態(tài)重構(gòu)處理器FE的外部設(shè)置的標志flg0中的某一個為啟動條件。線程Th1,以由線程切換Tr0或線程切換Tr3中的某一個設(shè)置標志為啟動條件。線程Th2,以由線程切換Tr1設(shè)置的標志為啟動條件。
任務(wù)T3僅由線程Th5構(gòu)成。線程切換Tr6表示線程Th5的結(jié)束。線程Th5,以由動態(tài)重構(gòu)處理器FE的外部設(shè)置的標志flg3為啟動條件。
在此,任務(wù)間的優(yōu)先級,設(shè)定任務(wù)T3為最高,接著為T1、T2。如果是多項任務(wù)為可執(zhí)行的狀態(tài),就執(zhí)行優(yōu)先級最高的任務(wù)。
以下,使用圖3所示的處理內(nèi)容說明動作。圖3所示的處理內(nèi)容,并非特別表示特定的應(yīng)用程序的執(zhí)行的處理內(nèi)容,但使用了同時執(zhí)行多項任務(wù)的情況的特點。例如,任務(wù)T1和任務(wù)T2,適用于使視頻再現(xiàn)中的動圖像和音頻的解碼同步且同時執(zhí)行的情況。任務(wù)T3,適用于使用定時器中斷來驅(qū)動特定的傳感器、硬件的情況。
圖4是表示作為定序器SEQ的一個構(gòu)成要素的線程管理表的圖。表包含線程序號THN、線程有效標志TNEN、配置地址CFGA、優(yōu)先順序PRI、配置加載標志CFGLD、狀態(tài)STAT、標志寄存器FLGR、標志屏蔽寄存器FLGMR、屏蔽設(shè)定寄存器MSR、以及標志復(fù)位屏蔽寄存器FLGRMR。
線程序號THN是線程識別用的序號。圖4的線程序號與圖3的線程序號相對應(yīng),關(guān)于其它的設(shè)定也同樣,取表示圖3的動作的設(shè)定。線程Th6是圖3的處理中不使用的線程。
線程有效標志TNEN,設(shè)定該線程的定義為有效或無效。執(zhí)行了復(fù)位時為表示無效的值,設(shè)定了其它的值后為表示有效的值。因為執(zhí)行了復(fù)位時不能判斷線程管理表中保存的信息是否正確,所以通過預(yù)先這樣地進行設(shè)定,可以阻止不正確的數(shù)據(jù)產(chǎn)生的失控。在本實施例中,取有效為1,無效為0。在此,線程Th0到線程Th5,為了使用而設(shè)定成1,Th6為了不使用而設(shè)定成0。
配置地址CFGA,表示存儲處于配置控制器CFGCNT內(nèi)的配置緩沖器中的對應(yīng)線程的配置數(shù)據(jù)的地址。管理表中不是保持配置數(shù)據(jù),而是保持存儲配置數(shù)據(jù)的配置緩沖器的地址,從而可以在不同線程使用相同的配置數(shù)據(jù),與按線程保持配置數(shù)據(jù)的情況相比,可以縮小動態(tài)重構(gòu)處理器的面積。本實施例中,地址為16位,用16進制數(shù)表示。“0x”是表示16進制數(shù)的前綴。
優(yōu)先級位PRI表示線程的優(yōu)先順序。也可以對多個線程分配相同的優(yōu)先級。在本實施例中,取為值越接近于1優(yōu)先順序就越高。但是,優(yōu)先級0取為無效。例如,優(yōu)先級1和優(yōu)先級2的線程同時處于可執(zhí)行的狀態(tài)時,執(zhí)行優(yōu)先級1的線程。因此,對從線程Th0到Th2分配優(yōu)先級3,對線程Th3和線程Th4分配優(yōu)先級2,對線程Th5分配優(yōu)先級1。另外,預(yù)先使預(yù)定的優(yōu)先級取為無效,當預(yù)定的信息登錄在某個線程管理序號THN,線程有效標志TNEN為有效,但利用該優(yōu)先級標志PRI能夠使之變成無效。因此,通過將優(yōu)先級標志PRI從有效變?yōu)闊o效或從無效變?yōu)橛行?,盡管存儲在線程管理序號THN的信息為有效,但可以使其成為當前不使用。也可以按線程管理序號THN的順序固定地分配優(yōu)先級(例如,Th0取為最高優(yōu)先級),但如本實施例那樣地,使得能夠設(shè)定優(yōu)先級,從而用戶可以對線程管理表自由地進行配置線程,方便性提高。
配置加載標志CFGLD表示對應(yīng)于線程的配置數(shù)據(jù)是否在配置緩沖器內(nèi)。由此,在配置緩沖器中不需要存儲全部的配置數(shù)據(jù),能夠減小配置緩沖器的容量。在此,用1表示配置數(shù)據(jù)存在的情況,用0表示配置數(shù)據(jù)不存在的情況。例如,在與要執(zhí)行的線程對應(yīng)的全部配置數(shù)據(jù)沒有存入配置緩沖器時,使用配置加載標志CFGLD進行管理,需要在適當?shù)臅r刻使用CPU或DMAC來替換配置緩沖器。在本實施例中,假定為預(yù)先加載了全部的配置數(shù)據(jù)的狀態(tài),因此,從線程Th0到線程Th5的配置加載標志CFGLD取為1。配置加載標志CFGLD,在動作過程中也可重寫,從而,可向配置緩沖器傳送后臺(background)的配置數(shù)據(jù)。
狀態(tài)STAT表示線程的狀態(tài)。狀態(tài)STAT,可取Waiting、Ready、Running三種狀態(tài)。Waiting表示還未完成執(zhí)行準備的狀態(tài)。Ready表示已完成執(zhí)行準備的狀態(tài),即可執(zhí)行狀態(tài)。Running表示正在執(zhí)行中的狀態(tài)。狀態(tài)的管理方法,在后面進行說明。在本處理例中,初始值全部設(shè)定為Waiting。
標志寄存器FLGR是用于設(shè)置是否滿足該線程執(zhí)行所需要的條件的寄存器。在本實施例中,滿足條件時設(shè)為1,不滿足條件時設(shè)為0。本寄存器,無論處于動作中還是停止中,均從FE內(nèi)部的模塊(例如可動態(tài)重構(gòu)單元陣列RCA)和FE外部的模塊(例如CPU)進行更新。通過可以從FE內(nèi)部的模塊進行更新,動態(tài)重構(gòu)處理器可以不使用CPU而自主地表示滿足了對應(yīng)的線程執(zhí)行所需要的條件的情況。另外,無論是動作中還是停止中,使得均可從FE外部進行更新,從而,F(xiàn)E外部的模塊(例如CPU),可以不管FE的狀態(tài)而在自我情況合適的時刻進行更新。
另外,在本實施例中,對本寄存器分配了32位,但特別地對第0位(最下位的位)分配了功能,使得通過線程切換進行設(shè)置。具體地,例如,如圖3中的T2那樣,將一系列的處理分解為三個線程時,線程1以線程0的處理結(jié)束為條件。通過線程1的標志寄存器FLGR的第0位在線程0結(jié)束后變?yōu)?,滿足條件。因此,可以將一系列的處理分解為多個線程。用戶可以自由地對其他的位分配置位條件。
標志屏蔽寄存器FLGMR是設(shè)定標志寄存器FLGR中參照哪個位的寄存器。在本實施例中,在參照的情況下分配了1,在不參照的情況下分配了0。在本實施例中,除了通過線程切換設(shè)置的最下位的位以外,使對應(yīng)于flg0的線程Th0的第16位、對應(yīng)于flg1的線程Th3的第20位、對應(yīng)于flg2的線程Th3的第24位、對應(yīng)于flg3的線程Th5的第28位為有效。線程Th5不利用線程切換引起置位這樣的置位條件,因此最下位的位取為0。通過設(shè)定標志屏蔽寄存器FLGMR,可以根據(jù)不同的條件將成為可執(zhí)行狀態(tài)的線程替換成相同的線程管理序號來使用。
屏蔽設(shè)定寄存器MSR是設(shè)定如何處理標志屏蔽寄存器FLGMR所指定的位的寄存器。例如,本寄存器為表示“or”的值時,對標志寄存器FLGR中的標志屏蔽寄存器FLGMR所指定的位的全部位計算邏輯和,若該結(jié)果為1則狀態(tài)STAT變成Ready。另外,本寄存器為表示“and”的值時,對標志寄存器FLGR中的標志屏蔽寄存器FLGMR所指定的位的全部位計算邏輯積,若該結(jié)果為1則狀態(tài)STAT變成Ready。由于具有屏蔽設(shè)定寄存器MSR,用戶可以進行上述的標志寄存器FLGR和標志屏蔽寄存器FLGMR的設(shè)定,即可以自由地設(shè)定使線程成為可執(zhí)行狀態(tài)的時刻,可增加能夠存儲在線程管理表中的信息。例如,在用條件A和條件B的任一個切換線程的情況下,當僅設(shè)為and條件時,需要將關(guān)于條件A的線程切換和關(guān)于條件B的線程切換分別存儲在不同的線程管理序號中,但當也可以設(shè)為or條件時,可以存儲在一個線程管理序號中。
標志復(fù)位屏蔽寄存器FLGRMR是設(shè)定在狀態(tài)STAT從Waiting轉(zhuǎn)變?yōu)镽eady時使標志寄存器FLGR中的哪個位進行復(fù)位的寄存器。在此,圖中的“~0x00010001”,表示“0x00010001”的1的補碼(位反轉(zhuǎn))。狀態(tài)STAT從Waiting轉(zhuǎn)變?yōu)镽eady時,取標志復(fù)位屏蔽寄存器FLGRMR和標志寄存器FLGR的邏輯積,使其結(jié)果設(shè)置到標志寄存器FLGR。在本處理例中,使線程Th3以外的全部的標志進行復(fù)位。關(guān)于線程Th3,僅使由flg2置位的位不進行復(fù)位。由于具有標志復(fù)位屏蔽寄存器FLGRMR,例如,最初啟動線程Th3的時刻是在預(yù)定的處理結(jié)束這樣的條件C和外部因素的條件D具備的時候,第2次以后,可僅以外部因素的條件D進行線程切換,將進一步提高自由度。
在以上所述的線程管理表中,標志寄存器FLGR和配置加載標志CFGLD,也包含動作過程中,總可以重寫。另外,關(guān)于其它的元素,如果使線程有效標志TNEN設(shè)為無效,就總可以寫入。相反,線程有效標志TNEN為有效時,不能重寫除標志寄存器FLGR和配置加載標志CFGLD以外的元素。
圖5是表示圖4所示的線程管理表中與標志寄存器FLGR有關(guān)的動作、和以狀態(tài)STAT管理從Waiting變更為Ready的動作的流程圖。本流程所示的處理,按線程獨立地進行。
在步驟600中,將標志寄存器FLGR的變化作為觸發(fā),開始本流程的處理。在步驟601中,在線程有效標志TNEN為表示有效的值(1)時,進入到步驟602,為表示無效的值(0)時返回到步驟600。在表示無效的值時,依靠安裝的應(yīng)用程序,可以向CPU發(fā)送表示無效的錯誤,也可以不發(fā)送。在這種情況下,按線程管理序號追加表示是否發(fā)送錯誤的標志,從而,可通過在動態(tài)重構(gòu)處理器中處理的應(yīng)用程序進行變更。
在步驟602中,屏蔽設(shè)定寄存器MSR的值為“and”時進入到步驟603,值為“or”時進入到步驟604。在步驟603中,取標志寄存器FLGR和標志屏蔽寄存器FLGMR的邏輯異或,進而對全部位進行反轉(zhuǎn),如果得到的該結(jié)果的全部位的邏輯積為1,就進入到步驟606,如果結(jié)果為0就進入到步驟605。
在步驟604中,取標志寄存器FLGR和標志屏蔽寄存器FLGMR的邏輯積,如果得到的該結(jié)果的全部位的邏輯和為1就進入到步驟606,如果結(jié)果為0就進入到步驟605。在步驟605中,取為沒有狀態(tài)STAT的變化,返回到步驟600。在步驟606中,配置加載標志CFGLD為1,即如果對應(yīng)的配置數(shù)據(jù)在配置緩沖器中就進入到步驟608,如果配置加載標志CFGLD為0就進入到步驟607。在步驟607中,使表示對應(yīng)于該線程的配置數(shù)據(jù)未加載的情況的錯誤中斷產(chǎn)生,進入到步驟605。
在步驟608中,使狀態(tài)STAT從Waiting變化為Ready,進入到步驟609。在步驟609中,將取標志寄存器FLGR和標志復(fù)位屏蔽寄存器FLGRMR的邏輯積的結(jié)果置換到標志寄存器FLGR中,返回到步驟600。
圖6是表示作為定序器SEQ的一個構(gòu)成要素的線程切換管理表的圖。線程切換管理表,包含線程切換序號TTN、線程切換有效標志TREN、切換前線程FTH、切換后線程TTH、線程切換中斷INT、以及線程切換條件TCCND。
線程切換序號TTN是線程切換識別用的序號。圖6的線程切換序號TTN與圖3的線程切換序號相對應(yīng),關(guān)于其他的設(shè)定也同樣取為表示圖3中的動作的設(shè)定。
線程切換有效標志TREN,設(shè)定該線程切換定義為有效或無效。執(zhí)行復(fù)位時變?yōu)楸硎緹o效的值,設(shè)定其它的值后取為表示有效的值。在本實施例中,取有效為1,取無效為0。
切換前線程FTH,指定線程切換的切換前線程的序號。當切換前線程FTH和線程切換條件TCCND均一致時,執(zhí)行線程切換。也可以對切換前線程FTH設(shè)定為不指定。在這種情況下,僅由線程切換條件TCCND判斷線程切換的執(zhí)行。
切換后線程TTH,指定線程切換的切換后線程序號。線程切換發(fā)生時,將對切換后線程TTH設(shè)定的線程序號THN指示的標志寄存器FLGR的最下位的位設(shè)置成1。也可以對切換后線程TTH設(shè)定為不指定。在這種情況下,不進行標志寄存器FLGR的最下位的位的更新。
線程切換中斷INT,指定線程切換發(fā)生時是否對CPU進行中斷。在本實施例中,值為1時使中斷發(fā)生,值為0時不使中斷發(fā)生。在本實施例中,不介入CPU來進行線程切換,由此,可得到處理的結(jié)束通知、與CPU的同步。
線程切換條件TCCND,指定線程切換的條件。在本實施例中,從可動態(tài)重構(gòu)單元陣列RCA向定序器SEQ發(fā)送與線程切換條件TCCND對應(yīng)的信號。與該信號進行比較,判斷條件。例如,圖3的Th2處理結(jié)束后,轉(zhuǎn)移到切換序號Tr2或Tr3中的任一個。分支到Tr2或Tr3中的哪一個,以該線程切換條件TCCND進行判斷。這樣,線程切換條件TCCND可以對應(yīng)于條件分支。
以上所述的線程切換管理表的值,可以在線程切換有效標志TREN為無效(0)時寫入。在此,是否能寫入,按線程切換序號進行判斷。
圖7是表示線程切換發(fā)生和有關(guān)狀態(tài)STAT從Running變更為Waiting的處理的流程圖。本流程圖中所示的處理,按線程切換獨立地進行。
在步驟700中,將線程切換條件TCCND的變化作為觸發(fā),開始本流程圖的處理。
在步驟701中,如果線程切換有效標志TREN的值為表示有效的值(1)時就進入到步驟702,如果為表示無效的值(0)時就返回到步驟700。
在步驟702中,在切換前線程FTH中有切換前的指定時就進入到步驟703,沒有指定時就進入到步驟705。
在步驟703中,如果切換前線程FTH與執(zhí)行中的線程一致、即線程管理表中的狀態(tài)STAT為Running的線程序號與切換前線程FTH所指定的線程序號一致時,就進入到步驟705,不一致時就返回到步驟700。
在步驟705中,如果線程切換條件TCCND、與從可動態(tài)重構(gòu)單元陣列RCA向定序器SEQ輸出的信號一致時就進入到步驟706,如果不一致時就返回到步驟700。
步驟706之后是發(fā)生了線程切換時的處理。
在步驟706中,狀態(tài)STAT由Running的線程變更為Waiting。由此,可動態(tài)重構(gòu)單元陣列RCA停止運算。
在步驟707中,將切換后線程TTH的標志寄存器的最下位的位設(shè)置為1。前面已敘述,但在本實施例中,標志寄存器FLGR的最下位的位作為線程切換發(fā)生的標志進行分配。另外,如果在切換后線程TTH中沒有線程的指定時,就不進行對標志寄存器FLGR的設(shè)定。
在步驟708中,設(shè)定線程切換中斷INT中有中斷(1)時,進入到步驟709,沒有中斷(0)時,返回到步驟700。
在步驟709中,使CPU產(chǎn)生中斷,設(shè)置定序器SEQ中的中斷源寄存器,返回到步驟700。
圖8是表示確定接著要執(zhí)行的線程的處理的流程圖。
在步驟800中,線程管理表中所記述的全部的線程中,將某一個的狀態(tài)STAT發(fā)生變化作為觸發(fā),開始本流程圖的動作。
在步驟801中,如果有狀態(tài)STAT為Running的線程,則還不能使下一個線程為Running,因此返回到步驟800。如果沒有狀態(tài)STAT為Running線程,就確定接著要執(zhí)行的線程,因此進入到步驟802。在Running的線程結(jié)束后,該線程的狀態(tài)STAT變化為Waiting,因此在該時刻開始圖8的流程,因此,即使存在多個Ready的線程的情況下,也能夠高效地執(zhí)行。
在步驟802中,如果沒有狀態(tài)STAT為Ready的線程,就還沒有已完成執(zhí)行準備的線程,因此返回到步驟800。如果有一個以上狀態(tài)STAT為Ready的線程,就進入到步驟803。
在步驟803中,判斷狀態(tài)STAT為Ready的線程有多個還是一個。在狀態(tài)STAT為Ready的線程為一個時,進入到步驟807,有多個時,進入到步驟804。
在步驟804中,在狀態(tài)STAT為Ready的線程中選擇優(yōu)先級最高的線程。在本實施例中,取為線程管理表的優(yōu)先級PRI的值越小則優(yōu)先級就越高。優(yōu)先級最高的是優(yōu)先級PRI為1的線程。
在步驟805中,如果在步驟804所選擇的線程為一個,就進入到步驟807,如果為多個,就進入到步驟806。
在步驟806中,在步驟804所選擇的線程中,選擇一個線程序號最小的線程。
在步驟807中,將由以上流程圖的動作所選擇的線程的狀態(tài)STAT取為Running,開始執(zhí)行。然后返回到步驟800。
以上說明了圖8所示的確定要執(zhí)行的線程的處理,尤其對步驟806可設(shè)定各種方法。例如,有按線程序號大的順序的方法、循環(huán)地選擇的方法、選擇最先成為Ready狀態(tài)的線程的方法等。
圖9是為了與本實施例中執(zhí)行了圖3處理的情況的動作進行比較而不采用本實施例的結(jié)構(gòu)執(zhí)行了圖3處理的情況的時序圖。最上面的線表示CPU的動作情況,下面的3條線表示動態(tài)重構(gòu)處理器FE的動作。尤其關(guān)于動態(tài)重構(gòu)處理器FE的動作,為了便于理解,按任務(wù)畫出不同的線。T1、T2、T3,由一個動態(tài)重構(gòu)處理器FE執(zhí)行,因此,實際上僅有某一個處于動作狀態(tài)。圖中的細橫線表示停止狀態(tài)(未進行處理的狀態(tài)),四方形所示的部分表示執(zhí)行狀態(tài)。
即便是現(xiàn)有的可動態(tài)重構(gòu)的處理器,也可以進行順序的線程切換、包含簡單分支的線程切換,但不具有如圖3所示那樣的來自外部的標志、根據(jù)線程的優(yōu)先順序進行的管理,因此,必須由CPU控制線程的切換。
以下,按時間序列(從左側(cè)開始)說明圖9的時序圖所示的動作。
作為初始設(shè)定,預(yù)先設(shè)置由線程切換Tr5設(shè)置的標志。
在時刻B1,當flg0發(fā)生時,CPU對動態(tài)重構(gòu)處理器FE的控制寄存器進行訪問,使線程Th0執(zhí)行。當flg0為在CPU外部發(fā)生的因素時,以中斷等進行對應(yīng)。
在時刻B2,當線程Th0完成時,動態(tài)重構(gòu)處理器FE利用中斷向CPU通知完成。CPU接收意味著線程Th0完成的中斷,更新線程控制信息。在這一時刻,可執(zhí)行的狀態(tài)的線程只有線程Th1。因此,對動態(tài)重構(gòu)處理器FE的控制寄存器進行訪問,使線程Th1執(zhí)行。
在時刻B3,CPU接收flg1,更新線程的管理信息。
在時刻B4,CPU接收來自線程Th1的flg2,更新線程的管理信息。假定在從線程Th1向CPU的通知中,利用動態(tài)重構(gòu)處理器FE的中斷功能。在這一時刻,線程Th3變?yōu)榭蓤?zhí)行狀態(tài)。
在時刻B5,當線程Th1完成時,動態(tài)重構(gòu)處理器FE利用中斷向CPU通知完成。CPU接收意味著線程Th1完成的中斷,更新線程控制信息。在這一時刻,可執(zhí)行狀態(tài)的線程變?yōu)榫€程Th2和線程Th3。CPU基于優(yōu)先級,確定接著要執(zhí)行的線程為線程Th3,對動態(tài)重構(gòu)處理器FE的控制寄存器進行訪問,使線程Th3執(zhí)行。
在時刻B6,CPU接收flg3,更新線程的管理信息。在這一時刻,線程Th5變?yōu)榭蓤?zhí)行狀態(tài)。
在時刻B7,當線程Th3完成時,動態(tài)重構(gòu)處理器FE利用中斷向CPU通知完成。CPU接收意味著線程Th3完成的中斷,更新線程控制信息。在這一時刻,可執(zhí)行狀態(tài)的線程變?yōu)榫€程Th2、線程Th4、和線程Th5三個線程。CPU基于優(yōu)先級確定接著要執(zhí)行的線程為線程Th5,對動態(tài)重構(gòu)處理器FE的控制寄存器進行訪問,使線程Th5執(zhí)行。
在時刻B8,當線程Th5完成時,動態(tài)重構(gòu)處理器FE利用中斷向CPU通知完成。CPU接收意味著線程Th5完成的中斷,更新線程控制信息。在這一時刻,可執(zhí)行狀態(tài)的線程變?yōu)榫€程Th2和線程Th4兩個線程。CPU基于優(yōu)先級確定接著要執(zhí)行的線程為線程Th4,對動態(tài)重構(gòu)處理器FE的控制寄存器進行訪問,使線程Th4執(zhí)行。
在時刻B9,當線程Th4完成時,動態(tài)重構(gòu)處理器FE利用中斷向CPU通知完成。CPU接收意味著線程Th4完成的中斷,更新線程控制信息。在這一時刻,可執(zhí)行狀態(tài)的線程只有線程Th2。CPU確定接著要執(zhí)行的線程為線程Th2,對動態(tài)重構(gòu)處理器FE的控制寄存器進行訪問,使線程Th2執(zhí)行。
如以上所說明的那樣,當要以現(xiàn)有的結(jié)構(gòu)實現(xiàn)如圖3所示那樣的任務(wù)的管理時,必須由CPU管理線程,因線程的管理、中斷等導(dǎo)致與CPU相關(guān)的系統(tǒng)開銷增大。另外,切換線程時停止運算,當由CPU進行線程管理時,線程切換需要時間,因此,不能充分發(fā)揮動態(tài)重構(gòu)處理器FE的性能。
圖10是使用本實施例的結(jié)構(gòu)來執(zhí)行了圖3的處理的情況的時序圖。以本實施例的結(jié)構(gòu),能夠不介入CPU地實現(xiàn)圖3的處理,因此,沒有表示CPU的動作的線。初始設(shè)定由CPU進行。為了便于理解地表示動態(tài)重構(gòu)處理器FE的動作,按任務(wù)畫出了不同的線。T1、T2和T3,由一個動態(tài)重構(gòu)處理器FE執(zhí)行,因此,實際上僅有某一個處于動作狀態(tài)。圖中的細橫線表示停止狀態(tài)(未進行處理的狀態(tài)),四方形所示的部分表示執(zhí)行狀態(tài)。
以下,按時間序列(從左側(cè)開始)說明圖10的時序圖所示的動作。
首先,作為初始值,預(yù)先設(shè)置線程Th3的標志寄存器FLGR為0x00000001。
在時刻A1,flg0在標志寄存器FLGR中被設(shè)置,變?yōu)?x00010000。線程Th0具有了變?yōu)镽eady的標志,因此變?yōu)镽eady。伴隨著向Ready變化,線程Th0的標志寄存器FLGR被復(fù)位,變?yōu)?x00000000。在這一時刻,處于Ready狀態(tài)的線程僅有一個,因此,線程Th0變?yōu)镽unning。
在時刻A2,通過線程切換Tr0的發(fā)生,線程Th0變?yōu)閃aiting,線程Th1的標志寄存器FLGR變?yōu)?x00000001。線程Th1具有了變?yōu)镽eady的標志,因此變?yōu)镽eady。伴隨著向Ready變化,線程Th1的標志寄存器FLGR被復(fù)位,變?yōu)?x00000000。在這一時刻,處于可執(zhí)行狀態(tài)的線程只有線程Th1。因此,線程Th1變?yōu)镽unning。
在時刻A3,由于flg1將線程Th3的標志寄存器FLGR設(shè)置為0x00100000。
在時刻A4,設(shè)置線程Th1到Th3的標志寄存器FLGR的對應(yīng)于flg2的值,為0x01100001。線程Th3具有了變?yōu)镽eady的標志,因此變?yōu)镽eady。伴隨著向Ready變化,線程Th3的標志寄存器FLGR被復(fù)位,變?yōu)?x00100000。在這一時刻,處于可執(zhí)行狀態(tài)的線程只有線程Th3。
在時刻A5,通過線程切換Tr1的發(fā)生,線程Th1變?yōu)閃aiting,線程Th2的標志寄存器FLGR變?yōu)?x00000001。線程Th2具有了變?yōu)镽eady的標志,因此變?yōu)镽eady。伴隨著向Ready變化,線程Th1的標志寄存器FLGR被復(fù)位,變?yōu)?x00000000。在這一時刻,處于可執(zhí)行狀態(tài)的線程為線程Th2和線程Th3兩個線程。基于優(yōu)先級PRI,確定接著要執(zhí)行的線程為Th3,線程Th3變?yōu)镽unning。
在時刻A6,由flg3將線程Th5的標志寄存器FLGR設(shè)置為0x10000000。線程Th5具有了變?yōu)镽eady的標志,因此變?yōu)镽eady。伴隨著向Ready變化,線程Th5的標志寄存器FLGR被復(fù)位,變?yōu)?x00000000。在這一時刻,處于可執(zhí)行狀態(tài)的線程為線程Th2和線程Th5兩個線程。
在時刻A7,通過線程切換Tr4的發(fā)生,線程Th3變?yōu)閃aiting,線程Th4的標志寄存器FLGR變?yōu)?x00000001。線程Th4具有了變?yōu)镽eady的標志,因此變?yōu)镽eady。伴隨著向Ready變化,線程Th4的標志寄存器FLGR被復(fù)位,變?yōu)?x00000000。在這一時刻,處于可執(zhí)行狀態(tài)的線程為線程Th2、線程Th4、線程Th5三個線程?;趦?yōu)先級PRI,確定接著要執(zhí)行的線程為Th5,線程Th5變?yōu)镽unning。
在時刻A8,通過線程切換Tr6的發(fā)生,線程Th5變?yōu)閃aiting。線程切換Tr6,對切換后線程TTH沒有指定,因此,不進行由線程切換引起的標志寄存器FLGR的設(shè)置。在這一時刻,處于可執(zhí)行狀態(tài)的線程為線程Th2和線程Th4二個線程?;趦?yōu)先級PRI,確定接著要執(zhí)行的線程為線程Th4,線程Th4變?yōu)镽unning。
在時刻A9,通過線程切換Tr5的發(fā)生,線程Th4變?yōu)閃aiting,線程Th3的標志寄存器FLGR變?yōu)?x00100001。在這一時刻,處于可執(zhí)行狀態(tài)的線程僅為線程Th2。因此,線程Th2變?yōu)镽unning。
在本實施例中,如圖10說明的那樣地進行動作,因此,由伴隨線程切換的CPU進行的控制不會發(fā)生,動態(tài)重構(gòu)處理器FE能夠獨立地管理線程,因此,能夠減少與CPU之間的通信產(chǎn)生的等待時間、系統(tǒng)開銷。另外,由于由CPU進行的控制處理也變少,因此,可以說作為整個芯片,性能得到提高。
通過具有如本實施例那樣的定序器,可進行多任務(wù)處理,該多任務(wù)處理是指線程分別由標志寄存器管理是否為可執(zhí)行狀態(tài),根據(jù)優(yōu)先級從多個可執(zhí)行的線程中選擇一個來執(zhí)行。另外,標志寄存器,可以由動態(tài)重構(gòu)處理器內(nèi)外進行更新,與其它的模塊同步的處理也能夠容易實現(xiàn)。
圖11是表示圖4所示的線程管理表的第二結(jié)構(gòu)的圖。相同符號表示的部分具有相同的功能,因此省略說明。本線程管理表還包含有存儲體(memory bank)指定MB。
存儲體指定MB,在可動態(tài)重構(gòu)的陣列單元RCA所包含的局部存儲器中,指定該線程可利用的區(qū)域(存儲體)。例如,取存儲體指定MB=0,用配置數(shù)據(jù)訪問地址100時,對存儲體0的地址100進行訪問。取存儲體指定MB=1,用配置數(shù)據(jù)訪問地址100時,對存儲體1的地址100進行訪問。由此,可共享或分離任務(wù)間的存儲器。在圖11的存儲體指定MB中,預(yù)先按任務(wù)分配不同的存儲體,以使各個任務(wù)使用的存儲區(qū)域不會發(fā)生競爭。
根據(jù)本功能,存儲器管理將變得容易,因此,任務(wù)的管理也將變得容易。另外,能夠易于實現(xiàn)由一個可動態(tài)重構(gòu)單元陣列RCA來執(zhí)行分別設(shè)計的任務(wù)。
以上,基于實施例說明了本發(fā)明,但在不超出本發(fā)明的主旨的范圍內(nèi)可進行各種變更。
根據(jù)本發(fā)明的動態(tài)重構(gòu)處理器,能夠不利用控制用處理器的能力而實現(xiàn)多任務(wù),因此,能夠系統(tǒng)開銷非常少地實現(xiàn)目標的處理。
權(quán)利要求
1.一種半導(dǎo)體器件,具有通過切換配置數(shù)據(jù)變更其功能、以分時執(zhí)行多個線程的動態(tài)重構(gòu)處理器,上述動態(tài)重構(gòu)處理器,包括線程管理表,按線程具有多個表示對應(yīng)的線程是否處于可執(zhí)行狀態(tài)的標志寄存器;定序器,基于上述線程管理表的信息控制上述線程的切換,上述定序器,通過參照上述多個標志寄存器的內(nèi)容,進行上述線程的切換。
2.根據(jù)權(quán)利要求1所述的半導(dǎo)體器件,其特征在于還包括與上述動態(tài)重構(gòu)處理器中的處理并行進行處理的模塊、和連接上述模塊與上述動態(tài)重構(gòu)處理器的總線,上述標志寄存器,由動態(tài)重構(gòu)處理器本身和上述模塊進行重寫。
3.根據(jù)權(quán)利要求1所述的半導(dǎo)體器件,其特征在于上述多個標志寄存器的每一個,具有保持用于使對應(yīng)的線程為可執(zhí)行狀態(tài)的條件的多個位,上述線程管理表,按線程具有多個標志屏蔽寄存器,該標志屏蔽寄存器在上述多個位中指定使對應(yīng)的線程為可執(zhí)行時參照的位。
4.根據(jù)權(quán)利要求1所述的半導(dǎo)體器件,其特征在于上述線程管理表還具有按各個線程指定優(yōu)先級的優(yōu)先級標志,上述定序器,在多個線程處于可執(zhí)行狀態(tài)的情況下,參照優(yōu)先級標志的值,使優(yōu)先級高的線程為執(zhí)行狀態(tài)。
5.根據(jù)權(quán)利要求1所述的半導(dǎo)體器件,其特征在于還具有存儲上述配置數(shù)據(jù)的存儲器、和連接上述存儲器與上述動態(tài)重構(gòu)處理器的總線,上述動態(tài)重構(gòu)處理器還具有加載存儲在上述存儲器的上述配置數(shù)據(jù)的配置緩沖器,上述線程管理表,按線程具有多個表示對應(yīng)于線程的上述配置數(shù)據(jù)是否存儲在上述配置緩沖器的配置加載標志。
6.根據(jù)權(quán)利要求5所述的半導(dǎo)體器件,其特征在于上述線程管理表,按線程具有多個保持上述配置緩沖器的地址的配置地址寄存器,該配置緩沖器存儲有對應(yīng)于線程的上述配置數(shù)據(jù)。
7.根據(jù)權(quán)利要求1所述的半導(dǎo)體器件,其特征在于上述動態(tài)重構(gòu)處理器還具有按轉(zhuǎn)移狀態(tài)管理轉(zhuǎn)移前的線程信息和轉(zhuǎn)移后的線程信息的線程切換管理表,上述定序器,在執(zhí)行中的線程的處理完成時,使用上述線程切換表中所保持的信息來確定接著要執(zhí)行的線程。
8.根據(jù)權(quán)利要求7所述的半導(dǎo)體器件,其特征在于上述線程切換管理表按轉(zhuǎn)移狀態(tài)保持線程切換條件,上述定序器,在上述轉(zhuǎn)移前的線程信息和上述線程切換條件均一致的情況下,使對應(yīng)的轉(zhuǎn)移后的線程為可執(zhí)行狀態(tài)。
9.一種半導(dǎo)體器件,包括具有通過切換配置數(shù)據(jù)變更其功能、分時執(zhí)行多個線程的動態(tài)重構(gòu)處理器,上述多個線程的每一個,在具備一個或多個的條件時可以執(zhí)行,上述動態(tài)重構(gòu)處理器,包括標志寄存器,具有分別保持是否滿足上述一個或多個的條件的每一個的多個位,線程管理表,按線程具有多個標志屏蔽寄存器,該標志屏蔽寄存器指定在滿足上述多個位中的哪個條件時使對應(yīng)的線程為可執(zhí)行狀態(tài)。
10.根據(jù)權(quán)利要求9所述的半導(dǎo)體器件,其特征在于上述動態(tài)重構(gòu)處理器,還具有基于上述標志寄存器和上述標志屏蔽寄存器的信息來確定要切換的線程的定序器。
全文摘要
本發(fā)明提供一種半導(dǎo)體器件,具有在動態(tài)重構(gòu)處理器的利用中易于實現(xiàn)多任務(wù)的功能。該半導(dǎo)體器件具有通過切換配置數(shù)據(jù)來變更其功能、分時執(zhí)行多個線程的動態(tài)重構(gòu)處理器。動態(tài)重構(gòu)處理器FE包括按線程具有多個表示對應(yīng)的線程是否處于可執(zhí)行狀態(tài)的標志寄存器的線程管理表、和基于線程管理表的信息來控制上述線程的切換的定序器SEQ,定序器通過參照上述多個標志寄存器的內(nèi)容來進行上述線程的切換。本發(fā)明能夠減少進行在包含動態(tài)重構(gòu)處理器的芯片中的多任務(wù)處理時的系統(tǒng)開銷。
文檔編號G06F9/46GK1963802SQ200610137160
公開日2007年5月16日 申請日期2006年10月24日 優(yōu)先權(quán)日2005年11月8日
發(fā)明者田中博志 申請人:株式會社日立制作所