專利名稱:基于傳輸觸發(fā)架構(gòu)可配置處理器指令冗余消除方法
技術(shù)領(lǐng)域:
本發(fā)明屬于嵌入式處理器設(shè)計(jì)技術(shù)領(lǐng)域,特別是涉及基于傳輸觸發(fā)架構(gòu)的可配置 處理器設(shè)計(jì)領(lǐng)域。
背景技術(shù):
基于傳輸觸發(fā)架構(gòu)(Transport Triggered Architecture, TTA)的處理器是由荷 蘭Delft大學(xué)的Henk Corporaal教授提出來的。傳統(tǒng)的CISC、RISC、VLIW架構(gòu)的處理器 均是通過指定操作來編程的。例如ADD rl, r2, r3這條指令,先將r2和r3寄存器中的值 相加,然后送入rl寄存器中,因此我們稱此類處理器架構(gòu)為操作觸發(fā)處理器架構(gòu)。TTA的 核心思想是利用數(shù)據(jù)傳輸來觸發(fā)操作,即任何數(shù)據(jù)在通過總線寫入功能單元FU(Function Unit)的特定寄存器的同時(shí)會(huì)觸發(fā)一次完整的操作?;趥鬏斢|發(fā)架構(gòu)的處理器由很多的功能單元FU、控制器(CTRL,Controller)構(gòu) 成,每個(gè)功能單元FU包含三種基本寄存器操作數(shù)寄存器(operand register),觸發(fā)寄存 器(trigger register)和結(jié)果寄存器(result register)。功能單元FU和控制器(CTRL 通過多條總線相連,如圖1所示,為一個(gè)包含4條總線和5個(gè)功能單元FU的TTA架構(gòu)處理 器示意圖。在編程時(shí),只需指定數(shù)據(jù)在功能單元FU間的傳輸方向,而由控制單元CTL負(fù)責(zé) 取指令、譯碼以及控制每一個(gè)功能單元FU從各個(gè)總線中讀寫數(shù)據(jù)。功能單元FU可以是一 個(gè)乘法器(MUL)、加法器(ADD)、運(yùn)算單元(ALU)、通用寄存器(GPR),還可以是一個(gè)存取單元 (LD/ST)。TTA架構(gòu)處理器中的功能單元FU的選擇是由應(yīng)用的復(fù)雜程度所決定的,并且FU 的數(shù)量和功能單元類型以及總線數(shù)量等都是可以配置的。而基于TTA架構(gòu)處理器的總線數(shù) 量則決定了整個(gè)處理器的并行度。傳統(tǒng)的TTA架構(gòu)的指令字格式如圖2所示,包括并行子指令槽slot 1 -slot n和 長(zhǎng)立即數(shù)槽LI,并行子指令槽的個(gè)數(shù)由處理器的總線數(shù)量決定,長(zhǎng)立即數(shù)槽的位寬由指令 中長(zhǎng)立即數(shù)的大小和數(shù)據(jù)總線的位寬決定。并行子指令由源域和目的域構(gòu)成源域決定了 源寄存器的標(biāo)號(hào)(S)或短立即數(shù)(SI),目的域決定了目的寄存器的標(biāo)號(hào)(D),而源域和目的 域的寬度是由功能單元FU中的寄存器及通用寄存器的數(shù)量所決定的。因此,如果指令字中 有長(zhǎng)立即數(shù),則指令字位寬度可以表示成公式11 = (s+d) Xn+w 公式 1其中1是指令字的位寬,s是源域的位寬,d是目的域的位寬,n代表指令中操作的 個(gè)數(shù),即子指令槽的個(gè)數(shù),w是長(zhǎng)立即數(shù)槽的位寬。對(duì)于指令級(jí)并行的可配置處理器,由于其高性能及可擴(kuò)展性,被廣泛應(yīng)用于片上 系統(tǒng)(SoC)中,尤其是在數(shù)字信號(hào)處理領(lǐng)域。TTA架構(gòu)作為超長(zhǎng)指令字(VLIW,VeryLong Instruction Word)架構(gòu)的超集,具有指令級(jí)并行的特點(diǎn)。但低代碼密度以及需要較大的指 令存儲(chǔ)空間是基于TTA架構(gòu)處理器的主要問題。由于功能單元FU數(shù)量有限,所有的操作不 可能在同一時(shí)間內(nèi)全部執(zhí)行,因此這就產(chǎn)生了許多的空操作(NOP);而且,由于長(zhǎng)立即數(shù)太 長(zhǎng)而不能放入子指令槽中,因此需要引進(jìn)額外的子指令槽空間。
3
為了解決上述兩個(gè)問題,基于字典編碼、哈夫曼編碼等的指令壓縮方法可以用來減少代碼量從而減少指令存儲(chǔ)空間。但是這些指令壓縮的方法需要額外的硬件電路,因此 本發(fā)明引進(jìn)了一種新的而非指令壓縮的指令冗余消除的方法,此種方法對(duì)TTA指令字中的 空操作槽進(jìn)行了充分地復(fù)用,克服了上述現(xiàn)有技術(shù)的缺陷。
發(fā)明內(nèi)容
基于上述技術(shù)問題,本發(fā)明提出了一種新的基于傳輸觸發(fā)架構(gòu)的可配置處理器指 令字以及指令冗余消除的方法,基于傳輸觸發(fā)架構(gòu)的可配置處理器,對(duì)其指令字中存在的 一些空操作槽進(jìn)行復(fù)用,以存放長(zhǎng)立即數(shù),達(dá)到縮短指令字長(zhǎng)度的目的。本發(fā)明提出了一種基于傳輸觸發(fā)架構(gòu)的可配置處理器中指令字格式,該處理器的 指令字格式包括若干個(gè)普通子指令槽,其中普通子指令槽包括條件位、源域以及目的域; 普通子指令槽如果存放空子指令則變成空操作槽;指令字的位寬1 = (c+s+d) Xn其中,1是指令字的位寬,c是條件位的位寬,s是源域的位寬,d是目的域的位寬, η代表指令中操作的個(gè)數(shù),即子指令槽的個(gè)數(shù);在對(duì)指令字進(jìn)行編碼的過程中,決定源域中存放內(nèi)容的條件位,其位寬c
C= log2(— + \)
SW其中,Iw是長(zhǎng)立即數(shù)的位寬,sw是短立即數(shù)的位寬;指令冗余消除方法包括以下步驟步驟1,對(duì)于輸入的含有立即數(shù)的指令字,先判斷立即數(shù)是否是長(zhǎng)立即數(shù),如果不 是長(zhǎng)立即數(shù),那么直接存放在源域中并標(biāo)記條件位;如果是長(zhǎng)立即數(shù),則截取與源域位寬相 等的數(shù),并放入源域中,標(biāo)記條件位,余下長(zhǎng)立即數(shù)其他部分,執(zhí)行步驟2 ;步驟2,判斷此指令字中是否有空操作槽,如果此指令字中沒空操作槽,那么在緊 接著的本條指令字的下面加一條新的指令字,將沒有帶立即數(shù)的子指令轉(zhuǎn)存到新指令字 中,這樣本條指令字就產(chǎn)生了空操作槽,執(zhí)行步驟3;如果此指令字中有空操作槽,執(zhí)行步 驟3 ;步驟3,判斷能否存入空操作槽中。如果能夠存放,則將部分長(zhǎng)立即數(shù)存入空操作 槽中,并作好條件位的標(biāo)記;如果不能存放,繼續(xù)截取,得到與源域和目的域位寬總數(shù)相等 的數(shù)以及余下部分,轉(zhuǎn)到步驟2執(zhí)行;所述源域包括源寄存器標(biāo)號(hào)、短立即數(shù)或長(zhǎng)立即數(shù)低位部分,所述長(zhǎng)立即數(shù)低位 部分是將長(zhǎng)立即數(shù)按照由低位到高位的順序,截取得到與源域位寬相等的數(shù)L-LI。所述含有長(zhǎng)立即數(shù)指令字,其指令譯碼流程包括,當(dāng)指令譯碼電路檢測(cè)到條件位 有長(zhǎng)立即數(shù)標(biāo)記存在時(shí),把長(zhǎng)立即數(shù)的各個(gè)部分被送入到寄存器,然后由譯碼電路將這些 長(zhǎng)立即數(shù)的各個(gè)部分組合起來送進(jìn)數(shù)據(jù)總線之中。與現(xiàn)有技術(shù)相比,本發(fā)明設(shè)計(jì)的新的TTA架構(gòu)處理器的指令字格式,去掉了傳統(tǒng) TTA架構(gòu)指令字的長(zhǎng)立即數(shù)槽,通過充分復(fù)用空操作槽來存放長(zhǎng)立即數(shù),有效地減少傳統(tǒng)TTA架構(gòu)指令字中大量存在的空操作,從而有效的增加代碼的密度,減小指令存儲(chǔ)器的大 小。
圖1為具有4條總線和5個(gè)功能單元FU的TTA架構(gòu)處理器;圖2為傳統(tǒng)的TTA架構(gòu)指令字格式示意圖;圖3為本發(fā)明的基于傳輸觸發(fā)架構(gòu)的可配置處理器的指令字示意圖;圖4為本發(fā)明的復(fù)用空操作槽存入長(zhǎng)立即數(shù)的流程圖;圖5為傳統(tǒng)TTA架構(gòu)指令與冗余消除后的指令對(duì)比圖;圖6為本發(fā)明的含有長(zhǎng)立即數(shù)的指令譯碼流程圖。
具體實(shí)施例方式以下結(jié)合附圖對(duì)本發(fā)明提出的基于傳輸觸發(fā)架構(gòu)的可配置處理器的指令字以及 指令冗余消除的方法進(jìn)行詳細(xì)地介紹。如圖3所示,為本發(fā)明提出的一種新的基于傳輸觸發(fā)架構(gòu)的可配置處理器的指令 字格式,該指令字包括若干個(gè)普通子指令槽,普通子指令槽分為條件位C、目的域D以及源 域(該域可能存放源寄存器標(biāo)號(hào)S、短立即數(shù)SI或長(zhǎng)立即數(shù)低位部分L-LI);普通子指令槽 由于存入空子指令變成空操作槽。上述新指令字去掉了傳統(tǒng)傳輸觸發(fā)架構(gòu)指令字中的長(zhǎng)立即數(shù)槽。處理器的總線數(shù) 量決定了指令字中的并行子指令槽slot數(shù)量。每個(gè)并行的子指令槽包括條件位C,源域, 目的域。條件位C決定源域中存放的是源寄存器標(biāo)號(hào)S、短立即數(shù)SI或長(zhǎng)立即數(shù)低位部分 L-LI ;目的域則決定了目的寄存器標(biāo)號(hào)D。指令字的寬度可以表示成公式2。1 = (c+s+d) Xn 公式 2其中1是指令字的位寬,c是條件位的位寬,s是源域的位寬,d是目的域的位寬, η代表指令中操作的個(gè)數(shù),即子指令槽的個(gè)數(shù)。在對(duì)指令字進(jìn)行編碼的過程中,條件位C決定了源域中存放的內(nèi)容,其位寬c可以 用公式3來表示。
<formula>formula see original document page 5</formula>其中Iw是長(zhǎng)立即數(shù)位寬,sw是短立即數(shù)位寬。對(duì)條件位C進(jìn)行編碼,編號(hào)分別決定源域里存放的是源域的標(biāo)號(hào)S,或是短立即數(shù) SI,或是長(zhǎng)立即數(shù)的低位部分L-LI。在復(fù)用空操作槽時(shí),源域和目的域都存放長(zhǎng)立即數(shù)其他 部分P-LI。如圖4所示為本發(fā)明的復(fù)用空操作槽存入長(zhǎng)立即數(shù)的流程圖,該流程的操作包括 以下步驟當(dāng)指令字中含有立即數(shù)并且是短立即數(shù)時(shí),將其直接存放在源域中,并作好條件 位C的標(biāo)記;如果是長(zhǎng)立即數(shù),則先將長(zhǎng)立即數(shù)按照由低位到高位的順序,截取與源域位寬 (s)相等的長(zhǎng)立即數(shù),并將其放入源域中,同時(shí)標(biāo)記此子指令條件位C ;若指令字中有空操 作槽并且被截取之后余下的長(zhǎng)立即數(shù)其他部分P-LI能夠放入空操作槽中,則將其存放在 空操作中,并標(biāo)記此子指令的條件位C;如果本條指令字中沒有空操作槽,則在緊接著的本條指令字的下面加一條新的指令字,將沒有帶立即數(shù)的子指令轉(zhuǎn)存到新指令字中,本條指 令字中空出來的空操作存放長(zhǎng)立即數(shù)其他部分P-LI ;若仍然不能存放余下的長(zhǎng)立即數(shù)其 他部分P-LI,則繼續(xù)截取與源域和目的域位寬總數(shù)(s+d)相等的數(shù),并將此數(shù)以及剩余部 分?jǐn)?shù)按上述方法尋找空操作槽并存放。C語言程序先通過編譯器前端得到指令的串行匯編代碼,編譯器后端得到并行匯 編代碼,再通過匯編器對(duì)并行的匯編代碼進(jìn)行指令冗余消除,最后轉(zhuǎn)化為二進(jìn)制代碼。以下為本發(fā)明的最佳實(shí)施方式
參照?qǐng)D3和圖4,下面說明一種復(fù)用空操作槽存放長(zhǎng)立即數(shù)的最佳實(shí)施方式。步驟1對(duì)于輸入的含有立即數(shù)的指令字,先判斷立即數(shù)是否是長(zhǎng)立即數(shù)。如果不是長(zhǎng)立 即數(shù),那么直接存放在源域中并標(biāo)記條件位(C)。如果是長(zhǎng)立即數(shù),則截取與源域位寬(s) 相等的數(shù),并放入源域中,標(biāo)記條件位(C),余下長(zhǎng)立即數(shù)其他部分(P-LI),執(zhí)行步驟2.步驟2判斷此指令字中是否有空操作槽。如果此指令字中沒空操作槽,那么在緊接著的 本條指令字的下面加一條新的指令字,將沒有帶立即數(shù)的子指令轉(zhuǎn)存到新指令字中,這樣 本條指令字就產(chǎn)生了空操作槽,執(zhí)行步驟3。如果此指令字中有空操作槽,執(zhí)行步驟3。步驟3判斷能否存入空操作槽中。如果能夠存放,則將部分長(zhǎng)立即數(shù)存入空操作槽中,并 作好條件位C的標(biāo)記。如果不能存放,繼續(xù)截取,得到與源域和目的域位寬總數(shù)(s+d)相等 的數(shù)以及余下部分,轉(zhuǎn)到步驟2執(zhí)行。圖5為一個(gè)傳統(tǒng)TTA架構(gòu)指令與冗余消除后指令的對(duì)比圖。圖中的標(biāo)記含義為 slot 子指令槽,LI 長(zhǎng)立即數(shù),C 條件位,D 目的寄存器標(biāo)號(hào),L-LI 長(zhǎng)立即數(shù)低位部分, P-LI 長(zhǎng)立即數(shù)其他部分。圖 中(1)是傳統(tǒng)的指令字格式,其中指令字2包含3條子指 令、1條空操作和長(zhǎng)立即數(shù)槽LI,由于子指令6有長(zhǎng)即數(shù)LI,所以將長(zhǎng)立即數(shù)LI放在長(zhǎng)立即 數(shù)槽中。圖· 中(2)是經(jīng)過指令冗余消除之后的指令格式。執(zhí)行指令冗余消除時(shí),將長(zhǎng) 立即數(shù)其他部分P-LI存放在本條指令字的空操作中,這里假設(shè)長(zhǎng)立即數(shù)在被截取與源域 位寬(s)相等的數(shù)之后,余下的長(zhǎng)立即數(shù)其他部分P-LI能夠存放在空操作槽之中。圖6為含有長(zhǎng)立即數(shù)的指令譯碼流程圖,當(dāng)指令譯碼電路檢測(cè)到條件位C有長(zhǎng)立 即數(shù)標(biāo)記存在時(shí),把子指令中長(zhǎng)立即數(shù)的各個(gè)部分被送入到寄存器,然后由譯碼電路將這 些長(zhǎng)立即數(shù)的各個(gè)部分組合起來送進(jìn)數(shù)據(jù)總線之中。
權(quán)利要求
一種基于傳輸觸發(fā)架構(gòu)可配置處理器指令冗余消除方法,其特征在于,該處理器的指令字格式包括若干個(gè)普通子指令槽,其中普通子指令槽包括條件位、源域以及目的域;普通子指令槽如果存放空子指令則變成空操作槽;指令字的位寬l=(c+s+d)×n其中,l是指令字的位寬,c是條件位的位寬,s是源域的位寬,d是目的域的位寬,n代表指令中操作的個(gè)數(shù),即子指令槽的個(gè)數(shù);在對(duì)指令字進(jìn)行編碼的過程中,決定源域中存放內(nèi)容的條件位,其位寬c其中,lw是長(zhǎng)立即數(shù)的位寬,sw是短立即數(shù)的位寬;該方法通過的復(fù)用指令字中存在的空操作槽存放長(zhǎng)立即數(shù),進(jìn)行指令冗余消除,包括以下步驟步驟(1),對(duì)于輸入的含有立即數(shù)的指令字,先判斷立即數(shù)是否是長(zhǎng)立即數(shù),如果不是長(zhǎng)立即數(shù),那么直接存放在源域中并標(biāo)記條件位;如果是長(zhǎng)立即數(shù),則截取與源域位寬相等的數(shù),并放入源域中,標(biāo)記條件位,余下長(zhǎng)立即數(shù)其他部分,執(zhí)行步驟(2);步驟(2),判斷此指令字中是否有空操作槽,如果此指令字中沒空操作槽,那么在緊接著的本條指令字的下面加一條新的指令字,將沒有帶立即數(shù)的子指令轉(zhuǎn)存到新指令字中,這樣本條指令字就產(chǎn)生了空操作槽,執(zhí)行步驟(3);如果此指令字中有空操作槽,執(zhí)行步驟(3);步驟(3),判斷能否存入空操作槽中。如果能夠存放,則將部分長(zhǎng)立即數(shù)存入空操作槽中,并作好條件位的標(biāo)記;如果不能存放,繼續(xù)截取,得到與源域和目的域位寬總數(shù)相等的數(shù)以及余下部分,轉(zhuǎn)到步驟(2)執(zhí)行。FDA0000020694970000011.tif
2.如權(quán)利要求1所述的基于傳輸觸發(fā)架構(gòu)可配置處理器指令冗余消除方法,所述源域 包括源寄存器標(biāo)號(hào)、短立即數(shù)或長(zhǎng)立即數(shù)低位部分,所述長(zhǎng)立即數(shù)低位部分是將長(zhǎng)立即數(shù) 按照由低位到高位的順序,截取得到與源域位寬相等的數(shù)L-LI。
3.如權(quán)利要求1所述的基于傳輸觸發(fā)架構(gòu)可配置處理器指令冗余消除方法,所述含有 長(zhǎng)立即數(shù)的指令字,其指令譯碼流程包括,當(dāng)指令譯碼電路檢測(cè)到條件位有長(zhǎng)立即數(shù)標(biāo)記 存在時(shí),把長(zhǎng)立即數(shù)的各個(gè)部分被送入到寄存器,然后由譯碼電路將這些長(zhǎng)立即數(shù)的各個(gè) 部分組合起來送進(jìn)數(shù)據(jù)總線之中。
全文摘要
本發(fā)明公開了一種基于傳輸觸發(fā)架構(gòu)的可配置處理器中指令冗余消除的方法,該處理器的指令字格式包括若干個(gè)普通子指令槽,其中,普通子指令槽包括條件位、源域以及目的域;子指令槽如果存放空子指令則變成空操作槽;該方法通過復(fù)用空操作槽,進(jìn)行指令冗余消除。與現(xiàn)有技術(shù)相比,本發(fā)明設(shè)計(jì)了一種新的基于TTA架構(gòu)處理器的指令字格式,去掉了傳統(tǒng)TTA架構(gòu)指令字的長(zhǎng)立即數(shù)槽,通過充分復(fù)用空操作槽來存放長(zhǎng)立即數(shù),有效地減少傳統(tǒng)TTA架構(gòu)指令字中大量存在的空操作,從而有效的增加代碼的密度,減小指令存儲(chǔ)器的大小。
文檔編號(hào)G06F9/38GK101833435SQ20101015006
公開日2010年9月15日 申請(qǐng)日期2010年4月19日 優(yōu)先權(quán)日2010年4月19日
發(fā)明者史再峰, 王粟, 郭煒, 魏繼增, 魯超 申請(qǐng)人:天津大學(xué)