專利名稱::微處理器以及預(yù)取數(shù)據(jù)至微處理器的方法
技術(shù)領(lǐng)域:
:本發(fā)明是關(guān)于微處理器,特別是關(guān)于微處理器中的預(yù)先提取(prefetching)。
背景技術(shù):
:美國專利第6,832,296號揭露了適用于x86架構(gòu)的預(yù)取指令(prefetchinstruction),上述預(yù)取指令利用重復(fù)前置碼(REPprefix)將存儲器中的多條序列快取線(cachelines)預(yù)先提取至處理器的高速緩存中。換言之,處理器的通用暫存器中具有多條由計(jì)數(shù)值(count)所指定的序列快取線。然而,程序設(shè)計(jì)者知道會有想要預(yù)先提取存儲器中的非連續(xù)快取線的情況,其中非連續(xù)快取線代表這些快取線的位置是任意的。若一個程序想要預(yù)先提取多條非連續(xù)快取線,則此程序必須包含多個上述美國專利所提及的預(yù)取(REPPREFETCH)指令。然而,這會增加程序碼長度(codesize)并使得處理器需要執(zhí)行多個指令而不是單一指令。因此,我們需要一種改良的預(yù)取指令用以解決這些問題。
發(fā)明內(nèi)容本發(fā)明提供一種微處理器,該微處理器包括一指令解碼器。指令解碼器用以解碼一指令集中的多個指令,其中指令集包括一重復(fù)預(yù)取間接指令。重復(fù)預(yù)取間接指令包括多個地址操作數(shù)以及一計(jì)數(shù)值。微處理器使用地址操作數(shù)來計(jì)算一預(yù)取表中的一第一項(xiàng)目的一地址,其中預(yù)取表具有多個項(xiàng)目,并且預(yù)取表中的各個項(xiàng)目包括一預(yù)取地址。計(jì)數(shù)值用以指定欲被預(yù)取的多條快取線的數(shù)量,其中快取線的每一者的存儲器地址是由項(xiàng)目中的一者中的預(yù)取地址所指定。本發(fā)明提供另一種微處理器,該微處理器位于具有一系統(tǒng)存儲器的一系統(tǒng)中。微處理器包括一指令解碼器、一計(jì)數(shù)暫存器以及一控制邏輯電路。指令解碼器用以解碼一預(yù)取指令,預(yù)取指令指定一計(jì)數(shù)值與用以指向一表格的一地址,其中計(jì)數(shù)值表示欲從系統(tǒng)存儲器中預(yù)取的多條快取線的數(shù)量,并且表格用以儲存快取線的多個存儲器地址。計(jì)數(shù)暫存器用以儲存一剩余計(jì)數(shù)值,剩余計(jì)數(shù)值表示欲被預(yù)取的快取線的一剩余數(shù)量,其中計(jì)數(shù)暫存器一開始即具有被指定在預(yù)取指令中的計(jì)數(shù)值。控制邏輯電路耦接至指令解碼器與計(jì)數(shù)暫存器,控制邏輯電路使用計(jì)數(shù)暫存器與從表格中所提取的存儲器地址,用以控制微處理器將表格中的快取線的存儲器地址提取至微處理器,并且控制微處理器將系統(tǒng)存儲器中的快取線預(yù)取至微處理器的一高速緩存。本發(fā)明提供另一種預(yù)取數(shù)據(jù)至微處理器的方法,該微處理器位于具有一系統(tǒng)存儲器的一系統(tǒng)中。上述方法包括解碼一預(yù)取指令,預(yù)取指令指定一計(jì)數(shù)值與用以指向一表格的一地址,其中計(jì)數(shù)值表示欲從系統(tǒng)存儲器中預(yù)取的多條快取線的數(shù)量,并且表格用以儲存快取線的多個存儲器地址。上述方法還包括儲存一剩余計(jì)數(shù)值,其中剩余計(jì)數(shù)值表示欲被預(yù)取的快取線的一剩余數(shù)量,并且剩余計(jì)數(shù)值的一初始值為被指定在預(yù)取指令中的計(jì)數(shù)值。上述方法還包括使用剩余計(jì)數(shù)值與表格中的存儲器地址,用以將系統(tǒng)存儲器中的快取線預(yù)取至微處理器的一高速緩存。為讓本發(fā)明的上述和其它目的、特征、和優(yōu)點(diǎn)能更明顯易懂,下文特舉出較佳實(shí)施例,并配合所附圖式,作詳細(xì)說明如下。圖1為本發(fā)明實(shí)施例的微處理器的方塊圖;圖2為已知技術(shù)的奔騰III預(yù)取指令的方塊圖;圖3為已知技術(shù)的奔騰III字串指令的方塊圖;圖4為已知技術(shù)的重復(fù)預(yù)取指令的方塊圖;圖5為本發(fā)明實(shí)施例的重復(fù)預(yù)取間接指令的方塊圖;圖6為本發(fā)明實(shí)施例的預(yù)取表的方塊圖7為圖1中的微處理器執(zhí)行圖5中的重復(fù)預(yù)取間接指令的操作流程圖;圖8為本發(fā)明另一實(shí)施例的微處理器的方塊圖;圖9為本發(fā)明另一實(shí)施例的重復(fù)預(yù)取間接指令的方塊圖;圖10為本發(fā)明另一實(shí)施例的預(yù)取表的方塊圖11為圖8中的微處理器執(zhí)行圖9中的重復(fù)預(yù)取間接指令的操作流程圖。[主要元件標(biāo)號說明]100--微處理器;102指令解碼器;104--暫存器文件;106延伸計(jì)數(shù)暫存器;108-4刀始預(yù)取表項(xiàng)目地址;114地址產(chǎn)生器;116、118、146多工器;122預(yù)取表項(xiàng)目地址暫存器124--重復(fù)預(yù)取計(jì)數(shù)暫存器;126加法器;128--遞減器;144控制邏輯電路;154--高速緩存;166響應(yīng)緩沖器;172--總線接口單元;186第一預(yù)取表項(xiàng)目地址188--重復(fù)預(yù)取計(jì)數(shù)值;194預(yù)取地址;197--第二預(yù)取表項(xiàng)目地址;400重復(fù)預(yù)取指令;404、504運(yùn)算碼字段;406--ModR/M字節(jié);500、900重復(fù)預(yù)取間接指令508--地址操作數(shù);600--預(yù)取表;602預(yù)取地址;604--快取線;896延伸來源索引暫存器899--偏移暫存器;902偏移量;1004其它數(shù)據(jù)。具體實(shí)施例方式為了解決上述問題,本發(fā)明提供一新的預(yù)取指令使得程序設(shè)計(jì)者能夠在存儲器中建立一預(yù)取表(如圖6的預(yù)取表600與圖10的預(yù)取表1000),其中預(yù)取表600中的各個項(xiàng)目(entry)用以指定欲被預(yù)先提取的快取線的預(yù)取地址。此外,本發(fā)明所提供的新的預(yù)取指令可使程序設(shè)計(jì)者能夠指定欲被處理器所預(yù)先提取的多條非連續(xù)快取線。在本發(fā)明中,是以重復(fù)預(yù)取間接(REPPREFETCHINDIRECT)指令500(參考圖5)來表示上述新的預(yù)取指令。圖1為本發(fā)明實(shí)施例的微處理器100的方塊圖,此微處理器100能夠執(zhí)行一重復(fù)預(yù)取間接指令。由于微處理器100在許多方面與美國專利第6,832,296號的圖1中的微處理器100(之后簡稱“已知微處理器”)類似,因此本文是以引用方式將“已知微處理器”并入本文中。但值得注意的是,本發(fā)明所揭露的微處理器100具有額外特征_能夠執(zhí)行重復(fù)預(yù)取間接指令。以下列出本發(fā)明的微處理器100與已知微處理器的差別第一,微處理器100以預(yù)取表項(xiàng)目地址(PrefetchTableEntryAddress;PTEA)暫存器122取代已知微處理器中的重復(fù)預(yù)取地址(ItepeatPrefetchAddress;RPA)暫存器122,用以儲存目前所使用的預(yù)取表600的項(xiàng)目的地址。因此,預(yù)取表項(xiàng)目地址暫存器122提供一第一預(yù)取表項(xiàng)目地址186至多工器(MUX)146,而已知微處理器則提供一預(yù)取地址。第二,多工器146被改造用以額外接收來自高速緩存154的預(yù)取地址194。第三,多工器116被改造用以額外接收來自高速緩存154的第二預(yù)取表項(xiàng)目地址197。第四,加法器126被改造用以將第一預(yù)取表項(xiàng)目地址186增加一個存儲器地址大小(例如4字節(jié)),而不是增加一條快取線大小。圖2為已知技術(shù)的奔騰III預(yù)取指令的方塊圖。圖3為已知技術(shù)的奔騰III字串指令的方塊圖。圖4為已知技術(shù)的重復(fù)預(yù)取指令的方塊圖。圖5為本發(fā)明實(shí)施例的重復(fù)預(yù)取間接指令的方塊圖。重復(fù)預(yù)取間接指令500在許多方面與圖4的已知微處理器的重復(fù)預(yù)取指令400類似。以下將列出本發(fā)明的重復(fù)預(yù)取間接指令500與重復(fù)預(yù)取指令400的差別之處。重復(fù)預(yù)取間接指令500的運(yùn)算碼字段504的值不同于重復(fù)預(yù)取指令400的運(yùn)算碼字段404的值,使得指令解碼器102能夠區(qū)分這兩個指令。在另一實(shí)施例中,重復(fù)預(yù)取間接指令500與重復(fù)預(yù)取指令400共享相同的運(yùn)算碼的值,不過重復(fù)預(yù)取間接指令500包含一額外的前置碼用以與重復(fù)預(yù)取指令400區(qū)別。此外,重復(fù)預(yù)取間接指令500的地址操作數(shù)(addressoperands)508用來指定初始的預(yù)取表600項(xiàng)目的存儲器地址,而不是指定初始的預(yù)取地址。圖6為本發(fā)明實(shí)施例的預(yù)取表的方塊圖。預(yù)取表600包含多個項(xiàng)目,各個項(xiàng)目包含一預(yù)取地址602用以指向存儲器中的快取線604,換言之,預(yù)取地址602為快取線604的存儲器地址。如圖6所示,預(yù)取表600中的預(yù)取地址602是彼此相鄰。因此,圖1中的加法器126將第一預(yù)取表項(xiàng)目地址186增加一個存儲器地址大小,用以指向預(yù)取表600中的下一個預(yù)取地址602。在另一實(shí)施例中(參考圖811),預(yù)取表600的預(yù)取地址602是非連續(xù)(non-sequential)的。請參考圖7,圖7為圖1中的微處理器100執(zhí)行重復(fù)預(yù)取間接指令500的操作流程圖。流程從步驟702開始。在步驟702中,指令解碼器102將重復(fù)預(yù)取間接指令500解碼。流程前進(jìn)至步驟704。在步驟704中,地址產(chǎn)生器114產(chǎn)生由重復(fù)預(yù)取間接指令500中的ModR/M字節(jié)406與地址操作數(shù)508所指定的有效地址(初始預(yù)取表項(xiàng)目地址)108。初始預(yù)取表項(xiàng)目地址108代表預(yù)取表600中的第一個項(xiàng)目的存儲器地址。流程前進(jìn)至步驟706。在步驟706中,控制邏輯電路144將延伸計(jì)數(shù)(ExtendedCount;ECX)暫存器106中的計(jì)數(shù)值(即欲被預(yù)先提取的快取線的數(shù)量)復(fù)制到重復(fù)預(yù)取計(jì)數(shù)(RepeatPrefetchCount;RPC)暫存器124中。此外,地址產(chǎn)生器114將初始預(yù)取表項(xiàng)目地址108加載至預(yù)取表項(xiàng)目地址暫存器122。計(jì)數(shù)值是通過位于重復(fù)預(yù)取間接指令500之前的一指令加載至延伸計(jì)數(shù)暫存器106。流程前進(jìn)至步驟708。在步驟708中,微處理器100從預(yù)取表600中提取由第一預(yù)取表項(xiàng)目地址186所指定的預(yù)取地址602。值得注意的是,預(yù)取地址602可能已經(jīng)位于高速緩存154中。仔細(xì)而言,在本實(shí)施例中,當(dāng)微處理器100從預(yù)取表600中提取第一個預(yù)取地址602時,與第一預(yù)取表項(xiàng)目地址186有關(guān)的整條快取線會被提取。因此,在提取初始的預(yù)取表600的項(xiàng)目中的初始的預(yù)取地址602之后,預(yù)取表600中的后幾個預(yù)取地址602可能會位于高速緩存154中,而此現(xiàn)象會隨著預(yù)取動作的執(zhí)行而持續(xù)。若預(yù)取地址602尚未位于高速緩存154中,則總線接口單元172會將系統(tǒng)存儲器中的預(yù)取地址602提取至響應(yīng)緩沖器(responsebuffer)166,用以依序地將預(yù)取地址602引退至高速緩存154中。在另一實(shí)施例中,為了避免使用預(yù)取地址602來破壞(pollute)高速緩存154,預(yù)取地址602并沒有被引退至高速緩存154。相反地,響應(yīng)緩沖器166(或其它中間儲存(intermediatestorage)位置)將此預(yù)取地址602提供至多工器146用以完成步驟712到步驟716的動作,當(dāng)完成步驟712到步驟716后再將預(yù)取地址602丟棄(discard)。流程前進(jìn)至步驟712。在步驟712中,高速緩存154查找(lookup)于步驟708中所提取的預(yù)取地址602,其中高速緩存154(或響應(yīng)緩沖器166或其它中間儲存位置)將此預(yù)取地址602作為預(yù)取地址194用以提供至多工器146。流程前進(jìn)至判斷步驟714。在判斷步驟714中,若預(yù)取地址194出現(xiàn)于(hitsin)高速緩存154,則流程前進(jìn)至步驟718。若預(yù)取地址194未出現(xiàn)于高速緩存154,則流程前進(jìn)至步驟716。在步驟716中,總線接口單元172將系統(tǒng)存儲器中由預(yù)取地址194所指定的快取線604預(yù)先提取至響應(yīng)緩沖器166,響應(yīng)緩沖器166接著將預(yù)先提取的快取線604寫入至高速緩存154。流程前進(jìn)至步驟718。在步驟718中,控制邏輯電路144控制遞減器(decrementer)128與多工器118用以將重復(fù)預(yù)取計(jì)數(shù)暫存器124中的數(shù)值遞減1。此外,控制邏輯電路144控制加法器126與多工器116用以將預(yù)取表項(xiàng)目地址暫存器122中的數(shù)值增加一個存儲器地址大小。流程前進(jìn)至判斷步驟722。在判斷步驟722中,控制邏輯電路144判斷重復(fù)預(yù)取計(jì)數(shù)值188是否為零。若為零,則流程結(jié)束;若不為零,則流程回到步驟708用以完成預(yù)取下一條快取線604的動作。雖然圖7中并未描述關(guān)于本發(fā)明的微處理器100的其它實(shí)施例,但這些實(shí)施例以下所描述的特征,例如在轉(zhuǎn)譯查詢緩沖器(TranslationLookasideBuffer;TLB)發(fā)生遺漏(miss)時停止預(yù)取動作,并且在失去仲裁(arbitration)或未到達(dá)自由請求緩沖器(freerequestbuffer)的次臨界數(shù)量時重新執(zhí)行預(yù)取動作。請參考圖8,圖8為本發(fā)明中微處理器100的另一實(shí)施例的方塊圖,此微處理器100能夠執(zhí)行一重復(fù)預(yù)取間接指令900。圖8的微處理器100在許多方面與圖1的微處理器100類似。然而,圖8的微處理器100用以執(zhí)行圖9中的重復(fù)預(yù)取間接指令900。重復(fù)預(yù)取間接指令900包含一偏移量(offsetvalue)902用以指定各個預(yù)取表600的項(xiàng)目之間的距離。偏移量902有助于程序設(shè)計(jì)者在存儲器中建立如圖10所示的預(yù)取表1000,其中圖10中的預(yù)取表1000具有非連續(xù)位置的預(yù)取地址602,相關(guān)細(xì)節(jié)將在以下做進(jìn)一步說明。請參考回圖8,相較于圖1的微處理器100,圖8的微處理器100包括一偏移暫存器(offsetregister)899。偏移暫存器899從暫存器文件(registerfile)104的延伸來源索引(ExtendedSourceIndex;ESI)暫存器896中接收圖9的偏移量902,并且將所接收的偏移量902提供至加法器126,使得加法器126將預(yù)取表項(xiàng)目地址暫存器122中的數(shù)值增加一個偏移量902,以便提供下一個預(yù)取表項(xiàng)目地址至預(yù)取表項(xiàng)目地址暫存器122。偏移量902被通過位于重復(fù)預(yù)取間接指令900之前的一指令加載至延伸來源索引暫存器896。請參考圖11,圖11為圖8中的微處理器100執(zhí)行重復(fù)預(yù)取間接指令900的操作流程圖。圖11與圖7的操作流程圖類似,以下將列出兩者之間的差別。步驟1106取代了步驟706,并且在步驟1106中,控制邏輯電路144將延伸計(jì)數(shù)暫存器106中的計(jì)數(shù)值(即欲被預(yù)先提取的快取線的數(shù)量)復(fù)制到重復(fù)預(yù)取計(jì)數(shù)暫存器124中。此外,地址產(chǎn)生器114將初始預(yù)取表項(xiàng)目地址108加載至預(yù)取表項(xiàng)目地址暫存器122。控制邏輯電路144將偏移量902加載至偏移暫存器899。步驟1118取代了步驟718,并且在步驟1118中,控制邏輯電路144控制遞減器128與多工器118用以將重復(fù)預(yù)取計(jì)數(shù)暫存器124中的數(shù)值遞減1。此外,控制邏輯電路144控制加法器126與多工器116用以將預(yù)取表項(xiàng)目地址暫存器122中的數(shù)值增加一個偏移量902,而不是增加一個存儲器地址大小。請參考圖10,圖10為本發(fā)明中預(yù)取表的另一實(shí)施例的方塊圖。假設(shè)預(yù)取表1000為一具有多個區(qū)間(buckets)或數(shù)據(jù)結(jié)構(gòu)的開放式散列表(openhashtable)。各個區(qū)間包含兩個字段,分別為8字節(jié)散列值(對應(yīng)至圖10中的“其它數(shù)據(jù)1004”)與4字節(jié)存儲器地址(對應(yīng)至圖10中的“預(yù)取地址602”),其中該4字節(jié)存儲器地址為一散列對象指針(hashobjectpointer)。散列表區(qū)間散列值8字節(jié)散列對象指針4字節(jié)區(qū)間[1]散列值8字節(jié)散列對象指針4字節(jié)區(qū)間[2]散列值8字節(jié)散列對象指針4字節(jié)在本實(shí)施例中,可利用延伸來源索引暫存器896中的數(shù)值8來執(zhí)行重復(fù)預(yù)取間接指令900,并且重復(fù)預(yù)取間接指令900會略過8字節(jié)散列值字段用以提取散列對象指針作為預(yù)取地址602?,F(xiàn)有的程序中普遍具有此類型的數(shù)據(jù)結(jié)構(gòu)(即使數(shù)值大小會變動)。使程序設(shè)計(jì)者能夠指定偏移量902的優(yōu)點(diǎn)有助于程序設(shè)計(jì)者或編譯器使用現(xiàn)有的數(shù)據(jù)結(jié)構(gòu)(例如散列表_預(yù)取表1000),而不需要另外為重復(fù)預(yù)取間接指令900建立一預(yù)取表。在另一實(shí)施例中,程序設(shè)計(jì)者可在另一個通用暫存器中指定一延遲值(delayvalue)。若延遲值非為零(non-zero),則微處理器100在執(zhí)行重復(fù)預(yù)取間接指令900時會延遲各個預(yù)取一快取線604的迭代(iteration),其中延遲量是等于被指定在延遲值中的指令的數(shù)量。本發(fā)明雖以各種實(shí)施例揭露如上,然其僅為范例參考而非用以限定本發(fā)明的范圍,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可做些許的更動與潤飾。舉例而言,可使用軟件來實(shí)現(xiàn)本發(fā)明所述的裝置與方法的功能、構(gòu)造、模塊化、模擬、描述及/或測試。此目的可通過使用一般程序語言(例如C、C++)、硬件描述語言(包括Verilog或VHDL硬件描述語言等等)、或其它可用的程序來實(shí)現(xiàn)。該軟件可被設(shè)置在任何計(jì)算機(jī)可用的媒體,例如半導(dǎo)體、磁盤、光盤(例如⑶-R0M、DVD-R0M等等)中。本發(fā)明實(shí)施例中所述的裝置與方法可被包括在一半導(dǎo)體智慧財(cái)產(chǎn)權(quán)核心(semiconductorintellectualpropertycore),例如以硬件描述語言(HDL)實(shí)現(xiàn)的微處理器核心中,并被轉(zhuǎn)換為硬件型態(tài)的集成電路產(chǎn)品。此外,本發(fā)明所描述的裝置與方法可通過結(jié)合硬件與軟件的方式來實(shí)現(xiàn)。因此,本發(fā)明不應(yīng)該被本文中的任一實(shí)施例所限定,而當(dāng)視所附的權(quán)利要求范圍與其等效物所界定者為準(zhǔn)。特別是,本發(fā)明是實(shí)現(xiàn)于一般用途計(jì)算機(jī)的微處理器裝置中。最后,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許更動與潤飾,因此本發(fā)明的保護(hù)范圍當(dāng)視所附的權(quán)利要求范圍所界定者為準(zhǔn)。權(quán)利要求一種微處理器,包括一指令解碼器,用以解碼一指令集中的多個指令,其中上述指令集包括一重復(fù)預(yù)取間接指令;以及上述重復(fù)預(yù)取間接指令,包括多個地址操作數(shù),上述微處理器使用上述地址操作數(shù)來計(jì)算一預(yù)取表中的一第一項(xiàng)目的一地址,其中上述預(yù)取表具有多個項(xiàng)目,并且上述預(yù)取表中的各個項(xiàng)目包括一預(yù)取地址;以及一計(jì)數(shù)值,用以指定欲被預(yù)取的多條快取線的數(shù)量,其中上述快取線的每一者的存儲器地址是由上述項(xiàng)目中的一者中的上述預(yù)取地址所指定。2.根據(jù)權(quán)利要求1所述的微處理器,其中上述重復(fù)預(yù)取間接指令還包括一運(yùn)算碼,上述運(yùn)算碼與一奔騰III預(yù)取指令運(yùn)算碼不同。3.根據(jù)權(quán)利要求2所述的微處理器,其中上述重復(fù)預(yù)取間接指令還包括一奔騰III重復(fù)字串指令前置碼,上述奔騰III重復(fù)字串指令前置碼是位于上述運(yùn)算碼之前。4.根據(jù)權(quán)利要求2所述的微處理器,其中上述重復(fù)預(yù)取間接指令還包括一奔騰III預(yù)取指令運(yùn)算碼;一奔騰III重復(fù)字串指令前置碼;以及一第二前置碼,其中上述奔騰III重復(fù)字串指令前置碼與第二前置碼是位于上述運(yùn)算碼之前,其中上述第二前置碼用以區(qū)分上述重復(fù)預(yù)取間接指令與一重復(fù)預(yù)取指令。5.根據(jù)權(quán)利要求1所述的微處理器,其中上述預(yù)取表中的上述項(xiàng)目是位于多個非連續(xù)存儲器位置。6.根據(jù)權(quán)利要求1所述的微處理器,其中上述重復(fù)預(yù)取間接指令還包括一偏移量,用以指定上述預(yù)取表中的各個項(xiàng)目之間的一距離,其中上述偏移量是通過位于上述重復(fù)預(yù)取間接指令之前的一指令加載至一通用暫存器。7.根據(jù)權(quán)利要求1所述的微處理器,其中上述重復(fù)預(yù)取間接指令還包括一延遲值,其中上述微處理器在執(zhí)行上述重復(fù)預(yù)取間接指令時是以一延遲量來延遲各個預(yù)取上述快取線中的一者的迭代,其中上述延遲量是等于上述延遲值中所指定的一指令數(shù)量,其中上述延遲值是通過位于上述重復(fù)預(yù)取間接指令之前的一指令加載至一通用暫存ο8.根據(jù)權(quán)利要求1所述的微處理器,還包括一暫存器文件,耦接至上述指令解碼器,上述暫存器文件包括一奔騰III架構(gòu)暫存器文件的一延伸計(jì)數(shù)暫存器,其中上述計(jì)數(shù)值是儲存于上述延伸計(jì)數(shù)暫存器中,其中上述計(jì)數(shù)值是通過位于上述重復(fù)預(yù)取間接指令之前的一指令加載至上述延伸計(jì)數(shù)暫存器;其中上述地址操作數(shù)被指定在一分段地址偏移地址格式中,并且上述分段地址偏移地址格式符合一奔騰III架構(gòu)分段地址偏移地址格式,其中一個或多個暫存器符合多個奔騰III數(shù)據(jù)區(qū)段延伸來源索引暫存器。9.一種微處理器,上述微處理器位于具有一系統(tǒng)存儲器的一系統(tǒng)中,上述微處理器包括一指令解碼器,用以解碼一預(yù)取指令,上述預(yù)取指令指定一計(jì)數(shù)值與用以指向一表格2的一地址,其中上述計(jì)數(shù)值表示欲從上述系統(tǒng)存儲器中預(yù)取的多條快取線的數(shù)量,并且上述表格用以儲存上述快取線的多個存儲器地址;一計(jì)數(shù)暫存器,用以儲存一剩余計(jì)數(shù)值,上述剩余計(jì)數(shù)值表示欲被預(yù)取的上述快取線的一剩余數(shù)量,其中上述計(jì)數(shù)暫存器一開始即具有被指定在上述預(yù)取指令中的上述計(jì)數(shù)值;以及一控制邏輯電路,耦接至上述指令解碼器與上述計(jì)數(shù)暫存器,上述控制邏輯電路使用上述計(jì)數(shù)暫存器與從上述表格中所提取的上述存儲器地址,用以控制上述微處理器將上述表格中的上述快取線的上述存儲器地址提取至上述微處理器,并且控制上述微處理器將上述系統(tǒng)存儲器中的上述快取線預(yù)取至上述微處理器的一高速緩存。10.根據(jù)權(quán)利要求9所述的微處理器,其中上述快取線在上述系統(tǒng)存儲器中的順序?yàn)榉沁B續(xù)。11.根據(jù)權(quán)利要求9所述的微處理器,還包括一遞減器,耦接至上述計(jì)數(shù)暫存器,上述控制邏輯電路控制上述遞減器用以根據(jù)預(yù)取上述快取線中的每一者來遞減上述剩余計(jì)數(shù)值。12.根據(jù)權(quán)利要求9所述的微處理器,還包括一地址暫存器,用以儲存一項(xiàng)目地址,其中上述項(xiàng)目地址指向正被預(yù)取的上述快取線中的一者的上述存儲器地址,其中上述控制邏輯電路一開始即將上述預(yù)取指令所指定的上述地址加載至上述地址暫存器,其中上述控制邏輯電路根據(jù)預(yù)取上述快取線中的每一者來更新位于上述地址暫存器中的上述項(xiàng)目地址;以及一加法器,耦接至上述地址暫存器,用以根據(jù)預(yù)取上述快取線中的每一者來增加一加數(shù)至地址暫存器中的上述項(xiàng)目地址以便產(chǎn)生一總合,其中上述控制邏輯電路使用上述總合來更新上述地址暫存器。13.根據(jù)權(quán)利要求9所述的微處理器,其中上述預(yù)取指令還指定一偏移量,上述偏移量用以指定上述表格中的各個存儲器地址之間的一距離。14.根據(jù)權(quán)利要求9所述的微處理器,其中上述控制邏輯電路用以將上述表格中的上述快取線的上述存儲器地址提取至上述高速緩存。15.根據(jù)權(quán)利要求9所述的微處理器,其中上述控制邏輯電路用以將上述表格中的上述快取線的上述存儲器地址提取至上述微處理器的一儲存器,并且禁止將上述存儲器地址引退至上述高速緩存,其中上述儲存器不同于上述高速緩存,其中不同于上述高速緩存的上述儲存器包括一響應(yīng)緩沖器。16.根據(jù)權(quán)利要求9所述的微處理器,其中上述預(yù)取指令還指定一延遲值,其中上述控制邏輯電路器以一延遲量來延遲預(yù)取上述快取線中的每一者的步驟,其中上述延遲量等于上述延遲值中所指定的一指令數(shù)量。17.根據(jù)權(quán)利要求9所述的微處理器,其中上述預(yù)取指令指定一運(yùn)算碼,上述運(yùn)算碼與一奔騰III預(yù)取指令運(yùn)算碼不同,其中上述預(yù)取指令還指定一奔騰III重復(fù)字串指令前置碼,上述奔騰III重復(fù)字串指令前置碼位于上述運(yùn)算碼之前,其中上述預(yù)取指令指定一奔騰III預(yù)取指令運(yùn)算碼與一一第二前置碼,其中上述奔騰III預(yù)取指令運(yùn)算碼位于一奔騰III重復(fù)字串指令前置碼之后,上述第二前置碼位于上述運(yùn)算碼之前,并且上述第二前置碼用以區(qū)分上述預(yù)取指令與一重復(fù)預(yù)取指令。18.一種預(yù)取數(shù)據(jù)至微處理器的方法,上述微處理器位于具有一系統(tǒng)存儲器的一系統(tǒng)中,上述方法包括解碼一預(yù)取指令,上述預(yù)取指令指定一計(jì)數(shù)值與用以指向一表格的一地址,其中上述計(jì)數(shù)值表示欲從上述系統(tǒng)存儲器中預(yù)取的多條快取線的數(shù)量,并且上述表格用以儲存上述快取線的多個存儲器地址;儲存一剩余計(jì)數(shù)值,其中上述剩余計(jì)數(shù)值表示欲被預(yù)取的上述快取線的一剩余數(shù)量,并且上述剩余計(jì)數(shù)值的一初始值為被指定在上述預(yù)取指令中的上述計(jì)數(shù)值;以及使用上述剩余計(jì)數(shù)值與上述表格中的上述存儲器地址,用以將上述系統(tǒng)存儲器中的上述快取線預(yù)取至上述微處理器的一高速緩存。19.根據(jù)權(quán)利要求18所述的預(yù)取數(shù)據(jù)至微處理器的方法,其中上述快取線在上述系統(tǒng)存儲器中的順序?yàn)榉沁B續(xù)。20.根據(jù)權(quán)利要求18所述的預(yù)取數(shù)據(jù)至微處理器的方法,上述方法還包括儲存一項(xiàng)目地址,其中上述項(xiàng)目地址指向正被預(yù)取的上述快取線中的一者的上述存儲器地址,并且上述項(xiàng)目地址的一初始值為上述預(yù)取指令所指定的上述地址。21.根據(jù)權(quán)利要求20所述的預(yù)取數(shù)據(jù)至微處理器的方法,其中上述儲存上述項(xiàng)目地址的步驟還包括根據(jù)預(yù)取上述快取線中的一者來增加一加數(shù)至上述項(xiàng)目地址。22.根據(jù)權(quán)利要求18所述的預(yù)取數(shù)據(jù)至微處理器的方法,其中上述預(yù)取指令還指定一偏移量,上述偏移量用以指定上述表格中的各個存儲器地址之間的一距離。23.根據(jù)權(quán)利要求18所述的預(yù)取數(shù)據(jù)至微處理器的方法,上述方法還包括將上述表格中的上述快取線的上述存儲器地址提取至上述高速緩存。24.根據(jù)權(quán)利要求18所述的預(yù)取數(shù)據(jù)至微處理器的方法,上述方法還包括將上述表格中的上述快取線的上述存儲器地址提取至上述微處理器的一儲存器,并且禁止將上述存儲器地址引退至上述高速緩存,其中上述儲存器不同于上述高速緩存。25.根據(jù)權(quán)利要求18所述的預(yù)取數(shù)據(jù)至微處理器的方法,上述方法還包括以一延遲量來延遲預(yù)取上述快取線中的每一者的步驟,其中上述延遲量等于上述延遲值中所指定的一指令數(shù)量。26.根據(jù)權(quán)利要求18所述的預(yù)取數(shù)據(jù)至微處理器的方法,其中上述預(yù)取指令指定一運(yùn)算碼,上述運(yùn)算碼與一奔騰III預(yù)取指令運(yùn)算碼不同,其中上述預(yù)取指令還指定一奔騰III重復(fù)字串指令前置碼,上述奔騰III重復(fù)字串指令前置碼位于上述運(yùn)算碼之前,其中上述預(yù)取指令指定一奔騰III預(yù)取指令運(yùn)算碼與一一第二前置碼,其中上述奔騰III預(yù)取指令運(yùn)算碼位于一奔騰III重復(fù)字串指令前置碼之后,上述第二前置碼位于上述運(yùn)算碼之前,并且上述第二前置碼用以區(qū)分上述預(yù)取指令與一重復(fù)預(yù)取指令。全文摘要本發(fā)明提供一種微處理器,包括一指令解碼器用以解碼一指令集中的多個指令,其中指令集包括一重復(fù)預(yù)取間接指令。重復(fù)預(yù)取間接指令包括多個地址操作數(shù)以及一計(jì)數(shù)值,微處理器使用地址操作數(shù)來計(jì)算一預(yù)取表中的一第一項(xiàng)目的一地址,其中預(yù)取表具有多個項(xiàng)目,并且預(yù)取表中的各個項(xiàng)目包括一預(yù)取地址。計(jì)數(shù)值用以指定欲被預(yù)取的多條快取線的數(shù)量,其中快取線的每一者的一存儲器地址是由項(xiàng)目中的一者中的預(yù)取地址所指定。文檔編號G06F9/32GK101882063SQ20101024378公開日2010年11月10日申請日期2010年7月30日優(yōu)先權(quán)日2009年8月7日發(fā)明者約翰·M·吉爾,羅德尼·E·虎克申請人:威盛電子股份有限公司