專利名稱:以推測方式使高速緩存中的緩存行失效的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及高速緩存,特別是涉及使高速緩存中的緩存行失效。
背景技術(shù):
因?yàn)橥ǔJ窃趯γ芏榷窃谒俣鹊目紤]下設(shè)計(jì)主系統(tǒng)內(nèi)存,所以微處理器設(shè)計(jì)者已將高速緩存加入其設(shè)計(jì)中,以便減少微處理器對直接存取主存儲器的需求。高速緩存是一種存取速度快于主存儲器的一種小容量內(nèi)存。計(jì)算機(jī)系統(tǒng)可以有若干不同階層的高速緩存。例如,一個(gè)計(jì)算機(jī)系統(tǒng)可以有″第一級″(L1)高速緩存及″第二級″(L2)高速緩存。通常是將這些高速緩存與微處理器集成。通常是以諸如靜態(tài)隨機(jī)存取內(nèi)存(Static Random Access Memory;簡稱SRAM)等快速的存儲單元構(gòu)成高速緩存,而SRAM的存取時(shí)間快于主系統(tǒng)存儲器所用的內(nèi)存(通常是動態(tài)隨機(jī)存取內(nèi)存(Dynamic Random AccessMemory;簡稱DRAM)或同步動態(tài)隨機(jī)存取內(nèi)存(SynchronousDynamic Random Access Memory;簡稱SDRAM))之存取時(shí)間。因?yàn)镾RAM的組件密度較低且成本較高,所以通常不將較快速的SRAM用于主系統(tǒng)內(nèi)存。
許多其它類型的高速緩存也是可行的。例如,可將主系統(tǒng)內(nèi)存用來作為系統(tǒng)的速度較慢的直接存取儲存裝置(例如硬盤機(jī))的高速緩存。諸如硬盤機(jī)等的其它裝置亦可設(shè)有內(nèi)部的高速緩存,用以提升該裝置的性能。
當(dāng)微處理器需要內(nèi)存中的數(shù)據(jù)時(shí),該微處理器通常先檢查其L1高速緩存,以便確定所需的數(shù)據(jù)是否已存放在該高速緩存中。如果并非如此,則檢查L2高速緩存。在此同時(shí),可向內(nèi)存請求該數(shù)據(jù),以防并未命中(miss)L2高速緩存。如果L2高速緩存儲存了該數(shù)據(jù),則L2高速緩存將該數(shù)據(jù)提供給微處理器(通常在比主系統(tǒng)內(nèi)存可做到的快許多的速度及短許多的存取時(shí)間下提供該數(shù)據(jù)),而且如果曾經(jīng)向內(nèi)存請求該數(shù)據(jù),則取消該請求。如果該數(shù)據(jù)并未緩沖儲存在L1或L2高速緩存(稱之為″高速緩存未命中″),則從主系統(tǒng)內(nèi)存或其它類型的海量儲存裝置(例如硬盤機(jī))讀取數(shù)據(jù)。與自L1高速緩存存取數(shù)據(jù)相比時(shí),從內(nèi)存存取數(shù)據(jù)要耗用更多的時(shí)鐘周期。同樣地,如果數(shù)據(jù)并未存放在主系統(tǒng)內(nèi)存,則自海量儲存裝置存取數(shù)據(jù)甚至要耗用更多的時(shí)鐘周期。
通常是在引用的區(qū)域性(locality of reference)原理下運(yùn)行高速緩存,引用的區(qū)域性是指最近使用過的數(shù)據(jù)(及該區(qū)域中的數(shù)據(jù))現(xiàn)在存取的可能性要大于其余的數(shù)據(jù)。該原理是有把握的,這是因?yàn)橛?jì)算機(jī)軟件通常具有循環(huán)及分支,因而要重新執(zhí)行先前執(zhí)行過的程序代碼。通過將最近存取的指令及數(shù)據(jù)儲存在高速緩存中,因此微處理器不需要等候從主存儲器讀取的指令及數(shù)據(jù),所以可提升系統(tǒng)性能。
微處理器及計(jì)算機(jī)系統(tǒng)設(shè)計(jì)者又進(jìn)一步利用了引用的區(qū)域性原理,其方式為利用諸如分支預(yù)測等技術(shù),而在微處理器實(shí)際需要用到指令及數(shù)據(jù)之前,就以前瞻的方式先將這些指令及數(shù)據(jù)儲存在高速緩存中。額外的,當(dāng)從內(nèi)存讀取指令或數(shù)據(jù)字節(jié)時(shí),讀取在該指令或數(shù)據(jù)之后的一些額外字節(jié),并將這些字節(jié)儲存在高速緩存中。引用的區(qū)域性原理再一次表明總體說來,處理器需要這些額外的指令及數(shù)據(jù)字節(jié)的可能性大于其它的數(shù)據(jù)或指令。
有數(shù)種不同的方式可將系統(tǒng)內(nèi)存映射到高速緩存。一種常見的方式是采用n路組關(guān)聯(lián)(set-associative)高速緩存,其中將該高速緩存分成若干組。每一組包含n個(gè)緩存行(cache lines)。緩存行是一串連續(xù)的字節(jié)(例如32或64個(gè)字節(jié))。為了效率上的考慮,高速緩存通常是以緩存行,而不是以單個(gè)字節(jié)進(jìn)行處理。可將主存儲器中可存放在高速緩存中的各存儲區(qū)域分別指定給這些組緩存行中的一組緩存行。因此,可將每一存儲位置緩沖儲存在指定的組內(nèi)的n個(gè)區(qū)域中的任一區(qū)域。該n路組關(guān)聯(lián)高速緩存的一個(gè)特殊情況是直接映射式高速緩存。在直接映射式高速緩存中,n=1,因而每一存儲花卉只映射至該高速緩存中的一個(gè)區(qū)域。該n路組關(guān)聯(lián)高速緩存的另一種特殊情況是完全關(guān)聯(lián)高速緩存。在此種情況中,n=m,其中m是高速緩存中緩存行的數(shù)目(且因而只有一″組″)。在此種情況中,每一存儲區(qū)域可映射至這些高速緩存區(qū)域中的任一區(qū)域。
高速緩存的兩個(gè)基本性能準(zhǔn)則是命中率(hit rate)(亦即,在高速緩存中找到的內(nèi)存存取次數(shù)與內(nèi)存存取總次數(shù)間之比率)及搜索速度(亦即,做出命中或未命中判定的速度)。在直接映射式高速緩存中,搜索速度最佳化,但其代價(jià)是命中率較低。這是因?yàn)橹苯佑成涫礁咚倬彺孑^易判定命中/未命中(因?yàn)榇鎯ξ恢弥挥成渲烈粭l緩存行,所以只須檢查該緩存行即可),但較難有較高的命中率,這是因?yàn)槎鄠€(gè)存儲位置映射至單一的緩存行。相反地,完全關(guān)聯(lián)高速緩存將命中率最佳化,但卻犧牲了搜索速度。由于可讓所有的存儲位置映射至任何緩存行,所以提高了命中的機(jī)率,但是卻大幅增加了搜索的復(fù)雜性,這是因?yàn)楸仨殲槊恳淮鎯ξ恢盟阉魉械木彺嫘?。組關(guān)聯(lián)高速緩存由于提供了比直接映射式高速緩存更多的關(guān)聯(lián)性(因而有較高的命中率),同時(shí)也提供了比完全關(guān)聯(lián)高速緩存更快的搜索速度,進(jìn)而試圖在上述兩種內(nèi)存之間提供一種折衷方案。
因?yàn)楦咚倬彺嫒萘渴艿饺舾梢蛩?其中包括晶粒尺寸、電力消耗及成本)的限制,所以當(dāng)將信息加載到高速緩存時(shí),必須要小心處理。一個(gè)特別的考慮是設(shè)計(jì)者決定一方針,用以覆寫高速緩存中現(xiàn)有的指令及數(shù)據(jù),或使現(xiàn)有的指令及數(shù)據(jù)失效,以便騰出新指令及數(shù)據(jù)的空間。因此,在n>1的組關(guān)聯(lián)高速緩存(因而有要用哪一緩存行來緩沖儲存一特定的存儲位置的選擇)中,要有某一方式在可能的各緩存行中選出哪一緩存行來填入新的資料。一種常用的解決方案是追蹤對每一緩沖儲存的存儲位置存取的相對順序,然后以新的指令或數(shù)據(jù)取代最近最少使用的指令或數(shù)據(jù)。該解決方案是基于最近存取的緩存行有較大的可能再度被存取的原理。其它的解決方案包括隨機(jī)取代及先進(jìn)先出技術(shù)。
平均上,最近最少使用的(Least-Recently Used;簡稱LRU)高速緩存取代算法提供了比其它算法較佳的性能。然而,為了要在n路組關(guān)聯(lián)高速緩存中決定最近最少使用的(LRU)緩存行,傳統(tǒng)的方式需要有相當(dāng)大量的復(fù)雜硬件(其中包括計(jì)數(shù)器及n路多任務(wù)器)來實(shí)施LRU算法。此外,要用每一高速緩存數(shù)據(jù)項(xiàng)的狀態(tài)位來追蹤每一數(shù)據(jù)項(xiàng)的使用情況。當(dāng)在該組中做出一個(gè)新的數(shù)據(jù)項(xiàng)時(shí),即掃描這些狀態(tài)位,以便決定哪一緩存行是最近最少使用的或失效的。然后收回該最近最少使用的或失效的緩存行,以便騰出用于新數(shù)據(jù)項(xiàng)的空間。傳統(tǒng)LRU取代算法的缺點(diǎn)包括硬件量、狀態(tài)位數(shù)目、及實(shí)施該算法所需的時(shí)間、以及掃描該組中失效的數(shù)據(jù)項(xiàng)所需的時(shí)間及硬件。
一般而言,最好是能提升高速緩存子系統(tǒng)的性能。例如,當(dāng)處理器的速度提高時(shí),最好是能提供可更迅速地供應(yīng)更多數(shù)據(jù)的高速緩存子系統(tǒng)。
發(fā)明內(nèi)容
使高速緩存中的緩存行失效通??赡苁怯杏玫摹H欢彺嫘械氖Р僮骺赡苋Q于許多基本的因素。在許多情況中,執(zhí)行錯誤檢查,以便決定這些基本的因素是否正確。如果這些因素不正確,則該失效操作是錯誤的,且不應(yīng)執(zhí)行該失效操作。因?yàn)殄e誤檢查可能要耗用相當(dāng)長的時(shí)間才能完成,所以當(dāng)高速緩存控制器實(shí)際收到失效請求時(shí),可能無法得到該失效操作是否為錯誤的判定。因此,失效請求便請求高速緩存控制器耗用時(shí)間等候錯誤檢查的判定,而使得該高速緩存控制器無法執(zhí)行其它待處理的工作。同時(shí),緩存行的失效操作是錯誤的情況是很少見的,因而該高速緩存控制器用來等候錯誤檢查完成的時(shí)間經(jīng)常是浪費(fèi)掉了。
如果高速緩存控制器被設(shè)定成以推測方式使緩存行失效,則該高速緩存控制器就能夠立即響應(yīng)失效請求,而不必等候錯誤檢查的完成。為了處理失效操作是錯誤的因而不應(yīng)執(zhí)行該失效操作這種很少見的情況,該高速緩存控制器亦可在錯誤檢查完成之前使以推測方式被失效的該緩存行不予修改。在此種方式下,如果后來發(fā)現(xiàn)該失效操作是錯誤的,則可撤銷該推測式失效操作。
因此,本發(fā)明揭示了以推測方式使高速緩存中的緩存行失效的方法及系統(tǒng)的各實(shí)施例。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)包含處理器、系統(tǒng)內(nèi)存、高速緩存控制器、高速緩存、及錯誤檢測單元。該高速緩存連接到該處理器,且包含多個(gè)緩存行儲存區(qū)域。該高速緩存控制器連接以接收使第一緩存行失效的第一請求。響應(yīng)收到的該第一請求,該高速緩存控制器被設(shè)定成以推測方式使該第一緩存行失效。為了保留該第一緩存行以防后來需要撤銷該推測式失效操作,該高速緩存控制器進(jìn)一步設(shè)定成在該第一緩存行的失效操作變成非推測式之前,禁止修改該第一緩存行儲存區(qū)域。該錯誤檢測單元設(shè)定成執(zhí)行對應(yīng)于該第一請求的至少一個(gè)檢查。例如,該錯誤檢測單元可以是該高速緩存控制器本身,且該檢查可能涉及進(jìn)行檢查,以便在給定該第一緩存行狀態(tài)的情況下,確保導(dǎo)致該推測式失效的一個(gè)操作(例如,響應(yīng)來自較高級高速緩存的填入請求,而命中一個(gè)獨(dú)占式高速緩存(exclusivecache))是正確的。如果該錯誤檢測單元執(zhí)行該檢查,且并未檢測到任何錯誤,則該第一緩存行的該失效操作變成了非推測式。
在一個(gè)實(shí)施例中,高速緩存控制器可設(shè)定成切換與第一緩存行相關(guān)聯(lián)的有效位,而以推測方式使該第一緩存行失效。因此,撤銷該推測式失效操作可能涉及重新切換該有效位,以便表示該第一緩存行再度是有效的。此外,在某些實(shí)施例中,可將該高速緩存控制器設(shè)定成在該第一緩存行的該失效操作變成非推測式之前,不接受相關(guān)于該第一緩存行的狀態(tài)或數(shù)據(jù)的請求。在此種方式下,可將這些請求延遲到該推測式失效操作變成非推測式或被撤銷為止。一般而言,在該第一緩存行的該失效操作變成非推測式之前,可將該高速緩存控制器設(shè)定成根據(jù)請求的型式,和是否請求為相關(guān)于或修改了以推測方式失效的第一緩存行,而不接收額外的請求。例如,可將該高速緩存控制器設(shè)定成不接受有下列情況的額外請求,這些情況包括來自較高級高速緩存的命中該第一緩存行的填入請求、或?qū)υ摰谝痪彺嫘械奶綔y或狀態(tài)改變請求、或來自選擇該第一緩存行以供取代的該較高級高速緩存的復(fù)制回(copy back)請求??蓪⒃摳咚倬彺婵刂破髟O(shè)定成不接受與該第一緩存行的標(biāo)記的一部分相符之額外請求。
在某些實(shí)施例中,作為推測式失效操作的一部分,可將高速緩存控制器設(shè)定成儲存與第一緩存行相關(guān)聯(lián)的推測式失效操作取代前的狀態(tài)(例如用來選擇供取代的緩存行的狀態(tài)),并以猶如已使該第一緩存行失效的方式,更新該第一緩存行的推測式失效操作取代后的狀態(tài)。如果后來判定該推測式失效操作是錯誤的,則該高速緩存控制器在撤銷該推測式失效操作時(shí),可還原該儲存的推測式失效操作取代前的狀態(tài)。
在另一實(shí)施例中,揭示了一種以推測方式使高速緩存中的緩存行失效的方法。該方法包含下列步驟接受將造成使該高速緩存中的該緩存行失效的請求;啟動用來判定該失效操作是否錯誤的各項(xiàng)檢查;以及以推測方式使該緩存行失效。以推測方式使該緩存行失效的該步驟涉及下列步驟指示該緩存行是失效的;以及在完成這些檢查之前,使該緩存行不會受到后續(xù)的修改。如果這些檢查中的一個(gè)檢查判定該失效操作是錯誤的,則該方法亦包含下列步驟通過再度指示該緩存行是有效的,而撤銷該推測式失效操作。
在另一實(shí)施例中,揭示了一種以推測方式使獨(dú)占式高速緩存中的第一緩存行失效的方法。該方法可包含下列步驟接受來自較高級高速緩存的填入請求;判定該填入請求是否命中該獨(dú)占式高速緩存;啟動用來判定是否錯誤地啟動該填入請求的各項(xiàng)檢查;以及如果該填入請求命中該獨(dú)占式高速緩存,則將該獨(dú)占式高速緩存的該第一緩存行提供給該較高級高速緩存。如果在將該第一緩存行的內(nèi)容提供給該較高級高速緩存時(shí),尚未完成這些檢查,則可以推測方式使該第一緩存行失效。以推測方式使該緩存行失效的步驟可包含下列步驟指示該第一緩存行是失效的;以及在完成這些檢查之前,使該第一緩存行不會受到后續(xù)的修改。
在又一實(shí)施例中,揭示了一種高速緩存子系統(tǒng)。該高速緩存子系統(tǒng)包含高速緩存及高速緩存控制器。該高速緩存控制器設(shè)定成以推測方式使第一緩存行失效。如果檢測到該推測式失效操作是錯誤的,則可將該高速緩存控制器設(shè)定成撤銷該推測式失效操作。該高速緩存子系統(tǒng)亦可包含推測式失效控制器,該推測式失效控制器設(shè)定成在該失效操作變成非推測式之前,使該第一緩存行不會被修改。檢測該推測式失效操作是否錯誤可能需要某一數(shù)目的時(shí)鐘周期,因而在該某一數(shù)目的時(shí)鐘周期之前,該推測方式失效操作可能無法變成非推測方式。
雖然易于對本發(fā)明做出各種修改及替代形式,但是將以附圖舉例的方式示出本發(fā)明的一些特定實(shí)施例,且本文將詳細(xì)說明這些特定實(shí)施例。然而,我們應(yīng)當(dāng)了解,本發(fā)明的這些附圖及詳細(xì)說明的用意并非將本發(fā)明限于所揭示的特定形式,相反地,本發(fā)明將涵蓋在最后申請權(quán)利要求所界定的本發(fā)明精神及范圍內(nèi)的所有修改、等效物、及替代方式。
圖1A是一個(gè)實(shí)施例中的包含式(inclusive)高速緩存之間的關(guān)系的維恩圖(Venn diagram)。
圖1B是一個(gè)實(shí)施例中的獨(dú)占式(exclusive)高速緩存間的關(guān)系的維恩圖(Venn diagram)。
圖2是高速緩存子系統(tǒng)的實(shí)施例的方框圖。
圖3是可配合諸如圖2所示的高速緩存子系統(tǒng)使用的地址沖突檢測硬件的一個(gè)實(shí)施例。
圖4A是在根據(jù)一個(gè)實(shí)施例的獨(dú)占式高速緩存中如何執(zhí)行失效操作的流程圖。
圖4B接續(xù)圖4A所示的流程圖。
圖5是一種以推測方式使高速緩存中的緩存行失效的方法的一個(gè)實(shí)施例,且與該高速緩存是包含式、或獨(dú)占式、或非以上兩種的高速緩存無關(guān)。
圖6是計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例的方框圖。
圖7示出多節(jié)點(diǎn)處理系統(tǒng)的一個(gè)實(shí)施例。
具體實(shí)施例方式
高速緩存子系統(tǒng)計(jì)算機(jī)系統(tǒng)(例如圖6及圖7所示的計(jì)算機(jī)系統(tǒng))通常采用高速緩存子系統(tǒng)。這些高速緩存子系統(tǒng)通常包含與處理器集成的L1高速緩存、及非集成的L2高速緩存。然而,隨著使半導(dǎo)體裝置具有更高集成度的加工技術(shù)的發(fā)展,微處理器設(shè)計(jì)者現(xiàn)在可將第二階(L2)高速緩存包含在芯片中,作為一種進(jìn)一步提升性能的方式。通過集成L2高速緩存,可改善L1與L2高速緩存間的傳輸延遲時(shí)間及傳輸頻寬,這是因?yàn)橥ㄓ嵅辉傩枰?jīng)由接腳。
傳統(tǒng)方式設(shè)計(jì)第一階(L1)高速緩存的目標(biāo)是在不產(chǎn)生額外存取等待時(shí)間的前提下盡量加大L1高速緩存的容量。此種大容量L1高速緩存在傳統(tǒng)上與類似容量的L2高速緩存互補(bǔ),而L2高速緩存的容量通常與L1高速緩存相同,或大L1高速緩存,且L2高速緩存的存取等待時(shí)間通常大于L1高速緩存的存取等待時(shí)間,但小于系統(tǒng)內(nèi)存的等待時(shí)間。
可將L2高速緩存設(shè)計(jì)成包含式、或獨(dú)占式、或非以上兩種的高速緩存。在理想的包含式L2高速緩存中,如圖1A的維恩圖所示,在L1高速緩存中的每一緩存行也在L2高速緩存中。相反地,在理想的獨(dú)占式L2高速緩存中,如圖1B的維恩圖所示,在L1高速緩存中的各緩存行并不在L2高速緩存中。請注意,在某些實(shí)施例中,包含式及獨(dú)占式L2高速緩存對于系統(tǒng)內(nèi)存而言都可以是包含式(如圖1A及1B所示),因而″獨(dú)占式″L2高速緩存可能只是對于L1高速緩存而言是獨(dú)占式。在一個(gè)既不是包含式也不是獨(dú)占式的高速緩存系統(tǒng)中,L2高速緩存中儲存的這些緩存行并不相關(guān)于L1高速緩存中儲存的那些緩存行,因而并不保證該L1高速緩存中的緩存行將存在于或不存在于該L2高速緩存中。
基于這些原理,各種高速緩存都有其優(yōu)點(diǎn)及缺點(diǎn)。通常大部分的L2高速緩存是包含式。在包含式高速緩存中,可減少L1至L2高速緩存的數(shù)據(jù)轉(zhuǎn)移次數(shù)。因?yàn)椴恍枰獙⒁粋€(gè)未修改的L1高速緩存排出緩存行復(fù)制到L2高速緩存,所以可減少數(shù)據(jù)轉(zhuǎn)移的次數(shù)。要排出的緩存行是一個(gè)資料區(qū)塊,而要先將該數(shù)據(jù)區(qū)塊寫回主存儲器,然后才重新使用該數(shù)據(jù)區(qū)塊。例如,一個(gè)填入L1高速緩存操作請求取代現(xiàn)有的緩存行,則該現(xiàn)有的緩存行或要排出的緩存行被排出L1高速緩存,而讓出空間給進(jìn)來的緩存行。在一個(gè)包含式高速緩存中,L1要排出的緩存行的一份拷貝業(yè)已存在于L2高速緩存中。因此,如果該L1要排出的緩存行在L1高速緩存中尚未修改過,則因?yàn)橄嗤木彺嫘袠I(yè)已存在于L2高速緩存,所以無須將該緩存行復(fù)制到L2高速緩存。對于芯片外的L2高速緩存而言,內(nèi)容的包含可能也是相當(dāng)重要,這是因?yàn)樵贚1至L2的復(fù)制操作期間,將因L1高速緩存中的緩存行保證是在L2高速緩存中,而無須執(zhí)行外部L2標(biāo)記查詢。此外,該L2高速緩存可以是該L1高速緩存的總線監(jiān)視過濾器(例如,在使用在線(in-line)L2高速緩存時(shí))。
包含式高速緩存的主要缺點(diǎn)即是其提供了較小的有效高速緩存容量。如圖1A所示,因?yàn)長1高速緩存中的每一緩存行也在L2高速緩存中,所以L1及L2高速緩存的總有效高速緩存容量只是該L2高速緩存的容量。這是L2高速緩存的容量通常大于L1高速緩存的容量的一個(gè)原因。另一個(gè)缺點(diǎn)是因?yàn)樾枰3制浒?,所以高速緩存控制器需要有較復(fù)雜的設(shè)計(jì)。例如,當(dāng)選擇潛在的L2要排出的緩存行時(shí),包含式高速緩存控制器必須回頭探測L1高速緩存,以便確定該L2要排出的緩存行目前并未存在于L1高速緩存。如果潛在的L2要排出的緩存行的確存在于L1高速緩存,則可能需要選擇另一要排出的緩存行,以便保持內(nèi)容的包含性。此外,在某些實(shí)施例中,如果該潛在的L2要排出的緩存行也存在于L1高速緩存,則可使L1高速緩存中該對應(yīng)的緩存行失效(不同于選擇另一個(gè)L2要排出的緩存行),而保持內(nèi)容的包含性。
因?yàn)楦咚倬彺嫱ǔJ堑徒M件密度且高成本的內(nèi)存,所以從成本及芯片內(nèi)部空間的觀點(diǎn)而言,集成L2高速緩存在傳統(tǒng)上是一種不利的設(shè)計(jì)選擇,尤其在L2高速緩存通常是包含式因而在容量上大于L1高速緩存時(shí)更是如此。
如圖1B所示,獨(dú)占式高速緩存與包含式高速緩存相反,可提供等于L1及L2高速緩存總?cè)萘康妮^大的有效高速緩存容量。該較大的有效高速緩存容量可得到較佳的命中率。此外,因?yàn)樵谂懦鯨2欲排出的緩存行時(shí),無須回頭探測L1高速緩存,所以可減少L2高速緩存控制器之復(fù)雜性。
在使用獨(dú)占式高速緩存時(shí),可能會增加L1與L2高速緩存之間數(shù)據(jù)轉(zhuǎn)移的次數(shù)。例如,因?yàn)楦鶕?jù)引用的區(qū)域性原理,不論各L1要排出的緩存行是否己修改,可能都要將這些緩存行復(fù)制到L2高速緩存,而可能增加L1至L2高速緩存的數(shù)據(jù)轉(zhuǎn)移次數(shù)。將L1欲排出的緩存行儲存在L2高速緩存可滿足引用的區(qū)域性原理,這是因?yàn)樽罱玫絃1欲排出的緩存行的機(jī)率大于L2高速緩存中任何其它的緩存行。視L1與L2高速緩存間的通訊鏈路而定,在某些例子中,L1至L2高速緩存的數(shù)據(jù)轉(zhuǎn)移次數(shù)增加這一因素可能使包含式高速緩存成為較佳的選擇。
獨(dú)占式高速緩存亦可用于其它的高速緩沖儲存應(yīng)用。例如,獨(dú)占式高速緩存可用來設(shè)計(jì)多階層的高速緩存子系統(tǒng),以便配合圖形系統(tǒng)或硬盤機(jī)而使用。在這些實(shí)施例中,最好是可使用獨(dú)占式高速緩存來增加該高速緩存子系統(tǒng)的有效容量,而不需要包含式高速緩存所需這么多的額外高速緩存。在某些實(shí)施例中,縱然并未將獨(dú)占式高速緩存集成在與較高級高速緩存相同的基材上,該獨(dú)占式高速緩存可能也是一種符合實(shí)際的設(shè)計(jì)選擇。
圖2示出高速緩存子系統(tǒng)407的實(shí)施例,該高速緩存子系統(tǒng)407設(shè)定成儲存來自系統(tǒng)內(nèi)存425的數(shù)據(jù)及(或)指令緩存行,以便為執(zhí)行核心409所使用。執(zhí)行核心409將地址經(jīng)由地址總線411而提供給高速緩存子系統(tǒng)控制器419,而請求數(shù)據(jù)。該地址可以是虛擬地址。雖然在該例子中,同一高速緩存子系統(tǒng)控制器419控制L1及L2高速緩存,但是可在其它的實(shí)施例中使用獨(dú)立的L1及L2高速緩存控制器。L2高速緩存423可以是獨(dú)占式、包含式、或既非獨(dú)占式也非包含式。
高速緩存子系統(tǒng)控制器419響應(yīng)自執(zhí)行核心409接收到的地址,而可將該地址提供給L1高速緩存417。在某些實(shí)施例中,可以線性地或虛擬地尋址到L1高速緩存417,因而如果自執(zhí)行核心409接收的該地址是虛擬地址,則在將該地址提供給L1高速緩存417之前,可以無須轉(zhuǎn)換該地址。相反地,在某些實(shí)施例中,可實(shí)體地尋址到L2高速緩存423,因而當(dāng)未命中L1高速緩存417時(shí),在將虛擬地址提供給L2高速緩存423之前,必須先轉(zhuǎn)換該虛擬地址。在其它的實(shí)施例中,是以相同的方式(例如,虛擬或?qū)嶓w地)尋址到這兩個(gè)高速緩存。
當(dāng)L1高速緩存填入請求未命中L2高速緩存423時(shí),可向系統(tǒng)內(nèi)存425請求該緩存行,并將該緩存行放入L1高速緩存417(例如,在L2高速緩存423是獨(dú)占式的情況下),或者將該緩存行放入L2及L1高速緩存(例如,在L2高速緩存423是包含式的情況下)。為了將所請求的該緩存行填入L1高速緩存417,可產(chǎn)生L1要排出的緩存行,并將該L1要排出的緩存行復(fù)制回L2高速緩存423(如果L2高速緩存423是獨(dú)占式,則不論L1要排出的緩存行是否修改過,都要執(zhí)行此復(fù)制操作;或者如果L2高速緩存423是包含式,則在L1要排出的緩存行在修改過的情況下,執(zhí)行該復(fù)制操作)。如果L2高速緩存423是獨(dú)占式,則該復(fù)制操作可能需要排出一個(gè)L2緩存行,因而可產(chǎn)生一個(gè)L2要排出的緩存行,而且如果該要排出的緩存行修改過,則將該要排出的緩存行寫回到內(nèi)存425。在L2高速緩存423是獨(dú)占式的實(shí)施例中,L1及L2高速緩存可共享一個(gè)或多個(gè)要排出的緩存行緩沖區(qū)421,其中在將各要排出的緩存行復(fù)制回到獨(dú)占式L2高速緩存423(在這些要排出的緩存行是L1要排出的緩存行的情況下)或系統(tǒng)內(nèi)存425(在這些要排出的緩存行是修正過的L2要排出的緩存行的情況下)時(shí),這些要排出的緩存行緩沖區(qū)421緩沖儲存這些要排出的緩存行。
當(dāng)L1填入請求命中L2高速緩存423時(shí),可將緩存行復(fù)制到L1高速緩存417。如果該L1請求命中L2獨(dú)占式高速緩存423,則由于與保持內(nèi)容獨(dú)有性相關(guān)聯(lián)的數(shù)項(xiàng)理由下,最好是使該命中的緩存行失效(不同于保持該緩存行的有效性)。例如,如果使該緩存行失效,則高速緩存子系統(tǒng)407中只有該緩存行的一份拷貝。因而可大幅簡化高速緩存子系統(tǒng)407的控制邏輯電路,這是因?yàn)樵谌魏翁囟〞r(shí)間無須追蹤該緩存行的哪一份拷貝是較新的。此外,使該緩存行失效時(shí),空出L2高速緩存423中的一個(gè)位置,可實(shí)現(xiàn)由獨(dú)占式高速緩存系統(tǒng)所提供的較大的有效高速緩存容量。然而,在使緩存行失效之前,可執(zhí)行數(shù)項(xiàng)檢查,以便判定是否錯誤地執(zhí)行了導(dǎo)致該失效的操作(例如,未命中L1高速緩存,而要向L2高速緩存產(chǎn)生填入請求)。如果這些檢查顯示錯誤,則可取消該操作,及(或)稍后再重新嘗試該操作。因此,該失效操作只能發(fā)生在這些檢查指示引發(fā)該失效操作的狀況并無錯誤的情況下。
在包含式高速緩存或既不是獨(dú)占式也不是包含式的高速緩存中,也有多種可使緩存行失效的情況。如同獨(dú)占式高速緩存的失效操作,這些失效操作最后要取決于用來決定該失效指令是否錯誤的各項(xiàng)檢查。例如,當(dāng)以非循序方式執(zhí)行各指令時(shí),可能因分支預(yù)測而提取指令。如果該分支預(yù)測證明是錯誤的,則可能需要取消所提取該指令的執(zhí)行,及(或)可能需要撤銷所提取該指令的執(zhí)行效果。在替代實(shí)施例中,在非特權(quán)模式下以非循序方式執(zhí)行的指令可能是特權(quán)指令。如果這些指令中的一個(gè)指令是使緩存行或數(shù)據(jù)區(qū)塊失效但并未實(shí)際自高速緩存清除該緩存行的指令,且該指令使L1高速緩存中的緩存行失效,則可能也需要使包含式L2高速緩存中的該緩存行的拷貝失效。然而,如果某些檢查后來檢測到錯誤預(yù)測的分支或違反特權(quán),則可產(chǎn)生異常狀況(exception),且可能需要撤銷那些產(chǎn)生數(shù)據(jù)項(xiàng)的指令所導(dǎo)致的失效操作。因此,高速緩存中的失效操作可能取決于異常狀況檢查。
檢查的另一個(gè)例子可能涉及檢查計(jì)算機(jī)系統(tǒng)中數(shù)據(jù)的其它版本,以便符合順序上的請求。例如,所請求的數(shù)據(jù)線的修改后的拷貝可能儲存在緩沖區(qū)(例如,較高級高速緩存的寫入緩沖區(qū)或要排出的緩存行緩沖區(qū))中。與較低級高速緩存中儲存的拷貝相比時(shí),可能最近才修改過該修改后的拷貝,因而如果檢測到這份拷貝,則可取消對該較低級高速緩存的填入請求,因而提出請求的裝置可接收到所請求的數(shù)據(jù)的最近修改的拷貝。
可執(zhí)行的其它檢查是別名檢查。別名檢查涉及尋找虛擬尋址式高速緩存可能發(fā)生的問題。虛擬內(nèi)存系統(tǒng)可將實(shí)際存儲頁映射至一個(gè)以上的虛擬地址??蓪⑦@些不同的虛擬地址(亦即別名)緩沖儲存在虛擬尋址式高速緩存中的一個(gè)以上的位置。例如,如果單一實(shí)際存儲頁映射至兩個(gè)或更多個(gè)不同的虛擬地址,而這些虛擬地址又映射至不同的緩存行及不同的虛擬存儲頁,則來自該單一實(shí)際存儲頁的數(shù)據(jù)有可能緩沖儲存在虛擬尋址式高速緩存內(nèi)的多個(gè)位置。因此,即使使用不同的別名來請求某一緩存行時(shí),可能產(chǎn)生命中,但是使用一個(gè)虛擬地址來請求相同的緩存行時(shí),仍可能產(chǎn)生未命中。別名檢查可檢測到表面上的未命中實(shí)際上命中了虛擬尋址式高速緩存中的以別名尋址的緩存行。例如,在一個(gè)實(shí)施例中,虛擬尋址式L1高速緩存可包含獨(dú)立的指令高速緩存及數(shù)據(jù)高速緩存??蓪⒃揕1高速緩存設(shè)定成相同數(shù)據(jù)的一份拷貝可同時(shí)存放在指令高速緩存及數(shù)據(jù)高速緩存??赡懿⑽磳⒃揕1高速緩存控制器設(shè)定成在選擇該數(shù)據(jù)高速緩存中的L1要排出的緩存行時(shí),檢查一份以別名尋址的拷貝。因此,即使L1要排出的緩存行的以別名尋址的拷貝可能仍然存在于該指令高速緩存中(或者存在于該數(shù)據(jù)高速緩存中,這是在自該指令高速緩存選出該要排出的緩存行的情況下),仍然可能將該要排出的緩存行復(fù)制回到獨(dú)占式L2高速緩存。因此,針對該數(shù)據(jù)的一個(gè)稍后的填入請求可能未命中該L1高速緩存(在完成該別名檢查之前),但會命中該L2高速緩存。因?yàn)樵搫e名檢查應(yīng)檢測該L1高速緩存中以別名尋址的拷貝,所以不應(yīng)在該L2高速緩存中使該緩存行失效。因此,在該實(shí)施例中,獨(dú)占式高速緩存中的失效操作可能要取決于該別名檢查的結(jié)果。
檢查的又一個(gè)例子可根據(jù)緩存行的狀態(tài)而判定是否可存取該緩存行。許多系統(tǒng)追蹤每一緩存行的MESI或MOESI(Modified,Owned,Exclusive,Shared,Invalid;經(jīng)過修改的、擁有的、獨(dú)有的、共有的、失效的)狀態(tài)。視緩存行所處的狀態(tài)而定,可能允許或可能不允許對該緩存行執(zhí)行某些操作。例如,如果來自L1指令高速緩存的填入請求命中了L2高速緩存中一個(gè)修改過的緩存行,則在將該修改過的L2緩存行寫入內(nèi)存之前,可能不適合服務(wù)該填入請求(例如,如果該指令高速緩存并未儲存高速緩存一致性狀態(tài),則可使用上述的限制)。因此,某些檢查可能涉及在知道緩存行的目前狀態(tài)的情況下,判定一特定的存取是否適當(dāng)。
因此,在獨(dú)占式高速緩存或包含式高速緩存中,可能因另一高速緩存操作(或部分地因另一高速緩存操作)而使緩存行失效。同時(shí),可能要耗用較長的時(shí)間來完成的各種檢查的結(jié)果可能撤銷這些失效操作。如果將失效操作延遲到這些檢查完成之后,則高速緩存可能將相當(dāng)長的時(shí)間耗用在等候這些檢查。如果高速緩存控制器在使緩存行失效之前,要等候這些檢查的完成,則該高速緩存控制器可能無法執(zhí)行其它的操作,因而該延遲對高速緩存的性能可能有不利的影響。反之,如果該高速緩存控制器在這些檢查完成之前即執(zhí)行失效操作,則在后來證實(shí)該失效操作是錯誤的情況下,可能無法還原己失效的該緩存行。因此,雖然執(zhí)行這些檢查可提升高速緩存子系統(tǒng)的正確性,但是該提升的正確性的代價(jià)是犧牲了性能。
高速緩存控制器為了提升諸如圖2所示的高速緩存子系統(tǒng)的性能,可將高速緩存控制器設(shè)定成響應(yīng)指令或請求,而以推測方式使緩存行失效,而不必顧及對該請求的各項(xiàng)檢查是否已完成。例如,為了盡量縮短較低級獨(dú)占式高速緩存的存取等待時(shí)間,當(dāng)在較高級高速緩存中檢測到未命中時(shí),可立即將填入請求(如果該填入請求命中了該獨(dú)占式高速緩存,則該填入請求終將使該獨(dú)占式高速緩存中的緩存行失效)傳送到該較低級獨(dú)占式高速緩存控制器。此種方式可能涉及在執(zhí)行諸如別名檢查及順序請求檢查等的各種檢查之前,先將請求傳送到該較低級獨(dú)占式高速緩存控制器??赡芤挠脭?shù)個(gè)時(shí)鐘周期才能完成這些檢查,但是這些檢查很少會不通過的。因此,在這些檢查完成之前即先以推測方式使緩存行失效,通??僧a(chǎn)生正確的結(jié)果,同時(shí)又避免了任何不必要的延遲。除了可提供較佳的效率之外,將高速緩存控制器設(shè)定成執(zhí)行推測式失效操作可產(chǎn)生的另一效益即是較佳的資源使用。例如,獨(dú)占式高速緩存控制器可將標(biāo)記查詢及推測式失效操作實(shí)施為單一命令,而無須分別執(zhí)行每一命令。
在發(fā)生這些檢查實(shí)際上通不過的少見情況時(shí),可在更正了使這些檢查通不過的問題之后,取消、延遲、及(或)重新嘗試引發(fā)該失效操作的指令或請求。例如,如果來自指令高速緩存的填入請求命中一個(gè)獨(dú)占式L2高速緩存,則在該L2高速緩存中被命中的緩存行是處于經(jīng)過修改的狀態(tài)的情況下,可取消該請求。然而,如果是以推測方式使命中的緩存行失效,則在完成這些檢查時(shí),可能無法撤銷該失效操作。為了避免此種狀況,亦可將設(shè)定執(zhí)行推測式失效操作的一個(gè)高速緩存控制器設(shè)定成提供還原方法,該還原方法在稍后未通過這些檢查時(shí)可還原在推測方式下失效的該緩存行。
在一個(gè)實(shí)施例中,高速緩存控制器可在這些檢查完成之前保護(hù)在推測方式下失效的緩存行,而提供此種還原機(jī)制。因此,以推測方式使該緩存行失效時(shí),可讓該高速緩存控制器移到一些不會修改在推測方式下失效的該緩存行的其它操作。例如,在某些實(shí)施例中,在以推測方式使緩存行失效時(shí)間與這些檢查完成時(shí)間之間,可能向高速緩存控制器提出數(shù)項(xiàng)請求。為了避免這些后續(xù)指令或請求與該推測式失效操作之間(在后來要撤銷該推測式失效操作的情況中)的沖突,可將該高速緩存控制器設(shè)定成不接受或造成潛在沖突的任何請求??蓪⒃摳咚倬彺婵刂破髟O(shè)定成過濾掉與在推測方式下失效的該緩存行有關(guān)的各請求,即便是這些請求并未實(shí)際修改該緩存行也要予過濾掉。例如,如果最終要撤銷該推測式失效操作(例如,因?yàn)槠渲幸豁?xiàng)這些檢查顯示錯誤),則在這些檢查完成之前不接受這些無修改的請求時(shí),可以不會在假設(shè)該緩存行是失效的情況下錯誤地處理了請求。因此,在一個(gè)實(shí)施例中,可將該高速緩存控制器設(shè)定成不接收其標(biāo)記符合在推測方式下失效的該緩存行的標(biāo)記的一部分的任何請求或指令。
在一個(gè)略微復(fù)雜的實(shí)施例中,可將高速緩存控制器設(shè)定成不接受基于該類請求或指令而提出的請求、及(或)該指令的潛在效果。例如,可將該高速緩存控制器設(shè)定成過濾掉符合在推測方式下失效的該緩存行的標(biāo)記的填入請求、探測請求、或狀態(tài)改變請求。此外,可將該高速緩存控制器設(shè)定成根據(jù)標(biāo)記符合、及在推測方式下失效的該緩存行的取代狀態(tài),而不接受將會取代該緩存行的復(fù)制回請求或填入請求。例如,在假設(shè)使用了LRU取代策略的情況下,如果復(fù)制回操作符合在推測方式下失效的該緩存行的標(biāo)記,且該緩存行是一組中最近最少使用的緩存行,則復(fù)制回操作通常會取代該緩存行。為了保護(hù)在推測方式下失效的該緩存行,可將該高速緩存控制器設(shè)定成不接受復(fù)制回操作。在替代實(shí)施例中,可將該高速緩存控制器設(shè)定成接受該復(fù)制回操作,但取代另一緩存行(不理會現(xiàn)有的取代狀態(tài)),而取代在推測方式下失效的該緩存行。如果在推測方式下失效的該緩存行的取代狀態(tài)指示該復(fù)制回操作或填入請求將不會覆寫在推測方式下失效的該緩存行(例如,采用LRU取代架構(gòu),且在推測方式下失效的該緩存行不是該LRU緩存行),可將該高速緩存控制器設(shè)定成接受該請求。
在一個(gè)實(shí)施例中,如圖3中所示,高速緩存控制器可包含地址沖突檢測硬件(500)??蓪⒃摰刂窙_突檢測硬件設(shè)定成檢測造成以推測方式使緩存行失效的請求與自以使該緩存行失效時(shí)間至完成對推測式失效操作的這些檢查時(shí)間之間所接收的任何后續(xù)請求或指令之間之任何互動。
地址沖突檢測硬件500可包含地址寄存器504,該地址寄存器504設(shè)定成儲存對應(yīng)于在推測方式下失效的該緩存行的地址之全部或部分。例如,地址寄存器504可儲存在推測方式下失效的緩存行的標(biāo)記。為了提供以推測方式使多個(gè)緩存行失效之能力,可在儲存單元(502)中提供數(shù)個(gè)這些緩存器504。比較器501可將待處理的請求的地址與地址寄存器504及(或)儲存單元502中之一個(gè)或多個(gè)地址比較。如果這些地址并不相符,則比較器501可確認(rèn)激活信號。高速緩存控制器可根據(jù)激活信號的狀態(tài),而接受或不接受該待處理的請求。例如,如果該待處理的請求的地址符合與在推測方式下失效的該緩存行對應(yīng)的地址(或地址的一部分),則比較器501可解除確認(rèn)該激活信號,而使該高速緩存控制器不接受該待處理的請求。
在某些實(shí)施例中,推測式失效控制器506可控制地址沖突檢測硬件500??蓪⑼茰y式失效控制器506設(shè)定成負(fù)載于儲存單元502中之其中一個(gè)緩存器504,該儲存單元502具有在推測方式下失效的緩存行的地址或標(biāo)記的一部分??蓪⑼茰y式失效控制器506設(shè)定成在完成某些檢查可能耗用的最大數(shù)目的時(shí)鐘周期中,保護(hù)這些一個(gè)或多個(gè)在推測方式下失效的緩存行。例如,可將推測式失效控制器506設(shè)定成在完成別名檢查可能耗用的數(shù)目的時(shí)鐘周期中,保護(hù)這些一個(gè)或多個(gè)在推測方式下失效的緩存行。在另一個(gè)實(shí)施例中,在完成異常狀況檢查可能耗用的數(shù)目的時(shí)鐘周期中,推測式失效控制器506可保護(hù)這些一個(gè)或多個(gè)在推測方式下失效的緩存行。
在一個(gè)實(shí)施例中,推測式失效控制器506可將在推測方式下失效的該緩存行的標(biāo)記或地址的一部分加載緩存器504,并使比較器501將該緩存器中之值與進(jìn)來的請求比較,而在某一數(shù)目的時(shí)鐘周期中保護(hù)在推測方式下失效的該緩存行。在該指定數(shù)目的時(shí)鐘周期之后,推測式失效控制器506可清除緩存器504,或指示比較器501不要再將緩存器504中之值與進(jìn)來的請求比較。亦可將該推測式失效控制器設(shè)定成如果并無任何要保護(hù)的在推測方式下失效的緩存行,則確認(rèn)該激活信號,而避開該比較器501。
在一個(gè)實(shí)施例中,在這些檢查完成之前,地址沖突檢測硬件500可讓高速緩存控制器在只要不與在推測方式下失效的該緩存行相關(guān)的情況下,接受這些額外的填入請求。同樣地,只要額外的探測請求或狀態(tài)改變請求并未涉及在推測方式下失效的該緩存行,則可接受這些請求;而且只要L1至L2復(fù)制回請求并未將在推測方式下失效的該緩存行選擇為取代對象,則可接受該請求。因此,額外的比較可檢測到某些類型的指令,且可只將這些指令與儲存單元502的地址寄存器504中之值比較。
為了檢測L1至L2復(fù)制回是否選擇了在推測方式下失效的緩存行,地址沖突檢測硬件可包含額外的邏輯電路,用以檢測哪一緩存行將會選擇為取代的對象。例如,在采用LRU取代策略的n路組關(guān)聯(lián)高速緩存中,復(fù)制回操作通常將取代一組中最近最少使用的緩存行。然而,如果在該適當(dāng)組中最近最少使用的該緩存行是在推測方式下失效的緩存行,則不應(yīng)接受該復(fù)制回操作。在替代實(shí)施例中,并不是不接受該復(fù)制回操作,而是可接受該復(fù)制回操作,但此時(shí)并不取代在推測方式下失效的該緩存行,而是該復(fù)制回操作可取代該組中之另一緩存行,不必顧及在推測方式下失效的該緩存行的LRU狀態(tài)。因此,地址沖突檢測硬件500可包含邏輯電路,用以根據(jù)包含該緩存行的該組或該緩存行的取代狀態(tài)(例如,LRU狀態(tài)或FIFO狀態(tài)等),而判定復(fù)制回操作是否將取代該緩存行。如果復(fù)制回操作將取代在推測方式下失效的該緩存行,則地址沖突檢測硬件500可解除確認(rèn)該激活信號,或使該復(fù)制回操作取代另一緩存行。
因此,請?jiān)賲㈤唸D2,并不等候數(shù)個(gè)時(shí)鐘周期對于這些檢查的完成,而是可將高速緩存控制器419設(shè)定成如果與第一請求或指令相關(guān)聯(lián)的各項(xiàng)檢查尚未完成,則響應(yīng)該第一請求或指令,而以推測方式使緩存行失效。該高速緩存控制器可將該緩存行標(biāo)示為失效(例如將有效位自有效切換至失效),而以推測方式使該緩存行失效。在一個(gè)較佳實(shí)施例中,該高速緩存控制器可指示該緩存行是失效的而不會影響到該緩存行中儲存的數(shù)據(jù),因而如果任何這些檢查未通過,則可更容易地撤銷使該緩存行失效的操作。高速緩存控制器419亦可包含諸如地址沖突檢測硬件500等的保護(hù)機(jī)制,用以保護(hù)在推測方式下失效的緩存行。因此,高速緩存控制器419可在以推測方式使緩存行失效的同時(shí),啟動保護(hù)機(jī)制。例如,可將對應(yīng)于在推測方式下失效的該緩存行的地址的全部或部分加載地址寄存器504,而啟動圖3中所示的保護(hù)機(jī)制。如果并未通過對應(yīng)于該失效操作的各項(xiàng)檢查,則高速緩存控制器419可通過指示該緩存行再度是有效的(例如,將有效位自失效切換至有效),而撤銷該推測式失效操作。亦可將高速緩存控制器419設(shè)定成在完成這些檢查之后,關(guān)閉該保護(hù)機(jī)制。
如前文所述,在許多實(shí)施例中,高速緩存控制器419可利用某些類型的取代架構(gòu)來取代高速緩存中的各緩存行。例如,該高速緩存控制器可采用LRU或FIFO取代架構(gòu)。為了實(shí)施此種架構(gòu),該高速緩存控制器可儲存每一緩存行或一群緩存行的取代狀態(tài)信息。在實(shí)施LRU取代架構(gòu)的一個(gè)實(shí)施例中,該取代狀態(tài)可指示該高速緩存中或高速緩存的一部分(例如一組關(guān)聯(lián)高速緩存中之一組)中的每一緩存行的相對使用狀態(tài)。此外,在實(shí)施FIFO取代架構(gòu)的一個(gè)實(shí)施例中,該取代狀態(tài)可指示相對于該高速緩存或其一部分(例如一組)中的其它緩存行,每一緩存行己存放在該高速緩存或其一部分中有多久。
當(dāng)以推測方式使緩存行失效時(shí),即使該推測式失效是非推測式失效,亦更新對應(yīng)于該高速緩存或該高速緩存的一部分的取代狀態(tài)。然而,如果后來取消了該推測式失效操作,則更新后的取代狀態(tài)信息可能尚未反映該緩存行的適當(dāng)取代狀態(tài)。為了補(bǔ)償,可將高速緩存控制器419設(shè)定成當(dāng)以推測方式使緩存行失效時(shí),在更新該取代狀態(tài)以反映該失效操作之前,先儲存先前存在的取代狀態(tài)。如果后來要撤銷該推測式失效操作,則可將高速緩存控制器419設(shè)定成還原所儲存的該取代狀態(tài)。因此,在某些實(shí)施例中,可將高速緩存控制器419設(shè)定成在執(zhí)行推測式失效操作時(shí),修改并儲存該取代狀態(tài)。
現(xiàn)在請參閱圖4A及4B,圖中示出在獨(dú)占式高速緩存中執(zhí)行推測式失效操作的方法的一個(gè)實(shí)施例。請注意,雖然在所示實(shí)施例中,是按照某一順序安排各功能方塊,但是該安排只是舉例,并不表示該方法需要任何特定的時(shí)間順序,這是因?yàn)槠渌膶?shí)施例可使用不同的功能方框來安排。在步驟601中,該獨(dú)占式高速緩存控制器收到填入請求。在某些實(shí)施例中,該獨(dú)占式高速緩存可以是L2高速緩存,且該獨(dú)占式高速緩存控制器可實(shí)際控制L1及L2高速緩存。如步驟603所示,在該獨(dú)占式高速緩存控制器接受該請求的前或之后的某一時(shí)點(diǎn),可針對因該請求而產(chǎn)生的未命中請求的該高速緩存的操作及(或)命中該獨(dú)占式高速緩存的操作,而開始各項(xiàng)檢查。
如步驟605所示,如果在步驟601中接受的填入請求命中了獨(dú)占式高速緩存,則該獨(dú)占式高速緩存可將所請求緩存行的數(shù)據(jù)提供給提出請求的高速緩存。為了便于說明,后文中將把所請求的緩存行稱為″LineN″。如步驟607所示,為了保持獨(dú)占性,該獨(dú)占式高速緩存控制器可使LineN失效。然而,可能在步驟603中開始的這些檢查完成之前,就發(fā)生該失效操作,因而該高速緩存控制器可以推測方式執(zhí)行該失效操作。為了在未通過這些檢查的情況下撤銷該失效操作,在步驟607中,如果該失效操作會影響到取代狀態(tài)信息,則該高速緩存控制器亦可儲存對應(yīng)于LineN的先前的取代狀態(tài)信息(亦即,用來決定將首先取代一組或高速緩存中的哪一緩存行的信息,例如LRU信息或FIFO信息),然后更新該取代狀態(tài)信息,以便反映該失效操作。
推測式失效操作的額外組件可能包含獨(dú)占式高速緩存控制器,用來啟動保護(hù)LineN的保護(hù)機(jī)制。因此,當(dāng)已使LineN失效時(shí),該獨(dú)占式高速緩存控制器即空出而可接受其它的請求,而在這些檢查完成之前,該獨(dú)占式高速緩存控制器可延遲或拒絕接受有能影響到或相關(guān)于LineN的請求。因此,在步驟611中,如果向該獨(dú)占式高速緩存提出一個(gè)新的請求,且如步驟613所示,該請求有可能影響到或相關(guān)于LineN,則該高速緩存控制器可不接受該請求。例如,該高速緩存控制器可以不接受一個(gè)會覆寫LineN的請求。然而,如果該請求并不與LineN相關(guān),則如步驟617所示,該獨(dú)占式高速緩存可接受該請求,并因而處理該請求。在某些實(shí)施例中,該獨(dú)占式高速緩存控制器可檢查請求的標(biāo)記是否符合LineN的標(biāo)記,而判定該請求是否有可能影響到LineN。在一個(gè)實(shí)施例中,當(dāng)提出復(fù)制回請求時(shí),該獨(dú)占式高速緩存控制器亦可包含邏輯電路,用以在知道現(xiàn)行取代狀態(tài)的情況下,判定該復(fù)制回請求是否將取代LineN。如果將取代LineN,則該獨(dú)占式高速緩存控制器可以不接受該復(fù)制回請求,或者可接受該復(fù)制回請求,但是強(qiáng)制該復(fù)制回請求取代另一緩存行,而不要取代LineN。
如果在步驟603開始的檢查并未通過,則獨(dú)占式高速緩存控制器可在步驟623中利用還原機(jī)制來撤銷該失效操作。例如,該獨(dú)占式高速緩存控制器可將該緩存行再度標(biāo)示為有效(例如,可將有效位自失效切換至有效),并還原對應(yīng)于LineN的失效操作前的取代狀態(tài)信息。如果相反地在步驟603開始的這些檢查通過了,則該獨(dú)占式高速緩存控制器可停止過濾有可能影響到在推測方式下失效的LineN的請求。一旦通過了這些檢查之后,即可將該失效操作視為非推測式失效操作,而且如果在步驟607中儲存了取代狀態(tài)信息,則一旦在這些檢查完成之后就可不必再維護(hù)所儲存的該信息。
在某些實(shí)施例中,在高速緩存控制器完成步驟601中接受的請求的前,可能完成了在步驟603中開始的某些檢查,而且如果任何一項(xiàng)這些檢查沒有通過,則可在以推測方式使緩存行失效之前,即取消該請求。在此種情況中,該高速緩存控制器可以不以推測方式使該緩存行失效(與步驟607所示的執(zhí)行該推測式失效操作的情況不同)。
如果在步驟601接受的填入請求未命中獨(dú)占式高速緩存,則如步驟609所示,提出請求的高速緩存可將填入請求傳送到較低級高速緩存或系統(tǒng)內(nèi)存(如果提出請求的高速緩存尚未做出此動作)。在許多實(shí)施例中,提出請求的高速緩存可在將填入請求傳送到該獨(dú)占式高速緩存的同時(shí),也將填入請求傳送到系統(tǒng)內(nèi)存,以便在該填入請求未命中該獨(dú)占式高速緩存的情況中,可減量縮短系統(tǒng)內(nèi)存的存取等待時(shí)間。在傳送了該填入請求之后,該獨(dú)占式高速緩存可繼續(xù)接收及響應(yīng)其它的請求。
現(xiàn)在請參閱圖5,圖中示出一種在高速緩存中執(zhí)行推測式失效操作的方法的實(shí)施例,且其與該高速緩存是獨(dú)占式、或包含式、或既不是獨(dú)占式也不是包含式的高速緩存無關(guān)。在步驟701中,高速緩存控制器可接受指令或請求。例如,接受的指令可以是填入請求、復(fù)制回請求、探測請求、狀態(tài)改變請求或失效操作。為了要滿足該請求,最后可能會請求使該接受的高速緩存中的緩存行失效。然而,如步驟703所示,可對該指令或請求的來源(例如,未命中較高級高速緩存)或?qū)е略撌Р僮鞯氖录?例如,命中獨(dú)占式高速緩存)執(zhí)行某些檢查,而且如果沒有通過這些檢查,則可取消該請求及(或)失效操作。因?yàn)榭赡芤挠脭?shù)個(gè)時(shí)鐘周期才能完成這些檢查,所以該高速緩存控制器可以推測方式使該緩存行失效,而使該高速緩存控制器在這些檢查正在進(jìn)行時(shí)可繼續(xù)接受新的請求。因此,在步驟707中,該高速緩存控制器可切換該緩存行的有效位,而以推測方式使該緩存行失效,而且如果該失效操作影響到對應(yīng)于失效的該緩存行的取代狀態(tài)信息,則儲存先前的取代狀態(tài)信息,并更新該取代狀態(tài)信息,以便反映該失效操作。
高速緩存控制器可在步驟703中開始的這些檢查完成之前,不接受可能影響到或相關(guān)于在推測方式下失效的緩存行的請求,而保護(hù)在推測方式下失效的該緩存行。因此,如步驟719所示,如果提出了一個(gè)可能與失效的該緩存行有關(guān)的新的請求,且尚未完成這些檢查,則該高速緩存控制器可不接受該請求。在步驟717中,該高速緩存控制器可接受一個(gè)可能不與在推測方式下失效的該緩存行有關(guān)的請求。如果通過了這些檢查,則該高速緩存控制器可停止保護(hù)在推測方式下失效的該緩存行,這是因?yàn)樵撌Р僮鞑辉偈峭茰y式的。然而,如果并未通過這些檢查,則如步驟723所示,該高速緩存控制器可切換失效的該緩存行之有效位,以便指示該緩存行是有效的,而且如果先前儲存在取代狀態(tài)信息,則還原所儲存的取代狀態(tài)信息,而撤銷該失效操作。
在某些實(shí)施例中,如果在高速緩存控制器完成步驟701中接受的該請求的前,即未通過任何這些檢查,則可在以推測方式使緩存行失效之前,即取消該請求。在此種情況中,該高速緩存控制器可以不以推測方式使該緩存行失效(與步驟707所示的執(zhí)行該推測式失效操作的情況不同)。
計(jì)算機(jī)系統(tǒng)圖6標(biāo)出計(jì)算機(jī)系統(tǒng)200的一個(gè)實(shí)施例的方框圖,該計(jì)算機(jī)系統(tǒng)200包含處理器10,處理器10系經(jīng)由總線橋接器202而連接到各種系統(tǒng)組件。計(jì)算機(jī)系統(tǒng)的其它的實(shí)施例也是可行的,且是可考慮的。在所示的該系統(tǒng)中,主存儲器204系經(jīng)由內(nèi)存總線206而連接到總線橋接器202,且圖形控制器208系經(jīng)由AGP總線210而連接到總線橋接器202。多個(gè)PCI裝置212A-212B經(jīng)由PCI總線214而連接到總線橋接器202。亦可設(shè)有輔助總線橋接器216,以便經(jīng)由EISA/ISA總線220而將電氣接口提供給一個(gè)或多個(gè)EISA或ISA裝置218。在該例子中,處理器10系經(jīng)由CPU總線224而連接到總線橋接器202,且處理器10連接到可選用的L2高速緩存228。在某些實(shí)施例中,處理器10可包含集成式L1高速緩存(圖中未示出)。
總線橋接器202在處理器10、主存儲器204、圖形控制器208、與連接到PCI總線214的各裝置之間提供了接口。當(dāng)自連接到總線橋接器202的其中一個(gè)裝置接收到操作時(shí),總線橋接器202識別該操作的目標(biāo)(例如特定的裝置,或者在PCI總線214的情況中為PCI總線214上的目標(biāo)裝置)??偩€橋接器202將該操作繞送到該目標(biāo)裝置。總線橋接器202通常將操作從由來源裝置或總線所用的協(xié)議轉(zhuǎn)換為由目標(biāo)裝置或總線所用的協(xié)議。
輔助總線橋接器216除了將接口提供給PCI總線214所用的ISA/EISA總線之外,亦可設(shè)有額外的功能。計(jì)算機(jī)系統(tǒng)200內(nèi)亦可包含在輔助總線橋接器216之外或與輔助總線橋接器216集成的輸入/輸出控制器(圖中未示出),用以提供對鍵盤及鼠標(biāo)222的操作支持,并提供各種序列及并行端口。在其它的實(shí)施例,亦可在處理器10與總線橋接器202之間將外部高速緩存單元(圖中未示出)連接到CPU總線224。在替代實(shí)施例中,可將該外部高速緩存連接到總線橋接器202,并可將該外部高速緩存的高速緩存控制邏輯電路集成到總線橋接器202。又在處理器10的背部組態(tài)中示出L2高速緩存228。請注意,L2高速緩存228可與處理器10分離,可連同處理器10而集成到插槽(例如槽1或槽A)中,甚至可將L2高速緩存228連同處理器10而集成到半導(dǎo)體基材中。
主存儲器204是一種用來儲存應(yīng)用程序且處理器10主要用來執(zhí)行的內(nèi)存。適當(dāng)?shù)闹鞔鎯ζ?04包含動態(tài)隨機(jī)存取內(nèi)存(Dynamic RandomAccess Memory;簡稱DRAM)。例如,多個(gè)庫的同步DRAM(Synchronous DRAM;簡稱SDRAM)或Rambus DRAM(RDRAM)是適用的。
PCI裝置212A-212B用來表示各種外圍裝置,例如網(wǎng)絡(luò)適配卡、視頻加速器、聲卡、硬盤或軟驅(qū)或磁盤驅(qū)動器控制器、小型計(jì)算機(jī)系統(tǒng)接口(Small Computer System Interface;簡稱SCSI)配接器、及電話卡。同樣地,ISA裝置218用來表示各種外圍裝置,例如調(diào)制解調(diào)器、聲卡、以及諸如GPIB或?qū)I(yè)總線適配卡等的各種數(shù)據(jù)采集卡。
設(shè)有圖形控制器208,用以控制顯示器226上的文字及影像的表現(xiàn)處理。圖形控制器208可采用本領(lǐng)域已知的典型圖形加速器,以便呈現(xiàn)可有效地輸入及輸出主存儲器204的三維數(shù)據(jù)結(jié)構(gòu)。圖形控制器208可因而是AGP總線210的主控裝置,其方式為圖形控制器208可請求及接收對總線橋接器202內(nèi)的目標(biāo)接口的存取,因而可獲得存取主存儲器204。專用的圖形總線可迅速地從主存儲器204提取數(shù)據(jù)。對于某些操作而言,圖形控制器208可進(jìn)一步設(shè)定成在AGP總線210上產(chǎn)生PCI協(xié)議處理??偩€橋接器202的AGP接口因而可包含用來支持AGP協(xié)議處理以及PCI協(xié)議目標(biāo)及起始器處理的功能。顯示器226是可呈現(xiàn)影像及文字之任何電子顯示器。一個(gè)適用的顯示器226包含陰極射線管(Cathode Ray Tube;簡稱CRT)及液晶顯示器(LiquidCrystal Display;簡稱LCD)等。
請注意,雖然前文中以AGP、PCI、以及ISA或EISA總線用來作為例子,但是可視需要而以任何總線架構(gòu)替代。又請注意,計(jì)算機(jī)系統(tǒng)200可以是包含額外的處理器(例如圖中示為計(jì)算機(jī)系統(tǒng)200的一選用組件的處理器10a)的多CPU計(jì)算機(jī)系統(tǒng)。處理器10a可類似于處理器10。更具體而言,處理器10a可以與處理器10相同??山?jīng)由獨(dú)立的總線(如圖6所示)而將處理器10a連接到總線橋接器202,或者處理器10a可與處理器10共享CPU總線224。此外,可將處理器10a連接到與L2高速緩存228類似選用的L2高速緩存228a。
多節(jié)點(diǎn)處理系統(tǒng)現(xiàn)在請參閱圖7,圖中示出計(jì)算機(jī)系統(tǒng)300的另一實(shí)施例。其它的實(shí)施例也是可行的,且是可考慮的。在圖7所示的實(shí)施例中,計(jì)算機(jī)系統(tǒng)300包含數(shù)個(gè)處理節(jié)點(diǎn)312A、312B、312C、及312D。每一處理節(jié)點(diǎn)312A-312D是經(jīng)由各自處理節(jié)點(diǎn)內(nèi)包含的內(nèi)存控制器316A-316D而連接到各自的內(nèi)存314A-314D。此外,各處理節(jié)點(diǎn)312A-312D包含用來在各個(gè)處理節(jié)點(diǎn)312A-312D之間通訊的接口邏輯電路。例如,處理節(jié)點(diǎn)312A包含用來與處理節(jié)點(diǎn)312B通訊的接口邏輯電路318A、用來與處理節(jié)點(diǎn)312C通訊的接口邏輯電路318B、及用來與另一處理節(jié)點(diǎn)(圖中未示出)通訊的第三接口邏輯電路318C。同樣地,處理節(jié)點(diǎn)312B包含接口邏輯電路(18D、318E、及318F;處理節(jié)點(diǎn)312C包含接口邏輯電路318G、318H、及318I;以及處理節(jié)點(diǎn)312D包含接口邏輯電路318J、318K、及318L。連接處理節(jié)點(diǎn)312D,而經(jīng)由接口邏輯電路318L與多個(gè)輸入/輸出裝置(例如在鏈環(huán)中的裝置320A-320B)通訊。其它的處理節(jié)點(diǎn)可以以一種類似的方式與其它的I/O裝置通訊。
處理節(jié)點(diǎn)312A-312D實(shí)施用于處理節(jié)點(diǎn)間通訊的數(shù)據(jù)包式鏈路。在本實(shí)施例中,是將該鏈路實(shí)施為若干組單向線路(例如,線路324A是用來將數(shù)據(jù)包自處理節(jié)點(diǎn)312A傳送到處理節(jié)點(diǎn)312B,且線路324B是用來將數(shù)據(jù)包自處理節(jié)點(diǎn)312B傳送到處理節(jié)點(diǎn)312A)。如圖7所示,其它組的線路324C-324H是用來在其它的處理節(jié)點(diǎn)之間傳送數(shù)據(jù)包。一般而言,每一組線路324可包含一條或多條數(shù)據(jù)線、對應(yīng)于這些數(shù)據(jù)線的一條或多條時(shí)鐘線、以及用來指示所傳送的數(shù)據(jù)包類型的一條或多條控制線??稍诟咚倬彺嬉恢碌姆绞较虏僮髟撴溌罚员阍诟魈幚砉?jié)點(diǎn)之間通訊;或者可在無一致性的方式下操作該鏈路,以便在處理節(jié)點(diǎn)與I/O裝置之間通訊(或總線橋接器至諸如PCI總線或ISA總線等的傳統(tǒng)結(jié)構(gòu)的I/O總線之通訊)。此外,可利用如圖所示的各I/O裝置間之鏈環(huán)結(jié)構(gòu)而以非一致性操作該鏈路。請注意,要自某一個(gè)處理節(jié)點(diǎn)傳送到另一處理節(jié)點(diǎn)的數(shù)據(jù)包可通過一個(gè)或多個(gè)中間節(jié)點(diǎn)。例如,如圖7所示,由處理節(jié)點(diǎn)312A傳送到處理節(jié)點(diǎn)312D的數(shù)據(jù)包可通過處理節(jié)點(diǎn)312B或處理節(jié)點(diǎn)312C??墒褂萌魏芜m當(dāng)?shù)穆酚伤惴?。?jì)算機(jī)系統(tǒng)300的其它實(shí)施例可包含比圖7所示的較多或較少的處理節(jié)點(diǎn)。
一般而言,可在各節(jié)點(diǎn)之間的線路324上以一個(gè)或多個(gè)位時(shí)間(bittimes)的方式傳送這些數(shù)據(jù)包。位時(shí)間可以是對應(yīng)的時(shí)鐘線的時(shí)鐘信號的上升邊緣或下降邊緣。這些數(shù)據(jù)包可包含用來啟動交易的命令數(shù)據(jù)包、用來保持高速緩存一致性的探查數(shù)據(jù)包、及回應(yīng)探查及命令的回應(yīng)數(shù)據(jù)包。
處理節(jié)點(diǎn)312A-312D除了包含內(nèi)存控制器及接口邏輯電路之外,還可包含一個(gè)或多個(gè)處理器。廣義而言,處理節(jié)點(diǎn)包含至少一個(gè)處理器,且可視需要而選擇包含內(nèi)存控制器,用以與內(nèi)存及其它的邏輯電路通訊。更具體而言,每一處理節(jié)點(diǎn)312A-312D可包含一個(gè)或多個(gè)相同的處理器10。外部接口單元可包含該節(jié)點(diǎn)內(nèi)的接口邏輯電路318、及內(nèi)存控制器316。
內(nèi)存314A-314D可包含任何適用的內(nèi)存裝置。例如,內(nèi)存314A-314D可包含一個(gè)或多個(gè)RAMBUS DRAM(RDRAM)、同步DRAM(SDRAM)、靜態(tài)RAM等。將計(jì)算機(jī)系統(tǒng)300的地址空間分配到各內(nèi)存314A-314D。每一處理節(jié)點(diǎn)312A-312D可包含用來決定哪些地址映射到哪些內(nèi)存314A-314D以及應(yīng)將對一特定地址的內(nèi)存請求繞送到哪一處理節(jié)點(diǎn)312A-312D的內(nèi)存映射表。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)300內(nèi)的地址的一致性點(diǎn)是連接到用來儲存對應(yīng)于該地址的字節(jié)的內(nèi)存的內(nèi)存控制器316A-316D。換言之,內(nèi)存控制器316A-316D負(fù)責(zé)確保以一種高速緩存一致性的方式進(jìn)行對應(yīng)的內(nèi)存314A-314D的每一內(nèi)存存取。內(nèi)存控制器316A-316D可包含用來介接到內(nèi)存314A-314D的控制電路。此外,內(nèi)存控制器316A-316D可包含請求隊(duì)列,用以讓各內(nèi)存請求排隊(duì)等候。
一般而言,接口邏輯電路318A-318L可包含各種緩沖器,用以從鏈路接收數(shù)據(jù)包,并緩沖儲存將要經(jīng)由該鏈路傳送的數(shù)據(jù)包。計(jì)算機(jī)系統(tǒng)300可采用任何適用的流程控制機(jī)制,用以傳送數(shù)據(jù)包。例如,在一個(gè)實(shí)施例中,每一接口邏輯電路318將每一類型的緩沖器的數(shù)目儲存在用來連接該接口邏輯電路的鏈路的另一端上的接收器內(nèi)。除非接收的接口邏輯電路具有可儲存數(shù)據(jù)包的未占用的緩沖器,否則前述的接口邏輯電路將不會傳送該數(shù)據(jù)包。當(dāng)向前傳送一個(gè)數(shù)據(jù)包而空出接收的緩沖器時(shí),該接收的接口邏輯電路將訊息傳輸?shù)皆搨魉偷慕涌谶壿嬰娐?,告知已空出該緩沖器??蓪⒋朔N機(jī)制稱為″基于配給許可的″系統(tǒng)。
I/O裝置320A-320B可以是任何適用的I/O裝置。例如,I/O裝置320A-320B可包含可與這些裝置連接的另一計(jì)算機(jī)系統(tǒng)通訊的裝置(例如,網(wǎng)絡(luò)適配卡或調(diào)制解調(diào)器)。此外,I/O裝置320A-320B可包含視訊加速器、聲頻卡、硬盤機(jī)或軟盤機(jī)或磁盤驅(qū)動器控制器、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)配接器、電話卡、聲卡、以及諸如GPIB或?qū)I(yè)總線適配卡等的各種數(shù)據(jù)采集卡。請注意,在本文中,術(shù)語″I/O裝置″及術(shù)語″外圍裝置″是同義的。
本領(lǐng)域的普通技術(shù)人員在完全了解前文所揭示的事項(xiàng)之后,將可易于做出多種變化及修改。而本申請的權(quán)利要求范圍可理解為包含所有此類的變化及修改。
權(quán)利要求
1.一種計(jì)算機(jī)系統(tǒng),包含處理器(409);系統(tǒng)內(nèi)存(425);連接到該處理器且包含多個(gè)緩存行儲存區(qū)域的高速緩存(423);連接而接收第一請求的高速緩存控制器(419),其中該高速緩存控制器設(shè)定成響應(yīng)該第一請求,而以推測方式使第一緩存行儲存區(qū)域中的第一緩存行失效;且其中響應(yīng)以推測方式使該第一緩存行失效,該高速緩存控制器進(jìn)一步設(shè)定成在該第一緩存行的失效操作變成非推測式之前,禁止修改該第一緩存行儲存區(qū)域;以及錯誤檢測單元(603),該錯誤檢測單元設(shè)定成執(zhí)行對應(yīng)于該第一請求的至少一個(gè)檢查,其中如果執(zhí)行了該檢查,且并未檢測到任何錯誤,則該第一緩存行的該失效操作變成了非推測式。
2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中該高速緩存控制器(419)設(shè)定成通過切換與該第一緩存行相關(guān)聯(lián)的有效位,而以推測方式使該第一緩存行失效。
3.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中如果執(zhí)行了該檢查,且并未檢測到錯誤,則該高速緩存控制器(419)進(jìn)一步設(shè)定成通過切換與該第一緩存行相關(guān)聯(lián)的該有效位,而撤銷該推測執(zhí)行。
4.一種以推測方式使高速緩存(423)中的緩存行失效的方法,該方法包含接受將造成使該高速緩存中的該緩存行失效的請求;開始用來決定該失效操作是否錯誤的各項(xiàng)檢查;響應(yīng)所述接受,而以推測方式使該緩存行失效,其中以推測方式失效的該步驟包含下列步驟指示該緩存行是失效的;以及在完成這些檢查之前,保護(hù)該緩存行不會受到后續(xù)的修改;響應(yīng)決定該失效操作是錯誤的這些檢查中的一項(xiàng)檢查,指示該緩存行是有效的,而撤銷該推測方式的失效操作。
5.根據(jù)權(quán)利要求4所述的方法,其中該推測式失效步驟包含切換與該緩存行相關(guān)聯(lián)的有效位。
6.一種高速緩存子系統(tǒng),包含高速緩存(423),該高速緩存包含多個(gè)緩存行儲存區(qū)域;以及連接而接收第一請求的高速緩存控制器(419),該高速緩存控制器設(shè)定成響應(yīng)接收到的該第一請求,而以推測方式使該第一緩存行儲存區(qū)域中的第一緩存行失效;其中該高速緩存控制器進(jìn)一步設(shè)定成如果檢測到該推測式失效操作是錯誤的,則撤銷該第一緩存行的該推測式失效操作;其中檢測該推測式失效操作是否為錯誤的要耗用某一數(shù)目的時(shí)鐘周期;以及測式失效控制器(506),該推測式失效控制器設(shè)定成響應(yīng)該高速緩存控制器以推測方式使該第一緩存行失效,而在該數(shù)目的時(shí)鐘周期中,使該第一緩存行不會修改;其中在該數(shù)目的時(shí)鐘周期之后,該推測式失效操作變成非推測式。
7.根據(jù)權(quán)利要求6所述的高速緩存子系統(tǒng),其中該高速緩存控制器(419)設(shè)定成通過切換與該第一緩存行相關(guān)聯(lián)的有效位,而以推測方式使該第一緩存行失效。
8.根據(jù)權(quán)利要求7所述的高速緩存子系統(tǒng),其中該高速緩存控制器(419)進(jìn)一步設(shè)定成通過切換與該第一緩存行相關(guān)聯(lián)的該有效位,而撤銷該推測的執(zhí)行。
9.根根據(jù)權(quán)利要求6所述的高速緩存子系統(tǒng),其中該推測式失效控制器(506)進(jìn)一步設(shè)定成在一定數(shù)目的時(shí)鐘周期中,使該高速緩存控制器不接受會修改或相關(guān)于在推測方式下失效的該第一緩存行的額外要求。
10.根據(jù)權(quán)利要求9所述的高速緩存子系統(tǒng),其中該推測式失效控制器(506)設(shè)定成響應(yīng)該高速緩存控制器以推測方式使該第一緩存行失效,而將該第一緩存行的標(biāo)記的第一部分加載到寄存器(504)。
全文摘要
設(shè)定成以推測方式使緩存行失效的高速緩存控制器,可立即響應(yīng)失效請求或指令,而不必等候錯誤檢查的完成。為了避免錯誤檢查判定該失效操作是錯誤的而不應(yīng)執(zhí)行該失效操作,所以在該錯誤檢查完成之前,該高速緩存控制器使在推測方式下失效的該緩存行不會被修改。在此種方式下,如果后來發(fā)現(xiàn)該失效操作是錯誤的,則可撤銷該推測方式失效操作。如果完成了錯誤檢查,且并未檢測到任何錯誤,則該推測方式失效操作變成非推測方式。
文檔編號G06F12/08GK1509436SQ02809983
公開日2004年6月30日 申請日期2002年3月21日 優(yōu)先權(quán)日2001年5月16日
發(fā)明者T-C·譚, B·T·森德, T-C 譚, 森德 申請人:先進(jìn)微裝置公司