亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

高速緩存數(shù)據(jù)區(qū)段的配置與初始化機制的制作方法

文檔序號:6375197閱讀:316來源:國知局
專利名稱:高速緩存數(shù)據(jù)區(qū)段的配置與初始化機制的制作方法
技術(shù)領(lǐng)域
本發(fā)明與微電子學(xué)的領(lǐng)域有關(guān),尤指一種裝置及方法使程序員得以命令微處理器在其內(nèi)部高速緩存(cache)上執(zhí)行配置與初始化一個區(qū)段(block)快取線(cache line)的預(yù)取運算(prefetch operation)。
背景技術(shù)
本申請案與下列同在申請中之美國專利申請案有關(guān),其申請日與本案相同,且具有相同的申請人與發(fā)明人。

在今日的微處理器,其內(nèi)部邏輯區(qū)段(logic block)間的數(shù)據(jù)傳輸速度遠超過于其與外部內(nèi)存的存取速度。在一個x86桌上型計算機組態(tài)中,其總線(bus)與系統(tǒng)內(nèi)存之間的接口運作速率是以百萬赫茲(megahertz)的百倍計,但是其內(nèi)部微處理器時脈速率卻已接近數(shù)十倍的十兆赫茲(gigahertz)。因此,近年來已發(fā)展出一個高速緩存結(jié)構(gòu)的層級體系,此體系使得高效能微處理器不必在每次讀取(read)或?qū)懭?write)資料時,必須在一個緩慢的內(nèi)存總線(memory bus)上執(zhí)行作業(yè)(transaction),而更能發(fā)揮其效能。
運作方式,對一微處理器管線內(nèi)的指令流程而言,是透明的,因此審慎的方式是在需用資料之前先發(fā)出預(yù)取指令,使得高速緩存可以在需用資料之前,從內(nèi)存提取資料-與在主程序流程(primary program flow)中其它指令的執(zhí)行平行處理。然后當隨后的指令(subsequenceinstruction)出現(xiàn),并且需要存取已預(yù)取的資料時,此數(shù)據(jù)已經(jīng)在高速緩存中立即可存取(readily accessible),所以程序的執(zhí)行不會因為等待從內(nèi)存提取資料而停滯。已預(yù)取的數(shù)據(jù)在高速緩存中立即可存取是僅指其將要被讀取而已。如果此預(yù)取的資料會被隨后的指令所改動,則程序的執(zhí)行將必須延遲以等待高速緩存單元到總線去請求共享資料的排他所有權(quán),而后區(qū)域處理器始可改動此資料。
如前所示,共享內(nèi)存區(qū)域被廣泛的應(yīng)用在今日計算機系統(tǒng),以提供各組件間的信息通訊之用。以組件間的一連接到總線的通訊緩沖器(communication buffer)為例,在資料區(qū)域的一些資料的存在或不存在(換言之,該指定區(qū)域被設(shè)定成同一邏輯數(shù)值,或全為一,或全為零),對一組件而言,可表示另一組件已經(jīng)準備好接收資料。相對的,在一視頻緩沖器的組態(tài)中,經(jīng)由將所有一個機載(on-board),或區(qū)域(local),高速緩存在一個管線化(pipeline)微處理器中是一個獨立的單位,在本質(zhì)上,其運作方式對于在管線化微處理器中流動的指令而言是透明(transparent)的,此方式確保一個應(yīng)用程序(application program)中的指令所需要的資料已經(jīng)常駐在其高速緩存內(nèi),而可以用管線速率存取,而不是以內(nèi)存總線速率。不同的技術(shù)使用不同的高速緩存架構(gòu),有些是由多層(multiple levels)高速緩存所組成第一層高速緩存是非常接近處理器的執(zhí)行邏輯(execution logic),第二層高速緩存可以是芯片上(on-chip)或非芯片上,是用來儲存較不常存取的資料,第三層高速緩存則可能是在記憶卡(memory card)上,以此類推。不論應(yīng)用那一種架構(gòu),熟習(xí)此領(lǐng)域技術(shù)者將發(fā)現(xiàn)使用高速緩存的目的在于排除當總線作業(yè)是經(jīng)由一個緩慢的內(nèi)存總線所發(fā)出時的微處理器管線中指令的停滯(stalled),此總線作業(yè)是為了取得一待決的(pending)讀取或?qū)懭脒\算所需的資料。當此狀況發(fā)生,程序的執(zhí)行將產(chǎn)生令人難以忍受的暫停(halt),直到得到所需資料為止。
今日計算機系統(tǒng)組件(device)間共享內(nèi)存區(qū)域的現(xiàn)象使得情況更為復(fù)雜。舉例而言,主微處理器(primary microprocessor)與通訊微處理器(communications microprocessor)之間的通訊是經(jīng)由在一指定內(nèi)存區(qū)域上的讀取及寫入資料。視頻組件(video device)上顯示資料予操作員(operator)的視頻卡(video card)的微處理器與主微處理器共享一些被稱之為視頻緩沖器(video buffers)的內(nèi)存區(qū)域,也是很常見的情形。
在共享內(nèi)存系統(tǒng)中,可能發(fā)生來自一個共享區(qū)域(region)的資料存在于兩個不同微處理器的區(qū)域(local)高速緩存中,或是存在于連結(jié)到同一個內(nèi)存總線的不同組件上。若所有組件只是單純的讀取資料,則允許它們將資料常駐于其區(qū)域高速緩存結(jié)構(gòu),并不會造成任何傷害。但是當它們均被允許改動(modify)存在于其區(qū)域高速緩存的資料時,即會造成不可預(yù)期的后果。
為防止此情況發(fā)生,系統(tǒng)設(shè)計者開發(fā)了高速緩存一致性協(xié)議以標示高速緩存中數(shù)據(jù)的狀態(tài)。MESI是最普遍使用的協(xié)議。依照MESI來維護區(qū)域高速緩存可以確保同一資料的兩個副本不會在同一時間被改動。MESI共享狀態(tài)告知區(qū)域高速緩存一特定區(qū)段的資料是否為共享(shared)。如是共享,則區(qū)域處理器在經(jīng)由一較慢的內(nèi)存線上執(zhí)行作業(yè)以取得排他許可(exclusive permission)之前,不得改動資料。若欲改動資料,處理器需先取得資料的排他所有權(quán)。
本發(fā)明在此強調(diào)的問題是有關(guān)于欲將資料寫入內(nèi)存時所招致的發(fā)生在程序內(nèi)的延遲。熟習(xí)此領(lǐng)域技術(shù)者將發(fā)現(xiàn)高速緩存并無合理的方法以得知何時一特定內(nèi)存區(qū)域會最先被需要,因此當該特定內(nèi)存區(qū)域第一次被加載到區(qū)域高速緩存時,總是會引起內(nèi)存總線延遲。認知此項事實,設(shè)計者開發(fā)了一可在微處理器上執(zhí)行的預(yù)取指令。但是預(yù)取指令并不能在程序流程的操作數(shù)上運作。確切的說,預(yù)取指令命令區(qū)域高速緩存從內(nèi)存上加載操作數(shù)到該高速緩存以備未來之用。而且因為高速緩存單元與內(nèi)存間的視頻緩沖器項目設(shè)為同一數(shù)值,微處理器可以開始為操作員”繪制”背景顏色。為了在組件間轉(zhuǎn)移信息,上述兩個例子皆須在資料區(qū)域內(nèi)的資料實體上儲存特定資料。而這些事態(tài)皆不須在轉(zhuǎn)移信息之前讀取該資料區(qū)域的資料。因此,在共享內(nèi)存計算系統(tǒng)內(nèi)的組件在轉(zhuǎn)移資料到一共享內(nèi)存區(qū)域時,并無經(jīng)由高速緩存以前進到內(nèi)存總線的有效律方法-即使經(jīng)由預(yù)取運算,該共享內(nèi)存區(qū)域早已事先加載到高速緩存-因為該高速緩存內(nèi)的資料可能不是排他的擁有。
因此,我等需要一種裝置及方法使得程序員得以命令微處理器執(zhí)行預(yù)取資料,此資料是處于不需求助于總線作業(yè)以取得資料的排他所有權(quán),而可被隨后的運算所改動的狀態(tài)。
除此之外,我等亦需要一種裝置及方法使得程序員得以命令微處理器將被已排他的預(yù)取的數(shù)據(jù)初始化(initialize)。

發(fā)明內(nèi)容
本發(fā)明如同前述其它申請案,是針對上述及其它現(xiàn)有技術(shù)的問題與缺點加以克服。本發(fā)明提供一種更好的技術(shù)以預(yù)取一區(qū)段的高速緩存資料,其狀態(tài)是為使得隱含的儲存運算可立刻被公告以便該區(qū)段的資料被初始化成一指定數(shù)值。在一具體實施例中,提供一種組態(tài)為配置與初始化內(nèi)存中一區(qū)段的資料的微處理器裝置。該裝置包括轉(zhuǎn)譯邏輯與執(zhí)行邏輯。轉(zhuǎn)譯邏輯將一區(qū)段配置及初始化指令轉(zhuǎn)譯成一微指令序列,此微指令序列是用以命令微處理器預(yù)取處于排他狀態(tài)的一區(qū)段的快取線,并且將此區(qū)段的快取線初始化成一指定數(shù)值。執(zhí)行邏輯是耦接至轉(zhuǎn)譯邏輯。該執(zhí)行邏輯接收前述微指令序列,然后經(jīng)由內(nèi)存總線發(fā)出作業(yè),要求處于排他狀態(tài)一個區(qū)段的快取線,并且將此區(qū)段的快取線初始化成一指定數(shù)值。
本發(fā)明的一個目的是提供一種微處理器裝置以執(zhí)行區(qū)段配置與初始化運算。此裝置包含一區(qū)段配置與初始化指令及一轉(zhuǎn)譯器。該區(qū)段配置與初始化指令命令微處理器預(yù)取處于排他狀態(tài)的一個區(qū)段的快取線,并且將此區(qū)段的快取線初始化成一指定數(shù)值。轉(zhuǎn)譯器則是接收區(qū)段配置與初始化指令,并將此區(qū)段配置與初始化指令轉(zhuǎn)譯成相關(guān)的微指令,此相關(guān)的微指令命令在微處理器內(nèi)的執(zhí)行邏輯經(jīng)由一內(nèi)存總線發(fā)出總線作業(yè),此總線作業(yè)是要求此區(qū)段的快取線的排他所有權(quán)及將此區(qū)段的快取線初始化成一指定數(shù)值。
本發(fā)明的另一目的,在于提供一種配置與初始化一個區(qū)段的快取線的方法。此方法包括提取(retrieving)一區(qū)段配置與初始化宏指令;轉(zhuǎn)譯該區(qū)段配置與初始化宏指令成一微指令序列,此微指令序列是用以命令一微處理器預(yù)取處于排他狀態(tài)的一個區(qū)段的快取線,并且將此區(qū)段的快取線初始化成一指定數(shù)值;而且,響應(yīng)此微指令序列,經(jīng)由內(nèi)存總線發(fā)出總線作業(yè)以讀取該處于排他狀態(tài)的快取線,并且將該區(qū)段的快取線初始化成該指定數(shù)值。


圖1是為一解說當今微處理器的有效管線化階段的方塊2是為一方塊圖,其描述在如圖1所述的微處理器內(nèi)執(zhí)行一預(yù)取運算的一接口至內(nèi)存的高速緩存單元圖3是為一時脈圖,其說明由如圖1及圖2所述的微處理器所發(fā)出,經(jīng)由內(nèi)存總線以執(zhí)行的預(yù)取運算的兩種可能作業(yè)集圖4是為本發(fā)明的延伸預(yù)取指令的方塊5是為一表格,其說明如何將如圖4所示的延伸預(yù)取指令的延伸地址定位字段編碼,用以命令微處理器執(zhí)行預(yù)取一處于排他MESI狀態(tài)的快取線圖6是為一方塊圖,其詳述本發(fā)明執(zhí)行意圖進行儲存運算的預(yù)取的一種微處理器圖7是為一方塊圖,其描述在如圖6所述的微處理器內(nèi)執(zhí)行一意圖進行儲存運算的預(yù)取的一接口至內(nèi)存的高速緩存單元圖8是為一時脈圖,為說明本發(fā)明由如圖6及圖7所述的微處理器所發(fā)出,經(jīng)由內(nèi)存總線以執(zhí)行意圖進行儲存運算的預(yù)取的總線作業(yè)圖9是為本發(fā)明的延伸區(qū)段預(yù)取指令的方塊10是為一方塊圖,其描述在如圖6所述的微處理器內(nèi)執(zhí)行一區(qū)段預(yù)取及儲存運算的一接口至內(nèi)存的高速緩存單元圖11是為一時脈圖,為說明本發(fā)明由如圖6及圖10所述的微處理器所發(fā)出,經(jīng)由內(nèi)存總線以執(zhí)行一區(qū)段預(yù)取及儲存運算的總線作業(yè)圖12是為解說本發(fā)明用以執(zhí)行意圖進行儲存運算的預(yù)取方法的流程13是為解說本發(fā)明用以執(zhí)行意圖進行儲存運算的區(qū)段預(yù)取方法的流程14是為一表格,其說明如何將如圖4所示的延伸預(yù)取指令的延伸地址定位字段編碼,用以命令微處理器執(zhí)行一快取線的預(yù)取及初始化圖15是為一方塊圖,其描述在如圖6所述的微處理器內(nèi)配置及初始化一快取線的一接口至內(nèi)存的高速緩存單元圖16是為解說本發(fā)明用配置及初始化一快取線的方法的流程17是為一方塊圖,其描述在如圖6所述的微處理器內(nèi)配置及初始化一個區(qū)段的快取線的一接口至內(nèi)存的高速緩存單元圖18是為解說本發(fā)明配置及初始化一高速緩存數(shù)據(jù)區(qū)段的方法的流程圖其中,附圖標記說明如下100 管線化微處理器101 提取程序102 轉(zhuǎn)譯階段 103 暫存階段104 尋址階段 105 執(zhí)行階段106 執(zhí)行邏輯 107 數(shù)據(jù)高速緩存108 內(nèi)存 109 高速緩存總線110 內(nèi)存總線 120 程序流程120~123 宏指令200 高速緩存單元接口 201 微處理器202 宏指令210 轉(zhuǎn)譯器211 微指令220 高速緩存單元221 記錄邏輯 222 數(shù)據(jù)高速緩存223 停滯訊號 230 總線單元240 系統(tǒng)內(nèi)存總線 241 總線組件總線組件242 數(shù)據(jù)存儲器301~302 作業(yè)指令集303~304 總線作業(yè)400 延伸預(yù)取指令 401 前置碼402 預(yù)取運算碼403 延伸地址指定元600 微處理器 601 提取邏輯
602 指令高速緩存603 指令內(nèi)存604 指令隊列606 轉(zhuǎn)譯邏輯607 延伸轉(zhuǎn)譯邏輯608 微指令隊列609 執(zhí)行邏輯610 延伸高速緩存單元611 數(shù)據(jù)高速緩存612 延伸記錄邏輯613 總線單元614 數(shù)據(jù)存儲器615 內(nèi)存總線700 方塊圖 701 微處理器702 宏指令 710 延伸轉(zhuǎn)譯器711 微指令 720 延伸高速緩存單元721 延伸記錄邏輯722 數(shù)據(jù)高速緩存723 停滯訊號730 總線單元740 總線741 總線組件總線組件742 數(shù)據(jù)存儲器800 時脈圖 801~802 總線作業(yè)900 延伸區(qū)段預(yù)取指令901 前置碼902 重復(fù)前置碼 903 預(yù)取運算碼904 延伸地址指定元1000 方塊圖 1001 微處理器1002 宏指令 1010 延伸轉(zhuǎn)譯器1011 微指令序列 1012 架構(gòu)緩存器1013 影子計數(shù)緩存器 1020 延伸高速緩存單元1021 延伸區(qū)段記錄邏輯1022 數(shù)據(jù)高速緩存1023 停滯訊號1030 總線元1040 內(nèi)存總線1041 總線組件總線組件1042 數(shù)據(jù)存儲器1100 時脈圖 1101~1102 總線作業(yè)1200~1220 意圖進行儲存運算的預(yù)取的方法的流程1300~1328 意圖進行儲存運算的區(qū)段預(yù)取的方法的流程
1500 方塊圖 1501 微處理器1502 宏指令 1510 延伸轉(zhuǎn)譯器1505 架構(gòu)緩存器 1511 微指令1520 延伸高速緩存單元1521 延伸記錄邏輯1522 數(shù)據(jù)高速緩存1523 停滯訊號1530 總線單元1540 系統(tǒng)內(nèi)存總線1541 總線組件總線組件1542 數(shù)據(jù)存儲器1600~1622 外取線配置與初始化的方法的流程1700 方塊圖 1701 微處理器1702 宏指令 1710 延伸轉(zhuǎn)譯器1705 架構(gòu)緩存器 1711 微指令1712 架構(gòu)緩存器 1713 影子計數(shù)緩存器1720 延伸高速緩存單元1721 延伸區(qū)段記錄邏輯1722 數(shù)據(jù)高速緩存1723 停滯訊號1730 總線單元1740 內(nèi)存總線1741 總線組件總線組件1742 數(shù)據(jù)存儲器1800~1830 高速緩存數(shù)據(jù)區(qū)段配置與初始化的方法的流程具體實施方式
以下的說明,是在一特定實施例及其必要條件的脈絡(luò)下而提供,可使一般本領(lǐng)域技術(shù)人員能夠利用本發(fā)明。然而,各種對該較佳實施例所作的修改,對本領(lǐng)域技術(shù)人員而言乃是顯而易見,并且,在此所討論的一般原理,亦可應(yīng)用至其它實施例。因此,本發(fā)明并不限于此處所展出與敘述的特定實施例,而是具有與此處所揭露的原理與新穎特征相符的最大范圍。
前文已針對今日的管線化微處理器如何執(zhí)行預(yù)取運算,作了背景的討論,有鑒于此,在圖1至3,將呈現(xiàn)一強調(diào)今日預(yù)取技術(shù)的限制的例子。緊接著,在圖4至18,將呈現(xiàn)本發(fā)明的討論。本發(fā)明使得程序員得以命令微處理器預(yù)取處于排他MESI狀態(tài)的資料至其高速緩存,并且將資料初始化為所規(guī)定數(shù)值,因此,得以避免因為隨后的儲存運算執(zhí)行資料的初始化所造成的任何程序延遲。
請參閱圖1,其是一方塊圖,用以說明在今日管線化微處理器100內(nèi)的有效管線階段101-105。此微處理器有一個提取階段101,一個轉(zhuǎn)譯階段102,一個暫存階段103,一個尋址階段104,及一個執(zhí)行階段105。
于運作時,該提取階段101從系統(tǒng)內(nèi)存的一指令范圍120中提取(retrieve)宏指令121-123以供微處理器100執(zhí)行。該宏指令121-123接著被送至轉(zhuǎn)譯階段102。該轉(zhuǎn)譯階段102將宏指令121-123轉(zhuǎn)譯成對應(yīng)的微指令(或稱原生指令)序列(未顯示),此微指令序列是命令微處理器100執(zhí)行宏指令121-123指定的運算。非常類似于工廠產(chǎn)品在裝配線上流經(jīng)連續(xù)的工作站的方式,該微指令亦同步于管線時脈訊號(未顯示)的流經(jīng)在管線中隨后的階段103-105。根據(jù)前述方式,微指令被送至?xí)捍骐A段103。如果有一特定微指令指定一操作數(shù)被儲存于暫存階段103的緩存器內(nèi),則邏輯在那一點上可存取該緩存器以提取該操作數(shù),并且將的隨同該特定微指令一起送至尋址階段104。尋址階段104包含用以產(chǎn)生地址以存取儲存在數(shù)據(jù)存儲器108內(nèi)的操作數(shù)的邏輯。相似于暫存階段103,該尋址階段104亦將所產(chǎn)生的地址,隨著相應(yīng)的微指令,傳送至執(zhí)行階段105。
執(zhí)行階段105執(zhí)行該微指令所指定的運算。在當今的微處理器100,運算的型式是由指令集架構(gòu)(instruction set architecture)所決定,但是本領(lǐng)域技術(shù)人員將發(fā)現(xiàn)這些運算不會超出一般的范疇,例如邏輯運算,算術(shù)運算,及內(nèi)存存取運算(換言之,資料讀取與資料寫入運算)。由執(zhí)行指定的運算所產(chǎn)生的結(jié)果,若不是儲存于暫存階段103的緩存器內(nèi),即是被寫入到數(shù)據(jù)存儲器108內(nèi)的存儲位置。
本領(lǐng)域技術(shù)人員將發(fā)現(xiàn)今日的管線化微處理器100也許會有比圖1的101-105更多的階段,因為,經(jīng)由分解管線中的主函數(shù)以增加管線中階段的數(shù)目是一種經(jīng)證實可增加管線(pipeline)中指令121-123的產(chǎn)出量的技術(shù)。為了簡明起見,如圖1所示的當今微處理器100的管線化階段101-105已經(jīng)足以說明先前技術(shù)的缺點,而不需以不相關(guān)的細節(jié)增加讀者的負擔。
值得注意的是在當今微處理器100中,其執(zhí)行階段105除了有一數(shù)據(jù)高速緩存107之外,還有執(zhí)行邏輯106。該數(shù)據(jù)高速緩存107的運作是與在管線化階段101-105中指令的執(zhí)行平行,此運作方式確保那些有高度可能性被一應(yīng)用程序的指令121-123所存取的數(shù)據(jù)已經(jīng)存在于高速緩存107,因此當數(shù)據(jù)存取微指令(換言之,加載內(nèi)存或儲存內(nèi)存微指令)進行到執(zhí)行階段105時,該執(zhí)行邏輯106能夠在一或兩個管線時脈周期之內(nèi)執(zhí)行該資料的存取,而不是造成可能數(shù)以百計的時脈周期的程序延遲,只因為等待經(jīng)由內(nèi)存總線110到數(shù)據(jù)存儲器108以執(zhí)行該資料的存取。在一有效率的高速緩存系統(tǒng)組態(tài)中,資料的加載與儲存絕大部份發(fā)生在經(jīng)由高速緩存總線109的執(zhí)行邏輯106與數(shù)據(jù)高速緩存107之間,并且數(shù)據(jù)高速緩存107的運作方式是相對的透明于流經(jīng)管線化階段102-105的微指令流程,此運作方式確保資料實體的快取副本與系統(tǒng)內(nèi)存108是同步且一致的。
MESI(修改,排他,共享,無效)(modified,exclusive,shared,invalid)是個普遍使用的協(xié)議,此協(xié)議是用以在一系統(tǒng)組態(tài)的內(nèi)存108的共享區(qū)域內(nèi)確保其高速緩存項目的一致性。雖然并未在圖一中描述,但是為了使用同一資料運算的目的,在一計算機系統(tǒng)組態(tài)中的其它組件(未顯示)是可以共享內(nèi)存108的一些區(qū)域。舉例而言,視頻卡可以與微處理器100共享內(nèi)存108的一個區(qū)域,以便于存取微處理器100所產(chǎn)生的監(jiān)視器顯示資料。另一例則是在系統(tǒng)總線110上的多重組件可以經(jīng)由從數(shù)據(jù)存儲器108中的共享區(qū)域的資料讀取及資料寫入來彼此連絡(luò)。架構(gòu)性研究的詳細敘述以提供使用MESI協(xié)議的動機并不在本發(fā)明的應(yīng)用領(lǐng)域;此處只需了解MESI在確定系統(tǒng)內(nèi)存108與區(qū)域高速緩存結(jié)構(gòu)107之間資料的一致性的普遍應(yīng)用。
因為經(jīng)由內(nèi)存總線110的作業(yè)需要數(shù)以百計的時脈周期才能完成,所以資料被以包含數(shù)個字節(jié)的區(qū)段形態(tài)在數(shù)據(jù)高速緩存107中移進及移出。這些區(qū)段稱為快取線。雖然快取線行寬(換言之,快取線的字節(jié)大小)會因不同的架構(gòu)而改變,在今日的系統(tǒng)架構(gòu)非常常見的有32-字節(jié)行寬,或64-字節(jié)行寬,或甚至128-字節(jié)行寬。
即使是最有效率的高速緩存結(jié)構(gòu)107在從內(nèi)存108,經(jīng)由內(nèi)存總線110,到高速緩存107的進行資料轉(zhuǎn)移,不可避免地會有所延遲。但是在提供一快取線給高速緩存107之后,其隨后的對該快取線內(nèi)的數(shù)據(jù)實體的存取即不會發(fā)生重大的延遲,因為高速緩存107及其高速緩存總線109的速度是與微處理器100內(nèi)其它邏輯的速度(例如執(zhí)行邏輯106)相近的。
依照MESI協(xié)議,在區(qū)域資料高速緩存107內(nèi)的快取線可處于下述任一四種狀態(tài)中修改,排他,共享,及無效。一修改狀態(tài)的快取線是指在該快取線上執(zhí)行一區(qū)域儲存運算后,但是尚未與主存儲器108同步化的快取線。監(jiān)測來自其它組件(亦稱為總線組件的經(jīng)由其內(nèi)存總線110的內(nèi)存作業(yè)是區(qū)域高速緩存107的責任,因此如果總線組件從一修改狀態(tài)的快取線要求資料,則區(qū)域高速緩存107會將該修改過的資料送至該要求資料的總線組件。此種對總線110的監(jiān)測稱為總線窺視模式(bus snooping)。一排他狀態(tài)的快取線是指其區(qū)域高速緩存107可以在該快取線上執(zhí)行儲存運算的快取線。排他狀態(tài)暗示其區(qū)域高速緩存107擁有對該快取線的排他所有權(quán);微處理器100因此被許可修改其內(nèi)容。一共享狀態(tài)的快取線是指存在于兩個或數(shù)個在總線110上組件的區(qū)域高速緩存107內(nèi)的快取線。因此,任一組件均可從共享的快取線讀取資料,但均不被許可去修改其內(nèi)容。為能在共享的快取線上修改資料(換言之,執(zhí)行儲存運算),在修改其內(nèi)容之前,組件100需先經(jīng)由內(nèi)存總線110與其它組件實施適當?shù)淖鳂I(yè)以取得該快取線的排他所有權(quán)(換言之,讀取處于排他MESI狀態(tài)的快取線到其區(qū)域高速緩存107)。一旦取得該快取線的排他所有權(quán),即可執(zhí)行儲存運算,并且將該快取線狀態(tài)變更為修改狀態(tài)。在公告(posting)儲存運算之前,先行要求快取線的排他所有權(quán)可以保證資料的一致性,因為在任一時間點,均只有一個組件100可以修改其快取線的內(nèi)容。當區(qū)域高速緩存107偵測到(經(jīng)由窺視模式)經(jīng)由內(nèi)存總線110至其快取線的寫入作業(yè),或是當另一組件經(jīng)由內(nèi)存總線110發(fā)出總線作業(yè)以取得該快取線的排他所有權(quán)時,該快取線狀態(tài)即變更為無效狀態(tài)。將一快取線標示為無效表示其內(nèi)的資料與內(nèi)存108不一致而無法被讀取或?qū)懭搿?br> 因為一高速緩存107的運作是與在微處理器管線中的指令流程平行,在程序流程120中,設(shè)計者需在資料的存取被要求之前,先提供預(yù)取宏指令122以加載該數(shù)據(jù)到一高速緩存107,因此得以克服資料必須起始的從內(nèi)存108提取至高速緩存107所導(dǎo)致的延遲的缺點。在程序流程120中通常有一預(yù)取指令122以命令其區(qū)域高速緩存107從內(nèi)存108加載一快取線,而此預(yù)取指令122與隨后指令的執(zhí)行是平行的,因此當程序流程120的指令123要從該快取線存取資料的時候,該快取線已經(jīng)存于其高速緩存107中。在圖一的例子中,一預(yù)取指令122,PREFETCHTO[EAX],命令由緩存器EAX的內(nèi)容所定位的快取線被加載到高速緩存107,使得其內(nèi)容可被隨后的資料存取指令123,MOVEBX,[EAX],在數(shù)據(jù)流120中被執(zhí)行時所使用,此數(shù)據(jù)存取指令123命令微處理器100從由緩存器EAX指定的地址讀取資料,并且將之移至緩存器EBX。因為x86指令已被廣泛的認知,為了簡明起見,傳統(tǒng)上前述數(shù)據(jù)流120內(nèi)的預(yù)取指令122及數(shù)據(jù)存取指令123的描述是根據(jù)x86的指令集架構(gòu)。但是本領(lǐng)域技術(shù)人員將發(fā)現(xiàn),在許多其它的指令集架構(gòu)亦提供預(yù)取指令122以命令微處理器100從內(nèi)存108讀取一快取線至一區(qū)域高速緩存107,使得隨后的指令123從該快取線執(zhí)行一指定的資料讀取運算不會發(fā)生延遲。如果預(yù)取指令是很明智的置于數(shù)據(jù)流120內(nèi),則可以有效率的克服因為在高速緩存107的起始存取資料所造成的延遲,而因此顯著的改進程序的執(zhí)行速度。當完成預(yù)取運算的一經(jīng)由內(nèi)存總線110的作業(yè)后,其所需求的快取線不是以排他狀態(tài)(若是該區(qū)域高速緩存107擁有該快取線的唯一快取副本時),即是以共存狀態(tài)(若是其它組件亦擁有該需求快取線的快取副本時)存在于高速緩存107內(nèi)。不論其在那一狀態(tài),在該快取線內(nèi)的數(shù)據(jù)實體是可被立即讀取(read)存取的。但是如前述所指明,為將資料寫入到一快取線(換言之,執(zhí)行一儲存運算),需要擁有該快取線的排他所有權(quán)。因此,如果該預(yù)取運算導(dǎo)致快取處于排他狀態(tài)的快取線,則一待決的儲存即可立刻對此快取線公告。但是若該來自總線110的快取線是于共享狀態(tài),則一待決的儲存必須被停滯(stalled),以等待該高速緩存單元107經(jīng)由總線110發(fā)出作業(yè)以取得該快取線的排他所有權(quán)。在該快取線在排他狀態(tài)下被送至高速緩存107之后,則該待決的儲存即可被公告。
如圖2所示,其是為一方塊圖200,用以描述在圖1的微處理器內(nèi)執(zhí)行預(yù)取運算的一接口至內(nèi)存的高速緩存單元。該方塊圖200顯示在微處理器201內(nèi)被應(yīng)用為執(zhí)行預(yù)取運算的邏輯。該微處理器201內(nèi)有一轉(zhuǎn)譯器210以接受一宏指令流程202并將之轉(zhuǎn)譯成對應(yīng)的微指令211。用以命令對內(nèi)存242作數(shù)據(jù)加載及儲存運算的微指令211隨后即被送到一高速緩存單元220。該高速緩存單元220包括記錄邏輯221及一數(shù)據(jù)高速緩存222。該記錄邏輯221是耦接至一總線單元230。該總線單元230是接口到一系統(tǒng)內(nèi)存總線240,該系統(tǒng)內(nèi)存總線并且與系統(tǒng)內(nèi)存242及其它總線組件241耦接。
宏指令的示范流程202說明如何指定一預(yù)取運算及如何可在此預(yù)取的資料上執(zhí)行隨后的讀取與儲存運算。一有關(guān)于此運算序列在桌上型計算機上的常見范例是內(nèi)存內(nèi)計數(shù)器的讀取及增加。一序列的預(yù)取,讀取,及儲存運算需要既可以在快取線內(nèi)讀取資料,也可以在快取線內(nèi)修改資料。因此,示范流程的第一個宏指令202,PREFETCH[EAX],命令微處理器201去預(yù)取一地址對應(yīng)于緩存器EAX內(nèi)容的快取線。第二個宏指令202,MOV EBX,[EAX],命令微處理器201去讀取一地址為緩存器EAX所指定的內(nèi)存位置的內(nèi)容,并將該內(nèi)容寫入緩存器EBX。第三個宏指令202,INC EBX,命令微處理器201增加緩存器EBX的內(nèi)容。第四個宏指令202,MOV EAX,[EBX],命令微處理器201在對應(yīng)于緩存器EAX內(nèi)容的內(nèi)存位置上儲存該緩存器EBX的內(nèi)容。上述詳細的預(yù)取,讀取,及儲存運算僅僅是增加一個數(shù)值到地址由緩存器EAX所指定的內(nèi)存。值得注意的是為了要有效率的利用該預(yù)取指令202,必須在第二個宏指令202,MOV EBX,[EAX],之前提供充分的該預(yù)取指令202,使得因為加載由EAX的內(nèi)容所指定的快取線的所造成的延遲,可以被中介的宏指令202的平行執(zhí)行所吸收。但是,為了簡明起見,該中介的宏指令202并未在方塊圖200中敘述。
轉(zhuǎn)譯器210將該預(yù)取宏指令202轉(zhuǎn)譯成一對應(yīng)的預(yù)取微指令211,PREFETCH[EAX],然后送到高速緩存單元220。記錄邏輯221詢問數(shù)據(jù)高速緩存222以決定所要求的快取線是否已存在并且有效(換言之,即非處于無效狀態(tài))于數(shù)據(jù)高速緩存222內(nèi)。若答案為否,則該記錄邏輯221命令其總線單元230,經(jīng)由其系統(tǒng)內(nèi)存總線240,發(fā)出作業(yè)以從內(nèi)存242取得所要求的快取線。若其它的總線組件241均無該所要求的快取線的副本時,則該記錄邏輯221即將所要求的快取線以排他狀態(tài)送到資料高速緩存222。若一或數(shù)個總線組件241擁有該要求的快取線的區(qū)域副本時,則該記錄邏輯221即將該快取線以共享狀態(tài)寫入到數(shù)據(jù)高速緩存222。在前述任一狀態(tài),該所要求的快取線均存在于高速緩存222內(nèi)以備隨后的存取運算使用。
轉(zhuǎn)譯器210將第二個宏指令202轉(zhuǎn)譯成一加載微指令211,LD EBX,[EAX],命令微處理器加載地址為緩存器EAX所指定的內(nèi)存的內(nèi)容到緩存器EBX。如前圖一所討論的,微處理器內(nèi)的執(zhí)行邏輯(未顯示)從高速緩存單元220要求該內(nèi)存地址的內(nèi)容。因為該快取線所有的內(nèi)容,由于預(yù)取運算的結(jié)果已經(jīng)存在于該資料高速緩存222中,所以市立即可用并且加載微指令211的執(zhí)行不會有任何延遲。
第三個宏指令202被轉(zhuǎn)譯成一對應(yīng)的增加微指令211,INC EBX,此指令命令執(zhí)行邏輯將緩存器EBX的內(nèi)容增加。因為不需要新的資料,所以該加載微指令211不會被送到高速緩存單元220。
最后,在流程中的第四個宏指令202被轉(zhuǎn)譯成一儲存微指令211,ST[EAX],EBX,此指令命令執(zhí)行邏輯去執(zhí)行一資料儲存運算,以將緩存器EBX的內(nèi)容寫入到地址由緩存器EAX內(nèi)容所指定的內(nèi)存位置。該儲存微指令211從而以待決的儲存運算型式被送到其高速緩存單元220。于是,記錄邏輯221偵測到以待決的儲存運算為目標的快取線存在于該資料高速緩存222。若該快取線是處于排他狀態(tài),則此待決的儲存可立刻被公告并將該快取線的狀態(tài)變更為修改狀態(tài)。另一方面,若該快取線是處于共享狀態(tài),則該高速緩存單元220確定一停滯訊號223以暫停該微指令211在微處理器201的管線階段中的進行,同時該執(zhí)行邏輯221則命令其總線單元230,經(jīng)由其內(nèi)存總線240,執(zhí)行作業(yè)以取得該快取線的排他所有權(quán)。一旦取得排他所有權(quán),則可許可待決的儲存對該快取線公告其資料,并且終止停滯訊號,從而繼續(xù)程序的執(zhí)行。
現(xiàn)在考慮一種運算型式只是單純的寫入資料到內(nèi)存中而不需先讀取資料,或是一種運算型式是會先讀取數(shù)據(jù),但是此型式確定預(yù)期有一儲存運算會隨后被公告。在這些案例中,只有對那些須先讀取資料的案例執(zhí)行預(yù)先的預(yù)取指令是確定可以將程序延遲減到最小。并且在這種案例中,若預(yù)取的結(jié)果使所要求的快取線處于排他狀態(tài),則可排除因儲存運算所導(dǎo)致的程序延遲。但是若預(yù)取的結(jié)果使所要求的快取線處于共享狀態(tài),則因儲存運算所導(dǎo)致的程序延遲將不可避免。這是個問題,因為今日的指令集架構(gòu)并未提供一方法以命令微處理器201去排他的預(yù)取一快取線到數(shù)據(jù)高速緩存222。雖然響應(yīng)一預(yù)取運算的快取線可以是排他的,但是此狀態(tài)并不能保證。這是因為預(yù)取宏指令架構(gòu)化的推定其預(yù)取的資料是會被讀取,并且其結(jié)果的經(jīng)由系統(tǒng)總線的作業(yè)要求該快取線被提取,不論其是否處于共享狀態(tài)。舉例來說,在x86架構(gòu)中,一x86預(yù)取指令的執(zhí)行結(jié)果的經(jīng)由總線240發(fā)出的作業(yè)作業(yè)是一資料讀取運算。該資料讀取運算要求一快取線的副本,并不管其是處于何種狀態(tài)。
現(xiàn)請參閱圖3,其顯示一時鐘脈沖圖,用以描述由圖1及圖2所示的微處理器201所發(fā)出的兩個可能的總線作業(yè)集301,302,此總線作業(yè)是經(jīng)由內(nèi)存總線240發(fā)出以執(zhí)行一預(yù)取與隨后的儲存運算。此二作業(yè)集301,302包括在微處理器201內(nèi)的從總線單元230到內(nèi)存總線240的請求作業(yè)303,與同樣在微處理器201內(nèi)從內(nèi)存總線240回到總線單元230的響應(yīng)作業(yè)304。作業(yè)集301描述那些當響應(yīng)一預(yù)取運算的快取線是排他狀態(tài)時所執(zhí)行的作業(yè)303-304。作集302描述那些當響應(yīng)一預(yù)取運算的快取線是共享狀態(tài)時所執(zhí)行的作業(yè)303-304。如同圖2所述,當執(zhí)行一預(yù)取指令時,記錄邏輯221命令其總線單元230對其內(nèi)存總線240發(fā)出一資料讀取請求303,DATA READ[EAX],要求被緩存器EAX所指定的快取線被送到其區(qū)域高速緩存222。該數(shù)據(jù)讀取請求303在作業(yè)集301是于時間點A發(fā)出,在作業(yè)集302則是于時間點D發(fā)出。該內(nèi)存總線240于是響應(yīng)發(fā)出一包括該所要求的快取線的資料響應(yīng)請求304回到總線單元230。若該快取線是在排他狀態(tài),則在作業(yè)集301的資料響應(yīng)請求304,DATA RESP[EAX].E,在時間點B被送回到總線單元230。若該快取線是在共享狀態(tài),則在作業(yè)集302的資料響應(yīng)請求304,DATA RESP[EAX].S,在時間點E被送回到總線單元230。在這時,數(shù)據(jù)可從高速緩存222讀取而不會導(dǎo)致總線作業(yè)延遲。
當一隨后的儲存運算面對該上述作業(yè)提供的快取線時,作業(yè)集302的場景說明為了能公告該儲存運算所必然發(fā)生的作業(yè)303,304。在作業(yè)集301中,因為快取線起始即是排他狀態(tài),欲公告該儲存運算只須在時間點C發(fā)出一資料寫入作業(yè)303,DATA WRITE[EAX],經(jīng)由總線240將資料寫入到內(nèi)存242。但是如作業(yè)集302所示,在時間點H的資料寫入作業(yè)303可以被發(fā)出之前,必須先執(zhí)行時間點F及G的作業(yè)303及304,以便能將快取線的所有權(quán)狀態(tài)由共享提升到排他。在時間點F,總線單元230發(fā)出一資料讀取與無效請求303,DATAREAD/INV[EAX],用以要求該共享狀態(tài)快取線的排他所有權(quán)。在數(shù)百時脈之后的時間點G,從總線240接收到一響應(yīng)請求304,DATA RESP[EAX].E,以將該快取線的狀態(tài)升級到排他狀態(tài)。在時間點G接收到響應(yīng)請求304之后,然后在時間點H該資料寫入作業(yè)303始可對總線240公告。
值得注意的是圖3中的作業(yè)集301,302是以一般性的方式表示,因為不同的微處理器架構(gòu)應(yīng)用不同的語義來說明總線作業(yè)303,304。除此之外,值得注意為了簡明起見,在圖3的時脈圖中已經(jīng)省略了先取得對數(shù)據(jù)總線240存取(例如BUS REQUEST,BUS GRANT等等)的所有的作業(yè)。
今日的發(fā)明者觀察到當今的數(shù)據(jù)預(yù)取指令受限于其并不支持確定預(yù)期的儲存運算,因此無法因為明確意圖進行對該快取線執(zhí)行一儲存運算而有利的預(yù)取一快取線到高速緩存222-一意圖進行儲存運算的預(yù)取-不論該快取線內(nèi)容的讀取是否先于對該快取線公告一儲存運算。若細查作業(yè)集302中的作業(yè)303,304,很明顯的預(yù)取一處于共享狀態(tài)的快取線,只有在該快取線的讀取會早于對其公告一儲存運算的情況下才有幫助。若是一儲存運算將對該共享的快取線公告,則程序的執(zhí)行必須被延遲以便將該快取線的狀態(tài)從共享提升到排他。
程序員雖然了解今日預(yù)取指令的限制,然而仍應(yīng)用它們?yōu)樽饕鈭D進行儲存情況下的預(yù)取,因為此預(yù)取指令可能(有時而非時常)于響應(yīng)一資料讀取請求時,取得一快取線的排他所有權(quán),僅只因為無其它總線組件擁有該要求的快取線的副本。但是,更理想的情況則是避免預(yù)取一處于共享狀態(tài)的快取線,而是命令一微處理器201去預(yù)取一處于排他狀態(tài)的快取線。本發(fā)明是指向一種裝置與方法,用以預(yù)取一處于排他MESI狀態(tài)的一單一快取線與一多重快取線,并且隨意的初始化該預(yù)取的快取線成一指定數(shù)值。本發(fā)明現(xiàn)將參照圖四至圖十八進行討論。
請參閱圖4,其是為依據(jù)本發(fā)明以顯示一延伸預(yù)取指令400的方塊圖。該延伸預(yù)取指令包括一選用的多重前置碼實體401,其后為一預(yù)取運算碼402,其后則為一延伸地址指定元403。在一具體實施例中,每一個前置碼及延伸地址實體401,403都是8位大小,而預(yù)取運算碼實體402則為一或二個字節(jié)大小,除非本文中另行修訂,所有的實體401-403均與x86的指令集架構(gòu)一致。
在運作上,該預(yù)取運算碼402是為一指定運算碼數(shù)值,用以命令一相符的微處理器執(zhí)行一預(yù)取運算。在一x86的具體實施例中,其運算碼實體401的指定數(shù)值為OF18H。一個或數(shù)個選用的前置碼實體401可用來命令一相符的微處理器執(zhí)行某些類型的附加運算,例如由一計數(shù)器界定次數(shù)的重復(fù)運算(例如在x86架構(gòu)中的REP前置碼),迫使執(zhí)行一原子運算(例如在x86架構(gòu)中的LOCK前置碼)等等。延伸地址指定元403是用以指定該特定類型的預(yù)取運算的執(zhí)行。在一x86的具體實施例中,所熟知的延伸地址指定元403是ModR/M字節(jié)403。
依據(jù)本發(fā)明,當微處理器偵測到一預(yù)取宏指令400時,依照由延伸地址指定元403內(nèi)容所指定的指示數(shù)值,該微處理器被命令去執(zhí)行從內(nèi)存預(yù)取資料到高速緩存,其范例將在圖五中進行討論。
圖5是一表格500,其為圖4的延伸預(yù)取指令內(nèi)的延伸地址指定元字段403的一具體實施例,解說依據(jù)本發(fā)明該延伸地址指定元字段403如何編碼以命令微處理器執(zhí)行預(yù)取一處于排他MESI狀態(tài)的快取線。為了說明本發(fā)明起見,此處使用符合x86架構(gòu)的ModR/M位字段,但是,可以預(yù)期的是本發(fā)明包含任何提供將一預(yù)取-排他指示編碼到指令400的工具的架構(gòu)。雖然圖五的例子指向?qū)㈩A(yù)取-排他(或是意圖進行儲存的預(yù)取)指示編碼到一延伸地址指定元403,本領(lǐng)域技術(shù)人員將發(fā)現(xiàn)該預(yù)取指示也可以被編碼成一在運算碼字段401內(nèi)的一指定運算碼數(shù)值。
在此編碼范例中,一x86 ModR/M字節(jié)使用該ModR/M字節(jié)的53位編碼一由預(yù)取運算碼401所指定型式的預(yù)取運算。今日,該x86預(yù)取指令使用數(shù)值000,001,010,及011以規(guī)定意圖進行讀取運算的預(yù)取指示。所有這四個數(shù)值000-011為命令一x86微處理器,在不同程度的接近度下,預(yù)取數(shù)據(jù)到其高速緩存。舉例來說,一個TO指示(換言之,數(shù)值001),命令微處理器預(yù)取一快取線到高速緩存層級體系的所有層級,而一NTA指示命令微處理器預(yù)取一快取線到一非暫時性高速緩存結(jié)構(gòu),并且進入一接近處理器的位置,同時將高速緩存污染減至最低程度。但是x86預(yù)取指示000-011編碼的普遍特征是一經(jīng)由總線發(fā)出的資料讀取請求以要求一快取線的副本,并不會在乎該快取線是處于何種MESI狀態(tài)。本發(fā)明的一具體實施例將一額外的指示編碼進延伸地址指定元中,用以命令微處理器依據(jù)本發(fā)明利用一排他(.S)指示去預(yù)取一指定的快取線。圖5顯示一用x86 ModR/M字節(jié)的53位編碼成數(shù)值100的預(yù)取-排他指示。當該prefetch.s指示依據(jù)本發(fā)明編碼到一預(yù)取指令400時,則一相符的微處理器會被偵測到經(jīng)由一內(nèi)存總線發(fā)出作業(yè)以預(yù)取處于排他MESI狀態(tài)的資料。在一x86的具體實施例中,如前述圖3B所示,其響應(yīng)于預(yù)取指令400的prefetch.s指示而發(fā)出的特定作業(yè)是一資料讀取與無效作業(yè)。在圖3B的例子中,該數(shù)據(jù)讀取與無效作業(yè)是用以將快取線從共享狀態(tài)提升至排他狀態(tài)。
在x86指令集架構(gòu)中,數(shù)值100的53位編碼在此的前是被宣告為非法的,同表格500中數(shù)值101-111的53位編碼所示。一非法的ModR/M字節(jié)編碼造成一異常。但是依據(jù)本發(fā)明,在一x86的具體實施例中,該改善一預(yù)取-排他指示的額外編碼是合法的,并且將導(dǎo)致前述的總線作業(yè)預(yù)取一處于排他狀態(tài)的快取線。
眾人皆知因為高速緩存結(jié)構(gòu)與內(nèi)存間的互動是不存在于微處理器管線的指令流程中,所以預(yù)取指令400只能要求的預(yù)取是依據(jù)所提供的指示來執(zhí)行。若一快取線現(xiàn)在并不被內(nèi)存存取所占用時,則可執(zhí)行預(yù)取運算。但若一快取線正被占用,則預(yù)取運算須被推遲。
現(xiàn)請參閱圖6,其是一方塊圖,詳述依據(jù)本發(fā)明的執(zhí)行一意圖進行儲存運算的預(yù)取的微處理器600。該微處理器600有三個值得注意的階段范疇提取,轉(zhuǎn)譯,及執(zhí)行。在提取階段的提取邏輯601是用以從一指令內(nèi)存603中提取宏指令到一指令高速緩存602。該被提取的宏指令然后經(jīng)由一指令隊列604被送到轉(zhuǎn)譯階段。該轉(zhuǎn)譯階段的轉(zhuǎn)譯邏輯606是耦接至一微指令隊列608。該轉(zhuǎn)譯邏輯606包括延伸轉(zhuǎn)譯邏輯607。執(zhí)行階段的執(zhí)行邏輯609包括一延伸高速緩存單元610。該延伸高速緩存單元610有一數(shù)據(jù)高速緩存611,此數(shù)據(jù)高速緩存611是耦接至延伸記錄邏輯612。該延伸記錄邏輯612是耦接至一總線單元613。該總線單元613是耦接至一數(shù)據(jù)存儲器614。
在運作上,提取邏輯601依據(jù)本發(fā)明從指令內(nèi)存603中提取格式化的指令到指令高速緩存602,然后將此宏指令依執(zhí)行順序送到指令隊列604。該宏指令被從指令隊列604提取后,被送到轉(zhuǎn)譯邏輯606。該轉(zhuǎn)譯邏輯606將每一送到此處的宏指令轉(zhuǎn)譯成對應(yīng)的微指令序列,該微指令序列是用以命令微處理器600執(zhí)行由該宏指令所指定的運算。延伸轉(zhuǎn)譯邏輯607則依據(jù)本發(fā)明去偵測延伸預(yù)取宏指令,并且為將其轉(zhuǎn)譯成對應(yīng)的延伸前置碼及地址指定元實體作準備。在一x86的具體實施例中,該延伸轉(zhuǎn)譯邏輯607被組態(tài)成偵測一x86預(yù)取指令,并且依據(jù)圖4及圖5所述的常規(guī)將該x86預(yù)取指令的ModR/M字節(jié)轉(zhuǎn)譯成一預(yù)取微指令序列,該序列是用以命令微處理器600去排他的預(yù)取一快取線到數(shù)據(jù)高速緩存611。
該微指令然后從微指令隊列608傳送到其執(zhí)行邏輯609,在該執(zhí)行邏輯中的延伸高速緩存單元610則依據(jù)本發(fā)明被組態(tài)為執(zhí)行一排他的預(yù)取運算。當該執(zhí)行邏輯609執(zhí)行一預(yù)取微指令序列時,其延伸記錄邏輯612命令總線單元613,經(jīng)由內(nèi)存總線605,發(fā)出作業(yè)到內(nèi)存614要求在排他的MESI狀態(tài)下預(yù)取一指定的快取線到數(shù)據(jù)高速緩存611內(nèi)。
本領(lǐng)域技術(shù)人員將發(fā)現(xiàn)圖6所描述的微處理器600只是一個依據(jù)本發(fā)明所簡化之后的一管線化微處理器600的代表。事實上,如前所述,今日的管線化微處理器包含許多管線階段。但是這些階段均可被概括的歸納成如圖6的方塊圖所示的三個階段群組,因此圖6的方塊圖可視為實現(xiàn)上述本發(fā)明的具體化所需的必要成分的說明。為了簡明起見,凡微處理器600中無關(guān)于本發(fā)明的成分均不在此描述。
請參閱圖7,其是為一方塊圖700,用以描述在圖6的微處理器內(nèi)執(zhí)行一預(yù)取與儲存運算的一接口至內(nèi)存的高速緩存單元。該方塊圖700顯示在微處理器600內(nèi)被應(yīng)用為執(zhí)行預(yù)取運算的邏輯。微處理器701的延伸轉(zhuǎn)譯器710接收宏指令流702,并將該宏指令流702轉(zhuǎn)譯成對應(yīng)的微指令711。微指令711在命令對內(nèi)存742做數(shù)據(jù)加載與儲存運算之后,隨后即被送到一延伸高速緩存單元720。該延伸高速緩存單元720包括延伸記錄邏輯721及一數(shù)據(jù)高速緩存722。該延伸記錄邏輯721是耦接至一總線單元730。該總線單元730是接口至一系統(tǒng)內(nèi)存總線740,此系統(tǒng)內(nèi)存總線740又與數(shù)據(jù)存儲器742及其它總線組件741耦接。
宏指令的示范流程702說明如何指定一預(yù)取指令及如何可在此預(yù)取的資料上執(zhí)行隨后的讀取與儲存運算。如同圖2的敘述,一有關(guān)于此運算序列的桌上型計算機的常見范例是內(nèi)存內(nèi)計數(shù)器的讀取及增加。但是與圖1及圖2的微處理器201不同的是,當依據(jù)本發(fā)明的一微處理器701被命令去排他的預(yù)取一快取線時,不論此預(yù)取的資料是否會被中介的指令讀取,均可有效率的消除會關(guān)連到隨后的儲存運算的總線作業(yè)延遲。在圖7的宏指令的示范流702中預(yù)期一資料讀取運算發(fā)生早于在預(yù)取的資料上執(zhí)行一儲存運算,但是本領(lǐng)域技術(shù)人員將發(fā)現(xiàn),沒有此一中介的資料讀取運算,資料也可以被排他的預(yù)取且隨后的被寫入。
因此,示范流程的一延伸預(yù)取指令702,PREFETCH.S[EAX],命令微處理器701去排他的預(yù)取其地址對應(yīng)于緩存器EAX內(nèi)容的快取線。第二個宏指令702,MOV EBX,[EAX],命令微處理器701去讀取一地址為緩存器EAX所指定的內(nèi)存位置的內(nèi)容,并將該內(nèi)容寫入緩存器EBX。第三個宏指令,INC EBX,命令微處理器701增加緩存器EBX的內(nèi)容。第四個宏指令,MOV EAX,[EBX],命令微處理器701在對應(yīng)于緩存器EAX內(nèi)容的內(nèi)存位置上儲存緩存器EBX的內(nèi)容。值得注意的是為了要有效率的利用排他預(yù)取指令702,PREFETCH.S[EAX],必須在第二個宏指令702,MOV EBX,[EAX],之前充分執(zhí)行排他預(yù)取指令702,使得因為加載由EAX的內(nèi)容所指定的快取線所造成的延遲,可以被中介的宏指令702的平行執(zhí)行所吸收。但是,為了簡明起見,該中介的宏指令202的執(zhí)行并未在方塊圖700中敘述。
轉(zhuǎn)譯器710將該延伸預(yù)取宏指令702轉(zhuǎn)譯成對應(yīng)的排他預(yù)取微指令711,PREFETCH.S[EAX],然將此微指令送到延伸高速緩存單元720。該延伸記錄邏輯721詢問資料高速緩存722以決定所要求的快取線是否已存在并且有效(換言之,即非處于無效狀態(tài))于其數(shù)據(jù)高速緩存722內(nèi)。若答案為否,則該延伸記錄邏輯721命令總線單元730,經(jīng)由系統(tǒng)內(nèi)存總線740,發(fā)出作業(yè)以從內(nèi)存742取得該所要求的快取線。若其它的總線組件741均無該所要求的快取線的副本,則延伸記錄邏輯721即將所要求的快取線以排他狀態(tài)送到其數(shù)據(jù)高速緩存722。若有一總線組件741擁有該要求的處于排他狀態(tài)的快取線的區(qū)域副本時,則依照所應(yīng)用的特定總線作業(yè)協(xié)議,此協(xié)議窺視在總線740上的作業(yè)以請求該快取線并將其區(qū)域副本變更成無效。若該區(qū)域副本已被修改,則其總線組件將修改的資料寫入到其總線740,使得微處理器701可以取得該快取線的排他所有權(quán)。若有數(shù)個總線共享此快取線,則這些總線組件均將其區(qū)域副本變更成無效,使得該快取線可以在排他狀態(tài)下被送到微處理器701。在上述任一情況,該所要求的快取線均可在在排他狀態(tài)下被送到高速緩存722,并且可被隨后的儲存運算所使用。
轉(zhuǎn)譯器710將第二個宏指令702轉(zhuǎn)譯成一加載微指令711,LD EBX,[EAX],此微指令是命令微處理器加載地址為緩存器EAX所指定的內(nèi)存的內(nèi)容到緩存器EBX。因為意圖進行儲存運算的預(yù)取的結(jié)果,該快取線所有的內(nèi)容已經(jīng)存在于該資料高速緩存722中,所以該快取線立即可用,并且使得該加載微指令711的執(zhí)行無任何延遲。
第三個宏指令702被轉(zhuǎn)譯成一對應(yīng)的增加微指令271,INC EBX,此指令是命令執(zhí)行邏輯將緩存器EBX的內(nèi)容增加。因為不需要新的資料,所以該加載微指令711不會被送到其延伸高速緩存單元720。
最后,在流程中的第四個宏指令702被轉(zhuǎn)譯成一儲存微指令711,ST[EAX],EBX,此指令命令執(zhí)行邏輯去執(zhí)行一資料儲存運算,以將緩存器EBX的內(nèi)容寫入到地址由緩存器EAX內(nèi)容所指定的內(nèi)存位置。該儲存微指令711從而以待決的儲存運算型式被送到其高速緩存單元720。于是,記錄邏輯721偵測到以待決的儲存運算為目標的快取線存在于其資料高速緩存722,并且由于排他的預(yù)取的結(jié)果,該快取線是處于排他狀態(tài)。因此該儲存可不被延遲的立刻被公告。與圖2的微處理器201不同的是,依據(jù)本發(fā)明的延伸高速緩存單元720不需確立一停滯訊號723以公告該待決的儲存,因為該目標快取線已被排他的預(yù)取。
現(xiàn)請參閱圖8,其顯示一時脈圖800,用以描述依據(jù)本發(fā)明由圖6及圖7所示的微處理器所發(fā)出的總線作業(yè)集801,802,此總線作業(yè)是經(jīng)由內(nèi)存總線740以執(zhí)行意圖進行預(yù)取的儲存運算。此二作業(yè)集801,802包括在微處理器701內(nèi)的從總線單元730到內(nèi)存總線740的請求作業(yè)801,與同樣在微處理器701內(nèi)的從內(nèi)存總線740回到總線單元730的響應(yīng)作業(yè)802。時脈圖800是描述當一被要求且處于排他狀態(tài)的快取線,是為依據(jù)本發(fā)明的預(yù)取-排他宏指令所指定的意圖進行儲存運算的預(yù)取的響應(yīng)時,所執(zhí)行的作業(yè)集801,802。根據(jù)上面的敘述,當執(zhí)行一預(yù)取-排他指令時,延伸記錄邏輯721命令其總線單元730對其內(nèi)存總線740發(fā)出一資料讀取與無效請求801,DATA READ/INV[EAX],要求將被緩存器EAX所指定的快取線以排他的MESI狀態(tài)送到其區(qū)域高速緩存722。該數(shù)據(jù)讀取與無效請求801是于時間點A發(fā)出。若所要求的快取線是處于排他的MESI狀態(tài),則在時間點B,該內(nèi)存總線740響應(yīng)發(fā)出資料響應(yīng)請求802,DATA RESP[EAX].E,回到總線單元230。在這時,一儲存運算的數(shù)據(jù)可從該高速緩存222讀取或?qū)懭氲皆摳咚倬彺?22,而不會導(dǎo)致總線作業(yè)延遲。
同圖3所示,圖8中的作業(yè)集801,802是以一般性的方式表示,因為不同的微處理器架構(gòu)應(yīng)用不同的語義來說明總線作業(yè)801,802。圖8中描述的作業(yè)集801,802大體上依照x86的慣例,但此描述只是意圖進行說明本發(fā)明。此慣例并不會限定本發(fā)明只適用于此特定指令集架構(gòu)。除此之外,值得注意的是,為了簡明起見,在時脈圖800中已經(jīng)省略了為先取得對數(shù)據(jù)總線740的存取(例如BUS REQUEST,BUS GRANT等等)的所有的作業(yè)。
本發(fā)明不只是考慮排他的預(yù)取一單一快取線,同時也包含需修改一個區(qū)段的資料的情況。因此,圖9至圖11將具體指向排他的預(yù)取一個區(qū)段的資料的討論。
請參閱圖9,其為依據(jù)本發(fā)明用以顯示一延伸區(qū)段預(yù)取指令900的方塊圖。該延伸區(qū)段預(yù)取指令900包括一選用的多重前置碼實體901,其一為一重復(fù)前置碼901。該前置碼實體901之后為一預(yù)取運算碼902,其后則為一延伸地址指定元903。在一具體實施例中,每一個前置碼及延伸地址實體901,903都是8位大小,而預(yù)取運算碼實體902則為一或二個字節(jié)大小,除非本文中另行修訂,所有的實體901-903均與x86的指令集架構(gòu)一致。在此具體實施例中,該x86的重復(fù)前置碼(REP)901被用來標示一區(qū)段預(yù)取運算。
在運作上,該預(yù)取運算碼902為一特定運算碼數(shù)值,此特定運算碼數(shù)值是用以命令一相符的微處理器執(zhí)行一預(yù)取運算。在一x86的具體實施例中,運算碼實體901的特定數(shù)值為OF18H。延伸地址指定元903是用以指定執(zhí)行該特定類型的預(yù)取運算的執(zhí)行。在一x86的具體實施例中,該延伸地址指定元903是ModR/M字節(jié)903。
同圖4所示,依據(jù)本發(fā)明,當微處理器偵測到一預(yù)取宏指令900時,該微處理器被命令依據(jù)由延伸地址指定元403內(nèi)容所指定的指示數(shù)值,去執(zhí)行從內(nèi)存預(yù)取資料到高速緩存。圖5的編碼范例也適用于描述在區(qū)段延伸地址指定元903的前置碼指示的編碼。但是若微處理器在該延伸預(yù)取指令內(nèi)偵測到一重復(fù)前置碼901,則微處理器會試圖預(yù)取一指定數(shù)量在排他狀態(tài)下的快取線到其區(qū)域高速緩存內(nèi),而此快取線的數(shù)量是由微處理器內(nèi)的一架構(gòu)緩存器指定。在一具體實施例中,快取線的數(shù)量是由x86兼容的微處理器內(nèi)的緩存器ECX所指定。
請參閱圖10,其是為一方塊圖1000,用以描述在圖6的微處理器600內(nèi)執(zhí)行區(qū)段預(yù)取與儲存運算的一接口至內(nèi)存的高速緩存單元。圖10的微處理器1001內(nèi)的組件的認證與運算類似于圖7的微處理器701內(nèi)的相似組件,只要將圖7的百位數(shù)圖號7用10來取代即可。為依據(jù)本發(fā)明以改進此區(qū)段預(yù)取運算,本發(fā)明使用一延伸轉(zhuǎn)譯器1010將有一重復(fù)前置碼1002的延伸預(yù)取運算轉(zhuǎn)譯成微指令序列1011,用以命令執(zhí)行一排他區(qū)段預(yù)取運算。除此之外,亦使用一影子計數(shù)緩存器1013以加載自架構(gòu)緩存器內(nèi)的1012被預(yù)取的快取線的數(shù)量計數(shù)。并且使用延伸區(qū)段記錄邏輯(extended block fill logic)1021以命令其總線單元1030要求排他的預(yù)取該指定區(qū)段的快取線,并將之送到其數(shù)據(jù)高速緩存1022。
為初始一排他的區(qū)段預(yù)取運算,第一個宏指令1002,MOV ECX,COUNT,是用以將架構(gòu)緩存器ECX內(nèi)被排他的預(yù)取的區(qū)段內(nèi)的快取線的數(shù)量計數(shù)初始化。延伸轉(zhuǎn)譯器1010將該第一個宏指令轉(zhuǎn)譯成加載微指令1011,LDECX,COUNT,此微指令命令微處理器將計數(shù)(count)加載ECX。當該計數(shù)被加載到ECX后,此計數(shù)亦被透明的復(fù)制到影子計數(shù)緩存器1013,SHECX。同時,其它的指令1002則可在不干擾到預(yù)取運算的計數(shù)的情況下,修改其架構(gòu)緩存器1012。
在計數(shù)被初始化之后,該延伸轉(zhuǎn)譯器1010轉(zhuǎn)譯一延伸區(qū)段預(yù)取指令1002,REP.PREF.S[EAX],此指令命令微處理器1001預(yù)取被ECX所指定數(shù)量的排他狀態(tài)的快取線到其區(qū)域高速緩存,而該被預(yù)取的第一快取線的地址是由緩存器EAX所指定。以響應(yīng)一命令該排他預(yù)取運算的微指令序列1011,該延伸區(qū)段記錄邏輯1021命令其總線單元1030經(jīng)由其內(nèi)存總線1040發(fā)出總線以要求該地址是由緩存器EAX所指定的處于排他狀態(tài)的快取線。該記錄邏輯1021在接收到這些快取線后,即將之配置到其數(shù)據(jù)高速緩存1022。一但以排他狀態(tài)進入到該高速緩存,任一或是全部的被預(yù)取的快取線均可被修改而不會造成額外的延遲。
現(xiàn)請參閱圖11,其顯示一時脈圖1100,用以描述依據(jù)本發(fā)明由圖6及圖10所示的微處理器1001所發(fā)出的總線作業(yè)集1101,1102,此總線作業(yè)是經(jīng)由內(nèi)存總線1040以執(zhí)行區(qū)段預(yù)取與儲存運算。為解說方便起見,圖11范例的是統(tǒng)組態(tài)使用32字節(jié)快取線。但是,熟習(xí)此領(lǐng)域技術(shù)者將從下述的例證中發(fā)現(xiàn)本發(fā)明的應(yīng)用包括所有可預(yù)期的系統(tǒng)組態(tài)的快取線行寬。此二作業(yè)集1101,1102包括在微處理器1001內(nèi)的從總線單元1030到內(nèi)存總線1040的請求作業(yè)1101,與同樣在在微處理器1001內(nèi)的從內(nèi)存總線1040回到總線單元1030的響應(yīng)作業(yè)。時脈圖1000是描述當一被要求且處于排他狀態(tài)的一區(qū)段的快取線,是為依據(jù)本發(fā)明的包括一重復(fù)前置碼的預(yù)取-排他宏指令所指定的意圖進行儲存運算的一區(qū)段預(yù)取的響應(yīng)時,所執(zhí)行的作業(yè)集1001,1002。根據(jù)上面的敘述,當執(zhí)行一區(qū)段預(yù)取-排他指令時,該延伸記錄邏輯1021命令其總線單元1030發(fā)出一多重的資料讀取與無效請求1101,此請求并且對應(yīng)于架構(gòu)緩存器內(nèi)所指定數(shù)量的快取線。該多重的請求包括該快取線區(qū)段內(nèi)的所有快取線的地址,其地址是為架構(gòu)緩存器EAX的內(nèi)容所起始指定。雖然該總線請求1101使用遞增的地址次序,值得注意的是考慮到傳統(tǒng)上不同的內(nèi)存總線協(xié)議,本發(fā)明亦包括遞減的排序,隨機的排序,及參差的排序。第一個資料讀取與無效請求1101是在時間點A發(fā)出,第二個請求1101是在時間點B發(fā)出,以此類推,直到最后的請求在時間點D發(fā)出。在許多種架構(gòu)中,總線請求1102是被標記的,以致于該請求開始于時間點C早于其最后的請求的完成。在時間點C,至少有在該區(qū)段內(nèi)的一快取線是可被一待決的儲存所使用。但是,為確保將延遲減到最小,最好是將該區(qū)段的快取線的儲存運算推延至?xí)r間點E,此時所有的響應(yīng)1102均已到達且處于排他狀態(tài)。
若所要求的快取線是處于排他的MESI狀態(tài),則在時間點B,該內(nèi)存總線740響應(yīng)發(fā)出一資料響應(yīng)請求802,DATA RESP[EAX].E,回到其總線元2230。在這時,一儲存運算的數(shù)據(jù)可從其高速緩存222讀取或?qū)懭氲狡涓咚倬彺?22,而不會導(dǎo)致總線作業(yè)延遲。
現(xiàn)請參閱圖12,其為描述依據(jù)本發(fā)明執(zhí)行一意圖進行儲存運算的預(yù)取方法的流程圖1200。
流程開始于方塊1202,在此處,依據(jù)本發(fā)明,一連串的宏指令被送到一指令隊列。流程接著進行到方塊1204。
于方塊1204中,一個隨后的宏指令被從該指令隊列中提取,并將之送到一延伸轉(zhuǎn)譯器。流程接著進行到判斷方塊1206。
于判斷方塊1206中,將進行一項檢查用以判斷該隨后的宏指令是否為一延伸預(yù)取指令。若答案為是,則流程進行到方塊1208。若答案為否,則流程進行到方塊1210。
于方塊1208中,一被偵測到的延伸預(yù)取指令被轉(zhuǎn)譯成一意圖進行儲存運算的預(yù)取的微指令序列,此微指令序列是用以命令微處理器去預(yù)取處于排他狀態(tài)的一指定的快取線。流程接著進行到方塊1212。
于方塊1210中,該宏指令被轉(zhuǎn)譯成一對應(yīng)的微指令序列,此微指令序列是用以命令微處理器去執(zhí)行一指定的運算。流程接著進行到方塊1212。
于方塊1212中,一個隨后的微指令序列被送到微處理器內(nèi)的執(zhí)行邏輯。流程接著進行到判斷方塊1214。
于判斷方塊1214中,將進行一項檢查用以判斷隨后的微指令序列是否為一意圖進行儲存運算的預(yù)取的微指令序列。若答案為是,則流程進行到方塊1216。若答案為否,則流程進行到方塊1218。
于方塊1216中,響應(yīng)意圖進行儲存運算的預(yù)取的微指令序列,總線作業(yè)請求被發(fā)出到一內(nèi)存總線以要求一指定快取線的排他所有權(quán)。隨后該快取線以排他MESI狀態(tài)被送到微處理器,因此可為儲存運算所使用而不會發(fā)生因為提升該快取線至可被修改的狀態(tài)所導(dǎo)致的延遲。流程接著進行到方塊1220。
于方塊1218中,執(zhí)行該隨后的微指令序列。流程接著進行到方塊1220。
于方塊1220中,本方法完成。
現(xiàn)請參閱圖13,其為描述依據(jù)本發(fā)明執(zhí)行一意圖進行儲存運算的區(qū)段預(yù)取方法的流程圖1300。
流程開始于方塊1302,在此處,依據(jù)本發(fā)明,一連串的宏指令被送到一指令隊列。流程接著進行到方塊1304。
于方塊1304中,一個隨后的宏指令被從該指令隊列中提取,并將的送到一延伸轉(zhuǎn)譯器。流程接著進行到判斷方塊1306。
于判斷方塊1306中,將進行一項檢查用以判斷該隨后的宏指令是否為一延伸區(qū)段預(yù)取指令。若答案為是,則流程進行到方塊1310。若答案為否,則流程進行到方塊1308。
于方塊1310中,一被偵測到的延伸區(qū)段預(yù)取指令被轉(zhuǎn)譯成一意圖進行儲存運算的區(qū)段預(yù)取的微指令序列,此微指令序列是用以命令微處理器去預(yù)取處于排他狀態(tài)一指定數(shù)量的快取線。流程接著進行到方塊1312。
于方塊1308中,宏指令被轉(zhuǎn)譯成一對應(yīng)的微指令序列,此微指令序列是用以命令微處理器去執(zhí)行一指定的運算。流程接著進行到方塊1312。
于方塊1312中,一個隨后的微指令序列被送到微處理器內(nèi)的執(zhí)行邏輯。流程接著進行到判斷方塊1314。
于判斷方塊1314中,將進行一項檢查用以判斷隨后的微指令序列是否為一意圖進行儲存運算的預(yù)取的微指令序列。若答案為是,則流程進行到方塊1318。若答案為否,則流程進行到方塊1316。
于方塊1316中,執(zhí)行該隨后的微指令序列。流程接著進行到方塊1328。
于方塊1318中,響應(yīng)意圖進行儲存運算的該區(qū)段預(yù)取的微指令序列,初始一暫時的計數(shù)器為數(shù)值0以監(jiān)控將被發(fā)出的總線作業(yè)的數(shù)量,此總線作業(yè)是要求一區(qū)段的快取線的排他所有權(quán)。流程接著進行到方塊1320。
于方塊1320中,第一快取線地址被指定給第一個資料讀取與無效總線作業(yè)。該第一快取線地址來自于由該延伸區(qū)段預(yù)取指令所指定的地址,然后再加上一乘以方塊1318的計數(shù)的快取線行寬。由于該計數(shù)初始為零,所以該第一快取線地址等同于該延伸區(qū)段預(yù)取指令所指定的地址。流程接著進行到方塊1322。
于方塊1322中,發(fā)出一經(jīng)由內(nèi)存總線的資料讀取與無效作業(yè)以預(yù)取該處于排他MESI狀態(tài)的該第一快取線。流程接著進行到方塊1324。
于方塊1324中,將該計數(shù)增加后,流程接著進行到方塊1326。
于判斷方塊1326中,將進行一項檢查用以判斷該增加的計數(shù)是否等同于被預(yù)取的快取線的數(shù)量,該快取線線的數(shù)量是儲存于一影子緩存器(shadowregister)中。若答案為否,則流程進行到方塊1320,于其中執(zhí)行另一個重復(fù)(iteration)以提取一下一快取線。若計數(shù)等同于該影子緩存器的內(nèi)容,則發(fā)出所有總線作業(yè),同時流程進行到方塊1328。
于方塊1328中,本方法完成。
現(xiàn)請參閱圖14,圖14是為一表格500,其為解說依據(jù)本發(fā)明的另一可選用的延伸地址指定元實體的編碼方式,此編碼是用以在一區(qū)域資料高速緩存內(nèi)配置與初始化一快取線。請參閱圖5中所討論的一類似編碼方式的具體實施例,為了說明本發(fā)明起見,此處使用符合x86架構(gòu)的ModR/M位字段,但是,可以預(yù)期的是本發(fā)明包含任何支持將一預(yù)取與初始化指示編碼到一延伸預(yù)取指令400的機制的架構(gòu)。雖然圖14的例子指向?qū)⒃擃A(yù)取與初始化(亦稱為配置與初始化)指示編碼到一延伸地址指定元403,本領(lǐng)域技術(shù)人員將發(fā)現(xiàn)該預(yù)取指示也可以被編碼成一在運算碼字段401內(nèi)的任何未使用指令的一特定運算碼數(shù)值。
圖14中依據(jù)本發(fā)明的的另一可選用編碼方式的具體實施例擴展了微處理器600的能力,使其得以隱含的指定一排他預(yù)取的快取線,并且在其上執(zhí)行儲存運算。在此處所討論的配置與初始化的例子對于改善應(yīng)用程序的執(zhí)行速度是非常有用的,因為用以初始化一快取線的儲存運算可被完全的從程序流程中排除掉。因此,圖14顯示三種不同型式的預(yù)取與初始化指示,該三種指示使用x86的ModR/M的53位的數(shù)值100-110。當任一上述三種預(yù)取與初始化指示依據(jù)本發(fā)明被編碼到一預(yù)取指令400時,一相符的微處理器將被命令發(fā)出經(jīng)由一內(nèi)存總線的作業(yè),此作業(yè)是用以預(yù)取處于排他狀態(tài)的資料,并且在取得該資料后,即將之初始化成一指定數(shù)值。對數(shù)值100的編碼而言,微處理器被命令將該排他預(yù)取的數(shù)據(jù)初始化成一被架構(gòu)緩存器所指定的數(shù)值,例如一x86處理器的緩存器EAX。對數(shù)值101的編碼而言,微處理器被命令去清除該預(yù)取的資料,也就是說,對該預(yù)取的數(shù)據(jù)執(zhí)行儲存運算以將之設(shè)定為邏輯數(shù)值零。對數(shù)值110的編碼而言,微處理器被命令設(shè)定該預(yù)取的資料,也就是說,對該預(yù)取的數(shù)據(jù)執(zhí)行儲存運算以將之設(shè)定為邏輯數(shù)值一。如同圖5中討論的具體實施例所示,在一依據(jù)本發(fā)明的x86具體實施例中,這些編碼方式是合法的,并且將會導(dǎo)致該資料讀取與無效總線作業(yè)去預(yù)取一處于排他狀態(tài)的快取線。
請參閱圖15,其是為一方塊圖1500,用以描述在圖6的微處理器內(nèi)執(zhí)行預(yù)取與初始化運算的一接口至內(nèi)存的高速緩存單元。在此一具體實施例中,一依據(jù)圖14所編碼的預(yù)取與初始化指令的響應(yīng)是為對一排他預(yù)取的快取線執(zhí)行的儲存運算。方塊圖1500顯示在微處理器1500內(nèi)被應(yīng)用為執(zhí)行預(yù)取與初始化運算的邏輯。微處理器1501的延伸轉(zhuǎn)譯器1510接收宏指令流程1502,并將該宏指令流程1502轉(zhuǎn)譯成對應(yīng)的微指令1511。微指令1511在命令對內(nèi)存1542做數(shù)據(jù)加載與儲存運算之后,即被送到一延伸高速緩存單元1520。該延伸高速緩存單元1520包括延伸記錄邏輯1521及一數(shù)據(jù)高速緩存1522。該延伸記錄邏輯1521是耦接至一總線單元1530。該總線單元1530是接口至一系統(tǒng)內(nèi)存總線1540,此系統(tǒng)內(nèi)存總線1540又與數(shù)據(jù)存儲器1542及其它總線組件1541耦接。
宏指令的示范流程1502說明如何依照圖5的預(yù)取與初始化編碼100來指定一預(yù)取與初始化運算,及如何對預(yù)取的資料執(zhí)行隱含的儲存運算以將之初始化。
因此,轉(zhuǎn)譯器1510將一MOV EAX,#INIT宏指令1502轉(zhuǎn)譯成一LDEAX,,#INIT微指令,此微指令用以命令微處理器1501將數(shù)值INIT加載到架構(gòu)緩存器EAX1505。該LD EAX,,#INIT被送到執(zhí)行邏輯(未顯示),此執(zhí)行邏輯將INIT加載到EAX1505。緊接著,該轉(zhuǎn)譯器1510將一在此示范流程內(nèi)的延伸預(yù)取與初始化指令1502,PREF.I[EBX],轉(zhuǎn)譯成預(yù)取與初始化微指令1511,PREF.I[EBX],此微指令是命令微處理器1501去排他的預(yù)取其地址對應(yīng)于緩存器EBX之內(nèi)容的快取線,并且將該快取線的數(shù)值設(shè)定成儲存在EAX1505內(nèi)的數(shù)值。該預(yù)取與初始化微指令1511然后被送到其延伸高速緩存單元1520。在此延伸高速緩存單元1520中,延伸記錄邏輯1521詢問其數(shù)據(jù)高速緩存1522以決定該要求的快取線是否已存在于該資料高速緩存722內(nèi),并且處于排他狀態(tài)。若答案為是,則延伸記錄邏輯1521將該快取線初始化成EAX1505內(nèi)的數(shù)值。若答案為否,則該延伸記錄邏輯1521命令總線單元1530發(fā)出經(jīng)由系統(tǒng)內(nèi)存總線1540的作業(yè),以從內(nèi)存1542取得該要求的處于MESI排他狀態(tài)的快取線。若其它的總線組件1541均無該要求的快取線的副本,則該延伸記錄邏輯1521即將該要求的快取線以排他狀態(tài)送到資料高速緩存1522。若有一總線組件1541擁有該要求的處于排他狀態(tài)的快取線的區(qū)域副本時,則依照所應(yīng)用的特定總線作業(yè)協(xié)議,此協(xié)議窺視在總線1540上的作業(yè)以請求該快取線并將其區(qū)域副本變更成無效。若該區(qū)域副本已被修改,則其總線組件1541將該修改的資料寫入到其總線1540,使得微處理器1501可以取得該快取線的排他所有權(quán)。若有數(shù)個總線組件1541共享該快取線,則這些總線組件均將其區(qū)域副本變更成無效,使得該快取線可以在排他狀態(tài)下被送到微處理器1501。在上述任一情況,該要求的快取線均可在在排他狀態(tài)下被送到高速緩存1522,并且可立即被初始化成在EAX1505內(nèi)的數(shù)值。
請參閱圖16,其為描述依據(jù)本發(fā)明對一快取線執(zhí)行配置與初始化運算方法的流程圖1600。
流程開始于方塊1602,在此處,依據(jù)本發(fā)明,一連串的宏指令被送到一指令隊列。流程接著進行到方塊1604。
于方塊1604中,一個隨后的宏指令被從該指令隊列中提取,并將之送到一延伸轉(zhuǎn)譯器。流程接著進行到判斷方塊1606。
于判斷方塊1606中,將進行一項檢查用以判斷該隨后的宏指令是否為一延伸預(yù)取指令,且此延伸預(yù)取指令是編碼成對一快取線執(zhí)行配置與初始化運算。若答案為是,則流程進行到方塊1608。若答案為否,則流程進行到方塊1610。
于方塊1608中,該偵測到的延伸預(yù)取指令被轉(zhuǎn)譯成一預(yù)取與初始化指令序列,此指令序列用以命令微處理器去預(yù)取一處于排他狀態(tài)的指定快取線。在接收到該指定快取線后,即將其內(nèi)容修改為一指定數(shù)值。該指定數(shù)值是由該預(yù)取與初始化微指令序列內(nèi)的編碼所指定。該編碼方式的一具體實施例包括清除該被配置快取線的內(nèi)容(換言之,將其內(nèi)容修改為邏輯數(shù)值零)。另一該編碼方式的具體實施例包括確定(asserting)該快取線的內(nèi)容(換言之,將其內(nèi)容修改為邏輯數(shù)值一)。又一該編碼方式的具體實施例包括將該快取線的內(nèi)容設(shè)定為儲存于微處理器中一架構(gòu)緩存器內(nèi)的數(shù)值。流程接著進行到方塊1612。
于方塊1610中,該宏指令被轉(zhuǎn)譯成一對應(yīng)的微指令序列,此微指令序列用以命令微處理器去執(zhí)行一指定的運算。流程接著進行到方塊1612。
于方塊1612中,一個隨后的微指令序列被送到微處理器內(nèi)的執(zhí)行邏輯。流程接著進行到判斷方塊1614。
于判斷方塊1614中,將進行一項檢查用以判斷隨后的微指令序列是否為一預(yù)取與初始化運算的序列。若答案為是,則流程進行到方塊1616。若答案為否,則流程進行到方塊1618。
于方塊1616中,響應(yīng)該預(yù)取與初始化運算的序列,總線作業(yè)請求被發(fā)出到一內(nèi)存總線以要求一指定快取線的排他所有權(quán)。隨后響應(yīng)此作業(yè),該快取線即以排他MESI狀態(tài)被送到微處理器。流程接著進行到方塊1620。
于方塊1620中,延伸記錄邏輯依據(jù)本發(fā)明將在區(qū)域高速緩存的排他預(yù)取的快取線初始化成所指定的數(shù)值。流程接著進行到方塊1622。
于方塊1618中,執(zhí)行該隨后的微指令序列。流程接著進行到方塊1622。
于方塊1622中,本方法完成。
圖17是為一方塊圖1700,用以描述在圖6的微處理器1701內(nèi)執(zhí)行區(qū)段預(yù)取與初始化運算的一接口至內(nèi)存的高速緩存單元。圖17的微處理器1701內(nèi)的組件的認證與運算類似于圖15的微處理器1501內(nèi)的相似組件,只要將圖15的百位數(shù)圖號5用7來取代即可。依據(jù)本發(fā)明以改進此區(qū)段預(yù)取與初始化運算,本發(fā)明使用一延伸轉(zhuǎn)譯器1710將一如圖9所述的有重復(fù)前置碼1702的延伸配置與初始化指令轉(zhuǎn)譯成微指令序列1711,此微指令序列1711是用以命令執(zhí)行區(qū)段預(yù)取與初始化運算。除此之外,亦使用一影子計數(shù)緩存器1713,用以加載從架構(gòu)緩存器1712預(yù)取與初始化的快取線的數(shù)量計數(shù)。并且使用延伸區(qū)段記錄邏輯1721命令其總線單元1730要求排他的預(yù)取一指定區(qū)段的快取線,并將之送到其數(shù)據(jù)高速緩存1722,此外并將這些快取線初始化成依照配置與初始化指令1702所指定的一指定數(shù)值。
為初始一區(qū)段配置與初始化運算,第一個宏指令1002,MOV ECX,#COUNT,是用以將架構(gòu)緩存器ECX內(nèi)被排他的預(yù)取的區(qū)段內(nèi)的快取線的數(shù)量計數(shù)初始化。延伸轉(zhuǎn)譯器1710將該第一個宏指令轉(zhuǎn)譯成加載微指令1711,LDECX,#COUNT,此微指令命令微處理器將計數(shù)加載ECX 1712。當該計數(shù)被加載到ECX 1712后,此計數(shù)亦被透明的復(fù)制到影子計數(shù)緩存器1713,SHECX。同時,其它的指令1702則可在不干擾到預(yù)取與初始化運算的計數(shù)的情況下,修改其架構(gòu)緩存器1712的內(nèi)容。
在計數(shù)被初始化之后,第二個宏指令1702,MOV EAX,#INIT被送到轉(zhuǎn)譯器1710,此宏指令1702是用以命令微處理器1701將一指定數(shù)值,INIT,加載到架構(gòu)緩存器EAX1705。依據(jù)本發(fā)明的一具體實施例,其包含在EAX1705內(nèi)容的指定數(shù)值將會使得在被預(yù)取的快取線區(qū)段中的所有快取線均被初始化。此一配置與初始化指令的特定編碼方式的具體實施例已于圖14中討論過。其它的具體實施例有清除或設(shè)定該區(qū)段的快取線,響應(yīng)這些具體實施例的配置與初始化指令的編碼的命令,其延伸高速緩存單元1720內(nèi)的延伸記錄邏輯1721則據(jù)以清除或設(shè)定該快取線區(qū)段。轉(zhuǎn)譯器1710將第二個宏指令1702轉(zhuǎn)譯成一加載微指令,LD EAX,,#INIT微指令,此微指令用以命令微處理器1701將數(shù)值INIT加載到EAX1705。
在將數(shù)值INIT加載到EAX1705之后,緊接著,該延伸轉(zhuǎn)譯器1710轉(zhuǎn)譯一區(qū)段配置與初始化指令1702,REP.PREF.S[EBX],此指令命令微處理器1701預(yù)取被ECX所指定數(shù)量的處于排他狀態(tài)的快取線到區(qū)域高速緩存,而該第一被預(yù)取的快取線其地址是由緩存器EBX(未顯示)所指定,并且將該快取線的內(nèi)容初始化成儲存在EAX1705的數(shù)值。以響應(yīng)命令該排他配置與初始化運算的微指令序列1711,該延伸區(qū)段記錄邏輯1721命令其總線單元1730經(jīng)由其內(nèi)存總線1740要求排他的預(yù)取一指定區(qū)段的快取線,此區(qū)段第一快取線地址是由緩存器EBX所指定。記錄邏輯1721在接收到這些快取線后,即將之配置到數(shù)據(jù)高速緩存1722,并將的初始化成由緩存器EAX 1705的內(nèi)容所指定的數(shù)值。
現(xiàn)請參閱圖18,其為描述依據(jù)本發(fā)明執(zhí)行一高速緩存數(shù)據(jù)區(qū)段配置與初始化運算方法的流程圖1800。
流程開始于方塊1802,在此處,依據(jù)本發(fā)明,一連串的宏指令被送到一指令隊列。流程接著進行到方塊1804。
于方塊1804中,一個隨后的宏指令被從該指令隊列中提取,并將之送到一延伸轉(zhuǎn)譯器。流程接著進行到判斷方塊1806。
于判斷方塊1806中,將進行一項檢查用以判斷該隨后的宏指令是否為一區(qū)段配置與初始化指令。若答案為是,則流程進行到方塊1810。若答案為否,則流程進行到方塊1808。
于方塊1810中,一被偵測到的區(qū)段配置與初始化指令被轉(zhuǎn)譯成一區(qū)段配置與初始化微指令序列,此微指令序列是用以命令微處理器去預(yù)取一指定數(shù)量的處于排他狀態(tài)的快取線,并且將該被預(yù)取快取線的內(nèi)容修改成一指定數(shù)值。不同的區(qū)段配置與初始化運算的具體實施例可類同于如圖十六所述的單一快取線的配置與初始化具體實施例,只須稍作如圖九所述的重復(fù)前置碼的修改。流程接著進行到方塊1812。
于方塊1808中,該宏指令被轉(zhuǎn)譯成一對應(yīng)的微指令序列,此微指令序列用以命令微處理器去執(zhí)行一指定的運算。流程接著進行到方塊1812。
于方塊1812中,一個隨后的微指令序列被送到微處理器內(nèi)的執(zhí)行邏輯。流程接著進行到判斷方塊1814。
于判斷方塊1814中,將進行一項檢查用以判斷該隨后的微指令序列是否為一意圖進行區(qū)段配置與初始化微指令序列。若答案為是,則流程進行到方塊1818。若答案為否,則流程進行到方塊1816。
于方塊1816中,執(zhí)行該隨后的微指令序列。流程接著進行到方塊1830。
于方塊1818中,為響應(yīng)該意圖進行儲存運算的區(qū)段預(yù)取的微指令序列,將一暫時的計數(shù)器初始化成數(shù)值零以監(jiān)測所發(fā)出的總線作業(yè)請求的數(shù)量,該總線作業(yè)請求是要求一區(qū)段的快取線的排他所有權(quán)并將其初始化。流程接著進行到方塊1820。
于方塊1820中,第一快取線地址被指定給第一個資料讀取與無效總線作業(yè)。該第一快取線地址來自于由該區(qū)段配置與初始化指令所指定的地址,然后再加上一乘以方塊1818的計數(shù)的快取線行寬。由于該計數(shù)初始為零,所以該第一快取線地址等同于該區(qū)段配置與初始化指令所指定的地址。流程接著進行到方塊1822。
于方塊1822中,經(jīng)由內(nèi)存總線發(fā)出一資料讀取與無效作業(yè),用以預(yù)取該的處于排他的MESI狀態(tài)的第一快取線。流程接著進行到方塊1824。
于方塊1824中,將在區(qū)域高速緩存中被預(yù)取的快取線初始化成該指定數(shù)值。流程接著進行到方塊1826。
于方塊1826中,將該計數(shù)增加后,流程接著進行到方塊1828。
于判斷方塊1828中,將進行一項檢查用以判斷該增加后的計數(shù)是否等同于被預(yù)取與初始化的快取線的數(shù)量,該快取線線的數(shù)量是儲存于影子緩存器中。若答案為否,則流程進行到方塊1820,于此處再進行另一個重復(fù)(iteration)以提取并初始化一下一快取線。若計數(shù)等同于該影子緩存器的內(nèi)容,則發(fā)出所有總線作業(yè),同時流程進行到方塊1830。
于方塊1830中,本方法完成。
雖然本發(fā)明及其目的、特征與優(yōu)點已詳細敘述,其它具體實施例仍涵蓋在本發(fā)明的范圍內(nèi)。例如,在此描述了依照MESI協(xié)議時,本發(fā)明對于待決的儲存運算或消除的(eliminating)儲存運算所具有的優(yōu)點。選擇MESI作為本發(fā)明的例子是因為其在本技術(shù)領(lǐng)域中的廣泛應(yīng)用。但是,值得注意的是本本發(fā)明提供預(yù)取的資料到一區(qū)域高速緩存,其型式或狀態(tài)使得該資料可立即被修改,而不需發(fā)出作業(yè)到內(nèi)存總線。該型式或狀態(tài)是否依照MESI并不重要。
如前所述,不同的架構(gòu)使用不同的快取線行寬。在桌上型計算機系統(tǒng)中,今日普遍使用32-字節(jié)的快取線。但是在本發(fā)明中使用的敘述并不限制本發(fā)明不能應(yīng)用于32-,64-,128-,或甚至于256-字節(jié)的快取線。相反的,本發(fā)明預(yù)期可應(yīng)用在任何限制其區(qū)域快取線的修改且不提供直接預(yù)取這些快取線的系統(tǒng)架構(gòu),以至于該快取線可立即被修改而不必需依靠總線作業(yè)以取得修改許可。
此外,本發(fā)明使用相符于x86架構(gòu)的具體實施例作為例證。無疑的,x86-兼容的微處理器可以從應(yīng)用本發(fā)明得到好處,但值得注意的是本發(fā)明的應(yīng)用范疇并不只限于x86-兼容的環(huán)境,因為仍有許多不同的架構(gòu)所應(yīng)用的預(yù)取指令亦不能保證其結(jié)果為排他的資料。
最后,值得注意的是,雖然在此處應(yīng)用一地址指定元以指定被預(yù)取的快取線的地址,此種指定方式并不需是顯示的(explicit)。一個依據(jù)本發(fā)明的預(yù)取指令的具體實施例可以隱含的(implicitly)指定一包含該地址的架構(gòu)緩存器,此處是由一先前執(zhí)行的指令將該地址加載到該架構(gòu)緩存器。
總之,以上所述者,僅為本發(fā)明的較佳實施例而已,當不能以之限定本發(fā)明所實施的范圍。大凡依本發(fā)明權(quán)利要求所作的均等變化與修飾,皆應(yīng)仍屬于本發(fā)明專利涵蓋的范圍內(nèi)。
權(quán)利要求
1.一種微處理器裝置,其特征在于,是用以執(zhí)行來自內(nèi)存的一區(qū)段數(shù)據(jù)的配置與初始化,該裝置包含一轉(zhuǎn)譯邏輯,組態(tài)成將一區(qū)段配置及初始化指令轉(zhuǎn)譯成一微指令序列,用以命令一微處理器預(yù)取處于排他狀態(tài)的一指定數(shù)量的快取線,并且將該指定數(shù)量的該快取線初始化成一指定值;以及一執(zhí)行邏輯,是耦接至該轉(zhuǎn)譯邏輯,組態(tài)成接收該微指令序列,發(fā)出作業(yè)至要求處于該排他狀態(tài)的該指定數(shù)量快取線的一內(nèi)存總線上,并將該指定數(shù)量快取線初始化成該指定值。
2.如權(quán)利要求1所述的微處理器裝置,其特征在于,其中該指定數(shù)量的快取線的配置及初始化與在一應(yīng)用程序內(nèi)一程序流程的其它指令的執(zhí)行平行。
3.如權(quán)利要求2所述的微處理器裝置,其特征在于,其中該指定數(shù)量的快取線的配置及初始化消除對應(yīng)于執(zhí)行隨后的儲存運算的程序延遲,要不然即會要求在該程序流程中將該指定數(shù)量的快取線初始化成該指定值。
4.如權(quán)利要求1所述的微處理器裝置,其特征在于,其中該區(qū)段配置與初始化指令包含對在一現(xiàn)存指令集內(nèi)的一現(xiàn)存預(yù)取指令的修改,并且其中該現(xiàn)存預(yù)取指令原本不提供該指定數(shù)量的快取線的配置與初始化。
5.如權(quán)利要求4所述的微處理器裝置,其特征在于,其中該區(qū)段配置與初始化指令包含在一延伸地址指定元實體的一重復(fù)前置碼與一預(yù)取運算碼字段,其中該預(yù)取運算碼字段的一指定數(shù)值命令該微處理器將一第一快取線配置與初始化成該指定數(shù)值,并且其中該預(yù)取運算碼字段的其它數(shù)值命令該微處理器依照該現(xiàn)存指令集執(zhí)行其它類型的預(yù)取運算。
6.如權(quán)利要求1所述的微處理器裝置,其特征在于,其中,響應(yīng)于該微指令序列,該執(zhí)行邏輯命令一總線單元經(jīng)由該內(nèi)存總線發(fā)出該些作業(yè)。
7.如權(quán)利要求6所述的微處理器裝置,其特征在于,其中該些作業(yè)包含一多重的資料讀取與無效作業(yè),該些作業(yè)是要求該指定數(shù)量的快取線的排他所有權(quán)。
8.如權(quán)利要求7所述的微處理器裝置,其特征在于,其中該第一架構(gòu)緩存器的內(nèi)容包含該指定數(shù)量,該指定數(shù)量是透明的復(fù)制到一影子緩存器,并且此處該執(zhí)行邏輯應(yīng)用該影子緩存器以計數(shù)該多重的資料讀取與無效作業(yè)。
9.如權(quán)利要求1所述的微處理器裝置,其特征在于,其中該指定數(shù)值是隱含的由該配置及初始化指令的編碼方式所指定。
10.如權(quán)利要求9所述的微處理器裝置,其特征在于,其中該指定數(shù)值包含邏輯數(shù)值零。
11.如權(quán)利要求9所述的微處理器裝置,其特征在于,其中該指定數(shù)值包含邏輯數(shù)值一。
12.如權(quán)利要求1所述的微處理器裝置,其特征在于,其中該指定數(shù)值是由該微處理器內(nèi)的一第二架構(gòu)緩存器的內(nèi)容所提供。
13.如權(quán)利要求1所述的微處理器裝置,其特征在于,其中,緊接在接收到一處于該排他狀態(tài)的一個第一快取線之后,該執(zhí)行邏輯命令延伸記錄邏輯將該第一快取線初始化成該指定數(shù)值。
14.一種微處理器裝置,其特征在于,是用以執(zhí)行一區(qū)段配置與初始化運算,該裝置包含一區(qū)段配置與初始化指令,是組態(tài)成命令微處理器預(yù)取處于排他狀態(tài)的一指定數(shù)量的快取線,并且將該指定數(shù)量的快取線初始化成一指定數(shù)值;以及一轉(zhuǎn)譯器,是組態(tài)成接收該區(qū)段配置與初始化指令,并將該區(qū)段配置與初始化指令轉(zhuǎn)譯成相關(guān)的微指令,在其中該相關(guān)的微指令命令在微處理器內(nèi)的執(zhí)行邏輯經(jīng)由一內(nèi)存總線發(fā)出總線作業(yè),用以要求該指定數(shù)量的快取線的排他所有權(quán),并且將該指定數(shù)量的快取線初始化成一指定值。
15.如權(quán)利要求14所述的裝置,其特征在于,其中該指定數(shù)量的快取線的配置及初始化是與在一應(yīng)用程序內(nèi)程序流程的其它指令的執(zhí)行平行。
16.如權(quán)利要求14所述的裝置,其特征在于,其中該區(qū)段配置與初始化指令包含對在一現(xiàn)存指令集內(nèi)的一現(xiàn)存預(yù)取指令的修改,并且其中該現(xiàn)存預(yù)取指令原本不提供該指定數(shù)量的快取線的配置與初始化。
17.如權(quán)利要求14所述的裝置,其特征在于,其中,響應(yīng)于該相關(guān)的微指令,該執(zhí)行邏輯命令一總線單元經(jīng)由該內(nèi)存總線發(fā)出該些總線作業(yè)。
18.如權(quán)利要求14所述的裝置,其特征在于,其中該指定數(shù)值是隱含的由該區(qū)段配置及初始化指令的編碼方式所指定。
19.如權(quán)利要求14所述的裝置,其特征在于,其中該指定數(shù)值是由該微處理器內(nèi)的一第二架構(gòu)緩存器的內(nèi)容所提供。
20.一種配置與初始化一區(qū)段的快取線的方法,其特征在于,包含提取一區(qū)段配置與初始化的宏指令;將此區(qū)段配置與初始化宏指令轉(zhuǎn)譯成微指令序列,其中該微指令序列是用以命令一微處理器預(yù)取處于排他狀態(tài)的該區(qū)段的快取線,并且將該區(qū)段的快取線初始化成一指定數(shù)值;以及響應(yīng)此微指令序列,經(jīng)由內(nèi)存總線發(fā)出總線作業(yè)以讀取該處于排他狀態(tài)的快取線,并且將該區(qū)段的快取線初始化成該指定數(shù)值。
21.如權(quán)利要求20所述的方法,其特征在于,其中該發(fā)出動作包含許可該微處理器平行的執(zhí)行該發(fā)出與隨后的指令。
22.如權(quán)利要求20所述的方法,其特征在于,其中該提取包含提供該區(qū)段配置與初始化指令作為對在一現(xiàn)存指令集內(nèi)的一現(xiàn)存預(yù)取指令的修改,其中該現(xiàn)存預(yù)取指令原本不提供該區(qū)段快取線的配置與初始化。
23.如權(quán)利要求20所述的方法,其特征在于,更包含依照一第一緩存器的內(nèi)容來設(shè)定在該區(qū)段的快取線內(nèi)的快取線數(shù)量。
24.如權(quán)利要求20所述的方法,其特征在于,其中該發(fā)出動作包含提供經(jīng)由內(nèi)存總線的一多重的資料讀取與無效作業(yè),此作業(yè)是要求該區(qū)段的快取線的排他所有權(quán)。
25.如權(quán)利要求20所述的方法,其特征在于,其中該提取動作包含在該區(qū)段配置與初始化指令內(nèi)隱含的指定一指定數(shù)值,該指定數(shù)值是用以初始化該區(qū)段的快取線。
26.如權(quán)利要求20所述的方法,其中該提取動作包含提供該微處理器的一第二緩存器內(nèi)的該指定數(shù)值。
全文摘要
本發(fā)明提供一種對內(nèi)存內(nèi)一區(qū)段的快取線執(zhí)行排他的預(yù)取與初始化的微處理器裝置。該裝置包含轉(zhuǎn)譯邏輯與執(zhí)行邏輯。該轉(zhuǎn)譯邏輯將區(qū)段配置與初始化指令轉(zhuǎn)譯成一微指令序列,用以命令微處理器預(yù)取處于排他狀態(tài)的一區(qū)段的快取線,并且將該區(qū)段的該快取線初始化成一指定數(shù)值。該執(zhí)行邏輯是耦接至該轉(zhuǎn)譯邏輯。該執(zhí)行邏輯接收該微指令序列發(fā)出作業(yè)至要求處于該排他狀態(tài)區(qū)段的快取線的一內(nèi)存總線上,并且將該區(qū)段的該快取線初始化成該指定數(shù)值。
文檔編號G06F9/38GK1487409SQ03152659
公開日2004年4月7日 申請日期2003年8月5日 優(yōu)先權(quán)日2003年2月11日
發(fā)明者羅德尼·E·胡克, 羅德尼 E 胡克 申請人:智慧第一公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1