新四季網

高速緩存數據區段的配置與初始化機制的製作方法

2023-10-08 10:42:14 2

專利名稱:高速緩存數據區段的配置與初始化機制的製作方法
技術領域:
本發明與微電子學的領域有關,尤指一種裝置及方法使程式設計師得以命令微處理器在其內部高速緩存(cache)上執行配置與初始化一個區段(block)快取線(cache line)的預取運算(prefetch operation)。
背景技術:
本申請案與下列同在申請中之美國專利申請案有關,其申請日與本案相同,且具有相同的申請人與發明人。

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

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


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

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀