專利名稱::執(zhí)行快速重復(fù)載入數(shù)據(jù)串操作的微處理器的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及微處理器指令集架構(gòu),特別是涉及微處理器的重復(fù)載入數(shù)據(jù)串指令。
背景技術(shù):
:x86指令集架構(gòu)包括一個(gè)LODS指令,其將字節(jié)、字符組、或雙字符組由DE=ESI所指定的一存儲(chǔ)器位置載入至EAX。x86指令集架構(gòu)也包括一REP前置碼,其允許程序指定在ECX寄存器中的總數(shù),用以規(guī)定將被執(zhí)行的LODS指令的迭代(iteration)數(shù)量。于每一迭代時(shí),ESI寄存器增加,而ECX寄存器減少(此外,具有另一模式,其減少ESI寄存器而不是增加ESI寄存器)。用來實(shí)現(xiàn)REPLODS指令的一個(gè)方式是采用微碼(microcode)。舉例來說,假設(shè)REPLODS指令規(guī)定字節(jié)尺寸數(shù)據(jù)(即REPL0DSB),此微碼可包括一循環(huán),其本體由DS:ESI中的有效地址載入、增加ESI寄存器、并減少ECX寄存器,使得此循環(huán)執(zhí)行了在ECX寄存器內(nèi)所規(guī)定的次數(shù),例如表1中所是的虛擬碼O^seudo-Code)例子。looploadAL,DS:ESIincESIdecECXdnzloop;branchtoloopifECXisnon-zero表1因此,舉例來說,假使ECX寄存器的初始值為8000,處理器將執(zhí)行8000次的載入指令。
發(fā)明內(nèi)容本發(fā)明提供一種微處理器,用來處理一重復(fù)載入數(shù)據(jù)串指令,其中,重復(fù)載入數(shù)據(jù)串指令用來指定在一存儲(chǔ)器中一數(shù)據(jù)字節(jié)的數(shù)據(jù)串被載入至微處理器的一架構(gòu)寄存器中。微處理器包括存儲(chǔ)器子系統(tǒng)以及一微碼,而存儲(chǔ)器子系統(tǒng)包括一高速緩沖存儲(chǔ)器。微處理器呼叫微碼來回應(yīng)遭遇重復(fù)載入數(shù)據(jù)串指令,微碼包括一系列的多個(gè)保證預(yù)取微指令,用以將一系列的多個(gè)高速緩沖行擷取至高速緩沖存儲(chǔ)器,該高速緩沖行是由重復(fù)載入數(shù)據(jù)串指令所指定的數(shù)據(jù)字節(jié)的數(shù)據(jù)串所隱含。即使在多個(gè)架構(gòu)限制之下,存儲(chǔ)器子系統(tǒng)仍可保證每一保證預(yù)取微指令所指定的高速緩沖行將被擷取至高速緩沖存儲(chǔ)器。本發(fā)明也提供一種由一微處理器所執(zhí)行的方法,此微處理器處理一重復(fù)載入數(shù)據(jù)串微指令,其中重復(fù)載入數(shù)據(jù)串指令用來指定在一存儲(chǔ)器中一數(shù)據(jù)字節(jié)的數(shù)據(jù)串,被載入至微處理器的一架構(gòu)寄存器中。此方法包括對(duì)重復(fù)載入數(shù)據(jù)串微指令進(jìn)行解碼。此方法也包括執(zhí)行一系列的多個(gè)保證預(yù)取微指令,以將一系列的多個(gè)高速緩沖行擷取至一高速緩沖存儲(chǔ)器,來回應(yīng)對(duì)重復(fù)載入數(shù)據(jù)串微指令進(jìn)行解碼,其中高速緩沖行是由重復(fù)載入數(shù)據(jù)串指令所指定的數(shù)據(jù)字節(jié)的數(shù)據(jù)串所隱含。執(zhí)行一系列的保證預(yù)取微指令包括即使在多個(gè)架構(gòu)限制下,仍可保證每一保證預(yù)取微指令所指定的高速緩沖行將被擷取至高速緩沖存儲(chǔ)ο本發(fā)明還提供一種載入方法,用以將一數(shù)據(jù)組載入至一微處理器的一高速緩沖存儲(chǔ)器。此載入方法包括執(zhí)行一程序,此程序包括在微處理器上的一重復(fù)載入數(shù)據(jù)串指令,此重復(fù)載入數(shù)據(jù)串指令指定將被載入至高速緩沖存儲(chǔ)器的數(shù)據(jù)組。此方法也包括由微處理器來呼叫一微碼,來回應(yīng)重復(fù)載入數(shù)據(jù)串指令的解碼,此微碼包括一系列的多個(gè)保證預(yù)取微指令,用以將一系列的多個(gè)高速緩沖行擷取至高速緩沖存儲(chǔ)器,而這些高速緩沖行是由重復(fù)載入數(shù)據(jù)串指令所指定的數(shù)據(jù)組所隱含。微處理器可確保即使在多個(gè)架構(gòu)限制之下,每一保證預(yù)取微指令所指定的高速緩沖行仍將被擷取至高速緩沖存儲(chǔ)器。本發(fā)明還提供一種載入方法,用以將一數(shù)據(jù)組載入至一微處理器的一高速緩沖存儲(chǔ)器。此載入方法包括執(zhí)行一程序,此程序包括一系列的多個(gè)保證預(yù)取微指令。每一保證預(yù)取微指令用來將一系列的多個(gè)高速緩沖行中的一個(gè)擷取至高速緩沖存儲(chǔ)器,且這些高速緩沖行由該數(shù)據(jù)組所隱含。微處理器可確保在多個(gè)架構(gòu)限制之下,保證每一保證預(yù)取微指令所指定的高速緩沖行將被擷取至高速緩沖存儲(chǔ)器。本發(fā)明還提供一種計(jì)算機(jī)程序產(chǎn)品,用以被至少一計(jì)算機(jī)可讀媒體所編碼以與一計(jì)算機(jī)裝置使用。此計(jì)算機(jī)程序產(chǎn)品包括一計(jì)算機(jī)可讀程序碼,此計(jì)算機(jī)可讀程序碼包含于計(jì)算機(jī)可讀媒體,用以指定一微處理器來處理一重復(fù)載入數(shù)據(jù)串指令,其中該重復(fù)載入數(shù)據(jù)串指令用以指定在一存儲(chǔ)器中,一數(shù)據(jù)字節(jié)的數(shù)據(jù)串被載入至微處理器的一架構(gòu)寄存器。計(jì)算機(jī)可讀程序碼包括一第一程序碼,用以指定一存儲(chǔ)器子系統(tǒng),而此存儲(chǔ)器子系統(tǒng)包括一高速緩沖存儲(chǔ)器。計(jì)算機(jī)可讀程序碼也包括一第二程序碼,用以指定一微碼。微處理器呼叫微碼來回應(yīng)遭遇重復(fù)載入數(shù)據(jù)串指令,此微碼包括一系列的多個(gè)保證預(yù)取微指令以將一系列的多個(gè)高速緩沖行擷取至高速緩沖存儲(chǔ)器,且這些高速緩沖行是由重復(fù)載入數(shù)據(jù)串指令所指定的數(shù)據(jù)字節(jié)的數(shù)據(jù)串所隱含。在多個(gè)架構(gòu)限制內(nèi),存儲(chǔ)器子系統(tǒng)保證每一保證預(yù)取微指令所指定的高速緩沖行將被擷取至高速緩沖存儲(chǔ)器。圖1繪示本發(fā)明一實(shí)施例的微處理器的方塊圖;圖2的表單示意圖1的存儲(chǔ)器子系統(tǒng)在不同狀況下執(zhí)行保證預(yù)取微指令時(shí),存儲(chǔ)器子系統(tǒng)所執(zhí)行的操作;圖3示意一虛擬碼編碼表單,其列出圖1的微處理器的一部份快速數(shù)據(jù)串載入微碼;以及圖4示意圖1的微處理器的操作流程圖,以執(zhí)行保證預(yù)取微指令。附圖符號(hào)說明100微處理器;102指令高速緩沖存儲(chǔ)器;104指令轉(zhuǎn)譯器;106寄存器別名表(RAT);108保留站;114引退單元;112多個(gè)執(zhí)行單元與存儲(chǔ)器子系統(tǒng);lie重排序緩沖器(ROB);118微碼單元;122填充隊(duì)列;124數(shù)據(jù)高速緩沖存儲(chǔ)器;1總線接口單元(BIU);128控制邏輯單元;132重復(fù)數(shù)據(jù)串搬移巨指令;134、136微指令;135處理器總線;138一般目的寄存器(GPR);142快速載入數(shù)據(jù)串微碼;144轉(zhuǎn)譯后備緩沖器(TLB);402、404、406、408、412、414、416、418方法步驟。具體實(shí)施例方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉實(shí)施例,并結(jié)合附圖詳細(xì)說明如下。本文敘述微處理器的實(shí)施例,是微處理器在其指令集中包括保證預(yù)取指令(guaranteedprefetch),其可被微碼,例如x86REPLODS指令來使用,以采用比現(xiàn)有的微碼更加快速的方法來實(shí)現(xiàn)重復(fù)載入數(shù)據(jù)串指令。執(zhí)行本發(fā)明實(shí)施例所述預(yù)取指令的REPLODS指令的效益,在于其提供非??焖俚姆椒ńo一程序,以將程序所指定的相連數(shù)據(jù)組,由系統(tǒng)存儲(chǔ)器擷取至微處理器的數(shù)據(jù)高速緩沖存儲(chǔ)器。由前述表1的現(xiàn)有微碼循環(huán)可注意到,AL寄存器會(huì)被每一接續(xù)的載入指令來重寫(clcAber),使得最后載入指令所指定的來源數(shù)據(jù)結(jié)束于AL寄存器,因此REPLODS指令顯然不是非常有用的指令。但藉由將數(shù)據(jù)串的最后字節(jié)指定為一來源地址的單一LODS指令、并藉由將零載入至ECX寄存器的一指令、以及藉由在數(shù)據(jù)串的最后字節(jié)之后,將下一存儲(chǔ)器位置的地址載入至ESI寄存器的一指令,亦可實(shí)現(xiàn)上述在AL寄存器最后數(shù)值(亦即儲(chǔ)存最后載入指令所指定的來源數(shù)據(jù))的相同目的。然而,就像大多述的微處理器架構(gòu)一般,x86架構(gòu)允許系統(tǒng)軟件去指定存儲(chǔ)器的可高速緩沖區(qū)域,此處理器被允許來存取存儲(chǔ)器,以擷取例如由REPLODS指令所產(chǎn)生的程序存儲(chǔ)器存取所隱含的整體高速緩沖行。因此,即使AL寄存器在每一迭代(iteration)中正被重寫,但假使REPLODS指令所指定的數(shù)據(jù)串處于一可高速緩沖區(qū)域,那么REPLODS指令的副作用則是此處理器將很可能擷取高速緩沖行數(shù)據(jù)串的每一未命中高速緩沖行。圖1表示根據(jù)本發(fā)明實(shí)施例的微處理器100。參閱圖1,微處理器100是一個(gè)管線微處理器(pipelinedmicroprocessor),包括指令高速緩沖存儲(chǔ)器102,用以高速緩沖多個(gè)程序指令,這些程序指令在此處也稱為巨指令(macroinstruction)132。指令高速緩沖存儲(chǔ)器102提供巨指令132至指令轉(zhuǎn)譯器104。指令轉(zhuǎn)譯器104對(duì)每一巨指令132進(jìn)行解碼,且將大部分的巨指令132轉(zhuǎn)譯為一或多個(gè)微指令(microinstruction)134。轉(zhuǎn)譯后的微指令134可包括一般預(yù)取(normalprefetch)微指令,其中微處理器100僅將一般預(yù)取視為暗示(hint),指令轉(zhuǎn)譯器104更用以識(shí)別哪些巨指令132會(huì)被微處理器100的微碼單元118的微碼142所執(zhí)行。當(dāng)指令轉(zhuǎn)譯器104遇到于微碼142所執(zhí)行的巨指令132時(shí),指令轉(zhuǎn)譯器104將轉(zhuǎn)移控制權(quán)給微碼單元118的微定序器(microseqUencer)(未顯示),其中該微定序器自微碼單元118的微碼存儲(chǔ)器(未顯示)內(nèi)擷取微碼142的多個(gè)微指令136,并分派(dispatch)這些微指令136以供執(zhí)行。值得一提的是,微碼142包括用以執(zhí)行重復(fù)載入數(shù)據(jù)串巨指令132的程序碼(此處稱為快速載入數(shù)據(jù)串微碼14,例如x86架構(gòu)中用來做保證預(yù)存取微指令的REPLODS指令。微指令136可包括載入以及保證預(yù)取微指令等等。一寄存器別名表(registeraliastable,RAT)106接收來自指令轉(zhuǎn)譯器104的轉(zhuǎn)譯后微指令134、以及來自微碼單元118的快速載入數(shù)據(jù)串微碼142中的微指令136,且由RAT106產(chǎn)生微指令134和136的相依性(dependencies)。在一實(shí)施例中,微處理器100是一個(gè)非循序(out-of-order)執(zhí)行的微處理器,且RAT106是微處理器100管線中,按程序順序接收微指令的最后部分。RAT106整合(incorporate)微指令的程序順序,而該程序順序被重排序緩沖器(reorderbuffer,ROB)116所使用,以根據(jù)程序順序來引退微指令134和136。RAT106在分派微指令134和136給保留站(reservationstation)108之前,會(huì)先依照程序順序在ROB116內(nèi)配置一字段(entry)給每一個(gè)微指令134和136。ROB116耦接至RAT106、保留站108、多個(gè)執(zhí)行單元與存儲(chǔ)器子系統(tǒng)112、以及引退單元114。保留站108接收來自RAT106的微指令134和136,當(dāng)根據(jù)RAT106所產(chǎn)生的相依性信息判斷微指令134和136的來源運(yùn)算符為可用(available)、且當(dāng)多個(gè)執(zhí)行單元112也可用時(shí),保留站108將微指令134和136發(fā)布至這些執(zhí)行單元112。微處理器100也包括多個(gè)一般目的寄存器(generalpurposeregister,GPR)138,在x86的實(shí)施例中,其包括x86AL、ECX、EDI、及ESI寄存器。引退單元114按照微指令134和136在ROB116內(nèi)的程序順序來引退微指令Π4和136。值得一提的是,引退單元114會(huì)檢查在ROB116內(nèi)最舊指令字段的多個(gè)標(biāo)志,以判斷微指令134和136是否需要被重新執(zhí)行(replay)、或判斷是否需要引發(fā)例外處理程序(exception)。存儲(chǔ)器子系統(tǒng)112包括轉(zhuǎn)譯后備緩沖器(TranslationLookasideBuffer,TLB)144、數(shù)據(jù)高速緩沖存儲(chǔ)器124、填充隊(duì)列(fillqueue)122、總線接口單元(businterfaceunit,BIU)126、以及控制邏輯單元128,其中,控制邏輯單元1耦接于TLB144、數(shù)據(jù)高速緩沖存儲(chǔ)器124、填充隊(duì)列122、以及BIU126。BIU1將微處理器100介接至一處理器總線,該處理器總線耦接至微處理器100所在(reside)的計(jì)算機(jī)系統(tǒng)的系統(tǒng)存儲(chǔ)器(未顯示)。系統(tǒng)存儲(chǔ)器儲(chǔ)存重復(fù)載入數(shù)據(jù)串巨指令所要載入的數(shù)據(jù)字節(jié),而這些數(shù)據(jù)字節(jié)是由一來源地址載入至一目標(biāo)寄存器,例如x86AL寄存器之中。TLB144儲(chǔ)存(cache)存儲(chǔ)器頁(yè)面的虛擬至實(shí)體地址轉(zhuǎn)換。數(shù)據(jù)高速緩沖存儲(chǔ)器1儲(chǔ)存自系統(tǒng)存儲(chǔ)器所讀取的數(shù)據(jù),例如重復(fù)載入數(shù)據(jù)串巨指令132的數(shù)據(jù)串。填充隊(duì)列122具有一定數(shù)量的高速緩沖行緩沖器,每一高速緩沖行緩沖器可由存儲(chǔ)器子系統(tǒng)112來分別配置,用以從BIU1接收自系統(tǒng)存儲(chǔ)器讀出的高速緩沖行,例如由保證預(yù)取微指令所預(yù)取的一高速緩沖行的數(shù)據(jù)串,該數(shù)據(jù)串為重復(fù)載入數(shù)據(jù)串巨指令132所指定的。在一實(shí)施例中,填充隊(duì)列122緩沖器的數(shù)量為12。存儲(chǔ)器子系統(tǒng)112可執(zhí)行保證預(yù)取微指令、一般預(yù)取微指令、以及載入微指令等8等。在某些狀況下,如圖2的表單所示,存儲(chǔ)器子系統(tǒng)112可能想要致使微處理器100重新執(zhí)行某個(gè)微指令(例如一保證預(yù)取微指令)、或者致使微處理器100引發(fā)例外處理程序來回應(yīng)某一微指令。為了完成重新執(zhí)行的操作,存儲(chǔ)器子系統(tǒng)112對(duì)保證預(yù)取微指令所對(duì)應(yīng)的ROB116字段設(shè)定一重新執(zhí)行標(biāo)志,以示意此保證預(yù)取微指令必須重新執(zhí)行。接著,當(dāng)此保證預(yù)取微指令準(zhǔn)備引退時(shí)(例如此保證預(yù)取微指令為ROB116中最舊的指令),R0B116重新執(zhí)行保證預(yù)取微指令,并且將晚于此微指令的所有微指令送回至保留站108,使得其來源運(yùn)算符被重新擷取,并重新發(fā)布(issue)被送回的微指令至執(zhí)行單元與存儲(chǔ)器子系統(tǒng)112來執(zhí)行。為了完成例外處理程序,存儲(chǔ)器子系統(tǒng)112對(duì)保證預(yù)取微指令所對(duì)應(yīng)的ROB116字段設(shè)定一例外標(biāo)志,以示意此保證預(yù)取微指令將引發(fā)例外狀況(exceptioncondition)0接著,當(dāng)保證預(yù)取微指令準(zhǔn)備引退時(shí),ROB116引發(fā)一例外處理程序,其是由微碼單元118中的例外處理管理程序(exertionhandler)所執(zhí)行,用以將例外狀況傳達(dá)給快速載入數(shù)據(jù)串微碼142。保證預(yù)取微指令與一般預(yù)取微指令的相異之處在于,只要指令架構(gòu)允許,在幾乎任何狀況下,保證預(yù)取微指令都能保證特定高速緩沖行會(huì)被擷取至數(shù)據(jù)高速緩沖存儲(chǔ)器124。圖2的表單列出在不同狀況下執(zhí)行一保證預(yù)取微指令時(shí),存儲(chǔ)器子系統(tǒng)112所執(zhí)行的操作。(1)假使保證預(yù)取微指令正預(yù)取的存儲(chǔ)器頁(yè)面(page)的存儲(chǔ)器特性為非可緩存(uncacheable),由于指令架構(gòu)不允許預(yù)取非可緩存的存儲(chǔ)器頁(yè)面,因此存儲(chǔ)器子系統(tǒng)112不會(huì)預(yù)取高速緩沖行,但是相對(duì)地會(huì)致使保證預(yù)取微指令產(chǎn)生例外處理程序,讓微碼單元118可以一般方式來執(zhí)行數(shù)據(jù)串載入,也就是以非預(yù)取的方式來進(jìn)行。(2)假使填充隊(duì)列122被填滿時(shí),存儲(chǔ)器子系統(tǒng)112將使保證預(yù)取微指令被重新執(zhí)行,直到填充隊(duì)列122的一字段可被成功地配置。(3)假使保證預(yù)取微指令與儲(chǔ)存操作或監(jiān)測(cè)(snoop)操作發(fā)生沖突(例如存取同一地址)時(shí),存儲(chǔ)器子系統(tǒng)112將使保證預(yù)取微指令被重新執(zhí)行,直到不再有沖突發(fā)生。(4)假使存儲(chǔ)器子系統(tǒng)112遭遇一序列執(zhí)行的狀況(例如預(yù)取微指令落后于一序列指令,例如一鎖定操作),其將重新執(zhí)行保證預(yù)取微指令。(5)假使保證預(yù)取微指令的虛擬地址未命中(miss)TLB144中,存儲(chǔ)器子系統(tǒng)112不會(huì)預(yù)取高速緩沖行,且將使保證預(yù)取微指令產(chǎn)生一個(gè)例外處理程序。在其他實(shí)施例中,當(dāng)保證預(yù)取微指令的虛擬地址未命中TLB144時(shí),存儲(chǔ)器子系統(tǒng)112將執(zhí)行頁(yè)表查找(tablewalk)并重新執(zhí)行保證預(yù)取微指令。圖3表示一虛擬碼編碼表單,其列出圖1的微處理器100的一部份快速載入數(shù)據(jù)串微碼142。參閱圖3,在一實(shí)施例中,假設(shè)PRELODS指令所指定的尺寸為一個(gè)字節(jié),例如REPL0DSB,且假設(shè)一高速緩沖行的尺寸為64字節(jié)。首先,此編碼計(jì)算在DS:ESI寄存器中所指定的有效地址,且將其分配給一來源地址變數(shù)。此編碼接著計(jì)算將被載入的數(shù)據(jù)串的最后字節(jié)的存儲(chǔ)器地址,而此計(jì)算方式為將來源地址數(shù)值加上ECX寄存器(其指定在數(shù)據(jù)串中的字節(jié)數(shù)量)所指定的數(shù)值減去1,并將此存儲(chǔ)器位置指定為一最后字節(jié)地址變數(shù)。此編碼接著計(jì)算高速緩沖行的數(shù)量,以作為由高速緩沖行尺寸所劃分的數(shù)據(jù)串的字節(jié)數(shù)量(由ECX寄存器所指定),且將此數(shù)量指定為可變高速緩沖行總數(shù)。此外,假使字節(jié)數(shù)量并非等9于高速緩沖行尺寸的整數(shù)倍或者假使數(shù)據(jù)串并非開始于一高速緩沖行邊界,此指令將增加可變高速緩沖行總數(shù)。此編碼接著循環(huán)執(zhí)行對(duì)應(yīng)來源地址的一保證預(yù)取微指令,且以一高速緩沖行的尺寸來增加來源地址。此循環(huán)能因此保證REPLODS指令指定的數(shù)據(jù)串所隱含的所有高速緩沖行,皆能被預(yù)取至數(shù)據(jù)高速緩沖存儲(chǔ)器124。值得注意的是,在一實(shí)施例中,保證預(yù)取微指令的循環(huán)將展開(unroll)為一系列的連續(xù)保證預(yù)取微指令,且根據(jù)高速緩沖行總數(shù)的數(shù)值,此編碼跳躍進(jìn)入至所展開的一系列的連續(xù)保證預(yù)取微指令中適當(dāng)位置。最后,此編碼將位于最后字節(jié)地址上的字節(jié)載入至AL寄存器,且依據(jù)REPLODSB指令的執(zhí)行來將結(jié)構(gòu)狀態(tài)更新至其適當(dāng)數(shù)值,亦即將ECX數(shù)值加入至ESI寄存器,且ECX寄存器被指定為數(shù)值零。中斷程序(interrupt)被禁能,以避免在圖3的編碼執(zhí)行期間執(zhí)行。由于AL寄存器將被重寫(clobber)并且只有來自數(shù)據(jù)串的最后字節(jié)將可見(visible)于AL寄存器中(如同可被觀察到),于是微碼142得以在結(jié)束之前都不必實(shí)際載入一數(shù)值至AL寄存器。圖4表示圖1的微處理器100的操作流程的一實(shí)施例。流程開始于步驟402。在步驟402中,微碼單元118自微碼ROM中擷取一保證預(yù)取微指令,RAT106在ROB116內(nèi)配置一字段給保證預(yù)取微指令,且保留站108將保證預(yù)取微指令發(fā)布給存儲(chǔ)器子系統(tǒng)112以供執(zhí)行。流程前進(jìn)至步驟404。在步驟404中,存儲(chǔ)器子系統(tǒng)112執(zhí)行在保證預(yù)取微指令上的狀況核對(duì)(conditioncheck)。值得一提的是,存儲(chǔ)器子系統(tǒng)112核對(duì)在圖2的表格中所指定的任何狀況。流程前進(jìn)至步驟406。在步驟406中,存儲(chǔ)器子系統(tǒng)112判斷保證預(yù)取微指令是否已引起導(dǎo)致一重新執(zhí)行狀況。重新執(zhí)行狀況包括,但非限定于此填充隊(duì)列122填滿;發(fā)生TLB144未命中,其要求存儲(chǔ)器頁(yè)面的頁(yè)表查找(tablewalk);保證預(yù)取地址與儲(chǔ)存操作或監(jiān)測(cè)操作發(fā)生沖突;存儲(chǔ)器子系統(tǒng)112遭遇一序列執(zhí)行的狀況。假使保證預(yù)取微指令已引發(fā)一重新執(zhí)行狀況,流程將返回至步驟404,否則流程將前進(jìn)至判斷步驟408。在判斷步驟408中,存儲(chǔ)器子系統(tǒng)112判斷保證預(yù)取微指令是否已引發(fā)一例外狀況。例外狀況包括但非限定于此保證預(yù)取指令正存取具有非可緩存特性(Uncacheabletrait)的存儲(chǔ)器區(qū)域;發(fā)生TLB114未命中。假使保證預(yù)取微指令已引發(fā)一例外狀況,流程前進(jìn)至步驟412,否則流程前進(jìn)至步驟414。在步驟412中,存儲(chǔ)器子系統(tǒng)112對(duì)保證預(yù)取微指令所對(duì)應(yīng)的ROB116字段設(shè)定一例外標(biāo)志,使得當(dāng)保證預(yù)取微指令準(zhǔn)備引退時(shí),ROB116將引發(fā)非架構(gòu)性例外處理程序(non-architecturalexc印tion),這將由快速載入數(shù)據(jù)串微碼142的例外處理管理程序執(zhí)行。在保證預(yù)取微指令正存取具有非可緩存特性的存儲(chǔ)器區(qū)域的狀況下,微碼142回復(fù)為與上述表1所述的現(xiàn)有編碼相類似的一非預(yù)取例行程序。在保證預(yù)取微指令引發(fā)TLB144未命中的狀況下,微碼142將引發(fā)頁(yè)表查找,且接著回復(fù)執(zhí)行(resume)圖3的快速數(shù)據(jù)串載入編碼。流程結(jié)束于步驟412。在步驟414中,存儲(chǔ)器子系統(tǒng)112分配填充隊(duì)列112緩沖器給保證預(yù)取微指令。流程前進(jìn)至步驟416。在步驟416中,存儲(chǔ)器子系統(tǒng)112完成保證預(yù)取微指令。亦即,對(duì)于保證預(yù)取微指令,存儲(chǔ)器子系統(tǒng)112在ROB116字段設(shè)定一完成標(biāo)志。流程前進(jìn)至步驟418。在步驟418中,BIU126啟動(dòng)在處理器總線1;35上的數(shù)據(jù)傳輸(transaction),以將保證預(yù)取微指令所指定的高速緩沖行擷取至在步驟414所分配的填充隊(duì)列122緩沖器。流程前進(jìn)至步驟422。在步驟422中,保證預(yù)取微指令變成在微處理器100中最舊的指令,且引退單元114分別引退保證預(yù)取指令。亦即,引退單元114釋放在步驟402中所分配的ROB116字段。流程前進(jìn)至步驟424。在步驟424中,填充隊(duì)列122緩沖器接收來自BIU126的高速緩沖行,以回應(yīng)在步驟418中所啟動(dòng)的處理器總線135的數(shù)據(jù)傳輸(transaction)。填充隊(duì)列122接著將高速緩沖行引退并傳送至數(shù)據(jù)高速緩沖存儲(chǔ)器124。流程前進(jìn)至步驟426。在步驟426中,存儲(chǔ)器子系統(tǒng)112釋放在步驟414中所分配的填充隊(duì)列122緩沖器。流程結(jié)束于步驟426。由前述可注意到,此處所述藉由使用保證預(yù)取指令來執(zhí)行快速REPLODS指令的實(shí)施例,是由微處理器100所執(zhí)行,且微處理器100可比現(xiàn)有方法(例如上述表1的編碼所采用的方法)更能快速地執(zhí)行。由于表1的編碼將致使微處理器100擷取、發(fā)布、且執(zhí)行小量載入指令,所以當(dāng)數(shù)據(jù)高速緩沖存儲(chǔ)器1中的載入未命中時(shí),在微處理器100管線中的執(zhí)行將陷于停頓以等待未命中的載入數(shù)據(jù)(除了真正最后載入以外,因?yàn)橹辉谧詈髮?duì)目標(biāo)寄存器做覆寫(overwritten)的操作而已),而且具有有限數(shù)量字段的ROB116將包含許多對(duì)于相同高速緩沖行的載入。在此情況下,即使在最佳的狀況中,處理器總線135也只是對(duì)非常少量的高速緩沖行分配(例如1或2個(gè))中進(jìn)行存取而已。相對(duì)于現(xiàn)有方法,快速載入數(shù)據(jù)串微碼142利用具有擷取許多高速緩沖行、以及所有數(shù)據(jù)而不僅是最后所載入的數(shù)據(jù)被覆寫至目標(biāo)寄存器的優(yōu)點(diǎn)。在這些事實(shí)下,快速載入數(shù)據(jù)串微碼142亦執(zhí)行一系列保證預(yù)取微指令,但這些保證預(yù)取微指令不會(huì)拖延微處理器100管線,除非這些保證預(yù)取微指令引發(fā)重新執(zhí)行或例外狀況,例如存儲(chǔ)器子系統(tǒng)112不能分配填充隊(duì)列122的字段。此外,由于保證預(yù)取微指令簡(jiǎn)潔的敘述一整個(gè)高速緩沖行的載入數(shù)據(jù),因此,每次可馬上在ROB116中呈現(xiàn)許多高速緩沖行。與現(xiàn)有情況中相對(duì)小量的高速緩沖行分配相比下,本發(fā)明的作法等同于每次伴隨著以一顯著的相對(duì)大量高速緩沖行分配,來充分利用處理器總線135。在此述的實(shí)施例可觀察到,當(dāng)一程序想要用極有效的方式,來將一特定連續(xù)數(shù)據(jù)組由系統(tǒng)存儲(chǔ)器擷取至微處理器100的數(shù)據(jù)高速緩沖存儲(chǔ)器124時(shí),只需簡(jiǎn)單地藉由包括指定此連續(xù)數(shù)據(jù)組的REPLODS指令,即可有效地操作并達(dá)到目的。在另一實(shí)施例中,微處理器100指令集架構(gòu)被修改為包括保證預(yù)取微指令。因此,將數(shù)據(jù)組載入至高速緩沖存儲(chǔ)器的使用者編碼會(huì)相似于圖3的微碼,而不是使用REPLODS指令。應(yīng)注意的是,假使程序的目的為簡(jiǎn)單地將數(shù)據(jù)載入至高速緩沖存儲(chǔ)器,那么接近于圖3的虛擬碼編碼末端的指令,亦即用來更新被一REPLODS指令所影響的架構(gòu)狀態(tài)的編碼(即AL、ESI、以及ECX寄存器)便不需出現(xiàn)。由于保證預(yù)取微指令不會(huì)將數(shù)據(jù)載入至微處理器100的架構(gòu)寄存器,因此有利于存儲(chǔ)器子系統(tǒng)112完成保證預(yù)取微指令,并在其判斷出不存在會(huì)避免其擷取保證預(yù)取微指令所指定的高速緩沖行、而且分配填充隊(duì)列112高速緩沖行緩沖器給高速緩沖行(如圖4的步驟414所討論)時(shí),即可釋放在存儲(chǔ)器子系統(tǒng)112內(nèi)的資源。此外,當(dāng)保證預(yù)取微指令為微處理器100中的最舊指令時(shí),引退單元114可立即引退此保證預(yù)取微指令,這有利于釋放在先前分配給保證預(yù)取微指令的ROB116字段(如圖4的步驟422所討論)。本發(fā)明的不同實(shí)施例已于本文敘述,但本領(lǐng)域的技術(shù)人員應(yīng)能了解這些實(shí)施例僅作為范例,而非限定于此。本領(lǐng)域的技術(shù)人員可在不脫離本發(fā)明的精神的情況下,對(duì)形式與細(xì)節(jié)上做不同的變化。例如,軟件可致能本發(fā)明實(shí)施例所述的裝置與方法的功能、組建(fabrication)、塑造(modeling)、模擬、描述(description)、和/或測(cè)試,亦可通過一般程序語(yǔ)言(C、C++)、硬件描述語(yǔ)目(HardwareDescriptionLanguages,HDL)(包括VerilogHDL、VHDL等等)、或其他可利用的程序語(yǔ)言來完成。此軟件可配置在任何已知的計(jì)算機(jī)可使用媒介,例如磁帶、半導(dǎo)體、磁盤,或是光盤(例如⑶-R0M、DVD-R0M等等)、因特網(wǎng)、有線、無線、或其他通訊媒介的傳輸方式之中。本發(fā)明所述的裝置與方法實(shí)施例可被包括于半導(dǎo)體知識(shí)產(chǎn)權(quán)核心,例如微處理器核心(以HDL來實(shí)現(xiàn)),并轉(zhuǎn)換成集成電路產(chǎn)品的硬件。此外,本發(fā)明所述的裝置與方法通過硬件與軟件的結(jié)合來實(shí)現(xiàn)。因此,本發(fā)明不應(yīng)局限于所揭示的實(shí)施例,而是依本發(fā)明的權(quán)利要求所界定。特別是,本發(fā)明可實(shí)施在使用于一般用途計(jì)算機(jī)中的微處理器裝置內(nèi)。最后,本發(fā)明雖以較佳實(shí)施例揭示如上,然其并非用以限定本發(fā)明的范圍,本領(lǐng)域的技術(shù)人員,在不脫離本發(fā)明的精神和范圍的前提下,可做若干的更動(dòng)與潤(rùn)飾,因此本發(fā)明的保護(hù)范圍是以本發(fā)明的權(quán)利要求為準(zhǔn)。權(quán)利要求1.一種微處理器,用來處理一重復(fù)載入數(shù)據(jù)串指令,其中,該重復(fù)載入數(shù)據(jù)串指令指定在一存儲(chǔ)器中一數(shù)據(jù)字節(jié)的數(shù)據(jù)串被載入至該微處理器的一架構(gòu)寄存器,該微處理器包括一存儲(chǔ)器子系統(tǒng),包括一高速緩沖存儲(chǔ)器;以及一微碼,其中,該微處理器呼叫該微碼來回應(yīng)遭遇該重復(fù)載入數(shù)據(jù)串指令,該微碼包括一系列的多個(gè)保證預(yù)取微指令以將一系列的多個(gè)高速緩沖行擷取至該高速緩沖存儲(chǔ)器,該多個(gè)高速緩沖行由該重復(fù)載入數(shù)據(jù)串指令所指定的該數(shù)據(jù)字節(jié)的該數(shù)據(jù)串所隱含;其中,在多個(gè)架構(gòu)限制內(nèi),該存儲(chǔ)器子系統(tǒng)保證每一該保證預(yù)取微指令所指定的該高速緩沖行將被擷取至該高速緩沖存儲(chǔ)器。2.如權(quán)利要求1所述的微處理器,其中,每一該保證預(yù)取微指令不會(huì)將數(shù)據(jù)載入至該微處理器的一架構(gòu)寄存器。3.如權(quán)利要求1所述的微處理器,其中當(dāng)該存儲(chǔ)器子系統(tǒng)判斷出不存在會(huì)避免該微處理器去擷取每一該保證預(yù)取微指令所指定的該高速緩沖行的狀況、而且該存儲(chǔ)器子系統(tǒng)分配一填充隊(duì)列緩沖器以接收每一該高速緩沖行時(shí),該存儲(chǔ)器子系統(tǒng)完成每一該保證預(yù)取微指令。4.如權(quán)利要求3所述的微處理器,其中,該會(huì)避免該微處理器去擷取每一該保證預(yù)取微指令所指定的該多個(gè)高速緩沖行的狀況,包括每一該高速緩沖行處于具有一非可緩存特性的一存儲(chǔ)器區(qū)域。5.如權(quán)利要求3所述的微處理器,其中,該會(huì)避免該微處理器去擷取每一該保證預(yù)取微指令所指定的該多個(gè)高速緩沖行的狀況,包括每一該高速緩沖行引起在該微處理器內(nèi)一轉(zhuǎn)譯后備緩沖器中的未命中。6.如權(quán)利要求1所述的微處理器,還包括一重排序緩沖器,包括多個(gè)指令字段的一隊(duì)列,用以儲(chǔ)存一信息,該信息是關(guān)于當(dāng)前正由該微處理器所處理的多個(gè)未完成指令,其中,該微處理器利用該重排序緩沖器來維持該多個(gè)指令的程序順序;以及一引退單元,用以釋放分配給每一該保證預(yù)取微指令的該重排序緩沖器的字段,不論該保證預(yù)取微指令所指定的高速緩沖行是否已被擷取至高速緩沖存儲(chǔ)器。7.如權(quán)利要求1所述的微處理器,其中,該重復(fù)載入數(shù)據(jù)串指令為一x86架構(gòu)REPLODS指令。8.如權(quán)利要求1所述的微處理器,其中,假使該微處理器的一填充隊(duì)列被填滿時(shí),該存儲(chǔ)器子系統(tǒng)重新執(zhí)行該保證預(yù)取微指令。9.如權(quán)利要求1所述的微處理器,其中,假使該保證預(yù)取微指令所指定的該高速緩沖行的地址與一儲(chǔ)存操作或一監(jiān)測(cè)操作發(fā)生沖突,該存儲(chǔ)器子系統(tǒng)重新執(zhí)行該保證預(yù)取微指令。10.如權(quán)利要求1所述的微處理器,其中,假使該多個(gè)保證預(yù)取微指令的一個(gè)接續(xù)于一序列指令之后,該存儲(chǔ)器子系統(tǒng)重新執(zhí)行該保證預(yù)取微指令。11.如權(quán)利要求1所述的微處理器,其中,在這些架構(gòu)限制內(nèi),該存儲(chǔ)器子系統(tǒng)保證每一該保證預(yù)取微指令所指定的該高速緩沖行將被擷取至該高速緩沖存儲(chǔ)器,而不會(huì)將該保證預(yù)取微指令視為暗示。12.—種由一微處理器所執(zhí)行的方法,該微處理器處理一重復(fù)載入數(shù)據(jù)串微指令,其中,該重復(fù)載入數(shù)據(jù)串指令指定在一存儲(chǔ)器中一數(shù)據(jù)字節(jié)的數(shù)據(jù)串被載入至該微處理器的一架構(gòu)寄存器,該方法包括對(duì)一重復(fù)載入數(shù)據(jù)串微指令進(jìn)行解碼;以及執(zhí)行一系列的多個(gè)保證預(yù)取微指令,用以將一系列的多個(gè)高速緩沖行擷取至一高速緩沖存儲(chǔ)器來回應(yīng)對(duì)該重復(fù)載入數(shù)據(jù)串微指令進(jìn)行解碼,其中,該多個(gè)高速緩沖行是由該重復(fù)載入數(shù)據(jù)串指令所指定的該數(shù)據(jù)字節(jié)的數(shù)據(jù)串所隱含;其中,執(zhí)行該系列的該多個(gè)保證預(yù)取微指令的步驟包括在多個(gè)架構(gòu)限制內(nèi),保證每一該保證預(yù)取微指令所指定的該高速緩沖行將被擷取至該高速緩沖存儲(chǔ)器。13.如權(quán)利要求12所述的由微處理器所執(zhí)行的方法,其中,該微處理器的微碼包括該系列的該多個(gè)保證預(yù)取微指令。14.如權(quán)利要求12所述的由微處理器所執(zhí)行的方法,其中,每一該保證預(yù)取微指令不會(huì)將數(shù)據(jù)載入至該微處理器的一架構(gòu)寄存器。15.如權(quán)利要求12所述的由微處理器所執(zhí)行的方法,還包括當(dāng)該微處理器判斷出不存在會(huì)避免該微處理器去擷取該保證預(yù)取微指令所指定的該高速緩沖行的狀況、且當(dāng)該微處理器分配一填充隊(duì)列緩沖器以接收該高速緩沖行時(shí),完成每一該保證預(yù)取微指令。16.如權(quán)利要求12所述的由微處理器所執(zhí)行的方法,還包括釋放分配給該多個(gè)保證預(yù)取微指令的一個(gè)的一重排序緩沖器字段來回應(yīng)該保證預(yù)取微指令的完成,不論對(duì)應(yīng)的該保證預(yù)取微指令所指定的該高速緩沖行是否已被擷取至該高速緩沖存儲(chǔ)器。17.如權(quán)利要求12所述的由微處理器所執(zhí)行的方法,其中,該重復(fù)載入數(shù)據(jù)串指令為一x86架構(gòu)REPLODS指令。18.—種載入方法,用以將一數(shù)據(jù)組載入至一微處理器的一高速緩沖存儲(chǔ)器,該載入方法包括在該微處理器上執(zhí)行一程序,該程序包括一重復(fù)載入數(shù)據(jù)串指令,其中,該重復(fù)載入數(shù)據(jù)串指令指定將被載入至該高速緩沖存儲(chǔ)器的該數(shù)據(jù)組;以及由該微處理器來呼叫一微碼來回應(yīng)對(duì)該重復(fù)載入數(shù)據(jù)串指令進(jìn)行解碼,其中,該微碼包括一系列的多個(gè)保證預(yù)取微指令以將一系列的多個(gè)高速緩沖行擷取至該高速緩沖存儲(chǔ)器,且該多個(gè)高速緩沖行由該重復(fù)載入數(shù)據(jù)串指令所指定的該數(shù)據(jù)組所隱含;其中,在多個(gè)架構(gòu)限制內(nèi),該微處理器保證每一該保證預(yù)取微指令所指定的該高速緩沖行將被擷取至該高速緩沖存儲(chǔ)器。19.如權(quán)利要求18所述的載入方法,其中,該重復(fù)載入數(shù)據(jù)串指令為一x86架構(gòu)REPLODS指令。20.如權(quán)利要求18所述的載入方法,還包括當(dāng)該微處理器判斷出不存在會(huì)避免該微處理器去擷取該保證預(yù)取微指令所指定的該高速緩沖行的狀況、且當(dāng)該微處理器分配一填充隊(duì)列緩沖器以接收該高速緩沖行時(shí),完成每一該保證預(yù)取微指令。21.如權(quán)利要求18所述的載入方法,還包括釋放分配給每一該保證預(yù)取微指令的一重排序緩沖器字段來回應(yīng)每一該保證預(yù)取微指令的完成,不論對(duì)應(yīng)的該保證預(yù)取微指令所指定的該高速緩沖行是否已被擷取至該高速緩沖存儲(chǔ)器。22.—種載入方法,用以將一數(shù)據(jù)組載入至一微處理器的一高速緩沖存儲(chǔ)器,該載入方法包括執(zhí)行一程序,該程序包括一系列的多個(gè)保證預(yù)取微指令,其中,每一該保證預(yù)取微指令用來將一系列的多個(gè)高速緩沖行中的一個(gè)擷取至該高速緩沖存儲(chǔ)器,且該多個(gè)高速緩沖行由該數(shù)據(jù)組所隱含;其中,在多個(gè)架構(gòu)限制內(nèi),該微處理器保證每一該保證預(yù)取微指令所指定的該高速緩沖行將被擷取至該高速緩沖存儲(chǔ)器。23.一種計(jì)算機(jī)程序產(chǎn)品,用以被至少一計(jì)算機(jī)可讀媒體所編碼以與一計(jì)算機(jī)裝置使用,該計(jì)算機(jī)程序產(chǎn)品包括一計(jì)算機(jī)可讀程序碼,包含于該至少一計(jì)算機(jī)可讀媒體,用以指定一微處理器,該微處理器用來處理一重復(fù)載入數(shù)據(jù)串指令,其中,該重復(fù)載入數(shù)據(jù)串指令指定在一存儲(chǔ)器中一數(shù)據(jù)字節(jié)的數(shù)據(jù)串被載入至該微處理器的一架構(gòu)寄存器,該計(jì)算機(jī)可讀程序碼包括一第一程序碼,用以指定一存儲(chǔ)器子系統(tǒng),該存儲(chǔ)器子系統(tǒng)包括一高速緩沖存儲(chǔ)器;以及一第二程序碼,用以指定一微碼,其中,該微處理器呼叫該微碼來回應(yīng)遭遇該重復(fù)載入數(shù)據(jù)串指令的情形,該微碼包括一系列的多個(gè)保證預(yù)取微指令以將一系列的多個(gè)高速緩沖行擷取至該高速緩沖存儲(chǔ)器,且該多個(gè)高速緩沖行由該重復(fù)載入數(shù)據(jù)串指令所指定的該數(shù)據(jù)字節(jié)的數(shù)據(jù)串所隱含;其中,在多個(gè)架構(gòu)限制內(nèi),該存儲(chǔ)器子系統(tǒng)保證每一該保證預(yù)取微指令所指定的該高速緩沖行將被擷取至該高速緩沖存儲(chǔ)器。24.如權(quán)利要求23所述的計(jì)算機(jī)程序產(chǎn)品,其中,該至少一計(jì)算機(jī)可讀媒體可選擇自光盤片、磁帶、或其他磁性、光學(xué)或電子儲(chǔ)存媒體、以及因特網(wǎng)、有線、無線或其他通訊媒介。全文摘要一種執(zhí)行快速重復(fù)載入數(shù)據(jù)串操作的微處理器。該微處理器呼叫微碼來回應(yīng)遭遇一重復(fù)載入數(shù)據(jù)串指令。微碼包括一系列的保證預(yù)取微指令,以將一系列的高速緩沖行擷取至微處理器的高速緩沖存儲(chǔ)器,而這些高速緩沖行是由指令所指定的數(shù)據(jù)字節(jié)的數(shù)據(jù)串所隱含。在架構(gòu)限制下,微處理器的存儲(chǔ)器子系統(tǒng)保證被指定的高速緩沖行將被擷取至高速緩沖存儲(chǔ)器。當(dāng)存儲(chǔ)器子系統(tǒng)判斷出不存在會(huì)避免去擷取被指定的高速緩沖行的狀況、而且在存儲(chǔ)器子系統(tǒng)分配填充隊(duì)列緩沖器以接收高速緩沖行時(shí),存儲(chǔ)器子系統(tǒng)將完成指令。引退單元釋放分配給每一該保證預(yù)取微指令的重排序緩沖器的字段來回應(yīng)指令的完成,不論該保證預(yù)取微指令所指定的高速緩沖行是否已被擷取至高速緩沖存儲(chǔ)器。文檔編號(hào)G06F9/30GK102156627SQ20111002362公開日2011年8月17日申請(qǐng)日期2011年1月21日優(yōu)先權(quán)日2010年1月22日發(fā)明者G.G.亨利,羅德尼.E.虎克申請(qǐng)人:威盛電子股份有限公司