專利名稱:擴(kuò)展指令字折疊設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種擴(kuò)展指令字折疊設(shè)備,尤其涉及當(dāng)微處理器利用固定長度指令執(zhí)行通用指令字時(shí)用于處理擴(kuò)展指令字的一種擴(kuò)展指令字折疊設(shè)備。
通常,微處理器讀取儲(chǔ)存在存儲(chǔ)器中的包括一組多個(gè)指令字的程序,由指令翻譯器翻譯讀取的程序,并由執(zhí)行單元執(zhí)行相應(yīng)于每個(gè)指令的操作。
按照指令字的長度指令字被稱為可變長度指令字,也就是說,在一個(gè)指令字中的比特?cái)?shù)量級(jí)是不同的。同時(shí),如果在所有指令字中的比特?cái)?shù)量級(jí)是相同的話,該指令字被稱為固定長度指令字。
一個(gè)常規(guī)微處理器分為一個(gè)CISC(復(fù)雜指令集計(jì)算機(jī))和一個(gè)RISC(簡化指令集計(jì)算機(jī)),其中CISC使用可變長度指令字而RISC使用固定長度指令字。
一個(gè)可變長度指令字系統(tǒng)具有不同的長度的指令字和許多種類的指令字。然而,由于指令字的長度是可變的,對(duì)指令字進(jìn)行翻譯的翻譯器具有復(fù)雜的結(jié)構(gòu),且操作速度很慢。
同時(shí),一個(gè)固定長度指令字系統(tǒng)使用所有指令字長度不變的固定長度指令字,其中指令字翻譯器的結(jié)構(gòu)簡單且能夠高速操作,但由于指令字的長度是固定的從而限制了所表示的操作數(shù)的范圍。也就是說,由于操作數(shù)的長度須小于一個(gè)寄存器的量值或小于一個(gè)存儲(chǔ)設(shè)備地址范圍的量值,則一個(gè)大于指令字量值或存儲(chǔ)設(shè)備地址的不變值不能以單個(gè)的指令字構(gòu)成。
一種擴(kuò)展指令字的方法是解決常規(guī)可變長度指令字系統(tǒng)和常規(guī)固定長度指令字系統(tǒng)中存在的上述問題。當(dāng)采用固定長度指令字時(shí),所有指令字的長度是不變的,從而可以表示全部長度的指令字,此時(shí),為擴(kuò)展指令字系統(tǒng)配備一個(gè)擴(kuò)展數(shù)據(jù)存儲(chǔ)設(shè)備。
圖1是一個(gè)擴(kuò)展指令字系統(tǒng)的操作圖。
如圖1所示,為了提供一個(gè)大于指令字量值或存儲(chǔ)設(shè)備的地址的不變值,使用了兩個(gè)擴(kuò)展指令字。在圖1中,翻譯從存儲(chǔ)設(shè)備中讀取的指令字的一個(gè)操作碼OP。這里,如果操作碼OP是一個(gè)通用的指令字,由一個(gè)執(zhí)行單元根據(jù)相應(yīng)的操作碼執(zhí)行該指令字。同時(shí),讀取的指令字的操作碼OP是一個(gè)擴(kuò)展指令字,指令字的第一操作數(shù)OPER1被存儲(chǔ)在一個(gè)擴(kuò)展數(shù)據(jù)存儲(chǔ)單元ER中。在此情況下,如果擴(kuò)展指令字是利用存儲(chǔ)在擴(kuò)展數(shù)據(jù)存儲(chǔ)單元ER中的擴(kuò)展數(shù)據(jù)首先用于跟隨通用指令字的一個(gè)擴(kuò)展指令字,高于擴(kuò)展數(shù)據(jù)存儲(chǔ)單元ER的擴(kuò)展指令字的第一操作數(shù)OPER1的高端位用在擴(kuò)展指令字中的第一操作數(shù)OPER1的最高有效位(MSB)填充,并且與擴(kuò)展指令字的第一操作數(shù)OPER1相同位的位置用擴(kuò)展指令字中的第一操作數(shù)OPER1填充。
如果跟隨指令字是一個(gè)擴(kuò)展指令字,通過操作和處理,儲(chǔ)存在擴(kuò)展數(shù)據(jù)存儲(chǔ)單元ER中的第一操作數(shù)產(chǎn)生的擴(kuò)展數(shù)據(jù)被移位到與第二操作數(shù)OPER2位的數(shù)量相同的高端位,并且第二操作數(shù)OPER2被放在擴(kuò)展數(shù)據(jù)存儲(chǔ)單元ER中空的低端位上。這樣,擴(kuò)展數(shù)據(jù)存儲(chǔ)單元ER從最低有效位到高端位放置第二操作數(shù)OPER2和第一操作數(shù)OPER1。也就是說,通過組合第一操作數(shù)OPER1與第二操作數(shù)OPER2獲得的一個(gè)值以兩個(gè)擴(kuò)展指令字被儲(chǔ)存在擴(kuò)展數(shù)據(jù)存儲(chǔ)單元ER中。
因此,通過上述的方法,固定長度指令字系統(tǒng)使用一個(gè)擴(kuò)展指令字,從而產(chǎn)生大于指令字量值或存儲(chǔ)單元地址值的不變值。
由于使用常規(guī)擴(kuò)展指令字的固定長度指令字系統(tǒng)以與通用指令字相同的方式讀取一個(gè)擴(kuò)展指令字,由命令翻譯程序分析擴(kuò)展指令,并由執(zhí)行單元執(zhí)行擴(kuò)展指令的操作,兩個(gè)CPU以及程序的操作效率是較低的。
為解決上述問題,本發(fā)明的一個(gè)目的是提供一種擴(kuò)展指令字折疊設(shè)備,用于使兩個(gè)CPU和程序的效率最大化,其中在讀取和執(zhí)行一個(gè)通用指令字期間,對(duì)一個(gè)跟隨的擴(kuò)展指令字進(jìn)行處理以便使用大于通用指令字量值或存儲(chǔ)單元地址的不變值,從而立即處理跟隨擴(kuò)展指令字后面的通用指令字。
為了完成本發(fā)明的上述目的,提供一種擴(kuò)展指令字折疊設(shè)備,包括一個(gè)指令字存儲(chǔ)單元,用于存儲(chǔ)包括多個(gè)通用指令字和擴(kuò)展指令字的指令字;包括有多個(gè)緩沖器的一個(gè)暫時(shí)存儲(chǔ)單元,用于從指令字存儲(chǔ)單元中預(yù)先提取多個(gè)指令字并存儲(chǔ)預(yù)先提取的指令字;一個(gè)指令字搜索單元,用于接收從指令字存儲(chǔ)單元預(yù)先提取到暫時(shí)存儲(chǔ)單元的多個(gè)指令字,對(duì)接收的指令字進(jìn)行解碼,以及輸出儲(chǔ)存在暫時(shí)存儲(chǔ)單元指令字中表示一個(gè)通用指令字位置和一個(gè)或多個(gè)連續(xù)擴(kuò)展指令字位置的位置信號(hào);一個(gè)指令字選擇器,用于在暫時(shí)存儲(chǔ)單元的每個(gè)緩沖器存儲(chǔ)的指令字中選擇存儲(chǔ)通用指令字的一個(gè)緩沖器,并按照指令字搜索單元輸出的位置信號(hào),順序地輸出通用指令字;一個(gè)通用指令字分析器,用于接收指令字選擇器輸出的通用指令字并輸出執(zhí)行該通用指令字的多個(gè)控制信號(hào);一個(gè)擴(kuò)展數(shù)據(jù)分析器,按照從指令字搜索單元輸出的位置信號(hào),執(zhí)行存儲(chǔ)在暫時(shí)存儲(chǔ)單元的每個(gè)緩沖器中諸指令字的一個(gè)或多個(gè)連續(xù)擴(kuò)展指令字操作數(shù)的運(yùn)算處理,并輸出擴(kuò)展數(shù)據(jù);和一個(gè)擴(kuò)展數(shù)據(jù)存儲(chǔ)單元,用于存儲(chǔ)從擴(kuò)展數(shù)據(jù)分析器接收的擴(kuò)展數(shù)據(jù)。
最為可取的是,指令字搜索單元包括一個(gè)擴(kuò)展指令字搜索單元,用于接收從指令字存儲(chǔ)單元預(yù)先提取和放到暫時(shí)存儲(chǔ)單元的指令字,判斷預(yù)先提取到暫時(shí)存儲(chǔ)單元的每個(gè)指令字是一個(gè)通用指令字或是一個(gè)擴(kuò)展指令字,并且如果指令字被確定是一個(gè)擴(kuò)展指令字,輸出一個(gè)激活的標(biāo)志信號(hào);包括多個(gè)標(biāo)志位的一個(gè)標(biāo)志寄存器,按照從擴(kuò)展指令字搜索單元輸出的標(biāo)志信號(hào),表明存儲(chǔ)在暫時(shí)存儲(chǔ)單元的多個(gè)緩沖器中的每個(gè)指令字是一個(gè)擴(kuò)展指令字或者是一個(gè)通用指令字;和一個(gè)擴(kuò)展解碼器,用于從諸標(biāo)志寄存器接收多個(gè)標(biāo)志位,確定每個(gè)標(biāo)志位的激活狀態(tài),并輸出暫時(shí)存儲(chǔ)單元的多個(gè)緩沖器中表示存儲(chǔ)通用指令字的緩沖器和存儲(chǔ)一個(gè)或多個(gè)連續(xù)擴(kuò)展指令字緩沖器位置的一個(gè)位置信號(hào)。
簡述附圖通過結(jié)合參考附圖對(duì)本發(fā)明優(yōu)選實(shí)施例的詳細(xì)描述,本發(fā)明上述的目的和其他的優(yōu)點(diǎn)將變得更加顯而易見,其中圖1顯示一個(gè)擴(kuò)展指令字的操作圖;圖2顯示按照本發(fā)明的一個(gè)擴(kuò)展指令字折疊設(shè)備的方框圖;圖3是圖2的擴(kuò)展指令字折疊設(shè)備的操作定時(shí)圖;和圖4是圖2的擴(kuò)展指令字折疊設(shè)備的另一個(gè)操作定時(shí)圖。
詳述本發(fā)明參考附圖描述本發(fā)明的一個(gè)優(yōu)選實(shí)施例。
圖2中顯示了按照本發(fā)明的一個(gè)擴(kuò)展指令字折疊設(shè)備,一個(gè)指令字存儲(chǔ)單元100存儲(chǔ)包括多個(gè)通用指令字和擴(kuò)展指令字的指令字。包括多個(gè)緩沖器BU1-BUn的一個(gè)暫時(shí)存儲(chǔ)單元200從指令字存儲(chǔ)單元100預(yù)先提取多個(gè)指令字并把預(yù)先提取的指令字存儲(chǔ)在緩沖器中。一個(gè)指令字搜索單元300接收從指令字存儲(chǔ)單元100預(yù)先提取放到暫時(shí)存儲(chǔ)單元200的多個(gè)預(yù)先提取的指令字,解碼接收的指令字,并輸出存儲(chǔ)在暫時(shí)存儲(chǔ)單元200中的指令字中表示一個(gè)通用指令字和一個(gè)或多個(gè)連續(xù)擴(kuò)展指令字位置的一個(gè)位置信號(hào)。一個(gè)指令字選擇器400在通用指令字存在于暫時(shí)存儲(chǔ)單元的每個(gè)緩沖器儲(chǔ)存的諸指令字中,存在通用指令字的情況下,選擇存儲(chǔ)相應(yīng)的通用指令字的緩沖器,并按照指令字搜索單元300的輸出的位置信號(hào)(POS)順序地輸出通用指令字。一個(gè)通用指令字分析器700接收從指令字選擇器400輸出的通用指令字并輸出用于執(zhí)行通用指令字的多個(gè)控制信號(hào)。一個(gè)擴(kuò)展數(shù)據(jù)分析器500按照指令字搜索單元300輸出位置信號(hào)(POS)執(zhí)行存儲(chǔ)在暫時(shí)存儲(chǔ)單元200每個(gè)緩沖器BU1-BUn中諸指令字的一個(gè)或多個(gè)連續(xù)擴(kuò)展指令字操作數(shù)OPER1-OPERn的運(yùn)算處理,并輸出擴(kuò)展數(shù)據(jù)(ED)。一個(gè)擴(kuò)展數(shù)據(jù)存儲(chǔ)單元存儲(chǔ)從擴(kuò)展數(shù)據(jù)分析器500接收的擴(kuò)展數(shù)據(jù)(ED)。
指令字搜索單元300包括一個(gè)擴(kuò)展指令字搜索單元310,用于接收從指令字存儲(chǔ)單元100預(yù)先取出放到暫時(shí)存儲(chǔ)單元200的指令字,判斷預(yù)先提取放到暫時(shí)存儲(chǔ)單元200的每個(gè)指令字是一個(gè)通用指令字還是一個(gè)擴(kuò)展指令字,并且如果指令字被確定是一個(gè)擴(kuò)展指令字,輸出一個(gè)激活的標(biāo)志信號(hào)(FLAG),包括多個(gè)標(biāo)志位FB1-FBn的一個(gè)標(biāo)志寄存器320根據(jù)擴(kuò)展指令字搜索單元310輸出的標(biāo)志信號(hào)(FLAG)表明存儲(chǔ)在暫時(shí)存儲(chǔ)單元200的多個(gè)緩沖器BU1-BUn中的每個(gè)指令字是一個(gè)擴(kuò)展指令字或者是一個(gè)通用指令字,和一個(gè)擴(kuò)展解碼器330,用于從標(biāo)志寄存器320接收多個(gè)標(biāo)志位FB1-FBn,確定每個(gè)標(biāo)志位的激活狀態(tài),并輸出在多個(gè)緩沖器BU1-BUn中表示存儲(chǔ)通用指令字的緩沖器和存儲(chǔ)一個(gè)或多個(gè)連續(xù)擴(kuò)展字緩沖器的位置的一個(gè)位置信號(hào)(POS)。
如果所有處存在多個(gè)緩沖器BU1-BUn中的指令字由指令字選擇器400和擴(kuò)展數(shù)據(jù)分析器500進(jìn)行了處理,則與此同時(shí)暫時(shí)存儲(chǔ)單元200預(yù)先提取新的指令字并更新指令字存儲(chǔ)單元100。
擴(kuò)展數(shù)據(jù)分析器500執(zhí)行一個(gè)或多個(gè)連續(xù)擴(kuò)展指令字的操作數(shù)OPER!-OPERn的運(yùn)算處理,以便獲得用于執(zhí)行一個(gè)擴(kuò)展指令字的擴(kuò)展數(shù)據(jù)(ED)。
擴(kuò)展數(shù)據(jù)分析器500按位置順序BU1,BU2,…,BUn調(diào)查存儲(chǔ)在暫時(shí)存儲(chǔ)單元200的多個(gè)緩沖器BU1-BUn中的一個(gè)或多個(gè)連續(xù)的擴(kuò)展指令字。作為結(jié)果,擴(kuò)展數(shù)據(jù)分析器500用擴(kuò)展指令字的操作數(shù)填充擴(kuò)展數(shù)據(jù)(ED)的低端位,并用和擴(kuò)展指令字操作數(shù)的最高有效位的相同值填充高于擴(kuò)展指令字的操作數(shù)位數(shù)的高位的擴(kuò)展數(shù)據(jù),如果擴(kuò)展指令字是在使用擴(kuò)展數(shù)據(jù)(ED)的通用指令字之后的第一個(gè)擴(kuò)展指令字并與先前的擴(kuò)展指令字不連續(xù)。如果擴(kuò)展指令字是與先前擴(kuò)展指令字連續(xù)的一個(gè)擴(kuò)展指令字,先前產(chǎn)生的擴(kuò)展數(shù)據(jù)(ED)通過擴(kuò)展指令字操作數(shù)的位數(shù)被移位到高端位置并用擴(kuò)展指令字的操作數(shù)填充空的低位。
如果使用由一個(gè)或多個(gè)連續(xù)擴(kuò)展指令字產(chǎn)生的擴(kuò)展數(shù)據(jù)(ED)的一個(gè)通用指令字存在于暫時(shí)存儲(chǔ)單元200的緩沖器中,當(dāng)一個(gè)相應(yīng)指令字通過指令字選擇器400輸出到通用指令字分析器700時(shí),由一個(gè)或多個(gè)連續(xù)擴(kuò)展指令字產(chǎn)生的擴(kuò)展數(shù)據(jù)(ED)輸出到擴(kuò)展數(shù)據(jù)存儲(chǔ)單元600中。如果使用由一個(gè)或多個(gè)連續(xù)擴(kuò)展指令字產(chǎn)生的一個(gè)通用指令字的擴(kuò)展數(shù)據(jù)(ED)不存在于暫時(shí)存儲(chǔ)單元200的緩沖器中,當(dāng)最后一個(gè)通用指令字通過指令字選擇器400輸出到通用指令字分析器700時(shí),由一個(gè)或多個(gè)連續(xù)擴(kuò)展指令字產(chǎn)生的擴(kuò)展數(shù)據(jù)(ED)被輸出到擴(kuò)展數(shù)據(jù)存儲(chǔ)單元600中。如果一個(gè)通用指令字不在暫時(shí)存儲(chǔ)單元200的緩沖器中,而僅有該擴(kuò)展指令字在它的緩沖器中,當(dāng)沒有執(zhí)行任何操作的一個(gè)指令字通過指令字選擇器400輸出到通用指令字分析器700時(shí),由一個(gè)或多個(gè)連續(xù)擴(kuò)展指令字產(chǎn)生的擴(kuò)展數(shù)據(jù)(ED)被輸出到擴(kuò)展數(shù)據(jù)存儲(chǔ)單元600中。
從擴(kuò)展數(shù)據(jù)分析器500輸出的擴(kuò)展數(shù)據(jù)(ED)可能是通過一個(gè)或多個(gè)連續(xù)擴(kuò)展指令字的操作數(shù)OPER1-OPERn相加或通過把一個(gè)或多個(gè)連續(xù)擴(kuò)展指令字的操作數(shù)OPER1-OPERn移位到右邊而獲得的數(shù)據(jù)。
下面將詳細(xì)描述具有上述結(jié)構(gòu)的按照本發(fā)明擴(kuò)展指令字折疊設(shè)備的操作。
圖2是按照本發(fā)明的一種擴(kuò)展指令字折疊設(shè)備的方框圖。
例如,假設(shè)指令字存儲(chǔ)單元100存儲(chǔ)著諸指令字,該諸指令字用于執(zhí)行第一通用指令字,第一擴(kuò)展指令字,第二擴(kuò)展指令字,第三擴(kuò)展指令字,第二通用指令字和第三通用指令字,暫時(shí)存儲(chǔ)單元200包括第一緩沖器BU1和第二緩沖器BU2,把存儲(chǔ)在指令字存儲(chǔ)單元100中的兩個(gè)指令字預(yù)先提取到第一和第二緩沖器BU1和BU2。接著,將參考圖3描述圖2的操作定時(shí)。
圖3是圖2的擴(kuò)展指令字折疊設(shè)備的操作定時(shí)圖。
首先,被存儲(chǔ)在指令字存儲(chǔ)單元100中的兩個(gè)指令字的第一通用指令字和第一擴(kuò)展指令字在時(shí)間t1被預(yù)先提取。第一通用指令字被存儲(chǔ)在暫時(shí)存儲(chǔ)單元200的第一緩沖器BU1中和第一擴(kuò)展指令字被存儲(chǔ)在暫時(shí)存儲(chǔ)單元200的第二緩沖器BU2中。當(dāng)?shù)谝煌ㄓ弥噶钭趾偷谝粩U(kuò)展指令字在時(shí)間t1從指令字存儲(chǔ)單元100預(yù)先提取到暫時(shí)存儲(chǔ)單元200時(shí),擴(kuò)展指令字搜索單元310接收從指令字存儲(chǔ)單元100輸出的第一通用指令字和第一擴(kuò)展指令字并輸出一個(gè)標(biāo)志信號(hào)FLAG,表示存儲(chǔ)在暫時(shí)存儲(chǔ)單元200的第一和第二緩沖器BU1和BU2中的每個(gè)指令字是一個(gè)通用指令字還是一個(gè)擴(kuò)展指令字。此時(shí),由于從指令字存儲(chǔ)單元100輸出的指令字是第一通用指令字或者是第一擴(kuò)展指令字,擴(kuò)展指令字搜索單元310輸出一個(gè)激活的標(biāo)志信號(hào)(FLAG)的低邏輯值和一個(gè)激活的標(biāo)志信號(hào)(FLAG)的高邏輯值。這些標(biāo)志信號(hào)(FLAG)被存儲(chǔ)在標(biāo)志寄存器320中并指示存儲(chǔ)在當(dāng)前緩沖器BU1和BU2中的每個(gè)指令字的種類。在此實(shí)施例中,由于第一通用指令字存儲(chǔ)在第一緩沖器BU1中和第一擴(kuò)展指令字存儲(chǔ)在第二緩沖器BU2中,低邏輯值‘0’被存儲(chǔ)在標(biāo)志寄存器320的第一標(biāo)志位FB1中和高邏輯值‘1’被存儲(chǔ)在標(biāo)志寄存器320的第二標(biāo)志位FB2中。查閱標(biāo)志寄存器320的第一標(biāo)志位FB1和第二標(biāo)志位FB2的值,擴(kuò)展解碼器330輸出一個(gè)位置信號(hào)(POS),表明第一通用指令字被放在第一緩沖器BU1中和第一擴(kuò)展指令字被放在第二緩沖器BU2中。
在時(shí)間t2,按照從擴(kuò)展解碼器330輸出的位置信號(hào)(POS),指令字選擇器400輸出存儲(chǔ)在第一緩沖器BU1中的第一通用指令字到通用指令字分析器700。即在時(shí)間t2,通用指令字分析器700執(zhí)行第一通用指令字的提取和解碼操作(IF)。在第一通用指令字被提取和被解碼的同時(shí),如圖3所示,根據(jù)位置信號(hào)(POS),存儲(chǔ)在第二緩沖器BU2中第一擴(kuò)展指令字的操作數(shù)OPER被輸出到擴(kuò)展數(shù)據(jù)分析器500。也就是,擴(kuò)展數(shù)據(jù)分析器500提取第一擴(kuò)展指令字,如圖3所示。擴(kuò)展數(shù)據(jù)分析器500操作和處理第一擴(kuò)展指令字的操作數(shù)OPER并輸出擴(kuò)展數(shù)據(jù)(ED)。由于第一擴(kuò)展指令字是跟隨通用指令字的第一個(gè)擴(kuò)展指令字,擴(kuò)展數(shù)據(jù)分析器500輸入第一擴(kuò)展指令字的操作數(shù)OPER到擴(kuò)展數(shù)據(jù)(ED)的低位,而且把與輸入的第一擴(kuò)展指令字的操作數(shù)0PER最高有效位相同的值輸入到高于第一擴(kuò)展指令字操作數(shù)OPER位數(shù)的高位,從而產(chǎn)生擴(kuò)展數(shù)據(jù)(ED)。擴(kuò)展數(shù)據(jù)存儲(chǔ)單元600存儲(chǔ)從擴(kuò)展數(shù)據(jù)分析器500輸出的擴(kuò)展數(shù)據(jù)(ED),并且如果該擴(kuò)展數(shù)據(jù)(ED)是使用擴(kuò)展數(shù)據(jù)(ED)的通用指令字請(qǐng)求的,則輸出存儲(chǔ)的擴(kuò)展數(shù)據(jù)(ED)。如果第一擴(kuò)展指令字是與在存儲(chǔ)于暫時(shí)存儲(chǔ)單元200的緩沖器BU1和BU2中的指令字之前所接收的擴(kuò)展指令字相連續(xù)的擴(kuò)展指令字,也就是說,在先前接收的擴(kuò)展指令字和當(dāng)前接收的第一擴(kuò)展指令字被操作和處理以便更新擴(kuò)展數(shù)據(jù)(ED)的情況下,先前產(chǎn)生的擴(kuò)展數(shù)據(jù)(ED)被移位到高端位置第一擴(kuò)展指令字操作數(shù)的位數(shù),并隨后用第一擴(kuò)展指令字的操作數(shù)填充空的低端位。
在時(shí)間t3,執(zhí)行單元根據(jù)由于指令字分析器700輸出的第一通用指令字產(chǎn)生的多個(gè)控制信號(hào)操作相應(yīng)的第一通用指令字,如圖3中所示的EX。在時(shí)間t4,在第一通用指令字操作時(shí)結(jié)果信號(hào)被存儲(chǔ)在一個(gè)存儲(chǔ)器的一個(gè)特殊寄存器中或者存儲(chǔ)在一個(gè)中央處理單元中,如圖3中所示的ST。
以和上述過程相同的方式,存儲(chǔ)在指令字存儲(chǔ)單元100中的第二和第三擴(kuò)展指令字被預(yù)先提取到暫時(shí)存儲(chǔ)單元200的第一和第二緩沖器BU1和BU2中,如圖3中的PF所示,在時(shí)間t2,第一通用指令字和第一擴(kuò)展指令字被提取和解碼,如圖3中的IF所示。與此同時(shí),擴(kuò)展指令搜索單元310調(diào)查預(yù)先提取(PF)的指令字并輸出一個(gè)標(biāo)志信號(hào)(FLAG),表示每個(gè)指令字是一個(gè)擴(kuò)展指令字或是一個(gè)通用指令字。標(biāo)志寄存器320存儲(chǔ)從擴(kuò)展指令字搜索單元310輸出的標(biāo)志信號(hào)(FLAG)并把存儲(chǔ)的該標(biāo)志信號(hào)(FLAG)輸出到擴(kuò)展解碼器330。按照該標(biāo)志信號(hào)(FLAG),擴(kuò)展解碼器330輸出一個(gè)位置信號(hào)(POS),表明當(dāng)前僅有擴(kuò)展指令字存在于暫時(shí)存儲(chǔ)單元200的緩沖器BU1或BU2中。在時(shí)間t3,按照位置信號(hào)(POS),指令字選擇器400確定沒有通用指令字不存在于暫時(shí)存儲(chǔ)單元200中并輸出用于不執(zhí)行操作的指令字,也就是,把一個(gè)NOP(無操作)指令字輸出到通用指令字分析器700。擴(kuò)展數(shù)據(jù)分析器500按照位置信號(hào)(POS)接收存儲(chǔ)在暫時(shí)存儲(chǔ)單元200中第二和第三擴(kuò)展指令字的操作數(shù)OPER,操作和處理所接收的操作數(shù)并產(chǎn)生擴(kuò)展數(shù)據(jù)(ED)。由于第二和第三擴(kuò)展指令字是與已經(jīng)被操作和處理的第一擴(kuò)展指令字相連續(xù)的擴(kuò)展指令字,由第一擴(kuò)展指令字產(chǎn)生的擴(kuò)展數(shù)據(jù)(ED)被移位到高位以及第二和第三擴(kuò)展指令字的操作數(shù)順序地輸入到低位的空位置上。這里,被移位的位數(shù)與第二和第三擴(kuò)展指令字操作數(shù)OPER的位數(shù)之和相同。擴(kuò)展數(shù)據(jù)存儲(chǔ)單元600存儲(chǔ)從擴(kuò)展數(shù)據(jù)分析器500輸出的第一擴(kuò)展指令字、第二擴(kuò)展指令字和第三擴(kuò)展指令字產(chǎn)生的擴(kuò)展數(shù)據(jù)(ED)。這樣,在時(shí)間t3,第二和第三擴(kuò)展指令字被提取和解碼,如圖3中的IF所示。
同樣,在時(shí)間t3,存儲(chǔ)在指令字存儲(chǔ)單元100中的第二和第三通用指令字被預(yù)先提取到暫時(shí)存儲(chǔ)單元200的第一和第二緩沖器BU1和BU2中,如圖3中的PF所示。擴(kuò)展指令字搜索單元310輸出一個(gè)標(biāo)志信號(hào)(FLAG),表示每個(gè)預(yù)先提取的指令字是否為一個(gè)通用指令字。標(biāo)志寄存器320存儲(chǔ)從擴(kuò)展指令字搜索單元310輸出的標(biāo)志信號(hào)(FLAG)并把存儲(chǔ)的該標(biāo)志信號(hào)(FLAG)輸出到擴(kuò)展解碼器330。擴(kuò)展解碼器330輸出一個(gè)位置信號(hào)(POS),表明在暫時(shí)存儲(chǔ)單元200中僅有通用指令字而沒有擴(kuò)展指令字。指令字選擇器400根據(jù)擴(kuò)展解碼器330輸出的位置信號(hào)(POS)確定在暫時(shí)存儲(chǔ)單元200中只有通用指令字并且把存儲(chǔ)在第一和第二緩沖器BU1和BU2中的第二和第三通用指令字順序地輸出到通用指令字分析器700。擴(kuò)展數(shù)據(jù)分析器500根據(jù)位置信號(hào)(POS)確定暫時(shí)存儲(chǔ)單元200存儲(chǔ)的指令字中沒有擴(kuò)展指令字,因而不更新擴(kuò)展數(shù)據(jù)(ED)。接下來的執(zhí)行(EX)和存儲(chǔ)(ST)過程是相同的。如果第二和第三指令字是使用擴(kuò)展數(shù)據(jù)(ED)的指令字,則使用預(yù)先存儲(chǔ)在擴(kuò)展數(shù)據(jù)存儲(chǔ)單元600中的擴(kuò)展數(shù)據(jù)(ED)以便執(zhí)行單元執(zhí)行相應(yīng)的通用指令字。
因此,如圖3的操作定時(shí)圖所示的,按照本發(fā)明的擴(kuò)展指令字折疊設(shè)備需要四個(gè)流水線時(shí)鐘信號(hào)。從而,與常規(guī)技術(shù)相比節(jié)省了兩個(gè)流水線時(shí)鐘信號(hào)。因此,CPU和程序二者的效率提高了。
圖4是圖2的擴(kuò)展指令字折疊設(shè)備的另一個(gè)操作定時(shí)圖。
如圖4所示,第一通用指令字,第一擴(kuò)展指令字,第二擴(kuò)展指令字和第二通用指令字順序地存儲(chǔ)在指令字存儲(chǔ)單元100中。暫時(shí)存儲(chǔ)單元200包括四個(gè)緩沖器BU1-BU4。標(biāo)志寄存器320包括4比特標(biāo)志位FB1-FB4。在這個(gè)實(shí)施例中,下面將描述圖2的擴(kuò)展指令字折疊設(shè)備的操作。
在時(shí)間t1,存儲(chǔ)在指令字存儲(chǔ)單元100中的第一通用指令字、第一擴(kuò)展指令字、第二擴(kuò)展指令字和第二通用指令字被預(yù)先提取到暫時(shí)存儲(chǔ)單元200的四個(gè)緩沖器BU1-BU4中,如圖4中的PF所示。擴(kuò)展指令字搜索單元310搜索從指令字存儲(chǔ)單元100輸出的諸指令字,確定在諸指令字中哪個(gè)指令字是一個(gè)通用指令字或是一個(gè)擴(kuò)展指令字,并且如果指令字是一個(gè)擴(kuò)展指令字和如果是一個(gè)通用指令字,就輸出一個(gè)激活的標(biāo)志信號(hào)(FLAG)。標(biāo)識(shí)寄存器320把擴(kuò)展指令字310輸出的標(biāo)志信號(hào)FLAG存儲(chǔ)在多個(gè)標(biāo)志位FB1-FB4中。此實(shí)施例中,標(biāo)志寄存器320從最低有效位FB1到最高有效位FB4具有‘0110’的數(shù)據(jù)。擴(kuò)展解碼器330確定標(biāo)志寄存器320的各個(gè)標(biāo)志位FB1-FB4的激活狀態(tài)并輸出一個(gè)位置信號(hào)(POS),表明存儲(chǔ)在暫時(shí)存儲(chǔ)單元200的每個(gè)緩沖器BU1-BU4中的指令字是一個(gè)通用指令字還是一個(gè)擴(kuò)展指令字。因此可以看出,屬于指令字的擴(kuò)展指令字或通用指令字通過擴(kuò)展解碼器330存儲(chǔ)在暫時(shí)存儲(chǔ)單元200的哪個(gè)緩沖器中。
在時(shí)間t2,按照擴(kuò)展解碼器330輸出的位置信號(hào)(POS),存儲(chǔ)在暫時(shí)存儲(chǔ)單元200的緩沖器BU1-BU4中的指令字,指令字選擇器400選擇存儲(chǔ)了第一通用指令字的第一緩沖器BU1,并把存儲(chǔ)在第一緩沖器BU1中的第一通用指令字輸出到通用指令字分析器700。通用指令字分析器700分析第一通用指令字并輸出多個(gè)控制信號(hào)。也就是在時(shí)間t2,由指令字選擇器400和通用指令字分析器700提取和解碼存儲(chǔ)在暫時(shí)存儲(chǔ)單元200中的第一通用指令字,如圖4中的IF所示。在時(shí)間t3,按照多個(gè)控制信號(hào),執(zhí)行單元執(zhí)行相應(yīng)的第一通用指令字,如圖4中的EX所示。在時(shí)間t4,基于第一通用指令字操作的結(jié)果信號(hào)被存儲(chǔ)在一個(gè)存儲(chǔ)器的一個(gè)特殊寄存器中或者存儲(chǔ)在一個(gè)中央處理單元中,如圖4中的ST所示。
在時(shí)間t2時(shí)第一通用指令字被提取和解碼,如圖4中的IF所示,擴(kuò)展數(shù)據(jù)分析器500按照位置信號(hào)(POS)接收存儲(chǔ)在第二和第三緩沖器BU2-BU3中第一和第二擴(kuò)展指令字的相應(yīng)的操作數(shù)OPER2和OPER3,操作和處理接收到的操作數(shù)OPER2和OPER3,并輸出擴(kuò)展數(shù)據(jù)(ED)。當(dāng)操作數(shù)OPER2和OPER3被操作和處理而產(chǎn)生了擴(kuò)展數(shù)據(jù)(ED)時(shí),如果第一擴(kuò)展指令字是在第一通用指令字之后的擴(kuò)展指令字的操作數(shù)OPER2,第二擴(kuò)展指令字的操作數(shù)OPER3和第一擴(kuò)展指令字的操作數(shù)OPER2順序地從擴(kuò)展數(shù)據(jù)(ED)的最低有效位進(jìn)行填充,并用與第一擴(kuò)展指令字操作數(shù)OPER2的最高有效位的相同位填充高于第一擴(kuò)展指令字的操作數(shù)OPER2的最高有效位的擴(kuò)展數(shù)據(jù)(ED)的位。從而產(chǎn)生擴(kuò)展數(shù)據(jù)(ED)。如果擴(kuò)展指令字是與先前的擴(kuò)展指令字連續(xù)的使用,先前指令字所產(chǎn)生的擴(kuò)展數(shù)據(jù)(ED)移位到上端位置第一和第二擴(kuò)展指令字操作數(shù)OPER2和OPER3的位數(shù),并用第一和第二擴(kuò)展指令字的操作數(shù)OPER2和OPER3按順序填充空的低位。
擴(kuò)展數(shù)據(jù)存儲(chǔ)單元600接收擴(kuò)展數(shù)據(jù)分析器500的擴(kuò)展數(shù)據(jù)(ED)并且存儲(chǔ)它。
以和上述過程相同的方式,指令字選擇器400按照位置信號(hào)(POS)選擇存儲(chǔ)在暫時(shí)存儲(chǔ)單元200的第四個(gè)緩沖器BU4中的第二通用指令字。在時(shí)間t3,通用指令字分析器700提取和解碼第二通用指令字,如圖4中的IF所示。在時(shí)間t4,執(zhí)行單元按照通用指令字分析器700輸出的多個(gè)控制信號(hào)執(zhí)行第二指令字,如圖4中的EX所示。在時(shí)間t5,基于第二通用指令字的執(zhí)行的結(jié)果信號(hào)被存儲(chǔ)在一個(gè)存儲(chǔ)器的一個(gè)特殊寄存器中或者存儲(chǔ)在一個(gè)中央處理單元中,如圖4中的ST所示。
如果第二通用指令字是利用擴(kuò)展數(shù)據(jù)(ED)的一個(gè)指令字,則使用存儲(chǔ)在擴(kuò)展數(shù)據(jù)存儲(chǔ)單元600中的擴(kuò)展數(shù)據(jù)(ED)并在時(shí)間t4由執(zhí)行單元執(zhí)行第二通用指令字。
如上所述,在讀取和執(zhí)行一個(gè)通用指令字期間,按照本發(fā)明的擴(kuò)展指令字折疊設(shè)備處理一個(gè)跟隨的擴(kuò)展指令字,以便在擴(kuò)展指令字之后的一個(gè)通用指令字能立即處理,從而提高了擴(kuò)展指令字系統(tǒng)中CPU的性能。
權(quán)利要求
1.一種用于中央處理器的擴(kuò)展指令字折疊設(shè)備,執(zhí)行一個(gè)擴(kuò)展指令字以便使用數(shù)據(jù)值大于一個(gè)指令字的數(shù)量或大于一個(gè)存儲(chǔ)單元的地址值的數(shù)據(jù),該擴(kuò)展指令字折疊設(shè)備包括一個(gè)指令字存儲(chǔ)單元,用于存儲(chǔ)包括多個(gè)通用指令字和擴(kuò)展指令字的指令字的指令字;包括多個(gè)緩沖器的一個(gè)暫時(shí)存儲(chǔ)單元,用于從指令字存儲(chǔ)單元中預(yù)先提取多個(gè)指令字并存儲(chǔ)預(yù)先提取的指令字;一個(gè)指令字搜索單元,用于接收從指令字存儲(chǔ)單元預(yù)先提取到暫時(shí)存儲(chǔ)單元的多個(gè)指令字,解碼接收的指令字,以及輸出位置信號(hào),它代表儲(chǔ)存在暫時(shí)存儲(chǔ)單元的指令字中的一個(gè)通用指令字位置和一個(gè)或多個(gè)連續(xù)擴(kuò)展指令字位置的;一個(gè)指令字選擇器,用于在暫時(shí)存儲(chǔ)單元的每個(gè)緩沖器的存儲(chǔ)指令字中選擇存儲(chǔ)通用指令字的一個(gè)緩沖器,并按照指令字搜索單元輸出的位置信號(hào),順序地輸出通用指令字;一個(gè)通用指令字分析器,用于接收指令字選擇器輸出的通用指令字并輸出執(zhí)行該通用指令字的多個(gè)控制信號(hào);一個(gè)擴(kuò)展數(shù)據(jù)分析器,用于按照從指令字搜索單元輸出的位置信號(hào)執(zhí)行存儲(chǔ)在暫時(shí)存儲(chǔ)單元的每個(gè)緩沖器中諸指令字中的一個(gè)或多個(gè)連續(xù)擴(kuò)展指令字操作數(shù)的運(yùn)算處理,并輸出擴(kuò)展數(shù)據(jù);和一個(gè)擴(kuò)展數(shù)據(jù)存儲(chǔ)單元,用于存儲(chǔ)從擴(kuò)展數(shù)據(jù)分析器接收的擴(kuò)展數(shù)據(jù)。
2.根據(jù)權(quán)利要求1的擴(kuò)展指令字折疊設(shè)備,其中所述的指令字搜索單元包括一個(gè)擴(kuò)展指令字搜索單元,用于接收從指令字存儲(chǔ)單元預(yù)先提取放到暫時(shí)存儲(chǔ)單元的指令字,判斷預(yù)先提取到暫時(shí)存儲(chǔ)單元的每個(gè)指令字是一個(gè)通用指令字或是一個(gè)擴(kuò)展指令字,并且如果指令字被確定是一個(gè)擴(kuò)展指令字,輸出一個(gè)激活的標(biāo)志信號(hào);包括多個(gè)標(biāo)志位的一個(gè)標(biāo)志寄存器,按照從擴(kuò)展指令字搜索單元輸出的標(biāo)志信號(hào),表明存儲(chǔ)在暫時(shí)存儲(chǔ)單元的多個(gè)緩沖器中的每個(gè)指令字是一個(gè)擴(kuò)展指令字或者是一個(gè)通用指令字;和一個(gè)擴(kuò)展解碼器,用于從諸標(biāo)志寄存器接收多個(gè)標(biāo)志位,確定每個(gè)標(biāo)志位的激活狀態(tài),并輸出暫時(shí)存儲(chǔ)單元的多個(gè)緩沖器中表示存儲(chǔ)通用指令字緩沖器和存儲(chǔ)一個(gè)或多個(gè)連續(xù)擴(kuò)展字的緩沖器位置的一個(gè)位置信號(hào)。
3.根據(jù)權(quán)利要求1的擴(kuò)展指令折疊設(shè)備,其中所述的擴(kuò)展數(shù)據(jù)分析器以擴(kuò)展指令字出現(xiàn)的順序調(diào)查存儲(chǔ)在暫時(shí)存儲(chǔ)單元的多個(gè)緩沖器中的一個(gè)或多個(gè)連續(xù)的擴(kuò)展指令字,用擴(kuò)展指令字的操作數(shù)填充擴(kuò)展數(shù)據(jù)的低位,并用以和擴(kuò)展指令字操作數(shù)的最高有效位的相同值填充高于擴(kuò)展字操作數(shù)位數(shù)的高位的擴(kuò)展數(shù)據(jù)填充,如果擴(kuò)展指令字是在使用擴(kuò)展數(shù)據(jù)的通用指令字之后的第一個(gè)擴(kuò)展指令字并與先前的擴(kuò)展指令字不連續(xù),當(dāng)如果擴(kuò)展指令字是一個(gè)與先前擴(kuò)展指令字連續(xù)的擴(kuò)展指令字,先前產(chǎn)生的擴(kuò)展數(shù)據(jù)(ED)以擴(kuò)展指令字操作數(shù)的位數(shù)被移位到高端位置并用擴(kuò)展指令字的操作數(shù)填充空的低位。
4.根據(jù)權(quán)利要求1的擴(kuò)展指令字折疊設(shè)備,其中所述的擴(kuò)展數(shù)據(jù)分析器按照擴(kuò)展指令字出現(xiàn)的順序調(diào)查存儲(chǔ)在暫時(shí)存儲(chǔ)單元的多個(gè)緩沖器中的一個(gè)或多個(gè)連續(xù)的擴(kuò)展指令字,而且對(duì)于各自的擴(kuò)展指令字,通過擴(kuò)展指令字操作數(shù)的位數(shù)把擴(kuò)展數(shù)據(jù)移位到高端位置,和用擴(kuò)展指令字的操作數(shù)填充空的低位。
5.根據(jù)權(quán)利要求1的擴(kuò)展指令折疊設(shè)備,其中所述擴(kuò)展數(shù)據(jù)分析器的擴(kuò)展數(shù)據(jù)是通過一個(gè)或多個(gè)連續(xù)擴(kuò)展指令字相加而得到的數(shù)據(jù)。
6.根據(jù)權(quán)利要求1的擴(kuò)展指令折疊設(shè)備,其中所述擴(kuò)展數(shù)據(jù)分析器的擴(kuò)展數(shù)據(jù)是通過把一個(gè)或多個(gè)連續(xù)的擴(kuò)展指令字移位到右邊而得到的數(shù)據(jù)。
7.根據(jù)權(quán)利要求1的擴(kuò)展指令字折疊設(shè)備,其中在通用指令字從暫時(shí)存儲(chǔ)單元被輸出到指令字選擇器時(shí),所述的擴(kuò)展數(shù)據(jù)分析器接收從指令字搜索單元輸出的位置信號(hào),并且在存儲(chǔ)指令字的暫時(shí)存儲(chǔ)單元的每個(gè)緩沖器中,從存儲(chǔ)一個(gè)或多個(gè)連續(xù)擴(kuò)展指令字的緩沖器接收存儲(chǔ)在該緩沖器中擴(kuò)展指令字的操作數(shù),從而操作和處理該操作數(shù)。
8.根據(jù)根據(jù)權(quán)利要求1的擴(kuò)展指令折疊設(shè)備,其中如果存儲(chǔ)在暫時(shí)存儲(chǔ)單元的每個(gè)緩沖器中的指令字中沒有通用指令字,所述的指令字選擇器不執(zhí)行操作的指令字輸出到通用指令字分析器。
9.根據(jù)權(quán)利要求1的擴(kuò)展指令字折疊設(shè)備,其中在存儲(chǔ)在多個(gè)緩沖器的所有的指令字由指令選擇器和擴(kuò)展數(shù)據(jù)分析器處理時(shí),所述暫時(shí)存儲(chǔ)單元預(yù)先從指令字存儲(chǔ)單元提取和更新新的指令字。
10.根據(jù)權(quán)利要求1的擴(kuò)展指令字折疊設(shè)備,其中如果暫時(shí)存儲(chǔ)單元的緩沖器中存在一個(gè)通用指令字時(shí),當(dāng)一個(gè)相應(yīng)的通用指令字從指令字選擇器輸出到通用指令字分析器時(shí),所述擴(kuò)展數(shù)據(jù)分析器輸出擴(kuò)展數(shù)據(jù)到擴(kuò)展數(shù)據(jù)存儲(chǔ)單元,同時(shí)如果暫時(shí)存儲(chǔ)單元的緩沖器中沒有一個(gè)通用指令字,在把不執(zhí)行操作的指令字從指令字選擇器輸出到通用指令字分析器時(shí),擴(kuò)展數(shù)據(jù)被輸出到擴(kuò)展數(shù)據(jù)存儲(chǔ)單元。
全文摘要
一種擴(kuò)展指令字折疊設(shè)備,包括指令字存儲(chǔ)單元,用于存儲(chǔ)包括多個(gè)通用指令和擴(kuò)展指令字的指令字,具有多個(gè)緩沖器的暫時(shí)存儲(chǔ)單元,用于存儲(chǔ)多個(gè)指令字,指令字搜索單元,用于接收暫時(shí)存儲(chǔ)單元的多個(gè)指令字,解碼接收的指令字,以及輸出指令字中表示通用指令字位置和連續(xù)擴(kuò)展指令字位置的位置信號(hào),指令字選擇器,用于在存儲(chǔ)指令字中選擇存儲(chǔ)通用指令字的緩沖器,并按照位置信號(hào)順序地輸出通用指令字,通用指令字分析器,用于接收通用指令字并輸出用于執(zhí)行該通用指令字的多個(gè)控制信號(hào),擴(kuò)展數(shù)據(jù)分析器,按照從指令字搜索單元輸出的位置信號(hào),執(zhí)行存儲(chǔ)在每個(gè)緩沖器的指令字的連續(xù)擴(kuò)展指令字的操作數(shù)的運(yùn)算處理,并輸出擴(kuò)展數(shù)據(jù),和擴(kuò)展數(shù)據(jù)存儲(chǔ)單元,用于存儲(chǔ)從擴(kuò)展數(shù)據(jù)分析器接收的擴(kuò)展數(shù)據(jù)。
文檔編號(hào)G06F12/04GK1335561SQ01122079
公開日2002年2月13日 申請(qǐng)日期2001年5月30日 優(yōu)先權(quán)日2000年6月30日
發(fā)明者趙璟衍, 林鐘潤, 李根澤, 吳亨哲, 金賢奎, 閔炳權(quán), 李熙 申請(qǐng)人:先進(jìn)數(shù)字芯片股份有限公司