專利名稱:高效執(zhí)行特長指令字的處理器的制作方法
本案是申請?zhí)枮?8102986.8的中國專利申請的分案申請。
本發(fā)明涉及具有VLIW(特長指令字)結(jié)構(gòu)的處理器,特別是執(zhí)行稍短字長和高編碼效率的處理器。
近年來隨著對多媒體裝置和電子電路小型化需求的增加,對微處理器的需求是能以高速處理多媒體數(shù)據(jù),例如音頻數(shù)據(jù)和圖象數(shù)據(jù)。一類處理器是能夠使用VLIW結(jié)構(gòu)的處理器的需求,以后稱之為“VLIW處理器”。
VLIW處理器包括許多內(nèi)部操作單元,也就是能夠以平行方式同時(shí)執(zhí)行許多種VLIW的操作數(shù)。這樣的VLIW是由調(diào)查在源程序級平行處理的可能性和執(zhí)行編目錄的程序編制器產(chǎn)生。對于用戶裝置中使用的被嵌入的微處理器,對抑制程序的代碼尺寸是重要的。使得具有高關(guān)聯(lián)的無操作指令(以后稱為“無操作指令”)和產(chǎn)生的差的代碼效率的結(jié)果的256位VLIW離理想情況很遠(yuǎn)。
執(zhí)行相對短字長指令的VLIW處理器的一例是日本公開專利申請H09-26878。該技術(shù)是執(zhí)行32位指令的并能同時(shí)指示最大兩個(gè)操作的VLIW處理器的數(shù)據(jù)處理裝置。
圖1A和圖1B示出圖1示出的用于同時(shí)指示兩個(gè)操作的指令格式和圖1B示出的用于指示只一個(gè)操作的指令格式的規(guī)定技術(shù)的指令格式。該技術(shù)的目的在于,通過示明在每個(gè)指令中的操作數(shù)和執(zhí)行順序的格式字段410中的2位值來改進(jìn)代碼效率。
通過單個(gè)32位指令表明的最大兩個(gè)操作,無論如何沒有達(dá)到足夠的平行度等級。還有一個(gè)問題是,當(dāng)利用一超過給定字長的常數(shù)進(jìn)行操作時(shí)會降低指令的代碼效率。作為一個(gè)舉例,當(dāng)32位常數(shù)被提供為上16位和下16位,使得它能被置入寄存器時(shí),恰需要兩個(gè)32位指令去指示利用該常數(shù)的操作。
從所述的問題看,本發(fā)明的一個(gè)目的就是提供一種VLIW處理器,能執(zhí)行相對短字長指令而又具有高等級平行度和高效代碼結(jié)構(gòu),使得能同時(shí)指示若干操作。作為一個(gè)舉例,由單個(gè)32位指令能指示三或更多操作。
本發(fā)明的第二個(gè)目的是提供一種VLIW處理器,用于執(zhí)行具有某種結(jié)構(gòu)的相對短字長指令,從而使總的代碼效率相對不受影響,甚至當(dāng)處理相對長的字長的常數(shù)時(shí)也是如此。
通過VLIW(特長指令字)處理器能夠?qū)崿F(xiàn)第一個(gè)目的,它能譯碼和執(zhí)行具有至少兩個(gè)操作字段的指令,第一個(gè)操作字段能只包括確定操作類型的一個(gè)操作代碼和第二操作字段包括一個(gè)操作代碼和至少一個(gè)由第二操作字段指示的操作中使用的操作數(shù)的組合,該VLIW處理器包括第一譯碼單元,用于譯碼在第一操作字段中的操作代碼;第一執(zhí)行單元,用于根據(jù)第一譯碼單元的譯碼結(jié)果執(zhí)行由在第一操作字段中的操作代碼指示的操作;第二譯碼單元,用于譯碼在第二操作字段中的操作代碼;和第二執(zhí)行單元,用于根據(jù)第二譯碼單元的譯碼結(jié)果,在由第二操作字段中的操作數(shù)指示的數(shù)據(jù)基礎(chǔ)上,執(zhí)行由第二操作字段中的操作代碼指示的操作。
在此情況下,由于通過只插入一個(gè)操作代碼而沒有清楚的操作數(shù)指示能夠指明指令中至少一個(gè)操作,從而能降低指令的字長。其結(jié)果是,執(zhí)行相對短字長的而具有高效代碼結(jié)構(gòu)的指令,使得能同時(shí)指示若干操作的VLIW處理器得以實(shí)現(xiàn)。
這里,在第一操作字段中由操作代碼占有的多個(gè)位數(shù)可以等于在第二操作字段中由操作代碼占有的多個(gè)位數(shù)。
作為一種結(jié)果就是,在一指令中包括的所有操作代碼都由相同的數(shù)目的比特組成多位數(shù),從而簡化了例如譯碼電路的單元。
這里,指令可以包括三個(gè)操作字段,在三個(gè)操作字段中的第三操作字段可以占有如第二操作字段的相同位數(shù)和也可以包括一個(gè)操作代碼和至少一個(gè)操作數(shù)的組合,該VLIW處理器進(jìn)一步包括第三譯碼單元,當(dāng)一操作代碼存在于第三操作字段時(shí),它譯碼第三操作字段的操作代碼;和第三執(zhí)行單元,用于根據(jù)第三譯碼單元的譯碼結(jié)果,在由第三操作字段中的操作數(shù)指示的數(shù)據(jù)基礎(chǔ)上,執(zhí)行由在第三操作字段的操作代碼指示的操作。
其結(jié)果是,具有高等級平行度從而能同時(shí)進(jìn)行三個(gè)操作的VLIW處理器能夠?qū)崿F(xiàn)。
這里,第一執(zhí)行單元可以控制包括該指令的程序流。
其結(jié)果是,一般不需要大量比特?cái)?shù)的分支操作可被賦予短的操作字段。這就意味著可以確定高代碼效率的指令集合。
這里,第二執(zhí)行單元可以控制由在第二操作字段中包括的操作數(shù)指示的數(shù)據(jù)的傳送,和第三執(zhí)行單元,在由第三操作字段中包括的操作數(shù)指示的數(shù)據(jù)的基礎(chǔ)上,可以控制執(zhí)行一算術(shù)邏輯操作。
其結(jié)果是,可以由在一指令中的單個(gè)操作指示將數(shù)據(jù)傳送到外部存儲器和將數(shù)據(jù)從外部存儲器傳送來,使得能簡化應(yīng)在VLIW處理器中提供的操作數(shù)存取電路。
通過VLIW處理器能實(shí)現(xiàn)本發(fā)明的第二個(gè)目的,該處理器能譯碼和執(zhí)行具有至少兩個(gè)操作字段的一指令,第一操作字段只包括(i)用于確定一操作類型的一單個(gè)操作代碼的一個(gè)和(ii)一常數(shù),和第二操作字段包括(i)一操作代碼和由第二操作字段指示的一操作中使用的至少一個(gè)操作數(shù)的組合的一個(gè)和(ii)一常數(shù),該VLIW處理器包括第一譯碼單元,用于當(dāng)操作代碼出現(xiàn)在第一操作字段中時(shí),譯碼在第一操作字段的操作代碼;第一執(zhí)行單元,用于根據(jù)第一譯碼單元的譯碼結(jié)果,執(zhí)行由在第一操作字段中的操作代碼指示的操作;第二譯碼單元,用于當(dāng)操作代碼存在于第二操作字段時(shí),譯碼在第二操作字段的操作代碼;和第二執(zhí)行單元,用于根據(jù)第二譯碼單元的譯碼結(jié)果,在由第二操作字段中的操作數(shù)指示的數(shù)據(jù)基礎(chǔ)上,執(zhí)行由第二操作字段的操作代碼指示的操作。
采用以上結(jié)構(gòu),當(dāng)在一指令的操作字段中必須放入無意義的代碼時(shí),由不同操作使用的常數(shù)可以替換被插入,使得VLIW處理器能實(shí)現(xiàn)用于執(zhí)行具有高代碼效率的指令,而不管只具有短的字長。
這里,該指令還包括含有指明在第一操作字段中是否只有一個(gè)常數(shù)和在第二操作字段中是否只有一個(gè)常數(shù)的格式代碼的格式字段,該VLIW處理器進(jìn)一步包括用于譯碼格式代碼的格式譯碼單元;和用于當(dāng)格式譯碼單元的譯碼結(jié)果表明在第一操作字段和第二操作字段的至少一個(gè)中只存在一個(gè)常數(shù)時(shí),提取在該指令中的該常數(shù)并存儲該提取的常數(shù)的常數(shù)存儲單元。
其結(jié)果是,在操作字段中放置的常數(shù)能被存儲在常數(shù)存儲單元,用于稍后指令的操作,使得能避免代碼效率的降低,甚至是在當(dāng)利用相對短字長的指令,處理相對長字長的常數(shù)也是如此。
這里,格式字段,第一操作字段,第二操作字段中的操作代碼,在第二操作字段中的每個(gè)操作數(shù),在第三操作字段中的操作代碼,和第三操作字段中的每個(gè)操作數(shù),每個(gè)都可占據(jù)n位。
采用上述結(jié)構(gòu),組成一指令的所有字段都具有相同的位數(shù),這就能簡化VLIW處理器的內(nèi)部電路。
這里,VLIW處理器可以包括取單元,用于取包括有n個(gè)操作字段的L位指令;和n個(gè)操作單元,每一個(gè)都與該取得的指令中的n個(gè)操作字段的不同的一個(gè)相關(guān)聯(lián),并且每一個(gè)都相互以平行方式單獨(dú)執(zhí)行相關(guān)操作字段中指示的操作;VLIW處理器的特征在于,n個(gè)操作字段并不全是相同尺寸,和L并不是n的整數(shù)倍。
采用上述結(jié)構(gòu),并不需要指令的所有操作字段都具有相同的字長,這就可能以高代碼效率確定指令。其結(jié)果是,VLIW處理器執(zhí)行相對短字長而具有高效代碼結(jié)構(gòu)的指令,使得能實(shí)現(xiàn)同時(shí)指示若干操作。
這里,n可以是3,和L可以是32。
采用上述結(jié)構(gòu)實(shí)現(xiàn)的VLIW處理器,具有高等級的平行度,從而由一單個(gè)32位指令指定的三個(gè)操作能被同時(shí)進(jìn)行。
這里,在n個(gè)操作字段中的至少一個(gè)操作字段中包括的操作數(shù)的數(shù)目,可以不同于在該n個(gè)操作字段中的另一個(gè)操作字段中的操作數(shù)的數(shù)目。
采用上述結(jié)構(gòu),不需要指令中的每一個(gè)操作字段都具有相同數(shù)目的操作數(shù),使得能確定具有高等級的代碼效率的指令格式。
這里,n個(gè)操作字段可以包括只有一個(gè)操作代碼組成的至少一個(gè)操作字段和由一個(gè)操作代碼和至少一個(gè)操作數(shù)組成的至少一個(gè)操作字段。
采用上述的結(jié)構(gòu),該指令字長要比當(dāng)指令中的每個(gè)操作字段包含有操作代碼和操作數(shù)的組合的情況要短,使得能夠?qū)崿F(xiàn)執(zhí)行具有高效代碼結(jié)構(gòu)的指令的VLIW處理器。
如上所述,本發(fā)明實(shí)現(xiàn)的VLIW處理器能執(zhí)行相對短字長而又具有允許將由單個(gè)指令指定的若干操作的高效代碼結(jié)構(gòu)的指令。對于處理多媒體數(shù)據(jù)的嵌入處理器,其作用尤為顯著。
隨同描述本發(fā)明特定實(shí)施例的附圖的以描述,本發(fā)明的這些和其它目的,優(yōu)點(diǎn)和特點(diǎn)將會變得極為明顯。圖中圖1A和1B是現(xiàn)有技術(shù)的指令格式,圖1A是同時(shí)指示兩個(gè)操作的指令格式和圖1B是只指示一個(gè)操作的指令格式;圖2A是由本發(fā)明處理器執(zhí)行的指令的字段結(jié)構(gòu);圖2B至2D示出16類指令格式,圖2B示出三個(gè)操作指令,圖2C示出二操作指令,和圖2D示出單個(gè)操作指令;圖3的表示出由三種類型操作代碼指示的特定操作,即由圖2使用的“CC”、“OP1”,和“OP2”;圖4方框圖示出本發(fā)明的硬件結(jié)構(gòu);圖5方框圖示出本處理器的常數(shù)寄存器36的詳細(xì)結(jié)構(gòu)和外圍電路;圖6A至6D表示用于由圖5所示常數(shù)寄存器控制單元32存儲常數(shù)的不同方法,圖6A示出當(dāng)格式代碼是“0”或“1”時(shí)的情況,圖6B示出當(dāng)格式代碼是“4”時(shí)的情況,圖6C示出當(dāng)格式代碼是“5”時(shí)的情況,和圖6D是當(dāng)格式代碼是“2”、“3”,或“A”時(shí)的情況;圖7方框圖是本處理器的PC單元33的詳細(xì)結(jié)構(gòu);圖8是處理32位常數(shù)的過程的流程;圖9是本處理器執(zhí)行圖8所示過程的程序舉例;圖10是當(dāng)執(zhí)行圖9所示程序時(shí),本處理操作的定時(shí)圖;圖11是本處理器執(zhí)行處理16位常數(shù)的過程的程序舉例;圖12A示出由標(biāo)準(zhǔn)處理器執(zhí)行的指令的字段定義;圖12B是圖12A所示指令的指令格式;圖13示出標(biāo)準(zhǔn)處理器進(jìn)行如圖9所示程序的相同過程的程序舉例;圖14示出標(biāo)準(zhǔn)處理器執(zhí)行如圖11所示程序的相同過程的程序舉例;圖15A至15D示出由本發(fā)明的VLIW處理器執(zhí)行的指令的結(jié)構(gòu)的改進(jìn);和圖16示出能執(zhí)行圖15A所示指令的本處理器的硬件結(jié)構(gòu)的改進(jìn)。
以下將參照附圖描述本發(fā)明的處理器的實(shí)施例。在該實(shí)施例中,表達(dá)式“指令”呈現(xiàn)為代碼集合,它隨著表達(dá)式“操作”呈現(xiàn)給由本處理器平行執(zhí)行的處理單元,例如算術(shù)操作,邏輯操作,傳送,或分支的處理單元譯碼和執(zhí)行,以及指示每個(gè)處理單元的代碼。
首先描述由本處理器譯碼和執(zhí)行的指令結(jié)構(gòu)。本處理器是一VLIW處理器,它譯碼和執(zhí)行具有32位固定字長的指令。
圖2A示出由本處理器執(zhí)行的指令50的字段結(jié)構(gòu)。同時(shí)圖2B至2D示出16個(gè)指令格式。圖2B這些指令格式同時(shí)指示三種操作,圖2C兩個(gè)操作的指令格式,和圖2D單個(gè)操作的指令格式。
指令50具有固定32位字長,和由依序示出的8個(gè)4位物理字段組成,開始從MSB(最高有效位)作為圖2A中的P0.0字段51,P1.0字段52,…P3.2字段58。從P2.0字段53至P2.2字段55的這些范圍被稱為第一操作字段59,而從P3.0字段56至P3.2字段58的范圍被稱之為第二操作字段60。
在圖2B至2D中,代碼“const”表示一常數(shù),并取決于它使用的操作,可以是一數(shù)字常數(shù)或一符號常數(shù),例如,立即,絕對地址,或位移。代號“OP”表示操作代碼,指示操作類型,而代號“RS”表示用作為源操作數(shù)的寄存器,“Rd”是作為目的操作數(shù)的寄存器,和“CC”操作代碼指示分支操作,它使用本發(fā)明處理器提供的專門的32位寄存器(圖4中所示的常數(shù)寄存器36)的存儲值作為分支目的地的絕對地址或相對地址(位移)。
在上述代碼之后直接給出的數(shù)字值,表示在第一操作字段59或第二操作字段60中二者之一的操作中使用的值。作為一例,對于具有格式代碼“6”的指令格式,位于P1.0字段52中的4位常數(shù)“const1”和位于P2.1字段54中的4位常數(shù)“const1”被組合形成一8位常數(shù),即對應(yīng)于第一操作字段59的操作代碼“OP1”的源操作數(shù)。
不附加數(shù)目的常數(shù)“const”表示是將存儲在本處理器提供的專門的32位寄存器(圖4中所示常數(shù)寄存器36)中的常數(shù)。作為一例,對于具有格式代碼“0”的指令格式,位于P1.0字段52中的4位常數(shù)“const”意味著該常數(shù)將被存儲在被隱含指示的常數(shù)寄存器36中。
圖3示出能由圖2給三類操作代碼“CC”,“OP1”、和“OP2”表示的操作的特例。以下將詳細(xì)描述這些操作。
4位操作代碼“CC”表示16類分支指令的一個(gè)。每個(gè)分支指令確定為一種分支條件和分支格式。分支條件的舉例包括“等于”(’eq’)”,“不等于(’neq’)”,和大于“(’gt’)”。該分支格式可以是作為分支目的的絕對地址的常數(shù)寄存器36的存儲值的格式(用不附加“i”到指令助記符表示),或作為相對地址的常數(shù)寄存器36的存儲值的格式(附加“i”到指令助記符表示)。作為一例,操作代碼“eq”表示,當(dāng)予先比較確定比較的值相等時(shí),分支到通過絕對地址指示的目的的操作,而操作代碼“eqi”表示,當(dāng)予先比較確定比較的值相等時(shí),分支到通過相對地址指示的目的的操作。
4位操作數(shù)“OP1”可被用于表示算術(shù)邏輯操作,例如任何的“add”(加),“Sub”(減),“mul”(乘),“and”(邏輯加),或“or”(邏輯或),或者是內(nèi)部寄存器傳送的操作,例如任何的“mov”(字(32位)數(shù)傳送),“movh”(半字?jǐn)?shù)據(jù)傳送),或“movb”(一字節(jié)數(shù)據(jù)傳送)。
4位操作數(shù)“OP2”可被用于表示任何算術(shù)邏輯操作或內(nèi)部寄存器傳送,該變換能由操作數(shù)“OP1”表示,而且也能用于指示寄存器—存儲器傳送操作,例如“1d”(從存儲器將一字?jǐn)?shù)據(jù)加載到寄存器)或“st”(從寄存器將一字?jǐn)?shù)據(jù)存儲到存儲器)。
以下描述圖2A所示字段51,52,59和60的特征。
P0.0字段51保存確定指令50的格式的4位格式代碼,特別是該P(yáng)0.0字段51確定圖2B至2D所示16個(gè)指令格式中的一個(gè)。
P1.0字段52是保存用于分支操作的常數(shù)或操作代碼的字段。當(dāng)常數(shù)位于P1.0字段52(例如在具有格式代碼“0”,“1”,和“4”至“9”的指令中)時(shí),存在這種情況,常數(shù)被存儲在常數(shù)寄存器36中(例如在具有格式代碼“0”,“1”,“4”,和“5”的指令中)和常數(shù)形成在第一操作字段59或第二操作字段60中的操作數(shù)的一部分(例如在具有格式代碼“5”,“7”,“8”,“9”和“B”的指令中)的情況。當(dāng)在P1.0字段52中的常數(shù)將被存儲在常數(shù)寄存器36中的時(shí)候,存在這種情況,只有該4位常數(shù)被存儲(例如在具有格式代碼“0”和“1”的指令中),和該常數(shù)與位于第一操作字段59或第二操作字段60的二者之一中的12位常數(shù)一起存儲(例如在具有格式代碼“4”和“5”的指令中)的情況。
當(dāng)用于分支的操作代碼“CC”在P1.0字段52中給出時(shí)(例如在具有格式代碼“2”,“3”,和“A”的指令中),這是指示利用常數(shù)寄存器36的存儲值作為分支目的的絕對地址或相對地址(位移)的分支操作。
第一操作字段59保存一常數(shù)或(a)用于指示在本處理器和外圍(存儲器)之間不包含數(shù)據(jù)傳送的操作(例如算術(shù)邏輯操作或內(nèi)部寄存器傳送)的操作代碼和(b)源和用于操作的目的的操作數(shù)的組合這二者之一。
第二操作字段60能保存如上述第一操作字段59的相同內(nèi)容,而且還能替換地保存(a)用于指示在本處理器和外圍之間包含數(shù)據(jù)傳送的操作的(例如存儲器—寄存器變換)操作代碼和(b)用于操作的操作數(shù)的組合。
上述功用的不同操作類型確定的字段停止在用于當(dāng)前Von Neumann類型處理器的假設(shè)基礎(chǔ)上,從而它不必同時(shí)處理兩個(gè)或更多的分支操作,和只有一個(gè)用于在本處理器和外圍(處理器)之間提供傳輸操作數(shù)的輸入/輸出端口。
圖2B至2D的指令格式具有下述特征。
首先集中在常數(shù)“const”上,可以看出,有用于在常數(shù)寄存器36中存儲一常數(shù)的三個(gè)指令類型。
(1)當(dāng)格式代碼是“0”或“1”時(shí)在這些指令中,位于P1.0字段52中的4位常數(shù)被存儲在常數(shù)寄存器36中。
(2)當(dāng)格式代碼是“4”時(shí)在該指令中,位于P1.0字段52至P2.2字段55中的16位常數(shù)被存儲在常數(shù)寄存器36中。
(3)在格式代碼是“5”時(shí)當(dāng)該指令中,位于P1.0字段52和P3.0字段56至P3.2字段58中的16位常數(shù)被存儲在常數(shù)寄存器36中。
第二,對于本處理器,最大三個(gè)操作能由單個(gè)指令指示,和在此情況下,如從圖2B所示三重操作格式所看到的,可以使用下述操作類型組合之一。
(1)一種操作是設(shè)置4位常數(shù)到常數(shù)寄存器36和兩個(gè)標(biāo)準(zhǔn)操作(當(dāng)格式代碼是“0”或“1”)。
(2)一種操作是利用設(shè)置在常數(shù)寄存器36中的值,作為絕對地址或相對地址進(jìn)行分支和兩個(gè)標(biāo)準(zhǔn)操作(當(dāng)格式代碼是“2”或“3”時(shí))。
如上所述,具有高效字段結(jié)構(gòu)的本處理器的指令能通過32位指令同時(shí)指示最大三個(gè)操作。
下面描述本處理器的硬件結(jié)構(gòu)。
圖4示出本發(fā)明處理器的硬件結(jié)構(gòu)的方框圖。如上所述,該處理器是VLIW處理器,能平行執(zhí)行最大三個(gè)操作。該處理器的結(jié)構(gòu)可粗略劃分為指令寄存器10,譯碼器單元20,和執(zhí)行單元30。
指令寄存器10是32位寄存器,存儲從指令取單元39送出的一個(gè)指令。
譯碼器單元20譯碼在指令寄存器10中保存的指令和根據(jù)該譯碼結(jié)果在控制線上完成到執(zhí)行單元30的輸出。譯譯碼器單元20自身能粗略分為格式譯碼器21和指令譯碼器22。
指令譯碼器22的組成有分支譯碼器23,譯碼在P1.0字段12中保存的“CC”操作代碼并相應(yīng)地控制PC單元33;第一操作譯碼器24,譯碼在P2.0字段13中保存的操作代碼并相應(yīng)地控制第一操作單元37;和第二操作譯碼器25,譯碼在P3.0字段16中保存的操作代碼并相應(yīng)地控制第二操作單元38和操作數(shù)存取單元40。
格式譯碼器21譯碼在P0.0字段11中保存的4位格式代碼,以識別在指令寄存器10中保存的作為圖2B至2D所示的16種可能的指令格式之一的指令的指令格式。根據(jù)譯碼結(jié)果,格式譯碼器21通過分支譯碼器23,第一操作譯碼器24,和第二操作譯碼器25允許或禁止譯碼操作,并啟動(dòng)執(zhí)行單元30的寄存器控制單元32。
格式譯碼器21,分支譯碼器23,第一操作譯碼器24,和第二操作譯碼器25在一個(gè)周期中基本譯碼一個(gè)操作并送出控制信號到執(zhí)行單元30。這里,連接指令寄存器10同執(zhí)行單元30的26常數(shù)信號線26是用于傳送在指令寄存器10中的常數(shù)和操作數(shù)到執(zhí)行單元30的總線。
根據(jù)譯碼器單元20的譯碼結(jié)果,執(zhí)行單元30進(jìn)行操作,并且是能夠平行執(zhí)行最大三個(gè)操作的電路。該執(zhí)行單元30的組成是,執(zhí)行控制單元31,PC單元33,寄存器集34,第一操作單元37,第二操作單元38,指令取單元39,和操作數(shù)存取單元40。在執(zhí)行單元30的成份外,寄存器控制單元32,PC單元33,和常數(shù)寄存器36的結(jié)構(gòu)更詳細(xì)地表示在另外圖中。
執(zhí)行控制單元31一般認(rèn)為是用于根據(jù)譯碼器單元20的譯碼結(jié)果控制在執(zhí)行單元30中的序號為33至40的各單元的控制電路和線路。該執(zhí)行控制單元31包括在處理器中標(biāo)準(zhǔn)提供的各成分,例如具有用于定時(shí)控制,操作允許/禁止控制,狀態(tài)管理,和中斷控制,以及具有本處理器特征成份的常數(shù)寄存器控制單元32的各種電路。常數(shù)寄存器控制單元32完成控制,使得在由格式譯碼器21給出指示的基礎(chǔ)上將在指令寄存器10中保存的4或16位常數(shù)“const”存儲在常數(shù)寄存器36中。
PC(程序計(jì)數(shù)器)單元33在分支譯碼器23的控制下操作,和輸出將被譯碼和執(zhí)行的下一個(gè)指令的在外部存儲器(未示出)中的地址到取指令單元39。
指令取單元39經(jīng)由32位IA(指令地址)總線和32位ID(指令數(shù)據(jù))總線,從外部存儲器(未示出)取指令組。指令取單元39在內(nèi)部指令的超高速緩沖存儲器中存儲取得的指令組,并對應(yīng)于PC單元33輸出的地址,提供該指令到指令寄存器10。
寄存器集34由15個(gè)32位普通寄存器35和一個(gè)32位常數(shù)寄存器36組成。根據(jù)第一操作譯碼器24和第二操作譯碼器25的譯碼結(jié)果,被存儲在這些16個(gè)寄存器35和36中的這些值被傳送到第一操作單元37和第二操作單元38,在這里,在送到寄存器集34或操作數(shù)存取單元40之前進(jìn)行操作或替換地允許這些值通過。此外,由第一操作單元37和第二操作單元38進(jìn)行的操作中,在常數(shù)寄存器36中存儲的值也可傳送到PC單元33,在這里它被用于產(chǎn)生用作為分支目的的有效地址。
第一操作單元37內(nèi)部包括一用于在兩個(gè)32位數(shù)據(jù)集的基礎(chǔ)進(jìn)行算術(shù)邏輯操作的ALU(算術(shù)邏輯單元)和用于在兩個(gè)數(shù)據(jù)集的基礎(chǔ)完成乘法的乘法器。該第一操作單元37在第一操作譯碼器24的控制下能執(zhí)行兩類操作(即,算術(shù)邏輯操作,和內(nèi)部寄存器變換操作)。
第二操作單元38如第一操作單元37相同方法內(nèi)部包括用于在兩個(gè)32位數(shù)據(jù)集的基礎(chǔ)上進(jìn)行算術(shù)邏輯操作的ALU和用于在兩個(gè)32位數(shù)據(jù)集的基礎(chǔ)上完成乘法的乘法器。該第二操作單元38在第二操作譯碼器25的控制下能執(zhí)行兩類操作(即,算術(shù)邏輯操作,和內(nèi)部寄存器變換操作)。
操作數(shù)存取單元40在第二操作譯碼器25的控制下操作,它是在寄存器集34和外部存儲器(未示出)之間傳輸操作數(shù)的一個(gè)電路。操作數(shù)存取單元40內(nèi)部包括用于存儲操作數(shù)和操作數(shù)地址的緩沖器。作為一個(gè)特例,當(dāng)操作代碼“1d”是在指令寄存器10的P3.1字段16中時(shí),位于外部存儲器中的一數(shù)據(jù)字經(jīng)由操作數(shù)存取單元40加載到寄存器集34中的一個(gè)寄存器中。當(dāng)當(dāng)前是操作代碼“st”時(shí),與此同時(shí),在寄存器集34中的一個(gè)寄存器中的存儲值被存儲在外部存儲器中。
PC單元33,寄存器集34,第一操作單元37,第二操作單元38,和操作數(shù)存取單元40由圖4所示的內(nèi)部總線(L1總線,R1總線,L2總線,R2總線,D1總線,和D2總線)相連接。在這里,L1總線和R1總線的每個(gè)連接到第一操作單元的兩個(gè)輸入端口的各自的一個(gè),L2總線和R2總線的每個(gè)連接到第二操作單元38的兩個(gè)輸入端口的各自的一個(gè),和D1總線和D2總線被分別連接到第一操作單元37和第二操作單元38的輸出端口。
常數(shù)寄存器36的詳細(xì)結(jié)構(gòu)和它的外圍。
以下詳細(xì)描述常數(shù)寄存器36的結(jié)構(gòu)和外圍電路。
圖5是常數(shù)寄存器36和外圍電路的詳細(xì)結(jié)構(gòu)的方框圖。這里注意,用于進(jìn)位常數(shù)“0”的4個(gè)信號線的固定線路的附圖中的固定值(“0”)27。
常數(shù)寄存器控制單元32由5個(gè)3輸入選擇器32a-32e和3個(gè)4輸入選擇器32f-32h組成,而常數(shù)寄存器36由8個(gè)4位寄存器36a-36h組成。這里,輸入和輸出數(shù)據(jù)的每集是4位平行數(shù)據(jù)。
根據(jù)來自格式譯碼器21和指令譯碼器32的控制信號,常數(shù)寄存器控制單元32控制8個(gè)輸入選擇器32a-32h,使得在指令寄存器10中存儲的常數(shù)或零,根據(jù)以下的4種存儲方法中的一種,存儲到常數(shù)寄存器36中。
圖6A至6D示出本實(shí)施例的4種可能的存儲方法。
圖6A示出當(dāng)格式譯碼器21檢測到在P0.0字段11中存儲的值是“0”或“1”時(shí)的存儲方法。這等于是當(dāng)在P1.0字段12中只有4位常數(shù)被存儲在常數(shù)寄存器36中的情況。特別是,在常數(shù)寄存器36中存儲的數(shù)據(jù)被向上(圖6A中向左)移動(dòng)4位單元和在指令寄存器10的P1.0字段12中存儲的4位常數(shù)被存儲在常數(shù)寄存器36的最低序4位寄存器36h。
圖6B示出當(dāng)格式譯碼器21檢測到在P0.0字段11中的存儲值是“4”的存儲方法。這等于是當(dāng)在P1.0字段12和P2.2字段15之間的16位常數(shù)被存儲在常數(shù)寄存器36中的情況。特別是,在常數(shù)寄存器36的低16位36e-36h中存儲的數(shù)據(jù)被向上移動(dòng)16位36a-36d,和在指令寄存器10中的P1.0字段12和P2.2字段15之間16位常數(shù)被存儲在常數(shù)寄存器36的最低序16位36e-36h。
圖6C示出當(dāng)格式譯碼器21檢測到在P0.1字段11中存儲值是“5”的情況。這等于是當(dāng)在P1.0字段12和P3.0字段16與P3.2字段18之間的16位常數(shù)被存儲在常數(shù)寄存器36中的情況。特別是,被存儲在常數(shù)寄存器36的低16位36e-36h的數(shù)據(jù)被向上移動(dòng)16位36a-36d和在指令寄存器10的P1.0字段12和P3.0字段16與P3.2字段18之間的16位常數(shù)被存儲在常數(shù)寄存器36的最低序16位36e-36h中。
圖6D示出當(dāng)格式譯碼器21檢測到在P0.0字段11中存儲值是“2”,“3”,或“A”時(shí),或者當(dāng)指令譯碼器22檢測到,由P2.1字段14,P2.2字段15,P3.2字段17,和P3.3字段18中的至少一個(gè)指示常數(shù)寄存器(R15)時(shí)的存儲方法。這等于是在常數(shù)寄存器36的存儲值已經(jīng)由在P1.0字段12中的分支操作,在第一操作字段59中的一操作或在第二操作字段60中的一操作的至少一個(gè)操作之后,在常數(shù)寄存器36中的存儲值被全部復(fù)位到零(那就是說,常數(shù)寄存器36被清零)的情況。特別是,在常數(shù)寄存器36的存儲值已經(jīng)被讀出到PC單元33,第一操作單元37或第二操作單元38中的一個(gè)之后,立即將具有“0”值的32位常數(shù)寫入常數(shù)寄存器36。
這里,在保證使用具有零擴(kuò)展的值總是被存儲在常數(shù)寄存器36中之后,常數(shù)寄存器36中的值被清零。零擴(kuò)展呈現(xiàn)為,當(dāng)值的有效位數(shù)低于予定位數(shù)時(shí)執(zhí)行的零插入,零被插入到較高位的位置,使得值提升到予定位數(shù)。
如上所述,當(dāng)在指令寄存器10的P0.0字段11中的值是“0”,“1”,“4”,或“5”時(shí),總是被存儲在常數(shù)寄存器36中的常數(shù)被移位和新的值被存儲。還有,在常數(shù)寄存器36中存儲的值被讀出和使用之后,該存儲的值被刪除。通過這樣做,常數(shù)寄存器36能夠連續(xù)累積常數(shù)直到下一次它存儲的內(nèi)容被使用為止。
PC單元33的詳細(xì)結(jié)構(gòu)以下詳述PC單元33的結(jié)構(gòu)。
圖7是PC單元33的詳細(xì)結(jié)構(gòu)方框圖。如圖7所示,PC單元33的組成是,固定值(“4”)33a,即永久進(jìn)位常數(shù)“4”的線路,2輸入選擇器33b,加法器33c,用于存儲將被譯碼和執(zhí)行的下一個(gè)指令的地址的PC(程序計(jì)數(shù)器)33d,和4輸入選擇器33e。
在PC單元33中,根據(jù)來自譯碼單元20的控制信號,該選擇器33b和33e進(jìn)行操作,使得選擇器33e輸出下述三種類型值中的一個(gè)到指令取單元39,作為有效地址。
1.4的值被加到PC33d的內(nèi)容這對應(yīng)于當(dāng)沒有分支發(fā)生和下一個(gè)指令將被按序執(zhí)行時(shí),這就是說,本指令的譯碼結(jié)果沒有分支操作指示?!?”被讀出的理由是,一指令的長度是4字節(jié),即32位。
2.常數(shù)寄存器36的內(nèi)容值被加到PC33d的內(nèi)容這對應(yīng)于,當(dāng)常數(shù)寄存器36的內(nèi)容被用作為分支的相對地址時(shí),例如,當(dāng)分支譯碼器23的譯碼結(jié)果是P1.0字段12指示分支到一相對地址。
3.作為常數(shù)寄存器36的內(nèi)容給的值這對應(yīng)于,當(dāng)常數(shù)寄存器36的內(nèi)容被用作為分支的絕對地址,例如,當(dāng)分支譯碼器23的譯碼結(jié)果是P1.0字段12指示分支到一絕對地址。
如上所述,PC單元33包括專用加法器33c,它能直接使用由常數(shù)寄存器36存儲的值,使得能使常數(shù)寄存器36的存儲值作為相對地址或絕對地址并獨(dú)立于由第一操作單元37和第二操作單38進(jìn)行的操作的以平行方式執(zhí)行的分支執(zhí)行控制。
處理器的操作以下描述當(dāng)譯碼和執(zhí)行專門操作時(shí)的本處理器的操作。
圖8是處理32位常數(shù)的過程舉例的流程。首先,確定寄存器R0和R1的存儲值之間的差(步S80),和由R2的存儲值乘該結(jié)果(步S81)。32位常數(shù)“0×87654321”(16進(jìn)制值“87654321”)然后被加到該結(jié)果(步S82,S83),和最后,寄存器R0被清零(步S84)。
圖9是本處理器已經(jīng)完成圖8所示過程的程序舉例。該程序包括三個(gè)指令71-73。在圖9中,一行對應(yīng)一指令,和每個(gè)指令的內(nèi)容由每個(gè)指令的分別字段中的助記符表示。在圖9中,每個(gè)常數(shù)的值以16進(jìn)制表示。還有,代號“fmtn(n=o-F)”表示格式代碼“n”,而代號“Rn(n=0-15)”表示在寄存器集34中的一個(gè)寄存器存儲的值。所有這些,“R15”表現(xiàn)為常數(shù)寄存器36。
圖10是執(zhí)行圖9中所示程序時(shí),本處理器操作的定時(shí)圖。圖10示出時(shí)鐘周期,普通寄存器R0-R3和寄存器R15的內(nèi)容,和在4總線L1,R1,L2,和R2上流動(dòng)的數(shù)據(jù)。
以下參照圖9和10,解釋本處理器用于指令71至73的操作。
指令71在指令71已經(jīng)被裝入指令寄存器10之后,本處理器執(zhí)行圖10中時(shí)鐘周期t0-t1的操作。格式譯碼器21從指令寄存器10中的P0.0字段11的值“fmt4”判斷本指令是具有格式代碼“4”的雙操作指令,這樣控制執(zhí)行單元30,使得以平行方式執(zhí)行下述的兩個(gè)操作。
1.第一操作常數(shù)寄存器控制單元32控制它的8個(gè)內(nèi)部選擇器32a-32h,使得位于P1.0字段12至P2.2字段15之間的16位常數(shù)(0×8765),根據(jù)圖6B所示存儲方法,存儲到常數(shù)寄存器的低16位中。相應(yīng)地,如圖10中的時(shí)鐘周期t0-t1所示,寄存器15的內(nèi)容從“0×000000000”變化到“0×00008765”。
2.第二操作第二操作單元38接收普通寄存器R0的存儲值“0×33333333”和普通寄存器R1的存儲值“0×22222222”的輸入,和從前者減去后者之后,在普通寄存器R0中存儲該結(jié)果。作為一種結(jié)果,普通寄存器R0的存儲內(nèi)容,在圖10所示時(shí)鐘周期t0-t1中,從值“0×33333333”變化成值“0×11111111”。
指令72接著,在指令72已經(jīng)被裝入指令寄存器10中以后,本處理器進(jìn)行圖10中時(shí)鐘周期t1-t2所示的操作。格式譯碼器21從指令寄存器10中的P0.0字段11的值“fmt4”中判斷,本指令是具有格式代碼“4”的雙操作指令,和控制執(zhí)行單元30,使得能以平行方式執(zhí)行下述的兩個(gè)操作。
1.第一操作常數(shù)寄存器控制單元32控制它的8個(gè)內(nèi)部選擇器32a-32h,使得位于P1.0字段12至P2.2字段15之間的16位常數(shù)(0×4321),根據(jù)圖6B所示的存儲方法,存儲在常數(shù)寄存器36的低16位中。相應(yīng)地,如圖10中時(shí)鐘周期t1-t2所示,寄存器R15的內(nèi)容從“0×00008765”變化到“0×87654321”。
2.第二操作第二操作單元38接收普通寄存器R2的存儲值“0×00000004”和普通寄存器R0的存儲值“0×11111111”的輸入,和在存儲普通寄存器R0中存儲該結(jié)果之前,這二者相乘。其結(jié)果是,如圖10所示的時(shí)鐘周期t1-t2,普通寄存器R0的存儲值從值“0×11111111”變化到值“0×44444444”。
指令73接著,在指令73被裝入到指令寄存器10中之后,本處理器進(jìn)行如圖10的時(shí)鐘周期t2-t3所示的操作。格式譯碼器21從指令寄存器10的P0.0字段11的值“fmt7”中判斷,本指令是具有格式代碼“7”的雙操作指令,和控制執(zhí)行單元30,使得以平行方式執(zhí)行下述的兩個(gè)操作。
1.第一操作第一操作單元37接普通寄存器R15的存儲值“0×87654321”和普通寄存器R0的存儲值“0×44444444”的輸入,和在普通寄存器R0中存儲該結(jié)果之前,使二者相加。其結(jié)果是,如圖10所示的時(shí)鐘周期t2-t3中,普通寄存器R0的存儲內(nèi)容從值“0×44444444”變化到值“0×CBA98765”。
2.第二操作第二操作單元38接收位于P1.0字段12和P3.1字段17中的8位常數(shù)(“0×00”)的輸入,并允許該常數(shù)通過,使得它被存儲在普通寄存器R3中。其結(jié)果是,如圖10中的時(shí)鐘周期t2-t3所示的,普通寄存器R3的內(nèi)容從原先保存的值“0×FEDCBA98”變化到“0×00000000”。
如上所述的本處理器,32位常數(shù)“0×87654321”被分離成兩部分,即被規(guī)范成兩個(gè)指令71和72,通過移位它的存儲值,這些部分被連續(xù)存儲在常數(shù)寄存器36中。然后根據(jù)第三指令,指令73,使用該存儲的常數(shù),通過此方法,圖8流程圖所示過程能由三個(gè)指令71-73執(zhí)行。
以下解釋利用涉及16位常數(shù)的不同程序的本處理器的操作。
圖11示出處理16位常數(shù)的程序舉例。該程序由5個(gè)指令74至78組成。
以下描述指令74至78的每一個(gè)的本處理器的操作。
指令74當(dāng)指令74已經(jīng)被裝入指令寄存器10時(shí),格式譯碼器21從指令寄存器10中的P0.0字段11的值“fmt0”中判斷,本指令是具有格式代碼“0”的三重操作指令,和控制執(zhí)行單元30,使得能以平行方式執(zhí)行下述的三個(gè)操作。
1.第一操作常數(shù)寄存器控制單元32控制它的8個(gè)內(nèi)部選擇器32a-32h,使得位于P1.0字段12中的4位常數(shù),根據(jù)圖6A所示存儲方法,存儲到常數(shù)寄存器36的最低4位中。
3.第二操作第一操作單元37接收普通寄存器R6的存儲值的輸入,和允許該值通過,使得它被存儲在普通寄存器R1中。
3.第三操作以相同方法,第三操作單元38接收普通寄存器R7的存儲值的輸入,并允許該值通過,使得它被存儲在普通寄存器R2中。
指令75當(dāng)指令75已經(jīng)被裝入指令寄存器10時(shí),格式譯碼器21從在指令寄存器10中的P0.0字段11的值“fmt0”中判斷,該指令是具有格式代碼“0”的三重操作指令,和控制執(zhí)行單元30,使得能以平行方式執(zhí)行下述的三個(gè)操作。
1.第一操作常數(shù)寄存器控制單元32控制它的8個(gè)內(nèi)部選擇器32a-32h,使得位于P1.0字段12中的4位常數(shù)(“0×7”),根據(jù)圖6A所示存儲方法,存儲到常數(shù)寄存器36的最低4位。在操作之后,常數(shù)“0×87”被設(shè)置在常數(shù)寄存器36的最低8位。
2.第二操作第一操作單元37接收普通寄存器R0和普通寄存器R1的存儲值的輸入,并將這些值相加。第一操作單元37在普通寄存器R1中存儲加的結(jié)果。
3.第三操作以相同方法,第二操作單元38接收普通寄存器R0和普通寄存器R2的存儲值的輸入,和將這些值相加。第二操作單元38在普通寄存器R2中存儲加的結(jié)果。
指令76,77指令76,77以上述相同方法執(zhí)行,和作為結(jié)果“0×8765”被存儲在常數(shù)寄存器36的低16位中。
指令78一旦指令78被裝入指令寄存器10,本處理器就以如處理指令73相同方法操作。
如上所述的本處理器,16位常數(shù)“0×8765”被分離成4部分,規(guī)范成指令74-77,通過移位它的存儲值,這些部分被連續(xù)存儲在常數(shù)寄存器36中。該被存儲的常數(shù)依照第五指令,指令78被使用。
同標(biāo)準(zhǔn)處理器比較以下描述由標(biāo)準(zhǔn)處理器對如圖9和11所示相同處理內(nèi)容的程序執(zhí)行的處理與本發(fā)明的處理相比較。這里,表示“標(biāo)準(zhǔn)處理器”的處理器執(zhí)行指令的字長固定為32位。和本處理器相同,除了缺乏一種結(jié)構(gòu)以外,例如用于累積已經(jīng)分派在指令中間的常數(shù)的常數(shù)寄存器36和常數(shù)寄存器控制單元32。
圖12A示出由標(biāo)準(zhǔn)處理器執(zhí)行的指令的字段定義,而圖12B示出指令格式。假設(shè)標(biāo)準(zhǔn)處理器能執(zhí)行三類雙操作指令,指令101-103,和一類單操作指令,指令104。
圖13示出由標(biāo)準(zhǔn)處理器執(zhí)行的程序舉例。該程序具有如圖9所示程序的相同處理內(nèi)容,就是說與圖8所示流程的過程相同。
如通過比較圖13和圖9所能看到的,用于標(biāo)準(zhǔn)處理器的程序比用于本發(fā)明處理器的程序的指令多兩個(gè)。
被包括在指令105和106中的“NOP代碼”的原因是指令106使用指令105的操作結(jié)果,使得這些指令不能以平行方式執(zhí)行。還有,由于常數(shù)“0×87654321”被分成設(shè)置在常數(shù)寄存器R1的上16位和下16位(指令107和108),它就不能在一單個(gè)32位指令中為建立指令,設(shè)置32位常數(shù)和操作代碼。
圖14還示出標(biāo)準(zhǔn)處理器的程序舉例。該程序與圖11所示程序具有相同處理內(nèi)容。如通過比較圖14和圖11所看到的,用于標(biāo)準(zhǔn)處理器的程序比本發(fā)明處理器的程序的指令多一個(gè)。
如上所述,由本發(fā)明處理器執(zhí)行的指令具有高效字段結(jié)構(gòu),從而能利用相對短的32位字長指示最多三個(gè)操作。
相應(yīng)地,采用本發(fā)明的處理器,已經(jīng)被交叉劃分成多個(gè)指令的的16位或32位常數(shù)能在常數(shù)寄存器36中累積,以復(fù)原它原始形式的常數(shù),然后用它進(jìn)行分支操作或算術(shù)邏輯操作。相應(yīng)地,當(dāng)在指令中一小區(qū)域是有效的時(shí),該區(qū)域能被有效用于放置常數(shù)的一部分,使得程序的代碼尺寸與當(dāng)相同處理由標(biāo)準(zhǔn)處理器執(zhí)行時(shí)的相比較被降低了。
修改圖15A至15D示出本發(fā)明的各種修改的VLIW處理器的指令格式。在這些圖中,由垂直線劃分的最小間隔代表1位,而代號“fmt”示出格式字段。
圖15A所示指令由5位格式字段,7位操作字段,和兩個(gè)10位操作字段組成。同時(shí),圖15B所示指令由2位格式字段,4位操作字段,和兩個(gè)13位操作字段組成。圖15C所示指令由3位格式字段,3位操作字段,和兩個(gè)13位操作字段組成。最后,圖15D所示指令由4位格式字段,2位操作字段,和兩個(gè)13位操作字段組成。
這4類指令類似于圖2A所示上述實(shí)施例的指令50。
i.指令字長固定為32位。
ii.每個(gè)指令具有一個(gè)格式字段和三個(gè)操作字段。
iii.三個(gè)操作字段不具有相同的結(jié)構(gòu),就是說,兩個(gè)操作字段具有相同結(jié)構(gòu),而一個(gè)剩余操作字段是短的。
其結(jié)果是,這4類指令具有如上述實(shí)施例描述的指令50的相同特性。
I.該指令具有一字段結(jié)構(gòu),從而能以盡管相對短的32位字長指示最多三個(gè)操作。
II.提供的小操作字段,是理想的插入小指令,例如,不需要兩個(gè)操作數(shù)的分支指令,如此,該指令的代碼效率是高的。
III.提供一格式字段,通過給出在一操作字段中存在一常數(shù)或常數(shù)的一部分的指示,其中在該操作字段中,NOP指令是提供的正常需要,該程序的代碼尺寸能被降低。
另一方面,上述4類指令還具有不同于上述實(shí)施例中指令50的特性。圖15A所示指令具有放大的格式字段的優(yōu)點(diǎn),意味著能確定較大數(shù)量的指令類型,和能夠在三個(gè)操作字段中的每一個(gè)中提供至少一個(gè)操作數(shù)。同時(shí),在圖15B至15D所示指令,具有兩個(gè)放大的操作代碼的優(yōu)點(diǎn)(“OP2”和“OP3”),使得能確定較大變化的操作。
圖16是用于執(zhí)行圖15A所指令的本發(fā)明的VLIW處理器的結(jié)構(gòu)的方框圖。如通過與圖4所示結(jié)構(gòu)相比較能看到的,處理器的基本結(jié)構(gòu)是相同的,雖然在指令寄存器10,110和譯碼器單元20,120之間的連接中有某些差別。以此方法,用于執(zhí)行圖15A至15D中所示修改的指令的VLIW處理器,只通過局部改變上述實(shí)施例中所述的VLIW處理器就能實(shí)現(xiàn)。
本發(fā)明的處理器已經(jīng)通過上述實(shí)施例給出解釋,雖然應(yīng)該清楚,若干進(jìn)一步的修改是可能的。以下給出這樣的4例。
(1)該實(shí)施例和本發(fā)明的上述修改的處理情況是指令字長32位指示最多三個(gè)操作,雖然本發(fā)明并不限于這些數(shù)。
作為一種舉例,圖2A所示指令50可以進(jìn)一步包括另外4位操作代碼和另一4位操作數(shù),使得總的指令字長40位。通過這些,它變得可能確定具有高代碼效率的指令,從而通過具有40位相對短字長的單個(gè)指令能執(zhí)行最多4個(gè)操作。
(2)上述實(shí)施例的指令50只包括使用隱含操作數(shù)(常數(shù)寄存器36的存儲值)的一個(gè)字段(P1.0字段52),雖然本發(fā)明并不限于此,可以有兩個(gè)或多個(gè)這樣的字段。通過近似確定新的指令格式,可以對此進(jìn)行處理。
(3)在處理給定數(shù)字常數(shù)的舉例的上述實(shí)施例中,雖然處理過程可能等價(jià)于本發(fā)明的處理字符常數(shù)。這是因?yàn)楸环蛛x成多個(gè)指令的長字符常數(shù)能在常數(shù)寄存器36中通過連續(xù)存儲字符常數(shù)的不同部分而被累積。
(4)如從上述實(shí)施例的圖2B至2D中所示的指令格式中能看到的,只有4位或16位常數(shù)能通過單指令被存儲在上述實(shí)施例的常數(shù)寄存器36中,雖然這并不是對本發(fā)明的限制。作為舉例,確定指令格式可能是等價(jià)的,從而12位或28位常數(shù)能通過單個(gè)指令被存儲在常數(shù)寄存器中。為做到這些,只有必須改變常數(shù)寄存器36的外圍電路的連接模式。
雖然參照附圖通過舉例已全面描述了本發(fā)明,應(yīng)注意各種變化和修改對本領(lǐng)域技術(shù)人員是明顯的。因此,除非該變化和修改脫離開本發(fā)明的范圍,否則應(yīng)包括在本發(fā)明的范圍之內(nèi)。
權(quán)利要求
1.一種用以譯碼和執(zhí)行具有一個(gè)格式字段和至少一個(gè)操作字段的指令的VLIW(特長指令字)處理器,其中格式字段具有一個(gè)格式代碼,VLIW處理器包括譯碼單元,用于將在格式字段中的格式代碼譯碼和表示操作字段中的操作類型,并用于以由格式代碼表示的操作類型所指定的方式將操作字段譯碼;和執(zhí)行單元,用于根據(jù)由譯碼單元產(chǎn)生的譯碼結(jié)果,執(zhí)行由操作字段表示的操作。
2.根據(jù)權(quán)利要求1的VLIW處理器,其中指令具有多個(gè)操作字段,而其中的格式代碼還表示那些操作字段中的每一個(gè)的操作類型。
3.根據(jù)權(quán)利要求2的VLIW處理器,其中那些操作字段中的每一個(gè)的操作類型還進(jìn)一步由指令中的操作字段的位置指定。
4.根據(jù)權(quán)利要求1的VLIW處理器,其中譯碼單元將操作字段中包含的操作代碼譯碼;和執(zhí)行單元執(zhí)行與被譯碼的操作代碼對應(yīng)的操作。
5.根據(jù)權(quán)利要求1的VLIW處理器,其中執(zhí)行單元包括存儲單元,用于在譯碼單元表示在操作字段中的操作類型是存儲一個(gè)常數(shù)的操作時(shí),將一個(gè)常數(shù)從操作字段存儲到寄存器中。
6.根據(jù)權(quán)利要求1的VLIW處理器,其中譯碼單元將包括在操作字段中的操作代碼譯碼;和在譯碼單元還表示操作字段包括操作代碼,一個(gè)源寄存器代碼和一個(gè)目標(biāo)寄存器代碼時(shí),執(zhí)行單元用源寄存器代碼和目標(biāo)寄存器代碼執(zhí)行與被譯碼的操作代碼對應(yīng)的操作。
7.根據(jù)權(quán)利要求1的VLIW處理器,其中指令還具有分支字段;譯碼單元將包含在操作字段中的分支操作代碼譯碼;和在譯碼單元還表示在操作字段中的操作類型表示該分支字段包括分支操作代碼時(shí),執(zhí)行單元執(zhí)行與被譯碼的分支操作代碼對應(yīng)的分支操作。
8.根據(jù)權(quán)利要求1的VLIW處理器,其中格式代碼還表示除格式字段外保留至少一個(gè)字段。
9.一種指令譯碼/執(zhí)行方法,用于VLIW(特長指令字)處理器中用以將包括格式字段和至少一個(gè)操作字段的指令譯碼和執(zhí)行,其中格式字段包括一個(gè)格式代碼,該指令譯碼/執(zhí)行方法包括譯碼步驟,將在格式字段中的格式代碼譯碼和表示在操作字段中的操作類型,并以由格式代碼表示的操作類型所指定的方式將操作字段譯碼;和執(zhí)行步驟,根據(jù)由譯碼步驟產(chǎn)生的譯碼結(jié)果,執(zhí)行由操作字段表示的操作。
全文摘要
32位指令50是由4位格式字段51,4位操作字段52,和兩個(gè)12位操作字段59和60組成。4位操作代碼52只能包括(1)用于指示分支操作的操作代碼“CC”,該分支操作使用常數(shù)寄存器36隱含指示的存儲值作為分支地址,或(2)常數(shù)“const”。4位操作字段52的內(nèi)容由格式字段51中提供的格式代碼確定。
文檔編號G06F9/30GK1523495SQ20041000687
公開日2004年8月25日 申請日期1998年6月16日 優(yōu)先權(quán)日1997年6月16日
發(fā)明者高山秀一, 檜垣信生, 生 申請人:松下電器產(chǎn)業(yè)株式會社