專利名稱:在時(shí)間-固定處理器中對(duì)條件操作的支持的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種被安排用于執(zhí)行程序的時(shí)間-固定處理器,該處理器包括多個(gè)執(zhí)行單元,可由執(zhí)行單元進(jìn)行訪問(wèn)的寄存器文件,用于耦合上述執(zhí)行單元和寄存器文件的通信網(wǎng)絡(luò),以及被安排用來(lái)根據(jù)從程序中得到的控制信息對(duì)處理器進(jìn)行控制的控制器。
本發(fā)明還涉及一種用于控制時(shí)間-固定處理器的方法,該時(shí)間-固定處理器被安排用于執(zhí)行程序,其中該處理器包括多個(gè)執(zhí)行單元,可由執(zhí)行單元進(jìn)行訪問(wèn)的寄存器文件,用于耦合上述多個(gè)執(zhí)行單元和寄存器文件的通信網(wǎng)絡(luò),以及被安排用來(lái)根據(jù)從程序中得到的控制信息對(duì)處理器進(jìn)行控制的控制器。
數(shù)字信號(hào)處理在電信、多媒體以及消費(fèi)電子工業(yè)中起著重要的作用。為了執(zhí)行在數(shù)字信號(hào)處理中所涉及的運(yùn)算,可能要設(shè)計(jì)特殊類型的處理器,該處理器被稱為數(shù)字信號(hào)處理器。數(shù)字信號(hào)處理器可以是可編程處理器或?qū)S弥噶罴幚砥???删幊烫幚砥魇峭ㄓ锰幚砥?,并且它們可被用?lái)處理不同類型的信息,包括聲音、圖像和視頻。對(duì)于專用指令集處理器來(lái)說(shuō),處理器體系結(jié)構(gòu)和指令集是定制的,這樣可以大大地減少系統(tǒng)的成本和功耗。后者對(duì)便攜式和網(wǎng)絡(luò)供電設(shè)備來(lái)說(shuō)非常重要。
數(shù)字信號(hào)處理器體系結(jié)構(gòu)是由固定的數(shù)據(jù)通路構(gòu)成的,該固定的數(shù)據(jù)通路是由一組控制字來(lái)控制的。每個(gè)控制字控制部分?jǐn)?shù)據(jù)通路,而這些部分可以包括寄存器地址以及用于算術(shù)邏輯單元(ALU)或其它功能單元的操作碼。每個(gè)指令集產(chǎn)生一組新的控制字,通常這是通過(guò)將指令的二進(jìn)制格式轉(zhuǎn)換成相應(yīng)控制字的指令譯碼器或直接包含該控制字的微存儲(chǔ)器來(lái)實(shí)現(xiàn)的,該微存儲(chǔ)器就是存儲(chǔ)器。典型地,一個(gè)控制字代表一個(gè)類RISC操作,其包括一個(gè)操作碼、兩個(gè)操作數(shù)寄存器索引(index)以及一個(gè)結(jié)果寄存器索引。該操作數(shù)寄存器索引和結(jié)果寄存器索引指的是寄存器文件中的寄存器。
超長(zhǎng)指令字(VLIW)處理器通常被用于數(shù)字信號(hào)處理。對(duì)于VLIW處理器來(lái)說(shuō),多指令被封裝成一個(gè)長(zhǎng)指令,即所謂的VLIW指令。VLIW處理器使用多個(gè)獨(dú)立的執(zhí)行單元來(lái)并行地執(zhí)行這些多指令。該處理器允許在程序中采用指令級(jí)并行,并因此允許一次執(zhí)行一條以上的指令。因?yàn)檫@種并行處理的形式,所以處理器的性能得到了提高。為了在VLIW處理器上運(yùn)行軟件程序,必須將該軟件程序翻譯成一組VLIW指令。通過(guò)優(yōu)化并行性,編譯器試圖使執(zhí)行程序所需的時(shí)間最小化。在分配給單VLIW指令的多條指令要能夠并行執(zhí)行的約束以及數(shù)據(jù)相關(guān)性的約束下,編譯器將多條指令組合成一條VLIW指令。在一條VLIW指令中并行指令的編碼導(dǎo)致代碼尺寸劇烈增加。就所需的存儲(chǔ)容量和所需的存儲(chǔ)帶寬這兩個(gè)方面而言,大的代碼尺寸將導(dǎo)致程序存儲(chǔ)器成本的增加。在現(xiàn)代VLIW處理器中采用不同的措施來(lái)減少代碼尺寸。一個(gè)重要的例子就是,在數(shù)據(jù)固定VLIW處理器中,將空操作(NOP)的操作用緊湊格式來(lái)表示,即在附于VLIW指令前面的特殊報(bào)頭中,用單比特對(duì)NOP操作進(jìn)行編碼,從而產(chǎn)生壓縮的VLIW指令。
為了控制處理器的數(shù)據(jù)流水線中的操作,通常在計(jì)算機(jī)體系結(jié)構(gòu)中使用兩種不同的機(jī)制數(shù)據(jù)-固定編碼和時(shí)間-固定編碼,正如在“Embedded software in real-time signal processing systemsdesigntechnologies”,G.Goossens,J.van Praet,D.Lanneer,W.Geurts,A.Kifli,C.Liem and P.Paulin,Proceedings of the IEEE,vol.85,no.3,March 1997中所公開(kāi)的那樣。對(duì)于數(shù)據(jù)-固定編碼來(lái)說(shuō),作為處理器指令集的一部分的每條指令,當(dāng)其遍歷數(shù)據(jù)流水線時(shí),它控制必須對(duì)特定數(shù)據(jù)項(xiàng)執(zhí)行的一個(gè)完整序列的操作。一旦指令已經(jīng)從程序存儲(chǔ)器中取出并進(jìn)行解碼,處理器控制器硬件就要確保組成的操作(composingoperation)在正確的機(jī)器周期中執(zhí)行。對(duì)時(shí)間-固定編碼來(lái)說(shuō),作為處理器指令集的一部分的每條指令,控制必須在單機(jī)器周期內(nèi)執(zhí)行的一個(gè)完整序列的操作。這些操作可以應(yīng)用于遍歷數(shù)據(jù)流水線的幾個(gè)不同的數(shù)據(jù)項(xiàng)。在這樣的情況下,編程器或編譯器的任務(wù)就是建立和維護(hù)數(shù)據(jù)流水線。所得到的流水線調(diào)度在機(jī)器碼程序中是完全可見(jiàn)的。時(shí)間-固定編碼通常被用于專用處理器,因?yàn)樗暂^大的代碼尺寸的代價(jià)節(jié)省了對(duì)在指令中存在的控制信息進(jìn)行延遲所需的硬件開(kāi)銷。
時(shí)間-固定處理器的缺點(diǎn)在于不能支持條件操作,條件操作就是根據(jù)在運(yùn)行期間計(jì)算出的條件來(lái)返回一個(gè)結(jié)果的操作。時(shí)間-固定編碼要求所有的控制信息在編譯時(shí)是靜態(tài)確定的并且是在程序中進(jìn)行編碼的,所述控制信息包括將結(jié)果回寫到寄存器文件。
本發(fā)明的目的是,在不使用轉(zhuǎn)移操作的情況下,在時(shí)間-固定處理器中能夠使用操作的條件執(zhí)行,同時(shí)保持時(shí)間-固定編碼的優(yōu)點(diǎn)。
這個(gè)目的是通過(guò)所述類型的處理器來(lái)實(shí)現(xiàn)的,其特征在于,進(jìn)一步安排該處理器根據(jù)控制信息,對(duì)將結(jié)果數(shù)據(jù)從多個(gè)執(zhí)行單元中的一個(gè)執(zhí)行單元中傳遞到寄存器文件進(jìn)行動(dòng)態(tài)控制。通過(guò)對(duì)將結(jié)果數(shù)據(jù)回寫到寄存器文件進(jìn)行動(dòng)態(tài)控制,在運(yùn)行期間就能確定操作的結(jié)果數(shù)據(jù)是否必須被回寫到寄存器文件中。結(jié)果,在不使用轉(zhuǎn)移操作的情況下,能夠在時(shí)間-固定處理器上實(shí)施操作的條件執(zhí)行。
本發(fā)明的一個(gè)實(shí)施例的特征在于,控制信息包括關(guān)于操作有效性的第一標(biāo)識(shí)符,并且其中安排該處理器根據(jù)第一標(biāo)識(shí)符對(duì)與該操作相對(duì)應(yīng)的結(jié)果數(shù)據(jù)寫到寄存器文件中進(jìn)行動(dòng)態(tài)控制。對(duì)于無(wú)效的操作,即所謂的NOP操作,沒(méi)有結(jié)果數(shù)據(jù)必須被回寫到寄存器文件。通過(guò)使用該標(biāo)識(shí)符,在無(wú)效操作的情況下,結(jié)果數(shù)據(jù)的回寫被直接禁止。
本發(fā)明的一個(gè)實(shí)施例的特征在于,根據(jù)相應(yīng)執(zhí)行單元的流水線,對(duì)第一標(biāo)識(shí)符進(jìn)行延遲,該相應(yīng)執(zhí)行單元被安排用于執(zhí)行該操作。通過(guò)根據(jù)該執(zhí)行單元的流水線對(duì)該標(biāo)識(shí)符進(jìn)行延遲,確定回寫結(jié)果數(shù)據(jù)所需的信息能夠在獲得結(jié)果數(shù)據(jù)本身的同時(shí)從執(zhí)行單元的輸出中獲得。
本發(fā)明的一個(gè)實(shí)施例的特征在于,安排執(zhí)行單元來(lái)產(chǎn)生關(guān)于執(zhí)行單元相應(yīng)輸出端口的輸出結(jié)果的有效性的第二標(biāo)識(shí)符,并且其中根據(jù)第一和第二標(biāo)識(shí)符,進(jìn)一步安排該處理器來(lái)對(duì)將與該操作相對(duì)應(yīng)的結(jié)果數(shù)據(jù)寫到寄存器文件中進(jìn)行動(dòng)態(tài)控制。結(jié)果,允許由執(zhí)行單元執(zhí)行的操作有可能產(chǎn)生一個(gè)以上的有效輸出。
本發(fā)明的一個(gè)實(shí)施例的特征在于,根據(jù)第一標(biāo)識(shí)符、第二標(biāo)識(shí)符和輸入數(shù)據(jù),進(jìn)一步安排該處理器來(lái)對(duì)將與該操作相對(duì)應(yīng)的結(jié)果數(shù)據(jù)寫到寄存器文件中進(jìn)行動(dòng)態(tài)控制。輸入數(shù)據(jù)代表真條件或假條件,為了能夠有效地實(shí)施防護(hù)(guarded)操作,這些條件可以在一個(gè)單獨(dú)執(zhí)行單元中確定并隨后在其它功能單元中使用。
本發(fā)明的一個(gè)實(shí)施例的特征在于,寄存器文件是分布式寄存器文件。分布式寄存器文件的優(yōu)點(diǎn)在于,每個(gè)寄存器文件段需要更少的讀端口和寫端口,從硅面積的角度講,會(huì)得到更小的寄存器文件。此外,當(dāng)與中央寄存器文件相比時(shí),分布式寄存器文件中寄存器的尋址所需的位更少。
本發(fā)明的一個(gè)實(shí)施例的特征在于,通信網(wǎng)絡(luò)是部分連接的通信網(wǎng)絡(luò)。當(dāng)與完全連接的通信網(wǎng)絡(luò)相比時(shí),特別是在大量執(zhí)行單元的情況下,部分連接的通信網(wǎng)絡(luò)通常對(duì)定時(shí)的重要性(timing critical)的要求更低,在代碼尺寸、面積以及功耗方面的花費(fèi)更少。
根據(jù)本發(fā)明的一種用于控制處理器的方法的特征在于,該控制方法包括利用控制信息,對(duì)將結(jié)果數(shù)據(jù)從多個(gè)執(zhí)行單元中的一個(gè)執(zhí)行單元傳遞到寄存器文件進(jìn)行動(dòng)態(tài)控制的步驟。通過(guò)對(duì)將結(jié)果數(shù)據(jù)傳遞到執(zhí)行單元進(jìn)行動(dòng)態(tài)控制,可以在運(yùn)行期間確定結(jié)果數(shù)據(jù)是否必須被回寫到寄存器文件中,從而允許通過(guò)時(shí)間-固定編碼來(lái)實(shí)施防護(hù)操作。
圖1顯示根據(jù)本發(fā)明的第一VLIW處理器的原理框圖。
圖2顯示根據(jù)本發(fā)明的第二VLIW處理器的原理框圖。
參考圖1和圖2,原理框圖說(shuō)明了一種包括多個(gè)執(zhí)行單元EX1和EX2以及分布式寄存器文件的VLIW處理器,其中分布式寄存器文件包括寄存器文件段RF1和RF2。通過(guò)執(zhí)行單元EX1和EX2可以分別對(duì)寄存器文件段RF1和RF2進(jìn)行訪問(wèn),以用于從寄存器文件中取回輸入數(shù)據(jù)ID。執(zhí)行單元EX1和EX2還通過(guò)通信網(wǎng)絡(luò)CN和多路復(fù)用器MP1與MP2耦合到寄存器文件段RF1和RF2,以用于將結(jié)果數(shù)據(jù)RD1和RD2從所述執(zhí)行單元傳遞到該分布式寄存器文件??刂破鰿TR從程序存儲(chǔ)器PM中取回指令并對(duì)這些指令進(jìn)行解碼。通常,這些指令包括類RISC操作以及定制的操作,類RISC操作僅需要兩個(gè)操作數(shù)并且僅產(chǎn)生一個(gè)結(jié)果,定制的操作可以使用多于兩個(gè)的操作數(shù)和/或可以產(chǎn)生多于一個(gè)的結(jié)果。一些指令可能需要將小的或大的立即值作為操作數(shù)數(shù)據(jù)。解碼步驟的結(jié)果是寫選擇索引WS1和WS2、寫寄存器索引WR1和WR2、讀寄存器索引RR1和RR2、操作有效索引OPV1和OPV2、以及操作碼OC1和OC2。通過(guò)在控制器CTR與多路復(fù)用器MP1和MP2之間的耦合,寫選擇索引WS1和WS2被分別提供給多路復(fù)用器MP1和MP2。由相應(yīng)的多路復(fù)用器來(lái)利用寫選擇索引WS1和WS2,以用于從通信網(wǎng)絡(luò)CN中分別為必須被寫到寄存器文件段RF1和RF2中的數(shù)據(jù)WD1和WD2選擇所需的輸入通道。由相應(yīng)的多路復(fù)用器也利用寫選擇索引WS1和WS2,以用于從通信網(wǎng)絡(luò)CN中為寫入允許索引WE1和WE2選擇輸入通道,該寫入允許索引WE1和WE2用于對(duì)將數(shù)據(jù)WD1和WD2實(shí)際寫到相應(yīng)的寄存器文件段RF1和RF2的操作進(jìn)行使能或禁止??刂破鰿TR耦合到寄存器文件段RF1和RF2,用于分別提供寫寄存器索引WR1和WR2,以從相應(yīng)的寄存器文件段中選擇將數(shù)據(jù)必須寫入其中的寄存器??刂破鰿TR還分別給寄存器文件段RF1和RF2提供讀寄存器索引RR1和RR2,用于從相應(yīng)的寄存器文件段中選擇寄存器,由執(zhí)行單元EX1和EX2必須分別從其中讀取輸入數(shù)據(jù)ID??刂破鰿TR也耦合到執(zhí)行單元EX1和EX2,以用于分別提供操作碼OC1和OC2,該操作碼定義了執(zhí)行單元EX1或EX2必須對(duì)相應(yīng)輸入數(shù)據(jù)ID所執(zhí)行的操作的類型。操作有效索引OPV1和OPV2也被分別提供給執(zhí)行單元EX1和EX2,并且這些索引指示一個(gè)有效操作是根據(jù)相應(yīng)的操作碼OC1還是OC2來(lái)定義的。操作有效索引OPV1和OPV2的值是在解碼VLIW指令期間確定的。在現(xiàn)有技術(shù)的時(shí)間-固定處理器中,對(duì)將數(shù)據(jù)從執(zhí)行單元寫到寄存器文件進(jìn)行使能或禁止的寫入允許索引是靜態(tài)確定的,因?yàn)樗鼈冊(cè)诰幾g的時(shí)候是在程序中進(jìn)行編碼的。解碼后,控制器從該程序中得到寫入允許索引,并直接將該寫入允許索引提供給寄存器文件。
參考圖1,控制器CTR被耦合到寄存器105。在解碼步驟期間,控制器CTR從該程序中得到操作有效索引OPV1和OPV2,并且將這些操作有效索引提供給寄存器105。如果編碼的操作是NOP操作,則操作有效索引就被設(shè)置為假,否則操作有效索引被設(shè)置為真。根據(jù)相應(yīng)的執(zhí)行單元EX1和EX2的流水線,使用寄存器105、107和109對(duì)操作有效索引OPV1和OPV2進(jìn)行延遲。在執(zhí)行單元EX1和EX2執(zhí)行完分別由操作碼OC1和OC2定義的操作之后,產(chǎn)生了相應(yīng)的結(jié)果數(shù)據(jù)RD1和RD2以及相應(yīng)的輸出有效索引OV1和OV2。如果相應(yīng)的結(jié)果數(shù)據(jù)RD1或RD2有效,則輸出有效索引OV1或OV2就為真,否則就為假。單元101對(duì)經(jīng)過(guò)延遲的操作有效索引OPV1和輸出有效索引OV1執(zhí)行邏輯與操作,從而得到了結(jié)果有效索引RV1。單元103對(duì)經(jīng)過(guò)延遲的操作有效索引OPV2和輸出有效索引OV2執(zhí)行邏輯與操作,從而得到了結(jié)果有效索引RV2。單元101和103都通過(guò)部分連接的網(wǎng)絡(luò)CN耦合到多路復(fù)用器MP1和MP2,以用于將結(jié)果有效索引RV1和RV2傳遞到多路復(fù)用器MP1和MP2。由相應(yīng)的多路復(fù)用器MP1和MP2使用寫選擇索引WS1和WS2來(lái)從連接網(wǎng)絡(luò)CN中選擇一個(gè)通道,通過(guò)這個(gè)通道,結(jié)果數(shù)據(jù)必須被寫到相應(yīng)的寄存器文件段中。如果由多路復(fù)用器選擇了一個(gè)結(jié)果數(shù)據(jù)通道,那么就用結(jié)果有效索引RV1和RV2來(lái)對(duì)寫入允許索引WE1和WE2進(jìn)行設(shè)置,以對(duì)分別將結(jié)果數(shù)據(jù)RD1和RD2寫到寄存器文件段RF1和RF2中進(jìn)行控制。如果多路復(fù)用器MP1或和MP2已經(jīng)選擇了與結(jié)果數(shù)據(jù)RD1相對(duì)應(yīng)的輸入通道,那么使用結(jié)果有效RV1來(lái)對(duì)與那個(gè)多路復(fù)用器相對(duì)應(yīng)的寫入允許索引進(jìn)行設(shè)置,而如果選擇了與結(jié)果數(shù)據(jù)RD2相對(duì)應(yīng)的輸入通道,那么就用結(jié)果有效索引RV2來(lái)對(duì)相應(yīng)的寫入允許索引進(jìn)行設(shè)置。如果結(jié)果有效索引RV1或RV2為真,就通過(guò)相應(yīng)的多路復(fù)用器MP1和MP2將適當(dāng)?shù)膶懭朐试S索引WE1或WE2設(shè)置為真。如果寫入允許索引WE1或WE2等于真,則在通過(guò)與寄存器文件段相對(duì)應(yīng)的寫寄存器索引WR1或WR2而選定的寄存器中,將結(jié)果數(shù)據(jù)RD1或RD2寫到寄存器文件段RF1或RF2中。如果寫入允許索引WE1或WE2被設(shè)置為假,盡管已經(jīng)通過(guò)相應(yīng)的寫選擇索引WS1或WS2選擇了一個(gè)用于將數(shù)據(jù)寫入到相應(yīng)的寄存器文件段RF1或RF2的輸入通道,但是沒(méi)有數(shù)據(jù)會(huì)被寫入到那個(gè)寄存器文件段中。為了禁止分別通過(guò)寄存器文件段RF1和RF2的給定的寫端口回寫任何結(jié)果數(shù)據(jù)RD1或RD2,可以用與那個(gè)寄存器文件段相對(duì)應(yīng)的寫選擇索引WS1或WS2從相應(yīng)的多路復(fù)用器MP1或MP2中選擇缺省輸入111,在這種情況下,沒(méi)有結(jié)果數(shù)據(jù)被寫到那個(gè)寄存器文件段中。
參考圖2,控制器CTR被耦合到邏輯單元201和205。在解碼步驟期間,控制器CTR從該程序中取回操作有效索引OPV1和OPV2,并且將這些操作有效索引分別提供給邏輯單元201和205。如果編碼的操作是NOP操作,則操作有效索引就被設(shè)置為假,否則操作有效索引就被設(shè)置為真。寄存器文件段RF1和RF2分別耦合到單元201和205,并且可以分別將相應(yīng)的保護(hù)信號(hào)(guard)GU1和GU2從寄存器文件段RF1和RF2寫到單元201和205中。保護(hù)信號(hào)GU1和GU2要么是真,要么是假,這取決于在其間確定的保護(hù)信號(hào)的值的操作的結(jié)果。單元201和205對(duì)相應(yīng)的操作有效索引OPV1或OPV2以及相應(yīng)的保護(hù)信號(hào)GU1或GU2執(zhí)行邏輯與操作。根據(jù)相應(yīng)的執(zhí)行單元EX1和EX2的流水線,使用寄存器209、211和213對(duì)所得到的索引進(jìn)行延遲。在執(zhí)行單元EX1和EX2已經(jīng)分別執(zhí)行完由操作碼OC1或OC2定義的操作之后,產(chǎn)生了相應(yīng)的結(jié)果數(shù)據(jù)RD1和RD2以及相應(yīng)的輸出有效索引OV1和OV2。如果相應(yīng)的結(jié)果數(shù)據(jù)RD1或RD2是有效輸出數(shù)據(jù),則輸出有效索引OV1和OV2就為真,否則就為假。單元203對(duì)經(jīng)過(guò)延遲的索引和輸出有效索引OV1執(zhí)行邏輯與操作,從而得到了結(jié)果有效索引RV1,其中經(jīng)過(guò)延遲的索引是從保護(hù)信號(hào)GU1和操作有效索引OPV1中得到的。單元207對(duì)經(jīng)過(guò)延遲的索引和輸出有效索引OV2執(zhí)行邏輯與操作,從而得到了結(jié)果有效索引RV2,其中經(jīng)過(guò)延遲的索引是從保護(hù)信號(hào)GU2和操作有效索引OPV2中得到的。單元203和207通過(guò)部分連接的網(wǎng)絡(luò)CN分別耦合到多路復(fù)用器MP1和MP2,以用于將結(jié)果有效索引RV1和RV2傳遞到多路復(fù)用器MP1和MP2。使用結(jié)果有效索引RV1和RV2來(lái)對(duì)寫入允許索引WE1或WE2進(jìn)行設(shè)置,以對(duì)將結(jié)果數(shù)據(jù)RD1或RD2寫到寄存器文件段RF1和RF2中進(jìn)行控制。相應(yīng)的多路復(fù)用器MP1和MP2使用寫選擇索引WS1和WS2來(lái)從連接網(wǎng)絡(luò)CN中選擇一個(gè)通道,通過(guò)這個(gè)通道,結(jié)果數(shù)據(jù)必須被寫到相應(yīng)的寄存器文件段中。如果由多路復(fù)用器來(lái)選擇一個(gè)結(jié)果數(shù)據(jù)通道,則使用結(jié)果有效索引RV1和RV2來(lái)對(duì)寫入允許索引WE1和WE2進(jìn)行設(shè)置,以對(duì)將結(jié)果數(shù)據(jù)RD1和RD2分別寫到寄存器文件段RF1和RF2中進(jìn)行控制。如果多路復(fù)用器MP1或MP2已經(jīng)選擇了與結(jié)果數(shù)據(jù)RD1相對(duì)應(yīng)的輸入通道,那么就用結(jié)果有效RV1來(lái)對(duì)與那個(gè)多路復(fù)用器相對(duì)應(yīng)的寫入允許索引進(jìn)行設(shè)置,而如果選擇了與結(jié)果數(shù)據(jù)RD2相對(duì)應(yīng)的輸入通道,那么就用結(jié)果有效索引RV2來(lái)對(duì)相應(yīng)的寫入允許索引進(jìn)行設(shè)置。如果結(jié)果有效索引RV1或RV2為真,那就通過(guò)相應(yīng)的多路復(fù)用器MP1和MP2將適當(dāng)?shù)膶懭朐试S索引WE1或WE2設(shè)置為真。如果寫入允許索引WE1或WE2等于真,則在通過(guò)與那個(gè)寄存器文件段相對(duì)應(yīng)的寫寄存器索引WR1或WR2而選定的寄存器中,將結(jié)果數(shù)據(jù)RD1或RD2寫到寄存器文件段RF1或RF2中。如果寫入允許索引WE1或WE2被設(shè)置為假,盡管已經(jīng)通過(guò)相應(yīng)的寫選擇索引WS1或WS2選擇了一個(gè)用于將數(shù)據(jù)寫入到相應(yīng)的寄存器文件段RF1或RF2的輸入通道,但是沒(méi)有數(shù)據(jù)被寫入那個(gè)寄存器文件段中。為了禁止分別通過(guò)寄存器文件段RF1和RF2的給定的寫端口回寫任何結(jié)果數(shù)據(jù)RD1或RD2,可以使用與那個(gè)寄存器文件段相對(duì)應(yīng)的寫選擇索引WS1或WS2來(lái)從相應(yīng)的多路復(fù)用器MP1或MP2中選擇缺省輸入111,在這種情況下,沒(méi)有結(jié)果數(shù)據(jù)被寫到那個(gè)寄存器文件段中。
根據(jù)圖1和圖2的時(shí)間-固定處理器允許對(duì)將結(jié)果數(shù)據(jù)回寫到寄存器文件中進(jìn)行動(dòng)態(tài)控制。在運(yùn)行期間,能夠確定一個(gè)已經(jīng)執(zhí)行的操作的結(jié)果數(shù)據(jù)是否必須被回寫到寄存器文件中。結(jié)果,使用時(shí)間-固定編碼指令的處理器就能夠?qū)嵤l件操作。
下面顯示的是一段程序代碼的例子,它應(yīng)該由根據(jù)本發(fā)明的時(shí)間-固定處理器執(zhí)行。在這段程序代碼中,字母A、B0、B1、B2、C0、C1和D指的是語(yǔ)句,而X指的是要么為假、要么為真的條件。
··A;if(X)en{B0;B1;B2;}else{C0;C1;}D;··由根據(jù)圖2的處理器如下執(zhí)行該段程序代碼。該段程序代碼是由使用稱為“條件轉(zhuǎn)換(if conversion)”的熟知技術(shù)的編譯器進(jìn)行轉(zhuǎn)換的,其允許在不需要代價(jià)高的轉(zhuǎn)移的情況下執(zhí)行if-then-else體。因?yàn)檫@樣,通過(guò)確保“then”或“else”體返回基于“if”條件的結(jié)果或其補(bǔ)充(complement),它甚至允許并行執(zhí)行“if-then-else”體,該補(bǔ)充被用作在“then”或“else”體中的指令的保護(hù)信號(hào)。使用“條件轉(zhuǎn)換”將以上所示的程序代碼段轉(zhuǎn)換成
A;if(X)B0;if(X)B1;if(X)B2;if(X)C0;if(X)C1;D;··參考圖2,由執(zhí)行單元EX1或EX2執(zhí)行一條指令來(lái)確定條件X的值。這條指令產(chǎn)生了結(jié)果“真”,并將這個(gè)結(jié)果存儲(chǔ)在寄存器文件段RF1中,并且它的補(bǔ)充,即結(jié)果“假”被存儲(chǔ)在寄存器文件段RF2中。接下來(lái),執(zhí)行單元EX1執(zhí)行包括語(yǔ)句B0、B1和B2的指令,而執(zhí)行單元EX2執(zhí)行包括語(yǔ)句C0和C1的指令。因?yàn)樵跅l件轉(zhuǎn)換程序中去掉了控制流,所以如果數(shù)據(jù)相關(guān)性和資源的可用性允許,那么現(xiàn)在就可以對(duì)原始程序中的“then”和“else”主體中的操作進(jìn)行并行調(diào)度,一般情況下,條件轉(zhuǎn)換程序中的控制流是通過(guò)使用轉(zhuǎn)移操作來(lái)實(shí)現(xiàn)的,并且因此在實(shí)際上是順序的??刂破鰿TR對(duì)VLIW指令進(jìn)行解碼,并將得到的寫選擇索引WS1和WS2發(fā)送到相應(yīng)的多路復(fù)用器MP1和MP2,將寫寄存器索引WR1和WR2以及讀寄存器索引RR1和RR2發(fā)送到相應(yīng)的寄存器文件段RF1和RF2,將操作碼OC1和OC2發(fā)送到相應(yīng)的執(zhí)行單元EX1和EX2,以及將操作有效索引OPV1和OPV2發(fā)送到相應(yīng)的單元201和205。這些操作有效索引OPV1和OPV2都等于“真”。單元201和205還分別接收語(yǔ)句X的計(jì)算結(jié)果或者它的補(bǔ)充以作為相應(yīng)的保護(hù)信號(hào)GU1和GU2,并對(duì)該保護(hù)信號(hào)和該操作有效索引執(zhí)行邏輯與操作。因?yàn)楸Wo(hù)信號(hào)GU1和GU2分別等于真和假,所以,對(duì)于單元201來(lái)說(shuō),邏輯與將產(chǎn)生“真”以作為結(jié)果,而對(duì)單元205來(lái)說(shuō),邏輯與將產(chǎn)生“假”以作為結(jié)果。當(dāng)語(yǔ)句B0、B1、B2、C1或C2分別由執(zhí)行單元EX1和EX2執(zhí)行時(shí),邏輯與的結(jié)果通過(guò)寄存器209、211和213進(jìn)行時(shí)鐘控制。對(duì)于執(zhí)行單元EX1和EX2來(lái)說(shuō),相應(yīng)的輸出有效索引OV1和OV2都等于真。單元203將對(duì)操作有效OV1和由單元201執(zhí)行邏輯與所得到的結(jié)果執(zhí)行邏輯與操作。該邏輯與的結(jié)果將是真,并且因此結(jié)果有效索引RV1等于真。通過(guò)部分連接的網(wǎng)絡(luò)CN,結(jié)果有效索引RV1的值以及相應(yīng)的結(jié)果數(shù)據(jù)RD1被傳遞到多路復(fù)用器MP1和MP2。利用寫選擇索引WS1,多路復(fù)用器MP1選擇與結(jié)果數(shù)據(jù)RD1相對(duì)應(yīng)的輸入通道。隨后利用結(jié)果有效索引RV1將寫入允許索引WE1設(shè)置為真,并且象數(shù)據(jù)WD1那樣,將結(jié)果數(shù)據(jù)RD1寫到寄存器文件段RF1中。單元207將對(duì)操作有效OV2和由單元205執(zhí)行邏輯與的結(jié)果執(zhí)行邏輯與操作。該邏輯與的結(jié)果將是假,并且因此結(jié)果有效索引RV2等于假。通過(guò)部分連接的網(wǎng)絡(luò)CN,結(jié)果有效索引RV2的值以及相應(yīng)的結(jié)果數(shù)據(jù)RD2被傳遞到多路復(fù)用器MP1和MP2。利用寫選擇索引WS2,多路復(fù)用器MP2選擇與結(jié)果數(shù)據(jù)RID2相對(duì)應(yīng)的通道。隨后利用結(jié)果有效索引RV2將寫入允許索引WE2設(shè)置為假,因此不將結(jié)果數(shù)據(jù)RD2寫到寄存器文件段RF2中。作為選擇,可以將保護(hù)信號(hào)X的值以及它的補(bǔ)充存儲(chǔ)到寄存器文件段RF1和寄存器文件段RF2中?,F(xiàn)在執(zhí)行單元EX1和執(zhí)行單元EX2都可以執(zhí)行語(yǔ)句B0、B1、B2、C0和C1了。如果執(zhí)行單元EX1或EX2正在執(zhí)行語(yǔ)句B0、B1或B2,那么將X的值分別用于保護(hù)信號(hào)GU1或GU2。如果執(zhí)行單元EX1或EX2正在執(zhí)行語(yǔ)句C0或C1,那么將X的補(bǔ)充分別用于保護(hù)信號(hào)GU1或GU2。結(jié)果,當(dāng)執(zhí)行語(yǔ)句B0、B1或B2時(shí),結(jié)果數(shù)據(jù)RD1或RD2被寫到寄存器文件段RF1和/或RF2中。如果執(zhí)行的是語(yǔ)句C0或C1,結(jié)果數(shù)據(jù)RD1或RD2就不被寫到寄存器文件段RF1和/或RF2中。
下面顯示的是一段程序代碼的另一個(gè)例子,它應(yīng)該由根據(jù)本發(fā)明的時(shí)間-固定處理器來(lái)執(zhí)行。在這段程序代碼中,字母Z、P和Q指的是變量,而X指的是要么為假、要么為真的條件。當(dāng)執(zhí)行這個(gè)程序段時(shí),P和Q的值相加,并給如果條件X等于真,就將相加的結(jié)果賦給Z。
··
if(X)then{Z=add(P,Q);}
··由根據(jù)圖1的處理器如下執(zhí)行該段程序代碼。該段程序代碼是由編譯器進(jìn)行轉(zhuǎn)換的,并且用條件加法操作cadd來(lái)替換add操作,該條件加操作cadd將條件X的值作為附加自變量··Z=cadd(X,P,Q);··參考圖1,由執(zhí)行單元EX1或EX2執(zhí)行一條指令來(lái)確定條件X的值。這條指令產(chǎn)生的結(jié)果為“真”,并且這個(gè)結(jié)果被存儲(chǔ)在寄存器文件段RF1中。參數(shù)P和Q也被存儲(chǔ)在寄存器文件段RF1中。由執(zhí)行單元EX1來(lái)執(zhí)行cadd指令。條件X的值、以及參數(shù)P和Q作為輸入數(shù)據(jù)ID被執(zhí)行單元EX1接收。在執(zhí)行指令cadd期間,由執(zhí)行單元EX1來(lái)計(jì)算條件X的值,并且如果這個(gè)值等于真,就將輸出有效索引OV1設(shè)置為等于真。如果條件X的值等于假,就將輸出有效索引OV1設(shè)置為等于假。在這個(gè)例子中,條件X的值等于真,因此也就將輸出有效索引OV1的值設(shè)置為等于真。此外,執(zhí)行單元EX1計(jì)算參數(shù)Z的值。單元101對(duì)與指令cadd相對(duì)應(yīng)的操作有效索引OPV1和輸出有效索引OV1執(zhí)行邏輯與操作。因?yàn)椴僮饔行饕齇PV1等于真,因而所得到的結(jié)果有效索引RV1也等于真。通過(guò)部分連接的網(wǎng)絡(luò)CN,將以參數(shù)Z的值的形式出現(xiàn)的結(jié)果有效索引RV1和結(jié)果數(shù)據(jù)RD1傳遞到多路復(fù)用器MP1和MP2。利用寫選擇索引WS1,多路復(fù)用器MP1選擇與結(jié)果數(shù)據(jù)RD1相對(duì)應(yīng)的通道作為輸入通道。多路復(fù)用器MP1利用結(jié)果有效索引RV1將寫入允許索引WE1設(shè)置為等于真,并象寫數(shù)據(jù)WD1那樣,將參數(shù)Z的值寫到寄存器文件段RF1中。如果條件X等于假,由執(zhí)行單元EX1將輸出有效索引OV1設(shè)置為假。由單元101執(zhí)行的邏輯與操作導(dǎo)致結(jié)果有效索引RV1等于假。結(jié)果,寫入允許索引WE1被設(shè)置為假。在這種情況下,參數(shù)Z的值不被寫到寄存器文件段RF1中。
上述例子表明,通過(guò)對(duì)將結(jié)果數(shù)據(jù)從執(zhí)行單元傳遞到寄存器文件進(jìn)行動(dòng)態(tài)控制,在不使用轉(zhuǎn)移操作的情況下,操作的條件執(zhí)行可以在時(shí)間-固定處理器中實(shí)施。
在另一個(gè)實(shí)施例中,通信網(wǎng)絡(luò)CN可以是部分連接的通信網(wǎng)絡(luò),即并不是每個(gè)執(zhí)行單元EX1和EX2都耦合到所有的寄存器文件段RF1和RF2。如果有大量執(zhí)行單元,就硅面積、延遲以及功耗來(lái)講,完全連接通信網(wǎng)絡(luò)的開(kāi)銷將是相當(dāng)大的。在設(shè)計(jì)VLIW處理器期間,根據(jù)必須執(zhí)行的應(yīng)用程序的范圍,決定執(zhí)行單元被耦合到寄存器文件段的程度。
在另一個(gè)實(shí)施例中,包括寄存器文件段RF1和RF2的分布式寄存器文件是一個(gè)單寄存器文件。如果VLIW處理器的執(zhí)行單元的數(shù)目相對(duì)較小,則單寄存器文件的開(kāi)銷也相對(duì)較小。
在另一個(gè)實(shí)施例中,VLIW處理器可以具有更多的執(zhí)行單元。特別是,執(zhí)行單元的數(shù)目取決于VLIW處理器必須執(zhí)行的應(yīng)用程序的類型。該處理器還可以具有更多連接到所述執(zhí)行單元的寄存器文件段。
在另一個(gè)實(shí)施例中,執(zhí)行單元EX1和EX2可以具有多個(gè)輸入和/或多個(gè)輸出,這取決于執(zhí)行單元必須執(zhí)行的操作的類型,即需要多于兩個(gè)的操作數(shù)和/或產(chǎn)生多于一個(gè)的結(jié)果的操作。對(duì)于每個(gè)寄存器文件段來(lái)說(shuō),寄存器文件也可以具有多個(gè)讀和/或?qū)懚丝凇?br>
應(yīng)該注意的是,上述實(shí)施例是說(shuō)明而不是限制本發(fā)明,并且在不背離所附權(quán)利要求書的范圍的情況下,本領(lǐng)域技術(shù)人員將能夠設(shè)計(jì)出許多可選擇的實(shí)施例。在權(quán)利要求書中,置于括號(hào)中的任何附圖標(biāo)記都不應(yīng)被解釋為對(duì)權(quán)利要求的限制?!鞍ā边@個(gè)詞不排除在權(quán)利要求中列出之外的元件或步驟的存在。在元件之前的詞“一個(gè)”或“一種”不排除引入多個(gè)這樣的元件的存在。在列舉了若干裝置的設(shè)備權(quán)利要求中,這些裝置中的幾個(gè)可以用同一個(gè)硬件項(xiàng)來(lái)實(shí)現(xiàn)。僅僅在彼此不同的從屬權(quán)利要求中記載的確定的措施的事實(shí),并不表明這些措施的組合不能被有利地利用。
權(quán)利要求
1.一種被安排用來(lái)執(zhí)行程序的時(shí)間-固定處理器,該處理器包括-多個(gè)執(zhí)行單元;-可由上述執(zhí)行單元進(jìn)行訪問(wèn)的寄存器文件;-通信網(wǎng)絡(luò),用來(lái)耦合上述執(zhí)行單元和寄存器文件;-控制器,其被安排用來(lái)根據(jù)從程序中得到的控制信息對(duì)處理器進(jìn)行控制,其特征在于,根據(jù)上述控制信息,進(jìn)一步安排處理器對(duì)將結(jié)果數(shù)據(jù)從上述多個(gè)執(zhí)行單元中的一個(gè)執(zhí)行單元傳遞到寄存器文件進(jìn)行動(dòng)態(tài)控制。
2.根據(jù)權(quán)利要求1的處理器,其特征在于,上述控制信息包括關(guān)于操作的有效性的第一標(biāo)識(shí)符,并且其中安排該處理器根據(jù)上述第一標(biāo)識(shí)符對(duì)將與該操作相對(duì)應(yīng)的結(jié)果數(shù)據(jù)寫到寄存器文件中進(jìn)行動(dòng)態(tài)控制。
3.根據(jù)權(quán)利要求2的處理器,其特征在于,根據(jù)相應(yīng)執(zhí)行單元的流水線對(duì)上述第一標(biāo)識(shí)符進(jìn)行延遲,該相應(yīng)執(zhí)行單元被安排用來(lái)執(zhí)行該操作。
4.根據(jù)權(quán)利要求1的處理器,其特征在于,安排執(zhí)行單元來(lái)產(chǎn)生關(guān)于該執(zhí)行單元的相應(yīng)輸出端口的輸出結(jié)果的有效性的第二標(biāo)識(shí)符,并且其中進(jìn)一步安排該處理器根據(jù)上述第一標(biāo)識(shí)符和上述第二標(biāo)識(shí)符,對(duì)將與該操作相對(duì)應(yīng)的結(jié)果數(shù)據(jù)寫到寄存器文件中進(jìn)行動(dòng)態(tài)控制。
5.根據(jù)權(quán)利要求4的處理器,其特征在于,進(jìn)一步安排該處理器根據(jù)上述第一標(biāo)識(shí)符、上述第二標(biāo)識(shí)符以及輸入數(shù)據(jù),對(duì)將與該操作相對(duì)應(yīng)的結(jié)果數(shù)據(jù)寫到寄存器文件中進(jìn)行動(dòng)態(tài)控制。
6.根據(jù)權(quán)利要求1的處理器,其特征在于,寄存器文件是分布式寄存器文件。
7.根據(jù)權(quán)利要求1的處理器,其特征在于,通信網(wǎng)絡(luò)是部分連接的通信網(wǎng)絡(luò)。
8.一種用于控制時(shí)間-固定處理器的方法,該處理器被安排用來(lái)執(zhí)行程序,其中該處理器包括-多個(gè)執(zhí)行單元;-可由上述執(zhí)行單元進(jìn)行訪問(wèn)的寄存器文件;-通信網(wǎng)絡(luò),用來(lái)耦合上述執(zhí)行單元和寄存器文件;-控制器,其被安排用來(lái)根據(jù)從程序中得到的控制信息對(duì)處理器進(jìn)行控制,其特征在于,該控制方法包括下述步驟,即利用控制信息,對(duì)將結(jié)果數(shù)據(jù)從上述多個(gè)執(zhí)行單元中的一個(gè)執(zhí)行單元傳遞到寄存器文件進(jìn)行動(dòng)態(tài)控制。
全文摘要
對(duì)于時(shí)間-固定編碼來(lái)說(shuō),作為處理器指令集的一部分的每條指令對(duì)必須在單機(jī)器周期內(nèi)執(zhí)行的一整套操作進(jìn)行控制。這些操作可以處理遍歷數(shù)據(jù)流水線的幾個(gè)不同的數(shù)據(jù)項(xiàng)。時(shí)間-固定編碼通常被用于專用處理器中,因?yàn)樗暂^大的代碼尺寸的代價(jià),節(jié)省了對(duì)在指令中存在的控制信息進(jìn)行延遲所需的硬件開(kāi)銷。時(shí)間-固定編碼的缺點(diǎn)在于不支持條件操作。本發(fā)明提出利用通過(guò)程序獲得的控制信息來(lái)對(duì)將結(jié)果數(shù)據(jù)回寫到時(shí)間-固定處理器的寄存器文件中進(jìn)行動(dòng)態(tài)控制。通過(guò)在運(yùn)行期間對(duì)數(shù)據(jù)的回寫進(jìn)行控制,時(shí)間固定處理器就可以實(shí)施條件操作。
文檔編號(hào)G06F9/30GK1816799SQ200480010047
公開(kāi)日2006年8月9日 申請(qǐng)日期2004年4月9日 優(yōu)先權(quán)日2003年4月16日
發(fā)明者J·A·J·萊坦 申請(qǐng)人:皇家飛利浦電子股份有限公司