專利名稱:選擇性執(zhí)行預(yù)取指令的微處理器與方法
(0001)本發(fā)明申請(qǐng)的專利范圍是以美國申請(qǐng)案為優(yōu)先權(quán)基準(zhǔn),其申請(qǐng)?zhí)枮?0/175,383,于公元2001年6月18日提出申請(qǐng)。
(0004)計(jì)算機(jī)系統(tǒng)中的一些裝置是在微處理器之外的,如內(nèi)存;而那些裝置是以直接或非直接的方式經(jīng)由一微處理器總線連接至微處理器。處理器總線是一信號(hào)的收集器,以便微處理器可一次轉(zhuǎn)換相對(duì)大量的數(shù)據(jù),如64或128位。當(dāng)微處理器執(zhí)行程序的指令,且這些指令正進(jìn)行對(duì)儲(chǔ)存于內(nèi)存中的數(shù)據(jù)的運(yùn)算時(shí),微處理器必須使用微處理器總線自內(nèi)存中提取數(shù)據(jù)以放入微處理器里。相同地,微處理器會(huì)將計(jì)算結(jié)果經(jīng)由微處理器總線回寫給內(nèi)存。
(0005)自內(nèi)存提取數(shù)據(jù)或?qū)憯?shù)據(jù)入內(nèi)存所需的時(shí)間一般將是微處理器執(zhí)行計(jì)算數(shù)據(jù)所需時(shí)間的十到百倍。所以,微處理器將處于近乎停止?fàn)顟B(tài),以等待自內(nèi)存提取而來的數(shù)據(jù)。
(0006)為將問題最小化,現(xiàn)時(shí)的微處理器都有一高速緩存。高速緩存是存在于微處理器內(nèi)部的內(nèi)存,且一般都遠(yuǎn)小于系統(tǒng)內(nèi)存。高速緩存是儲(chǔ)存系統(tǒng)內(nèi)存內(nèi)數(shù)據(jù)的子集合。當(dāng)微處理器執(zhí)行一數(shù)據(jù)的指令,微處理器會(huì)先檢查以了解現(xiàn)在執(zhí)行的數(shù)據(jù)是存在于高速緩存中,并且是有效的。若是如此,該指令可立即被執(zhí)行,因?yàn)槠鋽?shù)據(jù)已存在于高速緩存內(nèi)。也就是微處理器不需要等到數(shù)據(jù)自內(nèi)存中提取,再由處理器總線而至高速緩存內(nèi)。當(dāng)微處理器已監(jiān)測(cè)到數(shù)據(jù)是在高速緩存中并為有效時(shí),一般而言高速緩存即可成功地取得數(shù)據(jù),術(shù)語為高速緩存的命中(cache hit)。
(0007)通常因?yàn)檐浖窃跀?shù)據(jù)的相對(duì)小集合上進(jìn)行一段時(shí)間的操作,所以會(huì)有許多高速緩存的命中發(fā)生;然后,再于另一段時(shí)間在另一個(gè)相對(duì)小數(shù)據(jù)集合上操作,余類推。這樣的現(xiàn)象是參考方位原理。若該程序顯示其作用大體上符合參考方位原理,且在某段時(shí)間內(nèi)高速緩存的大小較數(shù)據(jù)集合為大時(shí),那段時(shí)間內(nèi)高速緩存的命中可能性也會(huì)高。
(0008)然而,有一些軟件其程序不會(huì)顯示其作用是大體上符合參考方位原理與/或是正在操作的數(shù)據(jù)集合具大小較高速緩存大。這些程序需要由一存在于內(nèi)存內(nèi)的較大的、線性的數(shù)據(jù)集合來操作,且該內(nèi)存是在微處理器之外的,如視訊頁框緩沖器或系統(tǒng)內(nèi)存。這些程序的例子有如多媒體相關(guān)的聲訊或視訊,以處理視訊數(shù)據(jù)或聲訊波形文件數(shù)據(jù)。在這些程序下,高速緩存的命中是低的。
(0009)為解決此問題,有一些微處理器會(huì)自一預(yù)取的指令在其指令集合內(nèi)。該預(yù)取指令指示出該微處理器提取一快取記憶線,該快取記憶線是由預(yù)取指令進(jìn)入高速緩存時(shí)會(huì)具體說明出來??烊【€是數(shù)據(jù)中的最小單位,并可在高速緩存與系統(tǒng)中的其它內(nèi)存中互相傳遞。一般的快取線大小是32或64字節(jié)。程序設(shè)計(jì)師會(huì)在程序中策略位置處放置預(yù)取指令,以預(yù)取所需的數(shù)據(jù)進(jìn)入高速緩存。當(dāng)微處理器可以執(zhí)行那些進(jìn)行計(jì)算的指令時(shí),數(shù)據(jù)早就已經(jīng)在高速緩存中的機(jī)率增加。
(0010)在一些微處理器中,高速緩存是由多種高速緩存所組成的。這些高速緩存會(huì)被安排至許多等級(jí)中的一種里。舉例說明,一微處理器應(yīng)有二個(gè)高速緩存,即第一級(jí)高速緩存與第二級(jí)高速緩存。第一級(jí)高速緩存較第二級(jí)高速緩存更接近微處理器的計(jì)算組件;也就是說第一級(jí)高速緩存較第二級(jí)高速緩存更快速地提供數(shù)據(jù)給該計(jì)算組件。雖然沒有必要,但是第二級(jí)高速緩存大小一般大于第一級(jí)高速緩存。
(0011)一可能的情況是在先提取指令上的多級(jí)式高速緩存其效用為該預(yù)取指令所指出的快取線可在第二級(jí)高速緩存中命中,但不是在第一級(jí)高速緩存中。在這樣的情形下,微處理器可將快取線從第二級(jí)高速緩存?zhèn)鬟f至第一級(jí)高速緩存,以取代使用處理器總線去提取自內(nèi)存而來的該快取線。這是因?yàn)樽缘诙?jí)高速緩存?zhèn)鬟f至第一級(jí)高速緩存較經(jīng)由處理器總線去提取快取線要快很多。也就是說,第一級(jí)高速緩存分配一快取線,如同一專門為儲(chǔ)存快取線的位置(location),且第二級(jí)高速緩存提供快取線至第一級(jí)高速緩存,以進(jìn)行儲(chǔ)存。以下的偽碼顯示一種傳統(tǒng)的方法,即在一有二級(jí)式內(nèi)部快取級(jí)層(hierarchy)的微處理器中執(zhí)行先提取指令。在該偽碼中,no-op虛擬操作意思是“無作業(yè)”,即微處理器在預(yù)取指令上并無任何動(dòng)作,只是簡單地將指令略過而不提取該指定的快取線。
(0012)if(在第一級(jí)高速緩存中有快取線命中)執(zhí)行虛擬操作;/*不做任何事*/else if(在第二級(jí)高速緩存中有快取線命中)提供所需的快取線自第二級(jí)高速緩存至第一級(jí)高速緩存;clse經(jīng)由微處理器總線提取快取線至第一級(jí)高速緩存。
(0013)微處理器包括了一總線接口單元(BIU),該單元連接了處理器總線與微處理器的其它部份。當(dāng)微處理器中的功能區(qū)塊(functional block)于處理器總線上執(zhí)行其它操作時(shí),功能區(qū)塊會(huì)發(fā)出一要求至總線接口單元,以執(zhí)行總線動(dòng)作。舉例說明,一存在于微處理器的功能區(qū)塊會(huì)發(fā)出一個(gè)需求至BIU,以執(zhí)行在處理器總線上的其它操作,去提取自內(nèi)存而來的快取線。在BIU中,多元化總線動(dòng)作的需求被暫緩或處于等候的狀態(tài)是很正常的。這在現(xiàn)今的微處理器是非常真實(shí)的,因?yàn)樵撐⑻幚砥鲌?zhí)行多元化的指令,且該數(shù)個(gè)指令與一管線的不同層級(jí)(stage)相互平行,其狀況與汽車的組合生產(chǎn)線相似。
(0014)多元化的需求會(huì)在BIU中被暫緩,其結(jié)果是在這暫緩中的一需求必須等到所有其它在它之前的需求被完成后,才可能處理。因此,若一總線動(dòng)作需求被提出給BIU,以為快取線的預(yù)取時(shí),以下所述的機(jī)率是存在的,即該預(yù)取的需求會(huì)導(dǎo)致一隨后的需求,該需求會(huì)與一更重要的非預(yù)取指令結(jié)合,然后才會(huì)在等待較久的時(shí)間后于總線上執(zhí)行,這較久的時(shí)間是指與它使用其它的方法執(zhí)行時(shí)所需時(shí)間相比。因此,有可能降低整體表現(xiàn)。
(0015)一般而言,一預(yù)取指令是經(jīng)由定義一線索(hint)以提取快取線,而不是一絕對(duì)的命令。也就是說,在某些特定的狀況下,微處理器會(huì)選擇不對(duì)預(yù)取指令進(jìn)行任何的動(dòng)作。然而,傳統(tǒng)的微處理器并沒有考慮到一可能性,即執(zhí)行預(yù)取時(shí)會(huì)產(chǎn)生額外微處理器總線的使用,因此會(huì)降低性能的表現(xiàn)。因此,一微處理器如何依據(jù)上述的考量而選擇性地執(zhí)行提取指令。
(0017)本發(fā)明的一大特征是提供一微處理器,以進(jìn)行選擇性地預(yù)取指令。該微處理器包括一BIU,該BIU指明出一總線需求的當(dāng)時(shí)層級(jí)(current level),以使此BIU在一連接微處理器與內(nèi)存的總線上執(zhí)行。微處理器也包括一緩存器,是連接至BIU開儲(chǔ)存一總線需求門限值。微處理器也包括一比較器,是連接至該緩存器,并會(huì)依據(jù)總線需求門限值與總線需求的當(dāng)時(shí)層級(jí)的比較的結(jié)果,來產(chǎn)生一BIU是否會(huì)在預(yù)取指令之后,隨即執(zhí)行在總線上一高層級(jí)的總線需求的預(yù)估,微處理器又包括邏輯控制,是連接至該比較器;而該快取線是由依據(jù)一第一方法的預(yù)取指令所明確指定出的;該第一方法是指若預(yù)估顯示BIU將在總線上很接近預(yù)取指令的鄰近區(qū)執(zhí)行一高層級(jí)的總線需求;若非如此,則會(huì)依據(jù)第二方法預(yù)取快取記憶線。
(0018)本發(fā)明的另一大特征是提供一微處理器,以進(jìn)行選擇性地預(yù)取指令。該預(yù)取指令明顯地指示出一快取線。該微處理器具有一第一級(jí)高速緩存、一第二級(jí)高速緩存與一BIU,以將該數(shù)個(gè)高速緩存連接至一總線,該總線連接微處理器與內(nèi)存。微處理器包括一儲(chǔ)存門限值(threshold)的門限緩存器(threshold register)與一比較器,該比較器連接至該門限緩存器,且若有一些存在于總線接口單元中并將在總線上執(zhí)行的重要需求大于該門限值時(shí),可在一輸出上產(chǎn)生一真值。若該輸出是一真確的,且快取線是存在于第二級(jí)高速緩存。在第二級(jí)快取記憶中的快取線不是在共享的狀態(tài)時(shí),微處理器會(huì)自第二級(jí)高速緩存轉(zhuǎn)換快取線至第一級(jí)高速緩存。
(0019)本發(fā)明提供的微處理器,具有第一與第二高速緩存的特征。該微處理器包括一門限緩存器,是儲(chǔ)存一總線動(dòng)作隊(duì)列深度門限值(bus transactionqueue depth threshold)與一比較器;該比較器連接至該門限緩存器并會(huì)產(chǎn)生一結(jié)果,若微處理器具有較總線動(dòng)作隊(duì)列深度門限值更多的其它操作,且在連接至微處理器的總線上執(zhí)行時(shí),該結(jié)果是一正確值。微處理器又包括有一指令譯碼器,將預(yù)取指令譯碼,以明確指定出快取線。微處理器也包括控制邏輯,以接收結(jié)果。若快取線在第一與第二高速緩存未命中,且結(jié)果是正確的,則控制邏輯會(huì)放棄在總線上提取快取線的動(dòng)作的需求。
(0020)本發(fā)明還提供一種方法,即一具有第一級(jí)高速緩存與第二級(jí)高速緩存的處理器進(jìn)行選擇性地提取快取線的方法,該快取線是由預(yù)取指令所指示出的。該方法包括決定快取線是否在第一級(jí)高速緩存與第二級(jí)高速緩存中命中,決定若快取線在第二級(jí)高速緩存中命中,則快取線的狀態(tài),與決定較預(yù)先決定的門限值更多的其它操作是否可以被處理器隊(duì)列,以在連接至該處的總線上進(jìn)行其它操作。若快取線在第一與第二高速緩存未命中,且并無較門限值多的其它操作被隊(duì)列,該方法也包括自細(xì)系統(tǒng)內(nèi)存而來的快取線。
(0021)本發(fā)明的優(yōu)點(diǎn)即是經(jīng)由不去配置預(yù)取線至隨后而來更形急迫的配置的損傷(detriment)處,而可使處理器總線與高速緩存的使用更有效率。該可編程的門限緩存器的額外性優(yōu)點(diǎn)在芯片硬件與時(shí)效上可完成選擇性的預(yù)取,尤以相關(guān)自然產(chǎn)生的利益為特別。
(0022)本發(fā)明的其余特征與優(yōu)點(diǎn)將在以下的附圖與說明中進(jìn)行討論。為更進(jìn)一步了解,請(qǐng)參考下面附圖及所伴隨實(shí)施例的各項(xiàng)詳細(xì)說明,將會(huì)對(duì)本發(fā)明技術(shù)內(nèi)容和特點(diǎn)有最好的了解。
(0024)圖2是
圖1的微處理器的操作流程圖。
(0026)微處理器100包括一控制邏輯102。該控制邏輯102接收與產(chǎn)生多種的控制信號(hào),以控制微處理器100進(jìn)行選擇性地預(yù)取快取線的動(dòng)作。該動(dòng)作是依據(jù)對(duì)未來處理器總線使用的預(yù)估所進(jìn)行的,且該預(yù)估是由處理器總線使用的現(xiàn)今層級(jí)到預(yù)先決定的起始層級(jí)的關(guān)系所決定的。所謂的起始層即將由以下進(jìn)行描述。
(0027)微處理器100還包括一指令譯碼器104,與控制邏輯102連接。指令譯碼器104接收軟件程序的指令以經(jīng)由微處理器100執(zhí)行,并且將那些接收的指令譯碼。尤其是指令譯碼器104被配置來將預(yù)取的指令譯碼。指令譯碼器104會(huì)經(jīng)由預(yù)取指令信號(hào)122來通知控制邏輯102,曾經(jīng)將一預(yù)取指令譯碼。
(0028)微處理器100還包括一緩存器檔案106,連接至指令譯碼器104,緩存器檔案106儲(chǔ)存了數(shù)個(gè)指令操作數(shù)。尤其地,儲(chǔ)存的操作數(shù)為計(jì)算預(yù)取的地址,如區(qū)段描述符、數(shù)組索引、位移量等部份。
(0029)微處理器100還包括一地址產(chǎn)生器108,連接至緩存器檔案106。地址產(chǎn)生器108基于緩存器檔案106所接收的操作數(shù)產(chǎn)生地址。尤其是地址產(chǎn)生器108產(chǎn)生一預(yù)取地址146,其為預(yù)取指令所指定的一內(nèi)存地址。
(0030)微處理器100還包括一第一級(jí)高速緩存112,連接至地址產(chǎn)生器108。第一級(jí)高速緩存112快取儲(chǔ)存數(shù)個(gè)字節(jié)的快取線及其相對(duì)應(yīng)的地址,而這些字節(jié)是讀取自微處理器100外的內(nèi)存。第一級(jí)高速緩存112也維護(hù)每一條快取線的狀態(tài)。在本實(shí)施例中,第一級(jí)高速緩存112利用MESI(修飾、互斥、共享、無效)快取一致性通訊協(xié)議。由第一級(jí)高速緩存112所維護(hù)的快取線狀態(tài)包括MESI之一的狀態(tài)值。第一級(jí)高速緩存112自地址產(chǎn)生器108處接收預(yù)取地址146,并再響應(yīng)產(chǎn)生一第一級(jí)高速緩存命中信號(hào)124。若預(yù)取地址146在第一級(jí)高速緩存112中命中,第一級(jí)高速緩存命中信號(hào)124是真值;若非如此,第一級(jí)高速緩存命中信號(hào)124是偽值。也就是說,若預(yù)取地址146在第一級(jí)高速緩存112中被快取了,且地址具有有效的狀態(tài),則第一級(jí)高速緩存命中信號(hào)124是真值。在MESI這個(gè)實(shí)施例中,有效的狀態(tài)是修飾、互斥、共享。第一級(jí)高速緩存命中信號(hào)124提供給控制邏輯102。
(0031)微處理器100還包括一第二級(jí)高速緩存114,該高速緩存114是連接著第一級(jí)高速緩存112。第二級(jí)高速緩存114快取儲(chǔ)存數(shù)個(gè)字節(jié)的快取線及其相對(duì)應(yīng)的地址,而這些字節(jié)是讀取自微處理器100外的內(nèi)存。第一級(jí)高速緩存112在快取記憶級(jí)層中較第二級(jí)高速緩存114更接近微處理器100中的數(shù)個(gè)執(zhí)行單元,該單元會(huì)使用這些快取線數(shù)據(jù),如一整數(shù)算數(shù)邏輯單元(integerarithmetic logic unit)與一浮點(diǎn)單元(floating-point unit)。以上二例在圖1中并無顯示。在本實(shí)施例中,第二級(jí)高速緩存114是第一級(jí)高速緩存112的犧牲性高速緩存。同時(shí),第二級(jí)高速緩存114也利用MESI快取一致性通訊協(xié)議(MESI cache coherency protocol)。
(0032)第二級(jí)高速緩存114也自地址產(chǎn)生器108接收預(yù)取地址146,并在那里回復(fù)時(shí)產(chǎn)生一第二級(jí)高速緩存命中信號(hào)126。若預(yù)取地址146在第二級(jí)高速緩存114中命中,則第二級(jí)高速緩存命中信號(hào)126是真值;若非如此,第二級(jí)高速緩存命中信號(hào)126是偽值。第二級(jí)高速緩存命中信號(hào)126是提供給控制邏輯102。此外,第二級(jí)高速緩存114會(huì)提供一快取線的狀態(tài),該快取線會(huì)在第二級(jí)高速緩存114至一第二級(jí)高速緩存狀態(tài)信號(hào)128上的控制邏輯102命中。
(0033)控制邏輯102會(huì)產(chǎn)生一控制信號(hào)132送至第一級(jí)高速緩存112與第二級(jí)高速緩存114。信號(hào)132指示第一級(jí)高速緩存112去配置儲(chǔ)存,以接收來自第二級(jí)高速緩存114的一快取線。尤其是第二級(jí)高速緩存114是選擇性地轉(zhuǎn)換至第一級(jí)高速緩存112,該快取線是由預(yù)取指令所明確指定出的,而該預(yù)取指令是依據(jù)以下所要描述的信號(hào)132而來的。
(0034)在本實(shí)施例中,第一級(jí)高速緩存112與第二級(jí)高速緩存114都是寫入配置(wrlte-allocate)高速緩存。也就是說,它們會(huì)在一寫入未命中(writemiss)后有配置一快取線的反應(yīng),而不是將寫入其它操作送至在離微處理器100的執(zhí)行單元較遠(yuǎn)的內(nèi)存級(jí)層中的一層級(jí)。舉例來說,在寫入第一級(jí)高速緩存112中未命中時(shí),會(huì)再配置一快取線,而不是轉(zhuǎn)送一寫入動(dòng)作(write transaction)至第二級(jí)高速緩存114。相同地,在寫入第二級(jí)高速緩存114中未命中時(shí),會(huì)再配置一快取線,而不是轉(zhuǎn)送一寫入動(dòng)作(write transaction)至系統(tǒng)內(nèi)存。
(0035)微處理器100還包括了一總線接口單元(bus interface unit;BIU)118,以下簡稱BIU118,該BIU118是連接至第一級(jí)高速緩存112與第二級(jí)高速緩存114??偩€接口單元118連是微處理器100其它區(qū)塊圖,包括第一級(jí)高速緩存112與第二級(jí)高速緩存114至一處理器總線142。該處理器總線142在系統(tǒng)中連接微處理器100至其它硬件,如至系統(tǒng)內(nèi)存;或者是其它的裝置,而這些裝置必須能扮演總線處理器142的主要角色,如其它的處理器。在本實(shí)施例中,第一級(jí)高速緩存112包括一第一級(jí)指令高速緩存與一第一級(jí)數(shù)據(jù)高速緩存。在本實(shí)施例中,每一個(gè)第一級(jí)指令高速緩存(L1 instruction cache)、第一級(jí)數(shù)據(jù)高速緩存(L1 data cache)與第二級(jí)高速緩存114都是處理器總線142至BIU118的總線控制者(bus master)。每一個(gè)高速緩存都可命令BIU118執(zhí)行處理器總線142上的總線需求。
(0036)一總線需求或一總線動(dòng)作都是一在處理器總線142上執(zhí)行動(dòng)作的需求。舉例說明,處理器總線142的動(dòng)作是包括數(shù)據(jù)的讀或取的轉(zhuǎn)移,如一預(yù)取指令所明確指定出的快取線;另一例,即介于微處理器100與其它系統(tǒng)硬件之間,如系統(tǒng)內(nèi)存??偩€動(dòng)作也包括快取一致性通訊協(xié)議相關(guān)的總線循環(huán)(cache coherency protocol-related bus cycles),如一處理器通知其它的處理器,要求快取線的使用權(quán),因此該處理器會(huì)改變線的快取狀態(tài),從一共享狀態(tài)至一修飾狀態(tài)。
(0037)當(dāng)BIU118收到一命令以執(zhí)行在處理器總線142上的動(dòng)作時(shí),BIU118會(huì)將總線需求排列在一隊(duì)列中或一管線隊(duì)列中。BIU118會(huì)維持所隊(duì)列的未執(zhí)行總線需求數(shù)目的一深度或一計(jì)數(shù)。BIU118提供總線需求隊(duì)列深度136至控制邏輯102。在本實(shí)施例中,每一個(gè)高速緩存112與114會(huì)窺伺處理器總線142以監(jiān)測(cè)處理器總線142上的其它控制器(bus master)的快取線命中。最后,BIU118自控制邏輯102接收一信號(hào)138,以指示BIU118去提取自系統(tǒng)內(nèi)存而來的一快取線配置到第一級(jí)高速緩存112或第二級(jí)高速緩存114。
(0038)微處理器100還包括一可編程門限緩存器116。該門限緩存器116儲(chǔ)存一門限值134。該門限值134可依據(jù)以下數(shù)個(gè)實(shí)施例方式,以程序化寫入門限緩存器116中。
(0039)在本實(shí)施例中,門限緩存器116被包括于微處理器100中的一特征控制緩存器(feature control register)。依據(jù)重設(shè)之后初始化微碼(microcode)的微處理器100將附有數(shù)個(gè)默認(rèn)值的特征控制緩存器程序化,這些默認(rèn)值在微處理器100制作過程中即已寫入在該微碼中,包括門限值134。
(0040)在本實(shí)施例中,微處理器100包括了一外接的、一次性編程的保險(xiǎn)絲數(shù)組。這些保險(xiǎn)絲會(huì)在微處理器100的制作后燒斷,以將一屏蔽值寫入該保險(xiǎn)絲數(shù)組中,以為能改變特征控制緩存器的默認(rèn)值。在這初始化微碼將附有默認(rèn)值的特征控制緩存器程序化后,微碼會(huì)讀取保險(xiǎn)絲數(shù)組值、互斥或附有保險(xiǎn)絲數(shù)組值的默認(rèn)值與儲(chǔ)存結(jié)果至特征控制緩存器。另一點(diǎn),特征控制緩存器是使用者可看得見的。于是,在初始化與微碼已程序化門限緩存器116后,在微處理器100上執(zhí)行的軟件會(huì)將初始值134寫入門限緩存器116中。
(0041)在本實(shí)施例中,控制邏輯102監(jiān)視總線需求排隊(duì)等待深度136,并據(jù)以產(chǎn)生統(tǒng)計(jì)數(shù)據(jù)??刂七壿?02會(huì)在微處理器100的執(zhí)行期間(run-time)時(shí)將根據(jù)收集到的統(tǒng)計(jì)數(shù)據(jù)存在于門限緩存器116中的初始值134更新。
(0042)微處理器100還包括一比較器152,是連接至門限緩存器116。該比較器152接收初始值134與總線需求排隊(duì)等待深度136,并比較這二值以產(chǎn)生一結(jié)果144以提供給控制邏輯102。若總線需求排隊(duì)等待深度136大于初始值134,則該結(jié)果144是真值;若非如此,則結(jié)果144是偽值。若是比較結(jié)果144顯示總線需求排隊(duì)等待深度136大于初始值134時(shí),本發(fā)明可選擇性地不去預(yù)取一預(yù)取指令所明確指定的快取線,除非快取線在一非共享狀態(tài)下的第二級(jí)高速緩存114中命中,如圖2中所描述的狀況。這樣使用處理器總線142會(huì)潛在地使其更有效率;尤其是在處理器總線1 42將在不久的未來就會(huì)被大量使用的的刻。比較結(jié)果144所扮演的是一預(yù)估BIU118是否在不久的未來執(zhí)行一更高層級(jí)的總線動(dòng)作的角色,如在預(yù)取指令后的短時(shí)間內(nèi)即開始。若執(zhí)行預(yù)取指令會(huì)延緩接下來更緊急的總線動(dòng)作的執(zhí)行時(shí),這個(gè)預(yù)估會(huì)使控制邏輯102虛擬操作(no-op)該預(yù)取指令。例如,自內(nèi)存配置更急迫需用的快取線。
(0043)本發(fā)明曾注意到處理器總線使用的先前動(dòng)作與未來處理器總線使用之間具有一關(guān)連性。尤其是本發(fā)明注意到一超越一統(tǒng)計(jì)初始值的先前總線使用,是一種工作量的改變已然發(fā)生的征兆,如工作切換(task switch)。因此,當(dāng)工作量的改變已然發(fā)生時(shí),微處理器很可能將會(huì)需要使用處理器總線,以自與新工作量有關(guān)的內(nèi)存提取快取線;而不是提取與預(yù)取指令有關(guān)的快取線。在上述狀況下,且在某種特定條件時(shí),進(jìn)行虛擬操作預(yù)取指令的動(dòng)作是有幫助的;而不是加上更多的處理器總線動(dòng)作需求至總線接口單元排隊(duì)等待(businterface unit queue)。
(0044)基于這樣,當(dāng)比較結(jié)果144顯示一高可能性,即在不久的未來,處理器總線使用層級(jí)將會(huì)很高時(shí),本發(fā)明將會(huì)應(yīng)用該比較結(jié)果144于傳統(tǒng)方法外的不同層面。以下偽碼(pseudo-code)說明本發(fā)明的預(yù)取架構(gòu)。
<pre listing-type="program-listing"> (0045) if(在第一級(jí)高速緩存中快取線命中){ no-op;/*什么都不做*/ }else{ if(總線需求深度大于初始值){ if(在第二級(jí)高速緩存中快取線命中共享) no-op;/*什么都不做*/ else if(在第二級(jí)高速緩存中快取線命中互斥或修飾) 自第二級(jí)高速緩存轉(zhuǎn)換快取線至第一級(jí)高速緩存; else no-op;/*什么都不做*/ }else{ if(在第二級(jí)高速緩存中快取線命中) 自第二級(jí)高速緩存提供所需的快取線至第一級(jí)高速緩存; else 自處理器總線提取快取線至第一級(jí)高速緩存; } }</pre>(0046)自上述的偽碼所觀察到的,若比較結(jié)果144并無顯示處理器總線使用在不久的未來會(huì)有可能很高時(shí),傳統(tǒng)的架構(gòu)將會(huì)被拿來使用;否則,除預(yù)取可以不產(chǎn)生更多的處理器總線動(dòng)作外,也就是說執(zhí)行一內(nèi)部的轉(zhuǎn)換,即自第二級(jí)高速緩存轉(zhuǎn)換該明確指定預(yù)取快取線(shared prefetch-specified cache line)至第一級(jí)高速緩存。本發(fā)明會(huì)虛擬操作該預(yù)取指令,僅是選擇性預(yù)取依據(jù)第二級(jí)高速緩存中快取線的某些狀態(tài)。
(0047)共享快取線主要是將只讀快取線在處理器總線上的數(shù)個(gè)控制器(master)間所共享,但是共享快取線也是可以寫入的。然而,預(yù)取指令并不顯示隨后存取的預(yù)取數(shù)據(jù)將是加載或儲(chǔ)存。若一指定的預(yù)取快取線自第二級(jí)高速緩存移動(dòng)至第一級(jí)高速緩存,但隨后的存取是儲(chǔ)存入該快取線的,于是第一級(jí)高速緩存需要產(chǎn)生一總線需求至總線接口單元,以為通知其它的總線控制器以取得該快取線的使用權(quán),以自共享至修飾狀態(tài)間作一轉(zhuǎn)換。如此,自第二級(jí)高速緩存轉(zhuǎn)換至第一級(jí)高速緩存將不會(huì)有效能增益(performance gain),因?yàn)樵搩?chǔ)存將無法完成,也就是說,這樣的狀態(tài)無法更新,必須要等到主張總線使用權(quán)需求完成才可以。此外,自第二級(jí)高速緩存轉(zhuǎn)換至第一級(jí)高速緩存時(shí)有可能損傷到效能的表現(xiàn),因?yàn)檫@樣的轉(zhuǎn)換可能會(huì)取代第一級(jí)高速緩存中具有潛在功能的快取線。于是,若該指定預(yù)取快取線在第二級(jí)高速緩存中是共享狀態(tài)的,該快取線最好是留在第二級(jí)高速緩存中,而不是轉(zhuǎn)換至第一級(jí)高速緩存。本發(fā)明也注意到某特定的窗口操作軟件會(huì)異常地將共享狀態(tài)下的快取線在指令與數(shù)據(jù)高速緩存間來回傳送。
(0048)請(qǐng)參考圖2所示,是本發(fā)明圖1中微處理器100的流程操作圖。流程的開始自區(qū)塊202。
(0049)在區(qū)塊202中,指令譯碼器104將一預(yù)取指令進(jìn)行譯碼,并告知控制邏輯102。處理流程自區(qū)塊202至判斷區(qū)塊(decision block)204。
(0050)在判斷區(qū)塊204中,預(yù)取地址146應(yīng)用于第一級(jí)高速緩存112,而控制邏輯102會(huì)檢驗(yàn)第一級(jí)高速緩存命中信號(hào)124,以判斷第一級(jí)高速緩存命中信號(hào)124是否真確,也就是說,預(yù)取地址146是否在第一級(jí)高速緩存112中命中。若是如此,控制邏輯102將不會(huì)預(yù)取該明確指定預(yù)取快取線。因?yàn)樗缫言诘谝患?jí)高速緩存112,且流程至此結(jié)束;若不是,處理流程回至判斷區(qū)塊206。
(0051)在判斷區(qū)塊206中,控制邏輯102會(huì)檢驗(yàn)結(jié)果144,以求取總線需求排隊(duì)等待深度136是否大于初始值134。若否,處理流程回至判斷區(qū)塊208;否則,處理流程回至判斷區(qū)塊214。
(0052)在判斷區(qū)塊208中,預(yù)取地址146應(yīng)用于第二級(jí)高速緩存114,而控制邏輯102會(huì)檢驗(yàn)第二級(jí)高速緩存命中信號(hào)126,以決定第二級(jí)高速緩存命中信號(hào)126是否真確。也就是說,預(yù)取地址146是否在第二級(jí)高速緩存114中命中。若不是,處理流程回至區(qū)塊212;否則,回至區(qū)塊222。
(0053)在區(qū)塊212中,控制邏輯102經(jīng)由控制信號(hào)138命令BIU118,以排隊(duì)等待一總線需求去提取由預(yù)取指令所明確指定的快取線。該預(yù)取指令在第一級(jí)高速緩存112與第二級(jí)高速緩存114中都未發(fā)現(xiàn)??刂七壿?02會(huì)提取快取線,因?yàn)樵撎幚砥骺偩€142在不久的未來不會(huì)被高度使用可由總線需求排隊(duì)等待深度136小大于初始值134來指出。本次流程將結(jié)束于區(qū)塊212。
(0054)在判斷區(qū)塊214中,控制邏輯102會(huì)檢驗(yàn)第二級(jí)高速緩存命中信號(hào)126,以求取第二級(jí)高速緩存命中信號(hào)126是否真確也就是說,預(yù)取地址146是否在第二級(jí)高速緩存114中命中。若不是,控制邏輯102不會(huì)提取明確指定快取線,因?yàn)榭偩€需求排隊(duì)等待深度136大于初始值134,所以該處理器總線142將如同之前曾提過的,即在不久的未來會(huì)被高度使用。于是,本次流程將結(jié)束于此;不然,流程將至判斷區(qū)塊216。
(0055)在判斷區(qū)塊216中,控制邏輯102會(huì)檢驗(yàn)第二級(jí)高速緩存狀態(tài)128,以求取由預(yù)取指令所明確指定的快取線狀態(tài)是否是共享的。若是共享的,控制邏輯102將不會(huì)轉(zhuǎn)換快取線自第二級(jí)高速緩存114至第一級(jí)高速緩存112,其原因在前已討論過了。于是,本流程結(jié)束。若非如此,處理流程回至判斷區(qū)塊218。
(0056)在判斷區(qū)塊218中,控制邏輯102會(huì)檢驗(yàn)第二級(jí)高速緩存狀態(tài)128是否是互斥或修飾的。若第二級(jí)高速緩存狀態(tài)128是互斥或修飾的一個(gè)值,則處理流程回至區(qū)塊222。若否,該快取線是無效的,且控制邏輯102不會(huì)提取明確指定快取線,因?yàn)樵撎幚砥骺偩€142將如之前曾提過的,即在不久的未來會(huì)被高度使用,因?yàn)榭偩€需求排隊(duì)等待深度136人于初始值134。于是,本次流程將結(jié)束于此。
(0057)在區(qū)塊222中,控制邏輯102會(huì)在控制信號(hào)132上產(chǎn)生一真值(truevalue),以指示第二級(jí)高速緩存114轉(zhuǎn)換預(yù)取指令所指定的快取線至第一級(jí)高速緩存112。也就是說,第一級(jí)高速緩存112為該明確指定預(yù)取快取線配置空間,并自第二級(jí)高速緩存114接收快取線,又儲(chǔ)存該快取線至所配置的空間。于是,流程止于區(qū)塊222。
(0058)以上有關(guān)本發(fā)明的實(shí)施例說明與附圖,并非用來限制本發(fā)明權(quán)利要求的保護(hù)的范疇,且就熟悉該技術(shù)的人員而言,顯然可有許多實(shí)質(zhì)相同的等效變化,這些變化不應(yīng)視為與本發(fā)明的精神與范圍有所背離。所有憑借此項(xiàng)技術(shù)的變化、修飾,均應(yīng)視為包括在本發(fā)明如下所述權(quán)利要求保護(hù)的范疇中。
(0059)本發(fā)明如前述的說明,確能達(dá)到預(yù)期的作用及效果,上述本發(fā)明較佳實(shí)施例的說明,是用以揭示本發(fā)明的技術(shù)特征,而非限制本發(fā)明的權(quán)益。因此,舉凡結(jié)構(gòu)上的細(xì)微變更或組件數(shù)目上的變更及等效的變換,仍應(yīng)隸屬本發(fā)明的范疇。
綜上所述,本發(fā)明確實(shí)為同類產(chǎn)品中“首先發(fā)明”,且可發(fā)揮更大的實(shí)用功效,深具利用價(jià)值,且未見有雷同或近似的物品公開于市。
權(quán)利要求
1.一選擇性執(zhí)行預(yù)取指令的微處理器,其特征在于,它包括一總線接口單元,在一總線上執(zhí)行總線動(dòng)作,且該總線連接該微處理器至一內(nèi)存;一預(yù)估器,連接至該總線接口單元,以產(chǎn)生一預(yù)估,該預(yù)估是經(jīng)由該預(yù)取指令所指定的一預(yù)取的快取線是否將延緩隨后在該總線上的總線動(dòng)作;及控制邏輯,連接至該預(yù)估器,而若預(yù)估顯示預(yù)取該快取線將延緩該隨后的總線動(dòng)作時(shí),即將選擇性地不進(jìn)行預(yù)取快取線的動(dòng)作。
2.如權(quán)利要求1所述的一選擇性執(zhí)行預(yù)取指令的微處理器,其特征在于,還包括一門限緩存器,連接至該預(yù)估器,以儲(chǔ)存一預(yù)先決定的門限值;其中該預(yù)估器會(huì)依據(jù)該門限值與該總線動(dòng)作的排隊(duì)等待值的一比較產(chǎn)生該預(yù)估。
3.如權(quán)利要求2所述的一選擇性執(zhí)行預(yù)取指令的微處理器,其特征在于,若該排隊(duì)等待的總線動(dòng)作數(shù)目大于門限值,則該預(yù)估器會(huì)預(yù)測(cè)預(yù)取的快取線將延緩隨后的總線動(dòng)作。
4.如權(quán)利要求1所述的一選擇性執(zhí)行預(yù)取指令的微處理器,其特征在于所述的隨后的總線動(dòng)作為自該內(nèi)存中配置其它的快取線。
5.一選擇性執(zhí)行預(yù)取指令的微處理器,其特征在于,它包括一總線接口單元,顯示一總線需求的當(dāng)時(shí)層級(jí),該總線需求是由該總線接口單元在一總線上執(zhí)行,而該總線是連接該微處理器至一內(nèi)存;一緩存器,連接至總線接口單元,且儲(chǔ)存一總線需求門限值;一比較器,連接至該緩存器,該總線接口根據(jù)該總線需求門限值與總線需求的當(dāng)時(shí)層級(jí)的一比較,產(chǎn)生是否會(huì)在該預(yù)取指令后隨即執(zhí)行更高層級(jí)總線需求的一預(yù)估;及邏輯控制,連接至該比較器,且預(yù)取一快取線,而該快取線是由依據(jù)一第一方法的預(yù)取指令所明確指定出的,該第一方法是指若該預(yù)估顯示總線接口單元將在總線上短暫接近預(yù)取指令的鄰近區(qū)執(zhí)行一更高層級(jí)的總線需求,若非如此,則會(huì)依據(jù)一第二方法預(yù)取快取記憶線。
6.如權(quán)利要求5所述的一選擇性執(zhí)行預(yù)取指令的微處理器,其特征在于,還包括一第一級(jí)與一第二級(jí)高速緩存,連接至該控制邏輯,其中,若該快取線在該第一級(jí)與第二級(jí)高速緩存中并未命中,則該第一方法即包括不會(huì)自內(nèi)存提取快取線。
7.如權(quán)利要求6所述的一選擇性執(zhí)行預(yù)取指令的微處理器,其特征在于若快取線在第一級(jí)與第二級(jí)高速緩存中并未命中,該第二方法即包括自內(nèi)存提取快取線而至第一級(jí)與第二級(jí)高速緩存至少的一中。
8.如權(quán)利要求6所述的一選擇性執(zhí)行預(yù)取指令的微處理器,其特征在于所述的第一方法還包括若快取線在第二級(jí)高速緩存命中與快取線在第二級(jí)高速緩存中具有一非共享(non-shared)狀態(tài)時(shí),則會(huì)轉(zhuǎn)換快取線自第二級(jí)高速緩存至第一級(jí)高速緩存。
9.如權(quán)利要求6所述的一選擇性執(zhí)行預(yù)取指令的微處理器,其特征在于所述的第一方法還包括若快取線在第二級(jí)高速緩存命中與快取線在第二級(jí)高速緩存中具有一修飾或互斥狀態(tài)時(shí),則會(huì)轉(zhuǎn)換快取線自第二級(jí)高速緩存至第一級(jí)高速緩存。
10.一選擇性執(zhí)行預(yù)取指令并明確指定一快取線的微處理器,具有一第一級(jí)高速緩存、一第二級(jí)高速緩存與一總線接口單元,以將該數(shù)個(gè)高速緩存連接至一總線,該總線連接微處理器與一內(nèi)存,其特征在于,微處理器包括一門限緩存器,儲(chǔ)存一門限值;一比較器,該比較器連接至該門限緩存器,若于該總線接口單元中并將在該總線上待執(zhí)行的需求大于該門限值時(shí),可在一輸出上產(chǎn)生一真值;其中,若該輸出是一真值的,且快取線是存在于第二級(jí)高速緩存,微處理器僅會(huì)在第二級(jí)快取記憶中的快取線一狀態(tài)不是共享時(shí),自第二級(jí)高速緩存轉(zhuǎn)換快取線至第一級(jí)高速緩存。
11.如權(quán)利要求10所述的一選擇性執(zhí)行預(yù)取指令并明確指定一快取線的微處理器,其特征在于,若該輸出是偽值的,且若快取線是現(xiàn)存于第二級(jí)高速緩存時(shí),微處理器會(huì)將快取線自第二級(jí)高速緩存轉(zhuǎn)換至第一級(jí)高速緩存。
12.如權(quán)利要求11所述的一選擇性執(zhí)行預(yù)取指令并明確指定一快取線的微處理器,其特征在于,若該輸出是偽值的,且若快取線是不存于任一高速緩存時(shí),微處理器會(huì)自該內(nèi)存至提取快取線其中至少的一高速緩存中。
13.如權(quán)利要求12所述的一選擇性執(zhí)行預(yù)取指令并明確指定一快取線的微處理器,其特征在于,若該輸出是真值,且若快取線是不存于任一高速緩存時(shí),微處理器不會(huì)自該內(nèi)存中提取快取線。
14.如權(quán)利要求10所述的一選擇性執(zhí)行預(yù)取指令并明確指定一快取線的微處理器,其特征在于,所述的預(yù)取指令是一兼容于Pentium III的預(yù)取指令。
15.如權(quán)利要求10所述的一選擇性執(zhí)行預(yù)取指令并明確指定一快取線的微處理器,其特征在于,所述的預(yù)取指令是一兼容于3DNOW的預(yù)取指令。
16.一具有一第一與一第二級(jí)高速緩存的微處理器,其特征在于,包括一門限緩存器,儲(chǔ)存一總線動(dòng)作隊(duì)列深度門限值;一比較器,連接至該門限緩存器并會(huì)產(chǎn)生一結(jié)果,若該微處理器將要在與連接至微處理器的總線上執(zhí)行的動(dòng)作比該總線動(dòng)作隊(duì)列深度門限值更多時(shí),,該結(jié)果是一真值;一指令譯碼器,將預(yù)取指令譯碼,以明確指定出快取線;控制邏輯,為接收結(jié)果,若快取線在第一與第二級(jí)高速緩存未命中的結(jié)果是真確的,則控制邏輯會(huì)放棄一在總線上提取快取線動(dòng)作的需求。
17.如權(quán)利要求16所述的一具有一第一與一第二級(jí)高速緩存的微處理器,其特征在于,若該高速緩存在共享狀態(tài)下的第二級(jí)高速緩存中命中時(shí),且僅在若該結(jié)果不是真值的條件下,該控制邏輯會(huì)將該快取線自第二級(jí)高速緩存轉(zhuǎn)換至第一級(jí)高速緩存。
18.一種提供給一選擇性執(zhí)行預(yù)取指令并明確指定一快取線且具有一第一與一第二級(jí)高速緩存的微處理器的方法,其特征在于,包括判斷該快取線是否命中在該第一與第二級(jí)高速緩存中;若快取線在第二級(jí)高速緩存中命中,則判斷該快取線的一狀態(tài);判斷在被該微處理器所排隊(duì)等待的動(dòng)作是否比預(yù)先決定的門限值更多,該總線是連接至該微處理器;及若快取線在第一與第二級(jí)高速緩存中未命中,且該微處理器所排隊(duì)等待的需求并未較排隊(duì)等待的門限值動(dòng)作多時(shí),則自系統(tǒng)內(nèi)存提取快取線。
19.如權(quán)利要求18所述的一種提供給一選擇性執(zhí)行預(yù)取指令并明確指定一快取線且具有一第一與一第二級(jí)高速緩存的微處理器的方法,其特征在于,還包括若該快取線并未在第一級(jí)指令高速緩存中命中,且該第二級(jí)指令高速緩存中快取線中,而狀態(tài)是共享并若不大于該預(yù)先決定的排隊(duì)等待門限值動(dòng)作時(shí),則白第二級(jí)指令高速緩存中轉(zhuǎn)換快取線至第一級(jí)指令高速緩存。
20.如權(quán)利要求18所述的一種提供給一選擇性執(zhí)行預(yù)取指令并明確指定快取線且具有一第一與一第二級(jí)高速緩存的微處理器的方法,其特征在于,還包括若該快取線并未在第一級(jí)指令高速緩存中命中,且若在第二級(jí)指令高速緩存中快取線命中,而第二級(jí)指令高速緩存是互斥或修飾狀態(tài)時(shí),則自第二級(jí)指令高速緩存中轉(zhuǎn)換快取線至第一級(jí)指令高速緩存。
21.如權(quán)利要求18所述的一種提供給一選擇性執(zhí)行預(yù)取指令并明確指定一快取線且具有一第一與一第二級(jí)高速緩存的微處理器的方法,其特征在于,還包括將該門限值寫入一門限緩存器。
22.如權(quán)利要求21所述的一種提供給一選擇性執(zhí)行預(yù)取指令開明確指定一快取線且具有一第一與一第二級(jí)高速緩存的微處理器的方法,其特征在于,將該門限值寫入一門限緩存器是在求取較門限值更多的動(dòng)作是否被排隊(duì)等待的動(dòng)作之前進(jìn)行的。
23.如權(quán)利要求21所述的一種提供給一選擇性執(zhí)行預(yù)取指令并明確指定一快取線且具有一第一與一第二級(jí)高速緩存的微處理器的方法,其特征在于,將該門限值寫入一門限緩存器是經(jīng)由微碼于重設(shè)后進(jìn)行,而該微碼是存在于處理器中。
24.如權(quán)利要求21所述的一種提供給一選擇性執(zhí)行預(yù)取指令并明確指定快取線且具有一第一與一第二級(jí)高速緩存的微處理器的方法,其特征在于,將該門限值寫入一門限緩存器是經(jīng)由微處理器中的軟件所執(zhí)行的。
25.如權(quán)利要求21所述的一種提供給一選擇性執(zhí)行預(yù)取指令并明確指定一快取線且具有一第一與一第二級(jí)高速緩存的微處理器的方法,其特征在于,將該門限值寫入一門限緩存器包括在微處理器的執(zhí)行期間,收集被處理器排隊(duì)等待的該動(dòng)作的統(tǒng)計(jì)數(shù)據(jù);依據(jù)收集的統(tǒng)計(jì)數(shù)據(jù)更新在門限緩存器中的門限值。
全文摘要
本發(fā)明涉及一微處理器,可依據(jù)未來處理器總線的使用與快取線的狀態(tài)來進(jìn)行選擇性預(yù)取指令。該微處理器包括一可編程的門限緩存器,以儲(chǔ)存一門限值。若微處理器的總線接口單元中被排隊(duì)等待的總線需求深度大于該門限值,則顯示了在不久的未來一高層級(jí)總線使用的可能性,如工作量的改變。若在處理器高速緩存中一預(yù)取指令快取線并未命中時(shí),該快取線將不會(huì)自外部內(nèi)存被預(yù)取,除非快取線是由自內(nèi)部高速緩存的一層級(jí)至一較低層級(jí)所提供的。然而,不論如何,即使是這個(gè)實(shí)施例,若快取線狀態(tài)是共享的,該快取線仍然不會(huì)被進(jìn)行內(nèi)部的轉(zhuǎn)移。
文檔編號(hào)G06F12/00GK1414467SQ02142479
公開日2003年4月30日 申請(qǐng)日期2002年9月20日 優(yōu)先權(quán)日2002年6月18日
發(fā)明者G·葛蘭·亨利, 羅德·E·胡克 申請(qǐng)人:智慧第一公司