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