專(zhuān)利名稱(chēng):微處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及具有指令予取功能的微處理器,特別是涉及這樣的微處理器使其能免除在存儲(chǔ)予取指令的隊(duì)列緩沖器中的轉(zhuǎn)移指令執(zhí)行時(shí)的刷新。
就是說(shuō),將事先由主存儲(chǔ)器或高速緩存所予取出的指令存儲(chǔ)到可高速訪問(wèn)的小容量的指令予取緩沖器(隊(duì)列緩沖器)中,由此就能夠真正削減由取指令時(shí)的內(nèi)存訪問(wèn)所產(chǎn)生的執(zhí)行的遲延。
在現(xiàn)有的技術(shù)中,一旦執(zhí)行轉(zhuǎn)移指令,則不論轉(zhuǎn)移目的地地址如何都中止予取和后續(xù)指令的執(zhí)行,刷新(清除)隊(duì)列緩沖器,這樣使到此時(shí)之前所存儲(chǔ)的指令變?yōu)闊o(wú)效,要等到從轉(zhuǎn)移目的地地址重新予取并將轉(zhuǎn)移指令存儲(chǔ)到隊(duì)列緩沖器后,再度開(kāi)始指令的執(zhí)行。
這樣,在現(xiàn)有技術(shù)中,由于在轉(zhuǎn)移指令執(zhí)行時(shí)要刷新隊(duì)列緩沖器,所以予取的次數(shù)增加,造成流水線(xiàn)處理混亂,妨礙高速化。
于是,在特開(kāi)平7-73034號(hào)公報(bào)中,將轉(zhuǎn)移指令執(zhí)行時(shí)的轉(zhuǎn)移目的地地址和存在于隊(duì)列緩沖器內(nèi)的指令的相應(yīng)地址范圍進(jìn)行比較,轉(zhuǎn)移目的地地址處于相應(yīng)地址范圍內(nèi)時(shí),不刷新隊(duì)列緩沖器而使用隊(duì)列緩沖器內(nèi)的指令,從而減少轉(zhuǎn)移后的予取次數(shù)。
在此現(xiàn)有技術(shù)中,的確能減少轉(zhuǎn)移后的予取次數(shù),但是,由于是將轉(zhuǎn)移指令作為通常的無(wú)條件轉(zhuǎn)移指令來(lái)處理,所以,用于指令譯碼后的轉(zhuǎn)移的地址生成處理變得復(fù)雜,因此存在電路也變得復(fù)雜且大規(guī)?;膯?wèn)題。
本發(fā)明是針對(duì)上述問(wèn)題而,目的是要獲得這樣的微處理器使其在內(nèi)部無(wú)須設(shè)置復(fù)雜的結(jié)構(gòu)而能免除在無(wú)條件轉(zhuǎn)移時(shí)的不必要的隊(duì)列緩沖器的刷新。
根據(jù)本發(fā)明,不是作為通常的轉(zhuǎn)移指令而動(dòng)作、而是將與通常的傳送指令、運(yùn)算指令等同樣動(dòng)作的新的轉(zhuǎn)移指令(如BJMP)追加到微處理器。根據(jù)這個(gè)轉(zhuǎn)移指令,隊(duì)列緩沖器內(nèi)的指令數(shù)成為可變的。即,在指令譯碼器中,一旦識(shí)別出從隊(duì)列緩沖器輸入的指令是預(yù)先設(shè)定的所定的轉(zhuǎn)移指令,則將到這個(gè)轉(zhuǎn)移指令(BJMP)所指定的轉(zhuǎn)移目的地之前的指令為止作為相應(yīng)轉(zhuǎn)移指令(BJMP)的操作數(shù)處理,由此就使隊(duì)列緩沖器內(nèi)的指令數(shù)成為可變的。而后,將包含該操作數(shù)部分的相應(yīng)轉(zhuǎn)移指令的指令字長(zhǎng)輸出到程序計(jì)數(shù)器并更新程序計(jì)數(shù)器的地址。另外,指令譯碼器,在此轉(zhuǎn)移指令(BJMP)時(shí)不進(jìn)行隊(duì)列緩沖器的刷新。
下面的發(fā)明相關(guān)的微處理器,其特征在于在上述發(fā)明中,在上述轉(zhuǎn)移目的地的指定中,使用標(biāo)號(hào)。
根據(jù)本發(fā)明,將標(biāo)號(hào)(Label)附加到轉(zhuǎn)移指令(BJMP)的操作數(shù)部分,到標(biāo)號(hào)(Label)所指定的轉(zhuǎn)移目的地之前的指令為止作為相應(yīng)轉(zhuǎn)移指令(BJMP)的操作數(shù)處理。
下面的發(fā)明相關(guān)的微處理器,其特征在于在上述發(fā)明中,在上述轉(zhuǎn)移目的地的指定中,指定相應(yīng)轉(zhuǎn)移指令和轉(zhuǎn)移目的地的相對(duì)地址。
根據(jù)本發(fā)明,將相對(duì)地址附加到轉(zhuǎn)移指令(BJMP)的操作數(shù)部分,到相對(duì)地址所指定的轉(zhuǎn)移目的地之前的指令為止作為相應(yīng)轉(zhuǎn)移指令(BJMP)的操作數(shù)處理。
下面的發(fā)明相關(guān)的微處理器,其特征在于在上述發(fā)明中,上述隊(duì)列控制器單元,為了保留從當(dāng)前所執(zhí)行的指令到預(yù)先設(shè)定的所定個(gè)數(shù)的相對(duì)地址數(shù)的之前的多個(gè)指令而進(jìn)行上述隊(duì)列緩沖器的輸入輸出控制,作為上述相對(duì)地址可以指定負(fù)的相對(duì)地址。
根據(jù)本發(fā)明,隊(duì)列控制器單元,為了保留從當(dāng)前所執(zhí)行的指令到預(yù)先設(shè)定的所定個(gè)數(shù)的相對(duì)地址數(shù)的之前的多個(gè)指令而進(jìn)行上述隊(duì)列緩沖器的輸入輸出控制,由此在隊(duì)列緩沖器中,至少保留有上述所定的個(gè)數(shù)的當(dāng)前所執(zhí)行的指令之前的地址中存儲(chǔ)的指令。因此,如果將負(fù)的相對(duì)地址附加到轉(zhuǎn)移指令的操作數(shù)部分,則能向負(fù)地址側(cè)進(jìn)行轉(zhuǎn)移。
下面的發(fā)明相關(guān)的微處理器,其特征在于具有主存儲(chǔ)器;隊(duì)列緩沖器,存儲(chǔ)從這個(gè)主存儲(chǔ)器予取的指令;程序計(jì)數(shù)器,生成存儲(chǔ)著主存儲(chǔ)器上的下條要執(zhí)行的指令的地址;指令譯碼器,解讀從上述隊(duì)列緩沖器輸出的指令;隊(duì)列控制器單元,采用上述程序計(jì)數(shù)器的輸出進(jìn)行對(duì)上述隊(duì)列緩沖器的指令的輸入輸出控制,其中,上述指令譯碼器,一旦識(shí)別出從上述隊(duì)列緩沖器輸入的指令是所定的轉(zhuǎn)移指令,則將到這個(gè)轉(zhuǎn)移指令所指定的轉(zhuǎn)移目的地之前的指令為止作為NOP指令處理,將相應(yīng)轉(zhuǎn)移指令及上述NOP指令部分的指令字長(zhǎng)輸出到上述程序計(jì)數(shù)器,并且在更新程序計(jì)數(shù)器的地址的同時(shí),不進(jìn)行上述隊(duì)列緩沖器的刷新。
根據(jù)本發(fā)明,指令譯碼器一旦識(shí)別出從上述隊(duì)列緩沖器輸入的指令是所定的轉(zhuǎn)移指令,則將到這個(gè)轉(zhuǎn)移指令所指定的轉(zhuǎn)移目的地之前的指令為止作為NOP指令處理,將相應(yīng)轉(zhuǎn)移指令(BJMP)的指令字長(zhǎng)和上述NOP指令部分的指令字長(zhǎng)輸出到程序計(jì)數(shù)器,并更新程序計(jì)數(shù)器的地址。另外,在此轉(zhuǎn)移指令(BJMP)時(shí),不進(jìn)行隊(duì)列緩沖器的刷新。
圖2是表示用于說(shuō)明本發(fā)明實(shí)施方式1的指令序列圖。
圖3是表示用于說(shuō)明本發(fā)明實(shí)施方式2的指令序列圖。
圖4是表示用于說(shuō)明本發(fā)明實(shí)施方式3的指令序列圖。
圖5是表示用于說(shuō)明本發(fā)明實(shí)施方式4的指令序列圖。符號(hào)說(shuō)明1主存儲(chǔ)裝置,2隊(duì)列緩沖器(指令隊(duì)列),3輸入指針,4輸出指針,5隊(duì)列控制器,6譯碼器,7執(zhí)行單元,8程序計(jì)數(shù)器,BJMP轉(zhuǎn)移指令。
圖1是表示本發(fā)明相關(guān)的微處理器的內(nèi)部結(jié)構(gòu)例子的方框圖。在圖1中,1是主存儲(chǔ)器;2是隊(duì)列緩沖器(指令隊(duì)列);3是輸入指針;4是輸出指針;5是隊(duì)列控制器;6是譯碼器;7是執(zhí)行單元;8是程序計(jì)數(shù)器。包括隊(duì)列控制器5、輸入指針3和輸出指針4、構(gòu)成了權(quán)力要求中所說(shuō)的隊(duì)列控制器單元。
主存儲(chǔ)裝置1中,存儲(chǔ)著要執(zhí)行的程序的指令序列。隊(duì)列緩沖器2例如是可以存儲(chǔ)32個(gè)指令的緩沖器,存儲(chǔ)從主存儲(chǔ)裝置1予取出的指令。指令譯碼器6對(duì)從隊(duì)列緩沖器2讀出的指令的指令代碼進(jìn)行譯碼(解讀)。這個(gè)指令譯碼器6的動(dòng)作是本發(fā)明的主要部分,所以,后面要詳細(xì)敘述。
指令譯碼器6的譯碼結(jié)果和指令的操作數(shù)部分輸入到執(zhí)行單元7中。執(zhí)行單元7用所輸入的譯碼結(jié)果和操作數(shù)部分,進(jìn)行數(shù)據(jù)轉(zhuǎn)送、四則運(yùn)算、邏輯運(yùn)算、大小比較、移位運(yùn)算等處理來(lái)執(zhí)行指令。
程序計(jì)數(shù)器8是存儲(chǔ)著在主存儲(chǔ)裝置1上的下條指令的執(zhí)行地址的寄存器,它進(jìn)行動(dòng)作是將從指令譯碼器6給出的指令字的長(zhǎng)度與當(dāng)前的程序計(jì)數(shù)器的計(jì)數(shù)值(寄存器值)相加。
隊(duì)列控制器5根據(jù)程序計(jì)數(shù)器8或指令譯碼器6的輸出控制輸入指針3和輸出指針4,由此來(lái)執(zhí)行對(duì)隊(duì)列緩沖器2的指令的輸入輸出控制。輸入指針3是由來(lái)自隊(duì)列控制器5的寫(xiě)控制信號(hào)而增加(或減少),由此來(lái)執(zhí)行對(duì)從主存儲(chǔ)裝置1予取的指令的隊(duì)列緩沖器2的寫(xiě)入控制。輸出指針4是由來(lái)自隊(duì)列控制器5的讀控制信號(hào)增加(或減少),由此來(lái)執(zhí)行對(duì)存儲(chǔ)在隊(duì)列緩沖器2的指令的指令譯碼器6的讀出控制。
下面,圖1之外采用圖2對(duì)本發(fā)明的實(shí)施方式1進(jìn)行說(shuō)明。
在這個(gè)實(shí)施方式1中,對(duì)于圖1的微處理器,追加新的轉(zhuǎn)移指令(BJMP)(參照?qǐng)D2)。這個(gè)轉(zhuǎn)移指令(BJMP)雖然進(jìn)行與通常的轉(zhuǎn)移指令不同的處理,但是結(jié)果還是進(jìn)行與通常的轉(zhuǎn)移指令相同的轉(zhuǎn)移處理。只是在這個(gè)轉(zhuǎn)移指令(BJMP)中,指令執(zhí)行時(shí),不刷新隊(duì)列緩沖器2。圖2是表示存儲(chǔ)在隊(duì)列緩沖器2中的指令序列的概念圖。
在這個(gè)實(shí)施方式1中,在表示轉(zhuǎn)移指令(BJMP)的轉(zhuǎn)移目的地的操作數(shù)部分,指定標(biāo)號(hào)(label)。
在圖1的指令譯碼器6中,解讀從隊(duì)列緩沖器2輸入的指令,一旦識(shí)別出所輸入的指令是上述轉(zhuǎn)移指令(BJMP)時(shí),就將到由這個(gè)轉(zhuǎn)移指令(BJMP)的操作數(shù)部分的標(biāo)號(hào)(label)所指定的相對(duì)地址之前為止存在的指令(該場(chǎng)合增加指令I(lǐng)NX和INY)作為轉(zhuǎn)移指令(BJMP)的操作數(shù)來(lái)處理。
即,指令譯碼器6對(duì)隊(duì)列控制器5發(fā)送用于更新輸出指針4的控制信號(hào)。用這個(gè)控制信號(hào),隊(duì)列控制器5更新輸出指針4。此結(jié)果,從隊(duì)列緩沖器2向指令譯碼器6輸入下條指令(該場(chǎng)合為INX)。解讀這個(gè)輸入的指令,判斷這個(gè)指令是否是標(biāo)號(hào)(label)。這種場(chǎng)合,指令(INX)不是標(biāo)號(hào),所以指令譯碼器6對(duì)隊(duì)列控制器5再送出控制信號(hào)并更新輸出指針4。這樣,直到指令譯碼器6檢測(cè)出標(biāo)號(hào)(label),將控制信號(hào)送給隊(duì)列控制器并讀入到由標(biāo)號(hào)(label)所指定的相對(duì)地址之前為止所存在的指令。這樣,指令譯碼器6檢測(cè)作為操作數(shù)必須處理的指令部分(該場(chǎng)合為INX和INY)的指令數(shù)和作為操作數(shù)處理的指令部分的指令字長(zhǎng)。
而后,指令譯碼器6將上述作為操作數(shù)處理的指令部分(該場(chǎng)合為INX和INY)的指令字長(zhǎng)與轉(zhuǎn)移指令(BJMP)的指令字長(zhǎng)相加,并將這個(gè)相加結(jié)果作為該轉(zhuǎn)移指令(BJMP)的指令字長(zhǎng)輸出到程序計(jì)數(shù)器8。再者,指令譯碼器6將用于禁止刷新的所定的控制信號(hào)輸出到隊(duì)列控制器5。
程序計(jì)數(shù)器8將從指令譯碼器6輸入的轉(zhuǎn)移指令(BJMP)的指令字長(zhǎng)與當(dāng)前的地址值相加后,更新地址值。另外,隊(duì)列控制器5不用來(lái)自指令譯碼器6的上述控制信號(hào)的輸入進(jìn)行隊(duì)列緩沖器2的刷新。
因而,此后通過(guò)在指令譯碼器6從隊(duì)列緩沖器2讀出由標(biāo)號(hào)(label)所指定的相對(duì)地址的下條指令(這個(gè)場(chǎng)合為取指令LDA)并進(jìn)行解讀處理,結(jié)果是進(jìn)行與通常的轉(zhuǎn)移指令同樣的處理。
這樣,在這個(gè)實(shí)施方式1中,由于將到由轉(zhuǎn)移指令(BJMP)的標(biāo)號(hào)(label)所指定的轉(zhuǎn)移目的地為止的指令代碼作為轉(zhuǎn)移指令(BJMP)的操作數(shù)部分處理,所以到轉(zhuǎn)移目的地為止的指令代碼作為轉(zhuǎn)移指令(BJMP)的1條指令處理,結(jié)果所處理的指令數(shù)就成為可變的。就是說(shuō)由于指令數(shù)作成可變,所以能獲得與無(wú)條件轉(zhuǎn)移同樣的轉(zhuǎn)移動(dòng)作。
在實(shí)施方式1中,轉(zhuǎn)移指令(BJMP)不作為通常的轉(zhuǎn)移指令動(dòng)作、而是使其與其它的數(shù)據(jù)傳送指令、運(yùn)算指令等同樣地動(dòng)作,且不作為通常的轉(zhuǎn)移指令對(duì)待、不讓其發(fā)生隊(duì)列緩沖器2的刷新,所以轉(zhuǎn)移時(shí)的地址運(yùn)算變得比現(xiàn)在簡(jiǎn)單,由此就無(wú)須在內(nèi)部設(shè)置復(fù)雜的電路結(jié)構(gòu)、可以去掉轉(zhuǎn)移時(shí)的不必要的隊(duì)列緩沖器的刷新。因此,可以用簡(jiǎn)便的結(jié)構(gòu)來(lái)減少轉(zhuǎn)移時(shí)的重取,從而可以提高處理速度。
再者,圖2的場(chǎng)合,表示的是到標(biāo)號(hào)(label)所指定的相對(duì)目的地之前存在的指令為2條指令的場(chǎng)合,當(dāng)然這個(gè)指令數(shù)也可以是1或3條以上。另外,成為轉(zhuǎn)移指令(BJMP)的操作數(shù)的對(duì)象的指令,當(dāng)然也不限于圖2所示的增加指令I(lǐng)NX、INY。
下面,用圖1和圖3對(duì)本發(fā)明的實(shí)施方式2進(jìn)行說(shuō)明。
在這個(gè)實(shí)施方式2中,如圖3所示,用相對(duì)地址來(lái)指定轉(zhuǎn)移指令(BJMP)的轉(zhuǎn)移目的地。在圖3中,在轉(zhuǎn)移指令(BJMP)的操作數(shù)部分作為相對(duì)地址指定“3”。
在指令譯碼器6中,解讀從隊(duì)列緩沖器2輸入的指令,一旦識(shí)別出所輸入的指令是上述轉(zhuǎn)移指令(BJMP),則將到由這個(gè)轉(zhuǎn)移指令(BJMP)的操作數(shù)部分的相對(duì)地址(該場(chǎng)合為3)所指定的相對(duì)地址之前為止存在的指令(該場(chǎng)合是增加指令I(lǐng)NX和INY)作為轉(zhuǎn)移指令(BJMP)的操作數(shù)來(lái)處理。
即,指令譯碼器6對(duì)隊(duì)列控制器5,根據(jù)轉(zhuǎn)移指令(BJMP)的操作數(shù)部分的相對(duì)地址(該場(chǎng)合為3)來(lái)識(shí)別應(yīng)作為操作數(shù)處理的指令部分(該場(chǎng)合為INX和INY)的指令數(shù)(該場(chǎng)合為2)和指令字長(zhǎng)。
而后,指令譯碼器6將上述作為操作數(shù)處理了的指令部分(該場(chǎng)合為INX和INY)的指令字長(zhǎng)與轉(zhuǎn)移指令(BJMP)的指令字長(zhǎng)相加,并將這個(gè)相加結(jié)果作為該轉(zhuǎn)移指令(BJMP)的指令字長(zhǎng)輸出到程序計(jì)數(shù)器8。另外,指令譯碼器6將向隊(duì)列控制器5輸出用于禁止刷新的所定的控制信號(hào)。
程序計(jì)數(shù)器8將從指令譯碼器6輸入的轉(zhuǎn)移指令(BJMP)的指令字長(zhǎng)(包含INX和INY的指令字長(zhǎng))與當(dāng)前的地址值相加后,更新地址值。另外,在隊(duì)列控制器5不由來(lái)自指令譯碼器6的上述控制信號(hào)的輸入來(lái)進(jìn)行隊(duì)列緩沖器2的刷新。
因而,此后,通過(guò)在指令譯碼器6從隊(duì)列緩沖器2讀出由轉(zhuǎn)移指令(BJMP)的操作數(shù)部分所指定的相對(duì)地址的指令(這個(gè)場(chǎng)合為取指令LDA)并進(jìn)行譯碼處理,結(jié)果是進(jìn)行與通常的轉(zhuǎn)移指令同樣的處理。
這樣,在這個(gè)實(shí)施方式2中,由于將在轉(zhuǎn)移指令(BJMP)的操作數(shù)部分作為相對(duì)地址所指定的轉(zhuǎn)移目的地為止的指令代碼作為轉(zhuǎn)移指令(BJMP)的操作數(shù)來(lái)處理,所以通過(guò)作為轉(zhuǎn)移指令(BJMP)的1條指令來(lái)對(duì)待到轉(zhuǎn)移目的地為止的指令代碼,結(jié)果是所處理的指令數(shù)成為可變的。就是說(shuō)通過(guò)與先前的實(shí)施方式1一樣設(shè)指令數(shù)為可變,由此能獲得與無(wú)條件轉(zhuǎn)移同樣的轉(zhuǎn)移動(dòng)作。
在實(shí)施方式2中,由于將轉(zhuǎn)移指令(BJMP)的結(jié)果的操作數(shù)長(zhǎng)作為對(duì)應(yīng)由轉(zhuǎn)移指令(BJMP)的本來(lái)的操作數(shù)部分所指定的相對(duì)地址的長(zhǎng)度,由此進(jìn)行相當(dāng)于通常的轉(zhuǎn)移指令的動(dòng)作,所以轉(zhuǎn)移時(shí)的地址運(yùn)算變得比現(xiàn)在更簡(jiǎn)單,由此無(wú)須在內(nèi)部設(shè)置復(fù)雜的結(jié)構(gòu)、可以去掉轉(zhuǎn)移時(shí)的不必要的隊(duì)列緩沖器的刷新。因此,可以用簡(jiǎn)便的結(jié)構(gòu)來(lái)減少轉(zhuǎn)移時(shí)的重取,可以提高處理速度。
再者,圖3的場(chǎng)合,表示的是到由標(biāo)號(hào)(label)所指定的轉(zhuǎn)移目的地為止存在的指令為2條指令的場(chǎng)合,當(dāng)然這個(gè)指令數(shù)也可以是1或3條以上。另外,成為轉(zhuǎn)移指令(BJMP)的操作數(shù)對(duì)象的指令,也不限于圖3所示的增加指令I(lǐng)NX、INY。
下面,用圖1和圖4對(duì)本發(fā)明的實(shí)施方式3進(jìn)行說(shuō)明。
在這個(gè)實(shí)施方式3中,如圖4所示,用相對(duì)地址(這個(gè)場(chǎng)合為“-3”)來(lái)指定轉(zhuǎn)移指令(BJMP)的轉(zhuǎn)移目的地。只是,這個(gè)場(chǎng)合與先前的實(shí)施方式2不同,使向負(fù)地址側(cè)的轉(zhuǎn)移成為可能。
在這個(gè)實(shí)施方式3中,隊(duì)列控制器5,為保留從當(dāng)前執(zhí)行著的指令預(yù)先設(shè)定的所定個(gè)數(shù)(例如5個(gè))的相對(duì)地址數(shù)之前的多個(gè)指令而進(jìn)行上述隊(duì)列緩沖器的輸入輸出控制。就是說(shuō)對(duì)輸入指針3和輸出指針4總是至少空開(kāi)5個(gè)地址數(shù)的差來(lái)進(jìn)行各指針3、4的輸出。
在指令譯碼器6中,解讀從隊(duì)列緩沖器2輸入的指令,一旦識(shí)另出所輸入的指令是上述轉(zhuǎn)移指令(BJMP),則將到由這個(gè)轉(zhuǎn)移指令(BJMP)的操作數(shù)部分的相對(duì)地址(該場(chǎng)合為-3)所指定的相對(duì)地址之前存在的指令(該場(chǎng)合是增加指令I(lǐng)NX和INY)作為轉(zhuǎn)移指令(BJMP)的操作數(shù)來(lái)處理。
即,指令譯碼器6對(duì)于隊(duì)列控制器5,根據(jù)轉(zhuǎn)移指令(BJMP)的操作數(shù)部分的相對(duì)地址(該場(chǎng)合為-3),識(shí)別應(yīng)作為操作數(shù)來(lái)處理的指令部分(該場(chǎng)合為INX和INY)的指令數(shù)和指令字長(zhǎng)。
而后,指令譯碼器6將上述作為操作數(shù)處理的指令部分(該場(chǎng)合為INX和INY)的指令字長(zhǎng)與轉(zhuǎn)移指令(BJMP)的指令字長(zhǎng)相加,并將這個(gè)相加結(jié)果附加上負(fù)號(hào)、作為相應(yīng)轉(zhuǎn)移指令(BJMP)的指令字長(zhǎng)輸出到程序計(jì)數(shù)器8。另外,指令譯碼器6將用于禁止刷新的所定的控制信號(hào)輸出到隊(duì)列控制器5。
程序計(jì)數(shù)器8將從指令譯碼器6輸入的轉(zhuǎn)移指令(BJMP)的指令字長(zhǎng)與當(dāng)前的地址值相加后,更新地址值。另外,在隊(duì)列控制器5不用來(lái)自指令譯碼器6的上述控制信號(hào)的輸入來(lái)進(jìn)行隊(duì)列緩沖器2的刷新。
因而,此后,在指令譯碼器6從隊(duì)列緩沖器2讀出由轉(zhuǎn)移指令(BJMP)的操作數(shù)部分所指定的相對(duì)地址(-3)的指令(這個(gè)場(chǎng)合為取指令LDA)并進(jìn)行解讀處理,結(jié)果,進(jìn)行與通常的向負(fù)地址的轉(zhuǎn)移指令同樣的處理。
這樣,在這個(gè)實(shí)施方式3中,由于是將到由轉(zhuǎn)移指令(BJMP)的操作數(shù)部分的相對(duì)地址所指定的向負(fù)地址的轉(zhuǎn)移目的地為止的指令代碼作為轉(zhuǎn)移指令(BJMP)的操作數(shù)處理,所以也可以作為轉(zhuǎn)移指令(BJMP)的1條指令來(lái)對(duì)待到轉(zhuǎn)移目的地為止的指令代碼,結(jié)果,所處理的指令數(shù)就成為可變的。
在此實(shí)施方式3中,由于將轉(zhuǎn)移指令(BJMP)的結(jié)果的操作數(shù)長(zhǎng)作為對(duì)應(yīng)由轉(zhuǎn)移指令(BJMP)的本來(lái)的操作數(shù)部分所指定的相對(duì)地址的長(zhǎng)度,由此進(jìn)行相當(dāng)于向負(fù)地址的轉(zhuǎn)移指令的動(dòng)作,所以轉(zhuǎn)移時(shí)的地址運(yùn)算變得比現(xiàn)在要簡(jiǎn)單,由此就無(wú)須在內(nèi)部設(shè)置復(fù)雜的結(jié)構(gòu)、而能去掉轉(zhuǎn)移時(shí)的不必要的隊(duì)列緩沖器的刷新。因此,可以用簡(jiǎn)便的結(jié)構(gòu)來(lái)減少轉(zhuǎn)移時(shí)的重取,從而可以提高處理速度。
再者,圖4的場(chǎng)合,表示的是由標(biāo)號(hào)(label)所指定的到相對(duì)地址為止存在的指令為2條的場(chǎng)合,當(dāng)然,這個(gè)指令數(shù)也可以是1或3以上。只是,這個(gè)上限是由隊(duì)列緩沖器2中保留的指令個(gè)數(shù)來(lái)規(guī)定的。另外,成為轉(zhuǎn)移指令(BJMP)的操作數(shù)對(duì)象的指令,也不限于圖4所示的增加指令I(lǐng)NX、INY。
下面,依據(jù)圖1和圖5對(duì)本發(fā)明的實(shí)施方式4進(jìn)行說(shuō)明。
在先前的實(shí)施方式1~3中,是將到轉(zhuǎn)移目的地為止存在的指令作為轉(zhuǎn)移指令(BJMP)的操作數(shù)來(lái)處理的,但是這些操作數(shù)處理了的指令實(shí)際上是不執(zhí)行任何指令,所以即使將它們換成空操作指令(NOP)也沒(méi)有問(wèn)題。
例如,在提供CISC(Complex Instruction Set Computer復(fù)雜指令集計(jì)算機(jī))那樣的匯編程序級(jí)的高級(jí)指令集的處理器中,用一條指令的匯編代碼能進(jìn)行非常高級(jí)的處理。其時(shí),如果將操作數(shù)中某些實(shí)際上不執(zhí)行而僅僅記述的指令置換成NOP、并使其能夠執(zhí)行,那么不變更指令數(shù)就能執(zhí)行與先前的實(shí)施方式同樣的轉(zhuǎn)移動(dòng)作。
在這個(gè)實(shí)施方式4中,如圖5所示,在表示轉(zhuǎn)移指令(BJMP)的轉(zhuǎn)移目的地的操作數(shù)部分指定標(biāo)號(hào)(label)。
這種場(chǎng)合,在圖1的指令譯碼器6中,解讀從隊(duì)列緩沖器2輸入的指令,一旦識(shí)別出所輸入的指令是轉(zhuǎn)移指令(BJMP)時(shí),就將到由這個(gè)轉(zhuǎn)移指令(BJMP)的操作數(shù)部分的標(biāo)號(hào)(label)所指定的相對(duì)地址為止存在的指令(該場(chǎng)合為增加指令I(lǐng)NX和INY)都作為NOP來(lái)處理。
即,指令譯碼器6,對(duì)隊(duì)列控制器5發(fā)送用于更新輸出指針4的控制信號(hào)。用這個(gè)控制信號(hào),隊(duì)列控制器5更新輸出指針4。此結(jié)果,由隊(duì)列緩沖器2將下條指令(該場(chǎng)合為INX)輸入到指令譯碼器6。將這個(gè)輸入的指令I(lǐng)NX作為NOP處理。指令譯碼器6,還對(duì)隊(duì)列控制器5發(fā)送控制信號(hào)并更新輸出指針4。隊(duì)列控制器5用這個(gè)控制信號(hào)更新輸出指針4。結(jié)果,從隊(duì)列緩沖器2輸入下條指令(該場(chǎng)合為INY)到指令譯碼器6。將這個(gè)輸入的指令I(lǐng)NY作為NOP處理。
這樣,直到指令譯碼器6檢測(cè)出標(biāo)號(hào)(label)為止,將控制信號(hào)送給隊(duì)列控制器5并讀入到由標(biāo)號(hào)(label)所指定的相對(duì)地址為止存在的指令,并將全部這些作為NOP處理。另外,這個(gè)場(chǎng)合,指令譯碼器6每次從隊(duì)列緩沖器2輸入指令時(shí),都將對(duì)應(yīng)各個(gè)指令的指令字長(zhǎng)發(fā)送給程序計(jì)數(shù)器8。指令譯碼器6,還將用于禁止刷新的所定的控制信號(hào)輸出到隊(duì)列控制器5。
程序計(jì)數(shù)器8,每次從指令譯碼器6送來(lái)指令字長(zhǎng)(該場(chǎng)合為通常的一條指令的字長(zhǎng))時(shí),就將這個(gè)指令字長(zhǎng)與當(dāng)前的地址值相加,更新地址值。另外,隊(duì)列控制器5不用來(lái)自指令譯碼器6的上述控制信號(hào)的輸入進(jìn)行隊(duì)列緩沖器2的刷新。
因而,此后,在指令譯碼器6從隊(duì)列緩沖器2讀出由標(biāo)號(hào)(label)所指定的相對(duì)地址的指令(這個(gè)場(chǎng)合為取指令LDA)并進(jìn)行解讀處理,結(jié)果,進(jìn)行與不改變指令數(shù)的通常的轉(zhuǎn)移指令同樣的處理。
這樣,在這個(gè)實(shí)施方式4中,由于將到由轉(zhuǎn)移指令(BJMP)的標(biāo)號(hào)(label)所指定的轉(zhuǎn)移目的地為止的指令代碼作為NOP處理,所以不改變指令數(shù)就能與無(wú)條件轉(zhuǎn)移同樣獲得轉(zhuǎn)移動(dòng)作。因此,轉(zhuǎn)移時(shí)的地址運(yùn)算變得簡(jiǎn)單,由此就無(wú)須在內(nèi)部設(shè)置復(fù)雜的結(jié)構(gòu)而獲得去掉轉(zhuǎn)移時(shí)的不必要的隊(duì)列緩沖器的刷新。因此,可以用簡(jiǎn)便的結(jié)構(gòu)來(lái)減少轉(zhuǎn)移時(shí)的重取,從而可以提高處理速度。
再者,圖5的場(chǎng)合,表示的是到由標(biāo)號(hào)(label)所指定的轉(zhuǎn)移目的地為止存在的指令為2條的場(chǎng)合,當(dāng)然這個(gè)指令數(shù)也可以是1或3條以上。另外,成為NOP處理對(duì)象的指令,也不限于圖5所示的增加指令I(lǐng)NX、INY。
然而,在上述各個(gè)實(shí)施方式中,指令譯碼器6在輸入了轉(zhuǎn)移指令(BJMP)時(shí),對(duì)隊(duì)列控制器5輸出用于禁止刷新的所定的控制信號(hào),但特別要指出的是,不用對(duì)隊(duì)列控制器5輸出控制信號(hào)而禁止在隊(duì)列緩沖器2的刷新也是可以的。這種場(chǎng)合,隊(duì)列控制器5在輸入了控制信號(hào)時(shí)要進(jìn)行刷新。
如上所述,根據(jù)本發(fā)明,追加新的轉(zhuǎn)移指令(BJMP)、將到由這個(gè)轉(zhuǎn)移指令(BJMP)所指定的轉(zhuǎn)移目的地之前的指令為止作為相應(yīng)轉(zhuǎn)移指令(BJMP)的操作數(shù)處理,由此使隊(duì)列緩沖器內(nèi)的指令數(shù)成為可變,將包含該操作數(shù)部分的相應(yīng)轉(zhuǎn)移指令的指令字長(zhǎng)輸出到程序計(jì)數(shù)器并更新程序計(jì)數(shù)器的地址,同時(shí)在此轉(zhuǎn)移指令(BJMP)時(shí)不進(jìn)行隊(duì)列緩沖器的刷新,所以轉(zhuǎn)移時(shí)的地址運(yùn)算變得簡(jiǎn)單,由此就無(wú)須在內(nèi)部設(shè)置復(fù)雜的結(jié)構(gòu)而可以去掉轉(zhuǎn)移時(shí)的不必要的隊(duì)列緩沖器的刷新。因此可以用簡(jiǎn)便的結(jié)構(gòu)來(lái)減少轉(zhuǎn)移時(shí)的重取,可以提高處理速度。
下面的發(fā)明相關(guān)的微處理器,在轉(zhuǎn)移目的地的指定中能采用標(biāo)號(hào),所以不必指定到轉(zhuǎn)移目的地為止的相對(duì)地址就可以進(jìn)行轉(zhuǎn)移。另外,可以用簡(jiǎn)便的結(jié)構(gòu)來(lái)減少轉(zhuǎn)移時(shí)的重取,可以提高處理速度。
下面的發(fā)明相關(guān)的微處理器,在轉(zhuǎn)移目的地的指定中,能指定相應(yīng)轉(zhuǎn)移指令與轉(zhuǎn)移目的地的相對(duì)地址,可以用簡(jiǎn)便的結(jié)構(gòu)來(lái)減少轉(zhuǎn)移時(shí)的重取,可以提高處理速度。
下面的發(fā)明相關(guān)的微處理器,進(jìn)行上述隊(duì)列緩沖器的輸入輸出控制以便保留從當(dāng)前所執(zhí)行的指令預(yù)先設(shè)定的所定的相對(duì)地址數(shù)之前的多個(gè)指令,同時(shí)可以指定負(fù)的相對(duì)地址,所以可以向負(fù)地址側(cè)進(jìn)行轉(zhuǎn)移。而且,可以用簡(jiǎn)便的結(jié)構(gòu)來(lái)減少轉(zhuǎn)移時(shí)的重取,進(jìn)而提高處理速度。
下面發(fā)明相關(guān)的微處理器,追加新的轉(zhuǎn)移指令(BJMP),將到由這個(gè)轉(zhuǎn)移指令(BJMP)所指定的轉(zhuǎn)移目的地之前的指令為止作為NOP指令處理,將相應(yīng)轉(zhuǎn)移指令和NOP指令的指令字長(zhǎng)輸出到上述程序計(jì)數(shù)器并更新程序計(jì)數(shù)器的地址,同時(shí)在此轉(zhuǎn)移指令(BJMP)時(shí),不進(jìn)行隊(duì)列緩沖器的刷新,所以轉(zhuǎn)移時(shí)的地址運(yùn)算變得簡(jiǎn)單,而且,轉(zhuǎn)移時(shí)也沒(méi)有變更指令數(shù)。由此就無(wú)須在內(nèi)部設(shè)置復(fù)雜的結(jié)構(gòu)而可以去掉轉(zhuǎn)移時(shí)的不必要的隊(duì)列緩沖器的刷新。因此,可以用簡(jiǎn)便的結(jié)構(gòu)來(lái)減少轉(zhuǎn)移時(shí)的重取,進(jìn)而提高處理速度。
權(quán)利要求
1.一種微處理器,其特征在于包括主存儲(chǔ)器;隊(duì)列緩沖器,存儲(chǔ)從這個(gè)主存儲(chǔ)器予取的指令;程序計(jì)數(shù)器,生成存儲(chǔ)著主存儲(chǔ)器上的下條要執(zhí)行的指令的地址;指令譯碼器,解讀從上述隊(duì)列緩沖器輸出的指令;隊(duì)列控制器單元,采用上述程序計(jì)數(shù)器的輸出進(jìn)行對(duì)上述隊(duì)列緩沖器的指令的輸入輸出控制,其中,上述指令譯碼器,一旦識(shí)別出從上述隊(duì)列緩沖器輸入的指令是所定的轉(zhuǎn)移指令,則將到由這個(gè)轉(zhuǎn)移指令所指定的轉(zhuǎn)移目的地之前的指令為止作為相應(yīng)轉(zhuǎn)移指令的操作數(shù)來(lái)處理,將包含該操作數(shù)部分的相應(yīng)轉(zhuǎn)移指令的指令字長(zhǎng)輸出到上述程序計(jì)數(shù)器,并且在更新程序計(jì)數(shù)器的地址的同時(shí),不進(jìn)行上述隊(duì)列緩沖器的刷新。
2.權(quán)利要求1記載的微處理器,其特征在于在上述轉(zhuǎn)移目的地的指定中,使用標(biāo)號(hào)。
3.權(quán)利要求1記載的微處理器,其特征在于在上述轉(zhuǎn)移目的地的指定中,指定相應(yīng)轉(zhuǎn)移指令和轉(zhuǎn)移目的地之間的相對(duì)地址。
4.權(quán)利要求3記載的微處理器,其特征在于上述隊(duì)列控制器單元為了保留從當(dāng)前所執(zhí)行的指令到預(yù)先設(shè)定的所定個(gè)數(shù)的相對(duì)地址數(shù)的之前的多個(gè)指令而進(jìn)行上述隊(duì)列緩沖器的輸入輸出控制,作為上述相對(duì)地址可以指定負(fù)的相對(duì)地址。
5.一種微處理器,其特征在于包括主存儲(chǔ)器;隊(duì)列緩沖器,存儲(chǔ)從這個(gè)主存儲(chǔ)器予取的指令;程序計(jì)數(shù)器,生成存儲(chǔ)著主存儲(chǔ)器上的下條要執(zhí)行的指令的地址;指令譯碼器,解讀從上述隊(duì)列緩沖器輸出的指令;隊(duì)列控制器單元,采用上述程序計(jì)數(shù)器的輸出進(jìn)行對(duì)上述隊(duì)列緩沖器的指令的輸入輸出控制,其中,上述指令譯碼器,一旦識(shí)別出從上述隊(duì)列緩沖器輸入的指令是所定的轉(zhuǎn)移指令,則將到由這個(gè)轉(zhuǎn)移指令所指定的轉(zhuǎn)移目的地的之前的指令為止作為NOP指令處理,將相應(yīng)轉(zhuǎn)移指令和上述NOP指令部分的指令字長(zhǎng)輸出到上述程序計(jì)數(shù)器,并且在更新程序計(jì)數(shù)器的地址的同時(shí),不進(jìn)行上述隊(duì)列緩沖器的刷新。
全文摘要
獲得用簡(jiǎn)便的結(jié)構(gòu)便可以減少轉(zhuǎn)移時(shí)的重取并使處理速度提高的微處理器。通過(guò)追加新的轉(zhuǎn)移指令(BJMP)、將到由此轉(zhuǎn)移指令(BJMP)所指定的轉(zhuǎn)移目的地之前的指令為止作為相應(yīng)轉(zhuǎn)移指令(BJMP)的操作數(shù)來(lái)處理,使指令數(shù)成為可變。將包含作為上述操作數(shù)處理過(guò)的指令的相應(yīng)轉(zhuǎn)移指令的指令字長(zhǎng)輸出到程序計(jì)數(shù)器8,并且在更新程序計(jì)數(shù)器8的地址的同時(shí),此轉(zhuǎn)移指令(BJMP)時(shí)不進(jìn)行隊(duì)列緩沖器2的刷新。
文檔編號(hào)G06F9/32GK1385782SQ0210187
公開(kāi)日2002年12月18日 申請(qǐng)日期2002年1月16日 優(yōu)先權(quán)日2001年5月11日
發(fā)明者原口喜行 申請(qǐng)人:三菱電機(jī)株式會(huì)社