專(zhuān)利名稱(chēng):微處理器、存儲(chǔ)器子系統(tǒng)以及快取數(shù)據(jù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微處理器,特別涉及在微處理器的快取存儲(chǔ)器中數(shù)據(jù)的預(yù)取。
背景技術(shù):
從系統(tǒng)存儲(chǔ)器預(yù)取數(shù)據(jù)和/或指令至微處理器的快取存儲(chǔ)器的優(yōu)勢(shì)是已知的。隨著存儲(chǔ)器存取的等待時(shí)間(latency)以及微處理器核心時(shí)鐘頻率之間的不同會(huì)持續(xù)增加, 預(yù)取數(shù)據(jù)和/或指令的優(yōu)勢(shì)會(huì)變的更重要。然而,由微處理器所產(chǎn)生的預(yù)取請(qǐng)求會(huì)放置額外的載入請(qǐng)求(request)在微處理器的有限資源中,其中微處理器的有限資源亦被正常載入請(qǐng)求以及存儲(chǔ)請(qǐng)求所需要,例如微處理器的外部總線(xiàn)、介接(interface)微處理器至外部總線(xiàn)的總線(xiàn)接口單元、以及微處理器的不同快取存儲(chǔ)器。因此,設(shè)計(jì)能有效率地利用微處理器的資源的預(yù)取器(prefetcher)是重要的。
發(fā)明內(nèi)容
本發(fā)明提供一種存儲(chǔ)器子系統(tǒng),設(shè)置于一微處理器內(nèi)。上述存儲(chǔ)器子系統(tǒng)包括一第一級(jí)快取存儲(chǔ)器;一第二級(jí)快取存儲(chǔ)器;以及,一預(yù)取快取存儲(chǔ)器,用以從一外部存儲(chǔ)器預(yù)測(cè)并預(yù)取快取列至上述微處理器。上述第二級(jí)快取存儲(chǔ)器以及上述預(yù)取快取存儲(chǔ)器允許相同的上述快取列存在于上述第二級(jí)快取存儲(chǔ)器以及上述預(yù)取快取存儲(chǔ)器兩者。當(dāng)上述第一級(jí)快取存儲(chǔ)器所產(chǎn)生的關(guān)于一快取列的一請(qǐng)求命中上述第二級(jí)快取存儲(chǔ)器以及上述預(yù)取快取存儲(chǔ)器兩者時(shí),上述預(yù)取快取存儲(chǔ)器使存在于上述預(yù)取快取存儲(chǔ)器的上述快取列無(wú)效,而上述第二級(jí)快取存儲(chǔ)器提供存在于上述第二級(jí)快取存儲(chǔ)器的上述快取列至上述第一級(jí)快取存儲(chǔ)器。再者,本發(fā)明提供一種快取數(shù)據(jù)的方法,適用于一微處理器的一存儲(chǔ)器子系統(tǒng),其中上述微處理器用以存取一外部存儲(chǔ)器并包括一第一級(jí)快取存儲(chǔ)器、一第二級(jí)快取存儲(chǔ)器以及一預(yù)取快取存儲(chǔ)器,以及上述預(yù)取快取存儲(chǔ)器用以從上述外部存儲(chǔ)器預(yù)測(cè)并預(yù)取至少一快取列至上述微處理器。上述方法包括通過(guò)上述第二級(jí)快取存儲(chǔ)器以及上述預(yù)取快取存儲(chǔ)器,允許相同的上述快取列存在于上述第二級(jí)快取存儲(chǔ)器以及上述預(yù)取快取存儲(chǔ)器兩者;決定由上述第一級(jí)快取存儲(chǔ)器所產(chǎn)生的關(guān)于上述快取列的一請(qǐng)求是否命中上述第二級(jí)快取存儲(chǔ)器以及上述預(yù)取快取存儲(chǔ)器兩者;以及,當(dāng)上述請(qǐng)求命中上述第二級(jí)快取存儲(chǔ)器以及上述預(yù)取快取存儲(chǔ)器兩者時(shí)通過(guò)上述預(yù)取快取存儲(chǔ)器,使存在于上述預(yù)取快取存儲(chǔ)器的上述快取列無(wú)效;以及,通過(guò)上述第二級(jí)快取存儲(chǔ)器,提供存在于上述第二級(jí)快取存儲(chǔ)器的上述快取列至上述第一級(jí)快取存儲(chǔ)器。
圖I是顯示根據(jù)本發(fā)明一實(shí)施例所述的微處理器的方塊圖2是顯示根據(jù)本發(fā)明所述的圖I中微處理器的存儲(chǔ)器子系統(tǒng)的方塊圖; 圖3是顯示圖2中每一回應(yīng)緩沖器的相關(guān)欄位;
圖4是顯示圖2中第二級(jí)預(yù)取快取存儲(chǔ)器所產(chǎn)生的回應(yīng)表;以及圖5至圖7是顯示圖I中存儲(chǔ)器子系統(tǒng)的操作的流程圖。
主要元件符號(hào)說(shuō)明
100 微處理器; 102 指令提取單元;
指令解碼單元;106 運(yùn)算元提取單元;
多個(gè)執(zhí)行單元;
結(jié)果寫(xiě)回/指令引退單元;114 存儲(chǔ)器子系統(tǒng);
第一級(jí)數(shù)據(jù)快取存儲(chǔ)器;
第二級(jí)快取存儲(chǔ)器;
第二級(jí)預(yù)取快取存儲(chǔ)器;
總線(xiàn)接口單元;134 外部總線(xiàn);
204,212 命中/未命中回應(yīng);
206 數(shù)據(jù)與快取列狀態(tài);208 載入請(qǐng)求;
216 不重試信號(hào);
222 總線(xiàn)核準(zhǔn)信號(hào);
226 總線(xiàn)載入請(qǐng)求;
232 取消信號(hào)。
104
108
112
122
124
126
128
214
218
224
228
>監(jiān)聽(tīng)請(qǐng)求;
>取消完成信號(hào); >總線(xiàn)載入請(qǐng)求; >監(jiān)聽(tīng)回應(yīng);以及
具體實(shí)施例方式為讓本發(fā)明的上述和其他目的、特征、和優(yōu)點(diǎn)能更明顯易懂,下文特舉出優(yōu)選實(shí)施例,并配合附圖,作詳細(xì)說(shuō)明如下實(shí)施例參考圖1,圖I是顯示根據(jù)本發(fā)明一實(shí)施例所述的微處理器100的方塊圖。微處理器100包括指令提取單元102、指令解碼單元104、運(yùn)算元提取單元106、多個(gè)執(zhí)行單元108 以及結(jié)果寫(xiě)回/指令引退(retire)單元112等,其中每一單元可包括多個(gè)階段(stages)。 在一實(shí)施例中,微處理器100為超純量(Superscalar)亂序(out-of-order)執(zhí)行/循序 (in-order)引退微處理器。微處理器100亦包括總線(xiàn)接口單元128,其用以介接微處理器 100至外部總線(xiàn)134,以便存取系統(tǒng)存儲(chǔ)器以及外圍裝置。在一實(shí)施例中,總線(xiàn)134符合由不同英特爾 奔騰 微處理器中的一個(gè)所指定的總線(xiàn)協(xié)議。微處理器100亦包括存儲(chǔ)器子系統(tǒng)114,其包括第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122、第二級(jí)快取存儲(chǔ)器124以及第二級(jí)預(yù)取快取存儲(chǔ)器126。參考圖2,圖2是顯示根據(jù)本發(fā)明所述的圖I中微處理器100的存儲(chǔ)器子系統(tǒng) 114的方塊圖。存儲(chǔ)器子系統(tǒng)114包括第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122、第二級(jí)快取存儲(chǔ)器124 以及第二級(jí)預(yù)取快取存儲(chǔ)器126,其分別耦接于圖I的總線(xiàn)接口單元128。第二級(jí)預(yù)取快取存儲(chǔ)器126產(chǎn)生總線(xiàn)載入請(qǐng)求(BusLoadRequest) 226至總線(xiàn)接口單元128,以便預(yù)測(cè) (speculatively)并預(yù)取快取列(cache line)至第二級(jí)預(yù)取快取存儲(chǔ)器126。因應(yīng)于由執(zhí)行單元108所執(zhí)行的軟件預(yù)取指令和/或微處理器100本身所產(chǎn)生的硬件預(yù)取請(qǐng)求所產(chǎn)生的預(yù)取請(qǐng)求,第二級(jí)預(yù)取快取存儲(chǔ)器126產(chǎn)生總線(xiàn)載入請(qǐng)求226。第二級(jí)預(yù)取快取存儲(chǔ)器126包括多個(gè)回應(yīng)緩沖器(response buffer) 202,其可作為從總線(xiàn)134所載入的快取列的中間存儲(chǔ)器,直到快取列被引退至第二級(jí)預(yù)取快取存儲(chǔ)器 126或是被提供至第二級(jí)快取存儲(chǔ)器124。在一實(shí)施例中,第二級(jí)預(yù)取快取存儲(chǔ)器126具有八個(gè)回應(yīng)緩沖器202。圖3是顯示圖2中每一回應(yīng)緩沖器202的相關(guān)欄位。在發(fā)送總線(xiàn)載入請(qǐng)求226之前,當(dāng)?shù)诙?jí)預(yù)取快取存儲(chǔ)器126指派一個(gè)回應(yīng)緩沖器202時(shí),第二級(jí)預(yù)取快取存儲(chǔ)器126會(huì)將要被預(yù)取的快取列的地址存儲(chǔ)至被指派的回應(yīng)緩沖器202的地址欄位302。已預(yù)取的快取列數(shù)據(jù)將被引退至第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122 或是第二級(jí)預(yù)取快取存儲(chǔ)器126。第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122發(fā)送載入請(qǐng)求(LoadRequest) 208至第二級(jí)快取存儲(chǔ)器124,以便從第二級(jí)快取存儲(chǔ)器124載入一快取列。載入請(qǐng)求208亦被提供至第二級(jí)預(yù)取快取存儲(chǔ)器126。假如由第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122所產(chǎn)生的載入請(qǐng)求208與回應(yīng)緩沖器202的地址欄位302中的一有效值相沖突時(shí),第二級(jí)預(yù)取快取存儲(chǔ)器126會(huì)對(duì)回應(yīng)緩沖器202的載入沖突(LoadCollide)欄位306進(jìn)行設(shè)定。對(duì)應(yīng)于總線(xiàn)134上由外部代理者(agent)所啟動(dòng)的傳輸(transaction)或是對(duì)應(yīng)于由微處理器100的快取存儲(chǔ)器內(nèi)部所產(chǎn)生的某些傳輸,總線(xiàn)接口單元128會(huì)產(chǎn)生監(jiān)聽(tīng) (snoop)請(qǐng)求214。監(jiān)聽(tīng)請(qǐng)求214會(huì)被提供至第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122、第二級(jí)快取存儲(chǔ)器124以及第二級(jí)預(yù)取快取存儲(chǔ)器126。假如監(jiān)聽(tīng)請(qǐng)求214與回應(yīng)緩沖器202的地址欄位 302中的一有效值相沖突時(shí),第二級(jí)預(yù)取快取存儲(chǔ)器126會(huì)對(duì)回應(yīng)緩沖器202的監(jiān)聽(tīng)命中 (SnoopHit)欄位308進(jìn)行設(shè)定??偩€(xiàn)接口單元128會(huì)提供與每一回應(yīng)緩沖器202有關(guān)的不重試(NoRetry)信號(hào) 216至第二級(jí)預(yù)取快取存儲(chǔ)器126??偩€(xiàn)接口單元128會(huì)在總線(xiàn)134的回應(yīng)階段(Response Phase)的期間對(duì)已編碼的位元進(jìn)行解碼,其將指示總線(xiàn)接口單元128是否正在完成目前的傳輸。亦即在總線(xiàn)134的回應(yīng)階段的期間,傳輸將不會(huì)被重試。既然傳輸將不會(huì)被重試,則總線(xiàn)接口單元128會(huì)設(shè)置(assert)與回應(yīng)緩沖器202有關(guān)的不重試信號(hào)216至第二級(jí)預(yù)取快取存儲(chǔ)器126,而第二級(jí)預(yù)取快取存儲(chǔ)器126會(huì)對(duì)應(yīng)地對(duì)回應(yīng)緩沖器202內(nèi)部的不重試欄位312進(jìn)行設(shè)定??偩€(xiàn)接口單元128亦會(huì)提供與每一回應(yīng)緩沖器202有關(guān)的總線(xiàn)核準(zhǔn)(BusGrant) 信號(hào)222至第二級(jí)預(yù)取快取存儲(chǔ)器126。當(dāng)總線(xiàn)接口單元128被核準(zhǔn)總線(xiàn)134的所有權(quán)來(lái)執(zhí)行傳輸以提取由回應(yīng)緩沖器202的地址欄位302所指定的快取列時(shí),總線(xiàn)接口單元128 會(huì)設(shè)置與回應(yīng)緩沖器202有關(guān)的總線(xiàn)核準(zhǔn)信號(hào)222至第二級(jí)預(yù)取快取存儲(chǔ)器126,而第二級(jí)預(yù)取快取存儲(chǔ)器126會(huì)對(duì)應(yīng)地對(duì)回應(yīng)緩沖器202內(nèi)部的總線(xiàn)核準(zhǔn)欄位314進(jìn)行設(shè)定。第二級(jí)預(yù)取快取存儲(chǔ)器126會(huì)提供與每一回應(yīng)緩沖器202有關(guān)的取消(Kill)信號(hào)232至總線(xiàn)接口單元128。第二級(jí)預(yù)取快取存儲(chǔ)器126會(huì)設(shè)置適當(dāng)?shù)娜∠盘?hào)232,用以指示總線(xiàn)接口單元128來(lái)抑制(refrain)于總線(xiàn)134上所執(zhí)行的傳輸,以避免提取由回應(yīng)緩沖器202所指定的快取列或是假如該傳輸已經(jīng)開(kāi)始則終止(terminate)該傳輸??偩€(xiàn)接口單元128會(huì)提供與每一回應(yīng)緩沖器202有關(guān)的取消完成(KillOK)信號(hào)218至第二級(jí)預(yù)取快取存儲(chǔ)器126??偩€(xiàn)接口單元128會(huì)設(shè)置與回應(yīng)緩沖器202有關(guān)的取消完成信號(hào)218至第二級(jí)預(yù)取快取存儲(chǔ)器126,此時(shí)總線(xiàn)接口單元128不再抑制或是終止該傳輸,而第二級(jí)預(yù)取快取存儲(chǔ)器126會(huì)對(duì)應(yīng)地清除(clear)回應(yīng)緩沖器202內(nèi)部的取消完成欄位316。第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122會(huì)產(chǎn)生總線(xiàn)載入請(qǐng)求224來(lái)請(qǐng)求總線(xiàn)接口單元128,以便提取快取列至第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122。此外,對(duì)應(yīng)于由總線(xiàn)接口單元128所產(chǎn)生的監(jiān)聽(tīng)請(qǐng)求214,第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122會(huì)產(chǎn)生監(jiān)聽(tīng)回應(yīng)(SnoopResponse) 228至總線(xiàn)接口單元128。第二級(jí)快取存儲(chǔ)器124會(huì)產(chǎn)生命中(hit)/未命中(miss)信號(hào)212至第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122,以便指示載入請(qǐng)求208是否命中或是未命中第二級(jí)快取存儲(chǔ)器124。第二級(jí)預(yù)取快取存儲(chǔ)器126產(chǎn)生命中/未命中信號(hào)204至第二級(jí)快取存儲(chǔ)器124,以便指示載入請(qǐng)求208是否命中或是未命中第二級(jí)預(yù)取快取存儲(chǔ)器126。最后,第二級(jí)預(yù)取快取存儲(chǔ)器 126會(huì)提供數(shù)據(jù)與快取列狀態(tài)206至第二級(jí)快取存儲(chǔ)器124。在一實(shí)施例中,在處理來(lái)自第二級(jí)預(yù)取快取存儲(chǔ)器126的請(qǐng)求之前,總線(xiàn)接口單元128會(huì)優(yōu)先處理來(lái)自第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122且具有較高優(yōu)先權(quán)的請(qǐng)求。因此,通常想要盡可能地對(duì)第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122的載入請(qǐng)求以及第二級(jí)預(yù)取快取存儲(chǔ)器126的載入請(qǐng)求進(jìn)行解耦合(de-couple),使得第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122的載入請(qǐng)求能使其對(duì)總線(xiàn)的請(qǐng)求具有較高的優(yōu)先權(quán)。特別地,當(dāng)?shù)诙?jí)預(yù)取快取存儲(chǔ)器126的總線(xiàn)載入請(qǐng)求226 同時(shí)由監(jiān)聽(tīng)請(qǐng)求214以及載入請(qǐng)求208所命中時(shí),存儲(chǔ)器子系統(tǒng)114會(huì)進(jìn)行上述解耦合。第二級(jí)預(yù)取快取存儲(chǔ)器126與總線(xiàn)載入請(qǐng)求226有關(guān)的回應(yīng)緩沖器202中載入沖突欄位306 以及監(jiān)聽(tīng)命中欄位308為"真"(True)值以指示總線(xiàn)載入請(qǐng)求226同時(shí)由監(jiān)聽(tīng)請(qǐng)求214 以及載入請(qǐng)求208所命中。更特別地,假如總線(xiàn)接口單元128的監(jiān)聽(tīng)請(qǐng)求214命中第二級(jí)預(yù)取快取存儲(chǔ)器126的總線(xiàn)載入請(qǐng)求226,則傳送至第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122的回應(yīng)將為未命中訊息,除非回應(yīng)階段發(fā)生于總線(xiàn)134上。在與第二級(jí)預(yù)取快取存儲(chǔ)器126的總線(xiàn)載入請(qǐng)求226有關(guān)的回應(yīng)緩沖器202中,不重試欄位312的"真"值會(huì)指示回應(yīng)階段已發(fā)生于總線(xiàn)134上。既然監(jiān)聽(tīng)代理者將要修改由第二級(jí)預(yù)取快取存儲(chǔ)器126所預(yù)提的快取列, 則可允許第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122對(duì)總線(xiàn)載入請(qǐng)求224進(jìn)行啟動(dòng)(initiate),以便快速地來(lái)有效更新快取列。即是,立即地回傳未命中訊息至第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122能盡快地授權(quán)(empower)第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122對(duì)更新的數(shù)據(jù)來(lái)啟動(dòng)總線(xiàn)載入請(qǐng)求224,如圖 4的第I列至第4列以及圖5的步驟502至步驟512所顯示。參考圖5,圖5是顯示圖I中存儲(chǔ)器子系統(tǒng)的操作的流程圖。流程開(kāi)始在步驟502。在步驟502,第二級(jí)預(yù)取快取存儲(chǔ)器126檢測(cè)到監(jiān)聽(tīng)請(qǐng)求214及第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122的載入請(qǐng)求208皆命中回應(yīng)緩沖器202中的一個(gè)。接著,流程進(jìn)入步驟504。在步驟504,判斷是否發(fā)生重試。如果是,則流程進(jìn)入步驟506。否則,流程進(jìn)入步驟 514。在步驟506,第二級(jí)預(yù)取快取存儲(chǔ)器126回傳關(guān)于第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122的載入請(qǐng)求208的未命中訊息至第二級(jí)快取存儲(chǔ)器124。接著,流程進(jìn)入步驟508。在步驟508,第二級(jí)快取存儲(chǔ)器124回傳未命中訊息至第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122 的載入請(qǐng)求208。接著,流程進(jìn)入步驟512。在步驟512,第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122發(fā)送總線(xiàn)載入請(qǐng)求224至總線(xiàn)(總線(xiàn)接口單元128)以取得更新的快取列。流程結(jié)束在步驟512。其中圖5的步驟508系假設(shè)監(jiān)聽(tīng)請(qǐng)求214以及載入請(qǐng)求208亦未命中第二級(jí)快取
7存儲(chǔ)器124。如圖4的第5列及第6列以及圖5的步驟514至步驟522所顯示,在監(jiān)聽(tīng)請(qǐng)求 214的命中系發(fā)生在回應(yīng)階段之后,第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122會(huì)等待由第二級(jí)預(yù)取快取存儲(chǔ)器126的總線(xiàn)載入請(qǐng)求226所提取的數(shù)據(jù)。于是,第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122會(huì)占住 (own)總線(xiàn)134并接收數(shù)據(jù),再回應(yīng)給監(jiān)聽(tīng)請(qǐng)求214。因?yàn)閭鹘y(tǒng)上總線(xiàn)134上的數(shù)據(jù)占有期(tenure)僅會(huì)發(fā)生在回應(yīng)階段之后,所以第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122的上述動(dòng)作系適當(dāng)?shù)?。在步驟514,第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122等待其載入請(qǐng)求208的回應(yīng)。接著,流程進(jìn)入步驟516。在步驟516,第二級(jí)預(yù)取快取存儲(chǔ)器126從總線(xiàn)134 (總線(xiàn)接口單元128)接收快取列、回傳關(guān)于第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122的載入請(qǐng)求208的命中訊息至第二級(jí)快取存儲(chǔ)器 124并提供快取列至第二級(jí)快取存儲(chǔ)器124。接著,流程進(jìn)入步驟518。在步驟518,第二級(jí)快取存儲(chǔ)器124回傳命中訊息至第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122的載入請(qǐng)求208并提供快取列至第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122。接著,流程進(jìn)入步驟522。在步驟522,第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122取得快取列的所有權(quán)并回應(yīng)于監(jiān)聽(tīng)請(qǐng)求 214。流程結(jié)束在步驟522。再者,來(lái)自第二級(jí)預(yù)取快取存儲(chǔ)器126的命中/未命中信號(hào)204(以及后續(xù)從第二級(jí)快取存儲(chǔ)器124至第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122的命中/未命中信號(hào)212)為存儲(chǔ)在回應(yīng)緩沖器202中載入沖突欄位306、監(jiān)聽(tīng)命中欄位308與不重試欄位312的狀態(tài)信息的函數(shù)。當(dāng)執(zhí)行第二級(jí)預(yù)取快取存儲(chǔ)器126的總線(xiàn)載入請(qǐng)求226時(shí),由于與緊接在總線(xiàn)載入請(qǐng)求226之后的載入請(qǐng)求208會(huì)相沖突,如回應(yīng)緩沖器202中載入沖突欄位306的"真" 值所指示,則總線(xiàn)134的頻寬可能會(huì)無(wú)法被充分利用。上述請(qǐng)求將導(dǎo)致重復(fù)(duplicate) 的總線(xiàn)134的傳輸提取相同的快取列。圖6的實(shí)施例系描述通過(guò)終止未被核準(zhǔn)總線(xiàn)134的第二級(jí)預(yù)取快取存儲(chǔ)器126的總線(xiàn)載入請(qǐng)求226來(lái)解決上述問(wèn)題,如回應(yīng)緩沖器202中總線(xiàn)核準(zhǔn)欄位314的"假"(False)值所指示。假如載入請(qǐng)求208與未被核準(zhǔn)總線(xiàn)134的總線(xiàn)載入請(qǐng)求226相沖突時(shí),第二級(jí)預(yù)取快取存儲(chǔ)器126會(huì)設(shè)置有關(guān)的取消信號(hào)232來(lái)終止總線(xiàn)載入請(qǐng)求226,如圖6所顯示。對(duì)快取列而言,其將允許具有較高優(yōu)先權(quán)的第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122的總線(xiàn)載入請(qǐng)求224成為單一總線(xiàn)134的傳輸。再者,第二級(jí)預(yù)取快取存儲(chǔ)器126的總線(xiàn)載入請(qǐng)求226的終止可以是存儲(chǔ)在回應(yīng)緩沖器202中載入沖突欄位306、總線(xiàn)核準(zhǔn)欄位314與取消完成欄位316的狀態(tài)信息的函數(shù)。再者,盡快地終止第二級(jí)預(yù)取快取存儲(chǔ)器126的總線(xiàn)載入請(qǐng)求226將會(huì)允許第二級(jí)預(yù)取快取存儲(chǔ)器126能很快地回傳未命中信號(hào)204至第二級(jí)快取存儲(chǔ)器124,其依序允許第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122來(lái)快速地產(chǎn)生總線(xiàn)載入請(qǐng)求224,其中總線(xiàn)載入請(qǐng)求224在總線(xiàn)接口單元128內(nèi)具有較高優(yōu)先權(quán)。此外,終止第二級(jí)預(yù)取快取存儲(chǔ)器126的總線(xiàn)載入請(qǐng)求 226的另一重要優(yōu)點(diǎn)是可避免在總線(xiàn)134上對(duì)相同快取列進(jìn)行兩次載入,即可降低總線(xiàn)134 上的傳輸量。參考圖6,圖6是顯示圖I中存儲(chǔ)器子系統(tǒng)的操作的流程圖。流程開(kāi)始在步驟602。在步驟602,第二級(jí)預(yù)取快取存儲(chǔ)器126發(fā)送快取列的總線(xiàn)載入請(qǐng)求226。接著, 流程進(jìn)入步驟604。
在步驟604,第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122隨后發(fā)送相同快取列的載入請(qǐng)求208。接著,流程進(jìn)入步驟606。在步驟606,判斷是否設(shè)置取消完成信號(hào)218且無(wú)設(shè)置總線(xiàn)核準(zhǔn)信號(hào)222。如果是, 則流程進(jìn)入步驟608。否則,流程進(jìn)入步驟614。在步驟608,第二級(jí)預(yù)取快取存儲(chǔ)器126取消總線(xiàn)載入請(qǐng)求226至總線(xiàn)(總線(xiàn)接口單元128)。接著,流程進(jìn)入步驟614。在步驟614,第二級(jí)預(yù)取快取存儲(chǔ)器126重傳未命中訊息至第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122的載入請(qǐng)求208。接著,流程進(jìn)入步驟612。在步驟612,第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122發(fā)送總線(xiàn)載入請(qǐng)求224至總線(xiàn)(總線(xiàn)接口單元128)。流程結(jié)束在步驟612。明確地,第二級(jí)預(yù)取快取存儲(chǔ)器126必須不會(huì)引起非相干性(incoherency)。例如,假如第二級(jí)預(yù)取快取存儲(chǔ)器126回傳具有互斥狀態(tài)(Exclusive status)的數(shù)據(jù)至第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122且在第二級(jí)快取存儲(chǔ)器124中相同的快取列具有修改狀態(tài) (Modified status),則將會(huì)產(chǎn)生非相干性。傳統(tǒng)上,避免非相干性的解決方式系在對(duì)快取列執(zhí)行預(yù)取之前,第二級(jí)預(yù)取快取存儲(chǔ)器126會(huì)詢(xún)問(wèn)第二級(jí)快取存儲(chǔ)器124 ;以及,假如上述詢(xún)問(wèn)命中第二級(jí)快取存儲(chǔ)器124時(shí),第二級(jí)預(yù)取快取存儲(chǔ)器126不會(huì)進(jìn)行提取。即,傳統(tǒng)的解決方式不允許(disallow)相同快取列同時(shí)出現(xiàn)在第二級(jí)快取存儲(chǔ)器124以及第二級(jí)預(yù)取快取存儲(chǔ)器126。然而,傳統(tǒng)的解決方式會(huì)引入(intiOduce)在第二級(jí)預(yù)取快取存儲(chǔ)器 126的預(yù)取中的等待時(shí)間(latency),并且需要額外的邏輯電路。圖7的實(shí)施例描述通過(guò)第二級(jí)快取存儲(chǔ)器124以及第二級(jí)預(yù)取快取存儲(chǔ)器126回應(yīng)載入請(qǐng)求208來(lái)完全消除標(biāo)簽詢(xún)問(wèn)(tag query)。具體地,假如載入請(qǐng)求208命中第二級(jí)快取存儲(chǔ)器124以及第二級(jí)預(yù)取快取存儲(chǔ)器126兩者,第二級(jí)快取存儲(chǔ)器124會(huì)對(duì)應(yīng)于載入請(qǐng)求208來(lái)提供數(shù)據(jù),其將保證假如有已被修改的數(shù)據(jù)在第二級(jí)快取存儲(chǔ)器124內(nèi),則第二級(jí)快取存儲(chǔ)器124的數(shù)據(jù)將被退回(returned)。再者,假如載入請(qǐng)求208命中第二級(jí)快取存儲(chǔ)器124以及第二級(jí)預(yù)取快取存儲(chǔ)器126兩者,第二級(jí)預(yù)取快取存儲(chǔ)器126會(huì)使該數(shù)據(jù)無(wú)效。存儲(chǔ)器子系統(tǒng)114的操作描述在圖7中。參考圖7,圖7是顯示圖I中存儲(chǔ)器子系統(tǒng)的操作的流程圖。流程開(kāi)始在步驟702。在步驟702,第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122發(fā)送總線(xiàn)載入請(qǐng)求224。接著,流程進(jìn)入步驟704。在步驟704,判斷是否命中第二級(jí)預(yù)取快取存儲(chǔ)器126。如果是,則流程進(jìn)入步驟 706。否則,流程進(jìn)入步驟716。在步驟706,判斷是否命中第二級(jí)快取存儲(chǔ)器124。如果是,則流程進(jìn)入步驟708。 否則,流程進(jìn)入步驟714。在步驟708,第二級(jí)預(yù)取快取存儲(chǔ)器126使快取列無(wú)效。接著,流程進(jìn)入步驟712。在步驟712,第二級(jí)快取存儲(chǔ)器124提供快取列至第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122。流程結(jié)束在步驟712。在步驟714,第二級(jí)預(yù)取快取存儲(chǔ)器126提供快取列至第二級(jí)快取存儲(chǔ)器124。接著,流程進(jìn)入步驟712。在步驟716,判斷是否命中第二級(jí)快取存儲(chǔ)器124。如果是,則流程進(jìn)入步驟712。否則,流程進(jìn)入步驟718。在步驟718,第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122發(fā)送總線(xiàn)載入請(qǐng)求224,以便從總線(xiàn)(總線(xiàn)接口單元128)取得快取列。流程結(jié)束在步驟718。通過(guò)在第二級(jí)快取存儲(chǔ)器124以及第二級(jí)預(yù)取快取存儲(chǔ)器126內(nèi)設(shè)計(jì)管線(xiàn) (pipeline),可實(shí)現(xiàn)結(jié)合第二級(jí)快取存儲(chǔ)器124以及第二級(jí)預(yù)取快取存儲(chǔ)器126的回應(yīng)至載入請(qǐng)求208,使得第二級(jí)快取存儲(chǔ)器124以及第二級(jí)預(yù)取快取存儲(chǔ)器126可同時(shí)被執(zhí)行并在相同順序中處理相同載入請(qǐng)求208。特別地,第二級(jí)預(yù)取快取存儲(chǔ)器126可看到(see) 載入請(qǐng)求208,如圖2所顯示,并看到第二級(jí)快取存儲(chǔ)器124何時(shí)會(huì)處理載入請(qǐng)求208。雖然,本發(fā)明的實(shí)施例描述與預(yù)取器126有關(guān)的個(gè)別預(yù)取快取存儲(chǔ)器,然而其他實(shí)施例也可被實(shí)現(xiàn)。例如,不具有與預(yù)取器126有關(guān)的個(gè)別預(yù)取快取存儲(chǔ)器且預(yù)取器126 會(huì)將其預(yù)取至回應(yīng)緩沖器202的快取列引退至微處理器的另一快取存儲(chǔ)器,例如第二級(jí)快取存儲(chǔ)器124、第一級(jí)數(shù)據(jù)快取存儲(chǔ)器122和/或一第一級(jí)指令快取存儲(chǔ)器。雖然本發(fā)明已以?xún)?yōu)選實(shí)施例公開(kāi)如上,然其并非用以限定本發(fā)明,本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許的更動(dòng)與潤(rùn)飾。例如,軟件可致能如本發(fā)明所述的裝置及方法的功能、制造、模型化、模擬、描述和/或測(cè)試,其能通過(guò)使用通用程序設(shè)計(jì)語(yǔ)言(例如(、0++)、包括¥61^1呢、冊(cè)1^、¥!101^等的硬件描述語(yǔ)言(HDL)或其他可用的程序來(lái)實(shí)現(xiàn)。上述軟件可設(shè)置在任何已知的計(jì)算機(jī)可用媒體中,例如磁帶、半導(dǎo)體、磁盤(pán)、光盤(pán)(如⑶-R0M、DVD-R0M等)、網(wǎng)絡(luò)、有線(xiàn)連線(xiàn)、無(wú)線(xiàn)或其他通訊媒體。本發(fā)明的裝置及方法的實(shí)施例可包含在半導(dǎo)體智慧財(cái)產(chǎn)權(quán)核心內(nèi),例如微處理器核心(由HDL具體化),并轉(zhuǎn)換成集成電路的硬件產(chǎn)品。此外,本發(fā)明實(shí)施例所述的裝置及方法可以硬件與軟件的結(jié)合方式具體化。因此,本發(fā)明不應(yīng)限定于已公開(kāi)的實(shí)施例,而應(yīng)視后附的申請(qǐng)專(zhuān)利范圍所界定者為準(zhǔn)。具體而言,本發(fā)明可實(shí)施于微處理器裝置中,其可被使用于通用計(jì)算機(jī)。最后,本領(lǐng)域技術(shù)人員,可基于本發(fā)明所公開(kāi)的概念以及特定實(shí)施例,在不脫離本發(fā)明的精神和范圍內(nèi), 可做些許更動(dòng)與潤(rùn)飾以達(dá)到本發(fā)明的相同目的。
權(quán)利要求
1.一種存儲(chǔ)器子系統(tǒng),設(shè)置于一微處理器內(nèi),包括一第一級(jí)快取存儲(chǔ)器;一第二級(jí)快取存儲(chǔ)器;以及一預(yù)取快取存儲(chǔ)器,用以從一外部存儲(chǔ)器預(yù)測(cè)并預(yù)取快取列至上述微處理器,其中上述第二級(jí)快取存儲(chǔ)器以及上述預(yù)取快取存儲(chǔ)器允許相同的上述快取列存在于上述第二級(jí)快取存儲(chǔ)器以及上述預(yù)取快取存儲(chǔ)器兩者,其中當(dāng)上述第一級(jí)快取存儲(chǔ)器所產(chǎn)生的關(guān)于一快取列的一請(qǐng)求命中上述第二級(jí)快取存儲(chǔ)器以及上述預(yù)取快取存儲(chǔ)器兩者時(shí),上述預(yù)取快取存儲(chǔ)器使存在于上述預(yù)取快取存儲(chǔ)器的上述快取列無(wú)效,而上述第二級(jí)快取存儲(chǔ)器提供存在于上述第二級(jí)快取存儲(chǔ)器的上述快取列至上述第一級(jí)快取存儲(chǔ)器。
2.如權(quán)利要求I所述的存儲(chǔ)器子系統(tǒng),其中上述第二級(jí)快取存儲(chǔ)器以及上述預(yù)取快取存儲(chǔ)器共同地提供一單一回應(yīng)至上述第一級(jí)快取存儲(chǔ)器。
3.如權(quán)利要求I所述的存儲(chǔ)器子系統(tǒng),其中上述第二級(jí)快取存儲(chǔ)器以及上述預(yù)取快取存儲(chǔ)器皆配置相同數(shù)量的管線(xiàn)階段,其同時(shí)地在相同順序中處理上述第一級(jí)快取存儲(chǔ)器所產(chǎn)生的上述請(qǐng)求。
4.如權(quán)利要求I所述的存儲(chǔ)器子系統(tǒng),其中當(dāng)上述請(qǐng)求僅命中上述預(yù)取快取存儲(chǔ)器時(shí),上述預(yù)取快取存儲(chǔ)器提供上述快取列至上述第二級(jí)快取存儲(chǔ)器,而上述第二級(jí)快取存儲(chǔ)器提供上述快取列至上述第一級(jí)快取存儲(chǔ)器。
5.如權(quán)利要求I所述的存儲(chǔ)器子系統(tǒng),其中上述預(yù)取快取存儲(chǔ)器從上述外部存儲(chǔ)器預(yù)取一快取列,而不需詢(xún)問(wèn)上述第二級(jí)快取存儲(chǔ)器關(guān)于上述快取列的狀態(tài)。
6.一種快取數(shù)據(jù)的方法,適用于一微處理器的一存儲(chǔ)器子系統(tǒng),其中上述微處理器用以存取一外部存儲(chǔ)器并包括一第一級(jí)快取存儲(chǔ)器、一第二級(jí)快取存儲(chǔ)器以及一預(yù)取快取存儲(chǔ)器,以及上述預(yù)取快取存儲(chǔ)器用以從上述外部存儲(chǔ)器預(yù)測(cè)并預(yù)取至少一快取列至上述微處理器,上述方法包括通過(guò)上述第二級(jí)快取存儲(chǔ)器以及上述預(yù)取快取存儲(chǔ)器,允許相同的上述快取列存在于上述第二級(jí)快取存儲(chǔ)器以及上述預(yù)取快取存儲(chǔ)器兩者;決定由上述第一級(jí)快取存儲(chǔ)器所產(chǎn)生的關(guān)于上述快取列的一請(qǐng)求是否命中上述第二級(jí)快取存儲(chǔ)器以及上述預(yù)取快取存儲(chǔ)器兩者;以及當(dāng)上述請(qǐng)求命中上述第二級(jí)快取存儲(chǔ)器以及上述預(yù)取快取存儲(chǔ)器兩者時(shí)通過(guò)上述預(yù)取快取存儲(chǔ)器,使存在于上述預(yù)取快取存儲(chǔ)器的上述快取列無(wú)效;以及通過(guò)上述第二級(jí)快取存儲(chǔ)器,提供存在于上述第二級(jí)快取存儲(chǔ)器的上述快取列至上述第一級(jí)快取存儲(chǔ)器。
7.如權(quán)利要求6所述的快取數(shù)據(jù)的方法,還包括通過(guò)上述第二級(jí)快取存儲(chǔ)器以及上述預(yù)取快取存儲(chǔ)器,共同地提供一單一回應(yīng)至上述第一級(jí)快取存儲(chǔ)器。
8.如權(quán)利要求6所述的快取數(shù)據(jù)的方法,還包括通過(guò)在相同順序中每一上述第二級(jí)快取存儲(chǔ)器以及上述預(yù)取快取存儲(chǔ)器的相同數(shù)量的管線(xiàn)階段,同時(shí)地處理上述第一級(jí)快取存儲(chǔ)器所產(chǎn)生的上述請(qǐng)求。
9.如權(quán)利要求6所述的快取數(shù)據(jù)的方法,還包括當(dāng)上述請(qǐng)求僅命中上述預(yù)取快取存儲(chǔ)器時(shí)通過(guò)上述預(yù)取快取存儲(chǔ)器,提供上述快取列至上述第二級(jí)快取存儲(chǔ)器;以及通過(guò)上述第二級(jí)快取存儲(chǔ)器,提供上述快取列至上述第一級(jí)快取存儲(chǔ)器。
10.如權(quán)利要求6所述的快取數(shù)據(jù)的方法,還包括通過(guò)上述預(yù)取快取存儲(chǔ)器,從上述外部存儲(chǔ)器預(yù)取一快取列,而不需詢(xún)問(wèn)上述第二級(jí)快取存儲(chǔ)器關(guān)于上述快取列的狀態(tài)。
全文摘要
微處理器、存儲(chǔ)器子系統(tǒng)以及快取數(shù)據(jù)的方法。該微處理器,用以存取一外部存儲(chǔ)器??偩€(xiàn)接口單元,用以介接第一級(jí)快取存儲(chǔ)器及第二級(jí)快取存儲(chǔ)器至用來(lái)存取外部存儲(chǔ)器的總線(xiàn)。總線(xiàn)接口單元在處理來(lái)自第二級(jí)快取存儲(chǔ)器的請(qǐng)求之前,優(yōu)先處理來(lái)自第一級(jí)快取存儲(chǔ)器的請(qǐng)求。第二級(jí)快取存儲(chǔ)器產(chǎn)生第一請(qǐng)求至總線(xiàn)接口單元以從外部存儲(chǔ)器提取快取列。當(dāng)?shù)谝徽?qǐng)求產(chǎn)生時(shí),第二級(jí)快取存儲(chǔ)器檢測(cè)至快取列的由總線(xiàn)接口單元所產(chǎn)生的第二請(qǐng)求與由第一級(jí)快取存儲(chǔ)器所產(chǎn)生的第三請(qǐng)求。第二級(jí)快取存儲(chǔ)器判斷于總線(xiàn)上完成第一請(qǐng)求的傳輸是否被重試,以便產(chǎn)生未命中或命中回應(yīng)。
文檔編號(hào)G06F13/16GK102591813SQ20111038342
公開(kāi)日2012年7月18日 申請(qǐng)日期2010年6月25日 優(yōu)先權(quán)日2009年7月10日
發(fā)明者柯林.艾迪, 柯林頓.T.戈洛爾, 羅德尼.E.虎克, 艾伯特.J.婁坡 申請(qǐng)人:威盛電子股份有限公司