專利名稱:用以執(zhí)行多重指令組的數(shù)據(jù)處理裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明是有關(guān)于一種數(shù)據(jù)處理裝置(Data Processing Apparatus),特別是有關(guān)于一種用以執(zhí)行多重指令組(Multiple Instruction Sets)的數(shù)據(jù)處理裝置。
數(shù)據(jù)處理裝置通常包括一處理器核,用以執(zhí)行一預(yù)設(shè)指令組的程序指令。連同此處理器核外,還包括一系統(tǒng)存儲(chǔ)器,以存儲(chǔ)執(zhí)行程序指令,以及一程序計(jì)數(shù)寄存器,用以指出在存儲(chǔ)器中的下一指令的地址。然而,此一型式的裝置僅允許執(zhí)行一種類型的指令組。如能同時(shí)執(zhí)行不只一個(gè)類型指令組的裝置,則將會(huì)更具有彈性且功能更強(qiáng)大。
圖1的框圖示出了一傳統(tǒng)執(zhí)行兩個(gè)指令組的數(shù)據(jù)處理裝置的結(jié)構(gòu),其披露在名稱為“Interoperability with multiple instruction sets”的美國(guó)第6,021,265號(hào)專利中。
如圖1所示,在傳統(tǒng)的數(shù)據(jù)處理裝置中的一處理器核10包括一寄存器列(Register Bank)30、一布茲乘法器(Booth Multiplier)40、一位移器(Barrel Shifter)50、一32位運(yùn)算邏輯單元(32-bit Arithmetic LogicUnit,ALU)60、以及一寫(xiě)入數(shù)據(jù)寄存器(Write Date Register)70。
此裝置的其他的元件包括有一第一指令解碼及邏輯控制器(Instruction Decoder & Controller)100,以及一第二指令解碼及邏輯控制器110、一程序計(jì)數(shù)控制器(PC Controller)140、一程序計(jì)數(shù)器(Program Counter,PC)130、一多路復(fù)用器(Multiplexer)90、一數(shù)據(jù)讀取寄存器120(Read-Data Register)、一指令流水線(InstructionPipeline)80、以及一存儲(chǔ)系統(tǒng)20。
在此傳統(tǒng)裝置中,例如對(duì)于兩個(gè)指令組,則需要分開(kāi)的指令解碼及邏輯控制方式。因此,第一指令解碼及邏輯控制器100對(duì)第一指令組的程序指令進(jìn)行解碼,而第二指令解碼及邏輯控制器110對(duì)第二指令組的程序指令進(jìn)行解碼。第一指令組的程序指令通常為32位,而第二指令組的程序指令通常為16位。如此,程序設(shè)計(jì)者可以使用具有較多功能的32位的指令組,或是使用16位的指令以在節(jié)省存儲(chǔ)器大小之間做選擇。
在其中必須包括一控制器,以便控制使用那一個(gè)指令解碼器來(lái)進(jìn)行現(xiàn)行程序指令的解碼。這是藉由程序計(jì)數(shù)控制器140的設(shè)定,或是重新設(shè)定程序計(jì)數(shù)器130中的最大有效位(Most Significant Bit,MSB)或最小有效位(Least Significant Bit,LSB)來(lái)完成的。這樣可控制多路復(fù)用器90以在第一及第二指令解碼及邏輯控制器100及110做出選擇。
在這種傳統(tǒng)的裝置中,指令組的類別是實(shí)時(shí)(Real time)決定的。也就是說(shuō),兩個(gè)指令集可以混在一起,程序設(shè)計(jì)者可以在程序中任意決定要使用何種指令集,而不需要分別處理。然而,在硬件的設(shè)計(jì)上,傳統(tǒng)裝置卻是需要兩個(gè)解碼器及邏輯控制器不停的解碼與耗電。因此,這樣的設(shè)計(jì)會(huì)造成處理器核10更多功率的消耗與需要更長(zhǎng)的處理周期(Cycle)。這樣將無(wú)法被目前追求的低功率與高震蕩頻率的趨勢(shì)所接受。
另一個(gè)是設(shè)計(jì)成可以執(zhí)行兩個(gè)不同指令組的傳統(tǒng)數(shù)據(jù)處理裝置,其披露在名稱為“Multiple instruetion set mapping”的美國(guó)第5,568,646號(hào)專利中。而其所披露的架構(gòu)不需要控制器,以控制使用哪一個(gè)解碼器對(duì)目前的程序指令作解碼。也就是說(shuō),并不需要設(shè)定或是重新設(shè)定在程序計(jì)數(shù)器中的最大有效位(MSB)或是最小有效位(LSB)。
在一般的流水線式處理器(Pipeline processor)中,對(duì)于數(shù)據(jù)處理分為包括三個(gè)階段,其一為取數(shù)階段(Fetching Stage)、一為解碼階段(Decoding Stage)、另一為執(zhí)行階段(Executing stage)。在此專利中所披露的設(shè)計(jì),系利用數(shù)據(jù)處理時(shí)的解碼階段。在一解碼時(shí)鐘脈沖中執(zhí)行包括映射(Mapping)與產(chǎn)生控制信號(hào)(Decode)等兩個(gè)步驟。不同的指令組指令系首先映射為一主要程序組指令,接著再根據(jù)此主要程序組指令解碼產(chǎn)生控制訊號(hào),以便控制處理器核執(zhí)行此主要程序組指令。
然而,由于在解碼階段需要作映射的操作,將會(huì)大大的增加在解碼階段的周期時(shí)間(Cycle Time)。也就是,將很難進(jìn)行高頻率的設(shè)計(jì)。除此之外,其功率消耗也將會(huì)嚴(yán)重地增加。同樣地,這種的硬件設(shè)計(jì)方式也將無(wú)法符合低功率和高頻率趨勢(shì)的需求。
因此,本發(fā)明提供一種用以處理多重指令組的數(shù)據(jù)處理裝置,可以更符合低功率和高頻率設(shè)計(jì)的目標(biāo)。其包括一存儲(chǔ)器,用以存儲(chǔ)多個(gè)指令組的指令,一處理器核,用以執(zhí)行這些指令組中的一主要指令組,一程序計(jì)數(shù)寄存器,用以指定存儲(chǔ)器中所存儲(chǔ)的下一指令的地址,多個(gè)數(shù)據(jù)寄存器,用以存儲(chǔ)這些指令的數(shù)據(jù),一處理器狀態(tài)寄存器(PSR),用以存儲(chǔ)處理器核的狀態(tài),其中該處理器狀態(tài)寄存器包括一指令組選擇標(biāo)記(Instruction Set Selector,ISS),用以指示這些指令組中的現(xiàn)行指令組,一前置解碼器(pre-decoder),用以將非主要指令翻譯成為該主要指令,并將其輸出,一快取存儲(chǔ)器(Icache),用以存儲(chǔ)該主要指令,一解碼器(decoder),用以將主要指令予以解碼,其中該處理核是用來(lái)執(zhí)行由解碼器解碼的該主要指令,一程序計(jì)數(shù)器控制器,以調(diào)整程序計(jì)數(shù)寄存器使其符合長(zhǎng)度不同于主要指令的指令,以及一總線,用來(lái)作為系統(tǒng)存儲(chǔ)器與快取存儲(chǔ)器之間的接口。
該處理器核執(zhí)行來(lái)自于主要指令組A的指令,并將結(jié)果存儲(chǔ)于數(shù)據(jù)寄存器R0~R14中,若其為一分支指令(Branch Instruction),則存入程序計(jì)數(shù)寄存器中。在執(zhí)行完每一個(gè)指令之后,程序狀態(tài)寄存器(PSR)會(huì)記錄執(zhí)行標(biāo)記(Flags),指令組選擇標(biāo)記(ISS),執(zhí)行模式(mode)等訊息。以維持最新的處理器狀態(tài)。前置解碼器依據(jù)指令組選擇標(biāo)記,將非主要指令組指令轉(zhuǎn)換成主要指令。而后,快取存儲(chǔ)器存儲(chǔ)前置解碼器的輸出在數(shù)據(jù)存儲(chǔ)器(Data Ram)并且將指令組選擇標(biāo)記存儲(chǔ)在標(biāo)簽存儲(chǔ)器(TagRam),而解碼器則將快取存儲(chǔ)器的指令組的指令解碼成處理器核的控制訊號(hào)。在此一數(shù)據(jù)處理裝置中,該處理器核僅處理主要指令組的指令。但是該處理器核可以利用預(yù)解碼器及指令組選擇標(biāo)記,使其可以執(zhí)行其他指令組的程序指令。
當(dāng)指令組變換發(fā)生時(shí),一個(gè)或多個(gè)指令會(huì)將分支地址(TargetAddress,TA)存入于數(shù)據(jù)寄存器的位31~1中,同時(shí)也將新的指令組選擇標(biāo)記(Instruction Select,IS)存入數(shù)據(jù)寄存器的位0中。接著,一特定的分支指令(Branch and Exchange,BX)會(huì)將寄存器的位31~1復(fù)寫(xiě)至程序計(jì)數(shù)器,程序計(jì)數(shù)器中位0則設(shè)定為0。同時(shí),特定分支指令又將數(shù)據(jù)暫存中指令組選擇標(biāo)記(IS)復(fù)寫(xiě)至程序狀態(tài)寄存器中的指令組選擇標(biāo)記(ISS)。在執(zhí)行分支指令之后,程序計(jì)數(shù)器將定出新指令組的第一指令的地址,而指令組選擇標(biāo)記則指示一新的指令組模式。當(dāng)程序計(jì)數(shù)器所定地址的新指令被輸入該前置解碼器時(shí),新指令的預(yù)先解碼方法則是由新的指令組選擇標(biāo)記的值所決定。如果該指令組選擇標(biāo)記指示一指令組B,則該預(yù)解碼器將視該指令來(lái)自于指令組B,并利用前置解碼器將此一輸入指令轉(zhuǎn)換成為指令組A的指令。然后,該前置解碼器將輸出該指令組A的指令至快取存儲(chǔ)器。如果指令組選擇標(biāo)記指示一來(lái)自指令組A的指令,預(yù)解碼器則會(huì)將其視之為來(lái)自于指令組A的輸入指令,并將其傳至快取存儲(chǔ)器中。該快取存儲(chǔ)器僅存儲(chǔ)指令組A的指令。該解碼器及該處理器核亦總是處理指令組A的指令。
為使本發(fā)明的上述和其他目的、特征、和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并結(jié)合附圖作詳細(xì)說(shuō)明如下。
圖1的框圖示出了用以執(zhí)行兩個(gè)指令組的一傳統(tǒng)數(shù)據(jù)處理裝置的結(jié)構(gòu)。
圖2的框圖示出了本發(fā)明的一較佳實(shí)施例用以處理多重指令組的一數(shù)據(jù)處理裝置。
圖3的流程圖示出了本發(fā)明的較佳實(shí)施例執(zhí)行指令的流程。
圖4的流程圖示出了本發(fā)明的較佳實(shí)施例指令轉(zhuǎn)換的流程。
圖5A和圖5B示出了本發(fā)明的較佳實(shí)施例的快取存儲(chǔ)器操作。
圖6A示出了用以處理不同類別指令的傳統(tǒng)架構(gòu)。
圖6B示出了根據(jù)本發(fā)明的較佳實(shí)施例的處理不同類別指令的架構(gòu)。
圖7A示出了已知的處理器針對(duì)混合指令時(shí)的處理方法。
圖7B示出了根據(jù)本發(fā)明的較佳實(shí)施例的處理裝置針對(duì)混合指令時(shí)的處理方法。
請(qǐng)參見(jiàn)圖2,圖2示出了依照本發(fā)明較佳實(shí)施例的一種用于執(zhí)行多重指令組的數(shù)據(jù)處理裝置,特別針對(duì)流水線式的處理器(Pipelineprocessor)。
本發(fā)明所提供的數(shù)據(jù)處理裝置是用來(lái)處理執(zhí)行多重指令組(Multiple Instruction Set)的。其包括一處理器核200、一存儲(chǔ)器210、一程序計(jì)數(shù)器(Program Counter,PC)220、多個(gè)數(shù)據(jù)寄存器R0~R14、一處理器狀態(tài)寄存器(Program Status Register,PSR)250、一快取存儲(chǔ)器(Icache)280、至少一個(gè)前置解碼器272、一解碼器290、一程序計(jì)數(shù)控制器(PC Controller)225、以及一總線215。
存儲(chǔ)器210是用來(lái)存儲(chǔ)多重指令碼(Multiple InstrtctionWord)(例如是A或B指令)或數(shù)據(jù)。程序計(jì)數(shù)寄存器(PC)220是用來(lái)定出存儲(chǔ)于存儲(chǔ)器210中,下一筆指令的地址。數(shù)據(jù)寄存器(R0~R14)230是用來(lái)存儲(chǔ)指令的數(shù)據(jù)或結(jié)果。在數(shù)據(jù)寄存器230中的位中有兩個(gè)部分。當(dāng)一特定的分支指令(Branch Instruction)被執(zhí)行時(shí),一個(gè)或多個(gè)位將視為指令組選擇位(Instruction Set Selection bits,下面稱為IS)240,而其他的位則被視為目標(biāo)地址(Target address,下面稱為T(mén)A)245。指令組選擇位IS將會(huì)存在處理器狀態(tài)寄存器(Program Status Register,PSR),而目標(biāo)地址TA將會(huì)存儲(chǔ)在程序計(jì)數(shù)器(PC)220中。當(dāng)轉(zhuǎn)換指令組時(shí),指令選擇位(IS)為新指令組的標(biāo)記,目標(biāo)地址245為新指令組的開(kāi)始地址。
處理器狀態(tài)寄存器(PSR)250用以存儲(chǔ)處理器核200的狀態(tài)。此處理器狀態(tài)寄存器250包括在指令組選擇標(biāo)記(Instruction Set Selector,下面稱為ISS)260中的一或多個(gè)位,用以指出現(xiàn)行的指令組。為方便說(shuō)明,在處理器狀態(tài)寄存器(PSR)250中的指令組選擇標(biāo)記(ISS)260的一或多個(gè)位簡(jiǎn)稱為PSR(ISS)。而PSR(ISS)可以依據(jù)數(shù)據(jù)寄存器R0~R14中的一個(gè)或多個(gè)IS位,由一特定的分支指令(Specified Branch Instruction)來(lái)設(shè)定。
前置解碼器270包括一或多個(gè)次解碼器(Sub-decoder)272,用以將一個(gè)或多個(gè)指令組翻譯成一主要指令(Primary Instruction Word)。此主要指令系經(jīng)過(guò)解碼器290而由處理器核200所執(zhí)行。在此實(shí)施例中,此處理器核200可簡(jiǎn)單地僅執(zhí)行此主要指令即可。而本發(fā)明的數(shù)據(jù)處理裝置,可藉由此前置解碼器270執(zhí)行許多不同類型的指令組。為簡(jiǎn)單地了解本發(fā)明的實(shí)施例,在下面皆以“A”為此主要指令,而其他的指令,則以指令“B”或“C”表示。其中,指令“B”或“C”系為此主要指令“A”的子組(Subset),而且由指令“B”可轉(zhuǎn)換為指令“A”。而此次解碼器272系由PSR(ISS)所控制,而前置解碼器270的輸出結(jié)果即為主要指令A(yù)。
快取存儲(chǔ)器280用以存儲(chǔ)主要指令??烊〈鎯?chǔ)器中的標(biāo)簽存儲(chǔ)器會(huì)存儲(chǔ)線路(Memory Line)的標(biāo)簽位(tag bits)、合法位(Valid bit)和處理器狀態(tài)寄存器中的指令組選擇標(biāo)記PSR(ISS)??烊〈鎯?chǔ)器中的數(shù)據(jù)存儲(chǔ)器則存儲(chǔ)指令碼(Instruction Word)。因?yàn)榭烊〈鎯?chǔ)器只存儲(chǔ)主要指令組A、所以在標(biāo)簽存儲(chǔ)器中必需存儲(chǔ)指令組選擇標(biāo)記(ISS)來(lái)分辨。以下將標(biāo)簽存儲(chǔ)器中所存儲(chǔ)的指令組選擇標(biāo)記簡(jiǎn)稱為T(mén)AG(ISS)。而如果A指令的位寬度與其他指令不同,例如A指令位寬度為32位而B(niǎo)指令位寬度為16位,則快取存儲(chǔ)器280的標(biāo)簽存儲(chǔ)器520則需要在標(biāo)簽位(tag)中多加一個(gè)位、用以當(dāng)TAG(ISS)指示為B指令組時(shí)、分辨在數(shù)據(jù)存儲(chǔ)器中所存儲(chǔ)的指令碼是否為程序計(jì)數(shù)器所指示的指令?;旧?,如果X不等于Y,則在快取存儲(chǔ)器中的B指令的地址,將會(huì)不同于在存儲(chǔ)器中的地址。例如,存儲(chǔ)在存儲(chǔ)器的B指令地址若是為(0,2,4,6)或(8,A,C,E)。當(dāng)其存儲(chǔ)在快取存儲(chǔ)器中時(shí),B指令的地址都將改變成(0,4,8,C)。所以在標(biāo)簽存儲(chǔ)器中的標(biāo)簽位會(huì)多一個(gè)位來(lái)分辨其所存儲(chǔ)的指令為(0,2,4,6)或者是(8,A,C,E)。
解碼器290是用來(lái)對(duì)A指令解碼。處理器核200則用來(lái)執(zhí)行由解碼器290所解碼的A指令。程序計(jì)數(shù)控制器225對(duì)應(yīng)于指令組選擇標(biāo)記PSR(ISS)260修正程序計(jì)數(shù)器的值(下面稱為PC Value),以符合不同指令組的長(zhǎng)度。總線215則為預(yù)解碼器270以及存儲(chǔ)器210的接口。
圖3示出了本發(fā)明較佳實(shí)施例的指令執(zhí)行流程圖。在此例子中僅說(shuō)明適用于處理器的兩種類型的指令組。當(dāng)然,本發(fā)明并不限于此。
在步驟320中,處理器核(Process Core)使用程序計(jì)數(shù)器的值(PCValue)從快取存儲(chǔ)器中讀取指令。多重指令存儲(chǔ)于存儲(chǔ)器中。例如,存儲(chǔ)器同時(shí)存儲(chǔ)A指令或B指令。其中,A指令的位為X,而B(niǎo)指令的位為Y。每一指令占據(jù)一個(gè)別的存儲(chǔ)器地址。當(dāng)處理器核執(zhí)行指令時(shí),程序計(jì)數(shù)器總是指向下一個(gè)指令的存儲(chǔ)器地址。也就是說(shuō),在步驟320中,處理器核使用程序計(jì)數(shù)器以得到下一指令。
在接著的步驟330中,判斷程序計(jì)數(shù)器所指示的下一指令是否為已存儲(chǔ)于快取存儲(chǔ)器中(hit),也就是圖示所顯示的“Icache Hit?”。而此判斷步驟由三個(gè)條件所決定。第一個(gè)條件即在快取存儲(chǔ)器中的合法位(Valid bit)是否為合法、此合法位代表在標(biāo)簽存儲(chǔ)器中的標(biāo)簽位(tag)是否有效。第二條件即在快取存儲(chǔ)器地址中的標(biāo)簽存儲(chǔ)器的標(biāo)簽位(tagbits)是否等于在程序計(jì)數(shù)器內(nèi)所存儲(chǔ)的標(biāo)簽位(tag bits)。另外,第三個(gè)條件即為,在快取存儲(chǔ)器地址中的TAG(ISS)是否等于在處理器狀態(tài)寄存器中的PSR(ISS)。
若是以上三個(gè)條件都成立時(shí),也就是Icache Hit,則代表所需要的指令已經(jīng)存在快取存儲(chǔ)器中的數(shù)據(jù)存儲(chǔ)器中,且此存儲(chǔ)的指令(CachedInstruction Word)類型與所需要的類型吻合。于是,緊接著步驟380,此快取存儲(chǔ)器將會(huì)輸出此指令碼到解碼器中,而解碼器將會(huì)對(duì)此指令解碼。
快取存儲(chǔ)器的標(biāo)簽存儲(chǔ)器的標(biāo)簽位(tag bits)為程序計(jì)數(shù)器中的m個(gè)位。而程序計(jì)數(shù)器內(nèi)的N位可定址標(biāo)簽存儲(chǔ)器輸出標(biāo)簽位,而在程序計(jì)數(shù)器內(nèi)的標(biāo)簽位(tag bits)可與在標(biāo)簽存儲(chǔ)器輸出的標(biāo)簽位作比較。若是程序計(jì)數(shù)器內(nèi)的標(biāo)簽位(tag bits)等于在標(biāo)簽存儲(chǔ)器輸出的標(biāo)簽位,則代表所存儲(chǔ)的指令的地址等于在程序計(jì)數(shù)器內(nèi)的地址。為了判斷標(biāo)簽位是否有效,上述的合法位將會(huì)在快取存儲(chǔ)器開(kāi)啟時(shí)設(shè)定為無(wú)效(Invalid),而在指令暫存時(shí)設(shè)定為有效(Valid)。上述的TAG(ISS)代表所存取的指令的類別。而在指令暫存(Cached)時(shí),將會(huì)存儲(chǔ)整個(gè)線路(Memory Line)的指令類別,而此線路是針對(duì)流水線式線路而言,例如每個(gè)流水線的線路可同時(shí)傳送四個(gè)指令。
而后在步驟390中,處理器核將執(zhí)行指令并將結(jié)果存儲(chǔ)在R0~R14中或程序計(jì)數(shù)器中。如果此指令是一分支指令(Branch Instruction),則需要改變程序計(jì)數(shù)器以控制執(zhí)行的流程。
如果上述的三個(gè)條件并沒(méi)有全部符合,也就是沒(méi)有Icache Hit,也就是TAG(ISS)不等于PSR(ISS),或是指令并沒(méi)有存在快取存儲(chǔ)器中(Icache Miss)。當(dāng)這樣的情形發(fā)生時(shí),如步驟340所示。此一總線將使用程序計(jì)數(shù)器的值以要求存儲(chǔ)器,并等待存儲(chǔ)器回覆所需要的線路,如步驟350所示。當(dāng)指令由存儲(chǔ)器回覆且輸入前置解碼器(Predecoder)中時(shí),此前置解碼器將會(huì)根據(jù)PSR(ISS)選擇次解碼器(Sub-decoder),并翻譯(Iranslate)此輸入的指令成為相關(guān)A指令,如步驟360所示。在步驟370中,前置解碼器的輸出將會(huì)存儲(chǔ)于快取存儲(chǔ)器中。而此快取存儲(chǔ)器將會(huì)設(shè)定合法位、標(biāo)簽位、存儲(chǔ)PSR(ISS)到TAG(ISS)中,并且存儲(chǔ)前置解碼器的輸出到快取存儲(chǔ)器中的數(shù)據(jù)存儲(chǔ)器中。接著,指令將會(huì)如平常一般執(zhí)行。
在執(zhí)行過(guò)每一指令之后,處理器狀態(tài)寄存器(Processor StatusRegister)將會(huì)更新以維持最新的標(biāo)記、狀態(tài)、模式以及ISS標(biāo)記。而如步驟395中所述,程序計(jì)數(shù)器將會(huì)根據(jù)ISS值更新,以指出下一個(gè)指令的指令組。
參見(jiàn)圖4,圖4示出了本發(fā)明的一較佳實(shí)施例的指令組轉(zhuǎn)換的步驟流程。
指令組的轉(zhuǎn)換是由軟件來(lái)控制,特別是由一特定的分支指令(Branchand Exchange Instruetion)來(lái)控制。當(dāng)一個(gè)指令組轉(zhuǎn)換發(fā)生時(shí),在步驟400中,一個(gè)或多個(gè)指令將會(huì)將新指令組的分支地址(Target Address)寫(xiě)入寄存器R0~R14的目標(biāo)地址(TA)區(qū)段中,并將新指令組的選擇標(biāo)記寫(xiě)入寄存器R0~R14的指令組選擇位(IS)中。
在步驟410中,一特定的分支指令將寄存器R0~R14中的目標(biāo)地址(TA)區(qū)段復(fù)寫(xiě)至程序計(jì)數(shù)器中,如下一步驟420所述。程序計(jì)數(shù)器中其他的位皆設(shè)定為0。同時(shí),特定的分支指令將R0~R14中的IS部分復(fù)寫(xiě)至PSR的ISS區(qū)域。
在完成指定分支指令之后,程序計(jì)數(shù)器將新指令組中的第一指令予以定位,且PSR(ISS)將會(huì)指示出新的指令組模式。
在上述圖3中的步驟330中,決定快取存儲(chǔ)器是否命中(Hit),以及TAG(ISS)是否等于PSR(ISS),將會(huì)在下面的圖5A與圖5B中詳細(xì)描述。請(qǐng)參照?qǐng)D5A與圖5B,個(gè)圖示出了快取存儲(chǔ)器中的操作。在圖5A中,示出了一般傳統(tǒng)的快取存儲(chǔ)器操作。其為沒(méi)有結(jié)合PSR(ISS)作比較的例子。一地址信號(hào)510存儲(chǔ)在程序計(jì)數(shù)器(PC)中,并且傳到快取存儲(chǔ)器520中。此地址信號(hào)510的m個(gè)位用以輸入至標(biāo)簽存儲(chǔ)器中并輸出對(duì)應(yīng)的標(biāo)簽位。而此地址信號(hào)510的N位用來(lái)與輸出的標(biāo)簽位(tag bits)作比較(Comparison Operation)。而在標(biāo)簽存儲(chǔ)器中的一合法位(Valid Bit),將表示所選擇的輸出的標(biāo)簽位有效或是無(wú)效。
圖5B示出了本發(fā)明較佳實(shí)施例的快取存儲(chǔ)器的操作方法,其中PSR(ISS)用來(lái)加入此比較操作(Comparison Operation)。一地址信號(hào)510存儲(chǔ)在程序計(jì)數(shù)器中。地址信號(hào)中的m個(gè)位輸入到標(biāo)簽存儲(chǔ)器、而標(biāo)簽存儲(chǔ)器則輸出對(duì)應(yīng)的標(biāo)簽位。在地址信號(hào)510中的N位,是與標(biāo)簽存儲(chǔ)器所輸出的標(biāo)簽位(tag bits)作比較。而在標(biāo)簽存儲(chǔ)器中的一合法位(Valid Bit),將表示所輸出的標(biāo)簽位有效或是無(wú)效。在此實(shí)施例中,PSR(ISS)將會(huì)用來(lái)判斷是否與標(biāo)簽存儲(chǔ)器中的TAG(ISS)相等。而PSR(ISS)即為前述的處理器狀態(tài)寄存器(PSR)中的指令組選擇標(biāo)記(ISS)的一個(gè)或多個(gè)位。而TAG(ISS)則代表在標(biāo)簽存儲(chǔ)器的ISS位。如果具有不同位數(shù)目的指令混在一起,例如,16位的指令與32位的指令混在一起,在地址信號(hào)510的另一額外的位可用來(lái)辨認(rèn)指令的第一半或是第二半的部分。例如,如圖5B所示,此演譯方法系將原來(lái)使用N位是否等于指定的標(biāo)簽存儲(chǔ)器的標(biāo)簽位,改變?yōu)樵诘刂沸盘?hào)510上的N+1位是否等于在標(biāo)簽存儲(chǔ)器的N+1個(gè)位。
如圖2所示的具有一個(gè)或更多的次解碼器272的前置解碼器270用以將非主要指令轉(zhuǎn)換(Translating)為主要指令,例如上述的A指令。為更詳細(xì)描述,請(qǐng)參照?qǐng)D6A與圖6B。圖6A示出了已知的用以處理不同類別指令的傳統(tǒng)架構(gòu)。在每一個(gè)線路(Line)中有例如四個(gè)指令從總線(BusInterface Unit,BIU)610傳來(lái)。藉由切換器(Switch)620選擇,其中一個(gè)指令將會(huì)傳送到快取存儲(chǔ)器的數(shù)據(jù)存儲(chǔ)器630中。為了執(zhí)行指令,其中一個(gè)指令將會(huì)傳送到解碼器解碼。而所傳送的指令首先將會(huì)進(jìn)行映射(Mapping),并接著進(jìn)行解碼(Decoding)。經(jīng)過(guò)映射與解碼,此指令將會(huì)傳到處理器核(Processor Core)以便執(zhí)行。在本發(fā)明的較佳實(shí)施例中,如圖6B所示,經(jīng)過(guò)切換器640的選擇后,所選擇的指令將同時(shí)傳送到前置解碼器650與切換器660。如果所選擇的指令為B指令,由于其并非主要指令,因此前置解碼器650將會(huì)轉(zhuǎn)換(Translate)此B指令為一主要指令,例如A指令。此經(jīng)過(guò)預(yù)先解碼的指令將會(huì)傳到切換器660。藉由從PSR所傳來(lái)的ISS位,此指令將會(huì)接著傳到快取存儲(chǔ)器中的存儲(chǔ)器670中。
根據(jù)圖7A與圖7B解釋從總線中若是傳來(lái)混合指令的線路,例如線路中同時(shí)存在A指令與B指令的情況。首先,請(qǐng)參照?qǐng)D7A,快取存儲(chǔ)器將會(huì)以程序計(jì)數(shù)器的值為0要求總線BIU,而總線BIU將會(huì)對(duì)線路710回應(yīng)包括四個(gè)“ABBA”指令格式的線路。而TAG(ISS)則將會(huì)一直記住首先遇到的指令的類別,而快取存儲(chǔ)器的命中(Hit)也將會(huì)以TAG(ISS)為根據(jù)。例如,如此實(shí)施例所示,此TAG(ISS)系為指令A(yù),因?yàn)樵诔绦蛴?jì)數(shù)器的值為0的地址的指令為A指令。而在此快取存儲(chǔ)器的數(shù)據(jù)存儲(chǔ)器中填滿了A指令類型。而此指令的順序?qū)?huì)成為“AAAA”,如圖所示。
經(jīng)過(guò)了n個(gè)時(shí)鐘脈沖后,總線BIU線路可能已經(jīng)寫(xiě)入快取存儲(chǔ)器,并且已經(jīng)改變。中央微處理器將會(huì)開(kāi)始執(zhí)行程序計(jì)數(shù)器值PC=4的PSR(ISS)=B。但是在此階段TAG(ISS)=A,其代表快取存儲(chǔ)器將沒(méi)有命中(Miss)。再一次,快取存儲(chǔ)器將以PC=4要求總線BIU,而總線BIU也會(huì)再次回應(yīng)“ABBA,四個(gè)指令格式的線路。接著,請(qǐng)參照?qǐng)D7B,PC=4的指令會(huì)經(jīng)過(guò)前置解碼器作轉(zhuǎn)換,并存入到數(shù)據(jù)存儲(chǔ)器中并輸出至解碼器。此時(shí)、TAG(ISS)=B,快取存儲(chǔ)器的數(shù)據(jù)存儲(chǔ)器系充滿“B”,而其指令的順序?yàn)椤癇BBB”。再經(jīng)過(guò)n個(gè)時(shí)鐘脈沖之后、中央微處理器開(kāi)始執(zhí)行PC=8的指令。此時(shí)、TAG(ISS)等于PSR(ISS)、代表快取存儲(chǔ)器命中(Hit)、快取存儲(chǔ)器即可輸出指令至解碼器。不管是指令類型的順序?yàn)楹?,快取存?chǔ)器將會(huì)判斷正確的指令類別,并且轉(zhuǎn)換至主要指令。在實(shí)際的操作中,這種在同一線路上混合不同指令類別的情形是相當(dāng)少見(jiàn)的。
本發(fā)明的數(shù)據(jù)處理裝置較傳統(tǒng)的數(shù)據(jù)處理裝置,具有多個(gè)優(yōu)點(diǎn)。其中之一則是本發(fā)明的數(shù)據(jù)處理裝置可以執(zhí)行多重指令組的指令,其不限制于一個(gè)或兩個(gè)指令組。如此,使得程序編譯者在設(shè)計(jì)程序時(shí)具有極大的彈性。如果主要考慮效能,則可使用較強(qiáng)功能的指令、例如32位的指令。如果主要考慮存儲(chǔ)器容量,則可以使用較省存儲(chǔ)器的指令、例如16位的指令。
另一優(yōu)點(diǎn)即為降低功率的消耗。在傳統(tǒng)的裝置中,所有的指令組都會(huì)具有分別指定的指令解碼器與邏輯控制單元。這是非常昂貴且浪費(fèi)功率的設(shè)計(jì),因?yàn)槎鄠€(gè)指令解碼器與邏輯控制單元需要不斷地運(yùn)作。然而,在本發(fā)明中,前置解碼器僅需要在第一個(gè)指令取數(shù)時(shí)進(jìn)行,而后便將轉(zhuǎn)換后的結(jié)果存儲(chǔ)在快取存儲(chǔ)器中。一般而言、快取存儲(chǔ)器命中機(jī)率為95%時(shí),其代表在本發(fā)明中的前置解碼器僅需要在100個(gè)指令取數(shù)中運(yùn)作5次。此可大幅降低所消耗的功率。
另一個(gè)優(yōu)點(diǎn)則是減少了解碼階段(Decode Stage)的周期時(shí)間(CycleTime)。在傳統(tǒng)的裝置中,不論是利用兩個(gè)解碼器或是利用映射(Mapping)來(lái)處理多重指令組、都會(huì)增加在解碼階段的周期時(shí)間。尤其是利用映射的方式、更會(huì)大大的增加解碼階段的周期時(shí)間。這些傳統(tǒng)的裝置,都會(huì)使得中央處理單元整體的周期時(shí)間增加。然而,在本發(fā)明中,無(wú)論多少個(gè)指令組,只使用一個(gè)指令解碼器。該指令解碼器僅對(duì)為主要指令組的指令型式進(jìn)行解碼、所以不會(huì)增加任何在解碼階段的周期時(shí)間。同時(shí),在高頻率的設(shè)計(jì)中,快取存儲(chǔ)器一般是使用同步式存儲(chǔ)器(SynchronousRam),所以前置解碼器也不會(huì)增加在取數(shù)階段(Fetch Stage)的周期時(shí)間。
本發(fā)明以較佳實(shí)施例披露如上,然其并非用以限定本發(fā)明,任何本領(lǐng)域的技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),可作各種的更動(dòng)與潤(rùn)飾,因此本發(fā)明的保護(hù)范圍以后附的權(quán)利要求范圍界定。
權(quán)利要求
1.一種用以執(zhí)行多重指令組的數(shù)據(jù)處理裝置,包括一存儲(chǔ)器,用以存儲(chǔ)多個(gè)指令組的多個(gè)指令;一處理器核,用以執(zhí)行這些指令中的一主要指令;一程序計(jì)數(shù)寄存器,用以定出存儲(chǔ)于該存儲(chǔ)器中,下一個(gè)指令的地址;多個(gè)數(shù)據(jù)寄存器,用以存儲(chǔ)這些指令的數(shù)據(jù);一處理器狀態(tài)寄存器,用以存儲(chǔ)該處理器核的一狀態(tài),其中該處理器核包括一指令組選擇標(biāo)記,以指示出這些指令組的現(xiàn)行指令;一前置解碼器,用以將至少一個(gè)這些指令組轉(zhuǎn)換成該主要指令;一快取存儲(chǔ)器,用以存儲(chǔ)該主要指令,其中該快取存儲(chǔ)器包括一指令組選擇標(biāo)記,以指示出所存儲(chǔ)指令線路的指令類別;一解碼器,用以將該主要指令予以解碼,其中該處理器核是用來(lái)執(zhí)行用該解碼器解碼的主要指令;一程序計(jì)數(shù)控制器,對(duì)應(yīng)該指令組選擇標(biāo)記,以修正一程序計(jì)數(shù)器值,以調(diào)整與該主要指令不同指令的長(zhǎng)度;以及一總線,作為該快取存儲(chǔ)器及系統(tǒng)存儲(chǔ)器之間的接口。
2.如權(quán)利要求1所述的用以執(zhí)行多重指令組的數(shù)據(jù)處理裝置,每一個(gè)數(shù)據(jù)寄存器具有兩個(gè)位部分,其中至少一個(gè)位被視為一指令組選擇位,以及另一位被視為一目標(biāo)地址。
3.如權(quán)利要求2所述的用以執(zhí)行多重指令組的數(shù)據(jù)處理裝置,該目標(biāo)地址為該指令組的一起始地址。
4.如權(quán)利要求2所述的用以執(zhí)行多重指令組的數(shù)據(jù)處理裝置,其中依據(jù)在這些數(shù)據(jù)寄存器中的指令選擇位,該指令組選擇被設(shè)定為一特定的分支指令。
5.如權(quán)利要求1所述的用以執(zhí)行多重指令組的數(shù)據(jù)處理裝置,其中該前置解碼器包括至少一個(gè)次解碼器,以將至少一個(gè)指令組翻譯成該主要指令。
6.如權(quán)利要求1所述的用以執(zhí)行多重指令組的數(shù)據(jù)處理裝置,其中該快取存儲(chǔ)器增加一個(gè)指令組選擇位,以指出所存儲(chǔ)指令的指令類別。
7.如權(quán)利要求1所述的用以執(zhí)行多重指令組的數(shù)據(jù)處理裝置,其中該指令選擇器包括至少一位。
8.如權(quán)利要求1所述的用以執(zhí)行多重指令組的數(shù)據(jù)處理裝置,其中該指令組選擇標(biāo)記可以依據(jù)一個(gè)或多個(gè)數(shù)據(jù)寄存器的指令組位,而被一特定分支指令設(shè)定。
全文摘要
一種用以執(zhí)行多重指令組的數(shù)據(jù)處理裝置,包括一系統(tǒng)存儲(chǔ)器,用以存儲(chǔ)多個(gè)指令組的指令;一處理器核,用以執(zhí)行這些指令組的主要指令;一程序計(jì)數(shù)寄存器,用以指示存儲(chǔ)器中下一指令的地址;多個(gè)數(shù)據(jù)寄存器,用以存儲(chǔ)指令的數(shù)據(jù);一處理器狀態(tài)寄存器,用以存儲(chǔ)處理器的狀態(tài);一前置解碼器,用以將非主要指令組翻譯成為主要指令組;一快取存儲(chǔ)器,用以存儲(chǔ)主要指令;一解碼器,用以將主要指令解碼成控制處理器核的控制訊號(hào);還包括一程序計(jì)數(shù)控制器和一總線。
文檔編號(hào)G06F9/30GK1332407SQ01101709
公開(kāi)日2002年1月23日 申請(qǐng)日期2001年1月21日 優(yōu)先權(quán)日2000年7月5日
發(fā)明者高民晟, 梁景哲, 桂念慈 申請(qǐng)人:智原科技股份有限公司