背景技術:
1、為了支持指令的執(zhí)行,處理系統(tǒng)通常實現(xiàn)一個或多個計算復合體,每個計算復合體具有一個或多個處理器核心并且存儲器分級結構具有存儲器模塊以存儲要由執(zhí)行指令訪問的數(shù)據。每個處理器核心與對于對應處理器核心是本地的一級或多級高速緩存以及存儲可由對應處理器核心處的執(zhí)行指令訪問的較大量數(shù)據的主存儲器相關聯(lián)。例如,具有多個處理器核心的許多處理系統(tǒng)采用多個高速緩存級別的分級結構,該多個高速緩存級別包括1級(l1)高速緩存、2級(l2)高速緩存和3級(l3)高速緩存,該1級(l1)高速緩存、2級(l2)高速緩存和3級(l3)高速緩存具有變化的存儲容量和到相關聯(lián)處理器核心的鄰近度。在一些處理系統(tǒng)中,每個處理器核心在1級處具有獨立的指令專用高速緩存和數(shù)據專用高速緩存。在高速緩存分級結構中,每個處理器核心與對于對應核心是私有的一級或多級高速緩存(下文中稱為“私有高速緩存”)相關聯(lián)。處理系統(tǒng)在高速緩存分級結構的另一級處進一步實現(xiàn)共享高速緩存(常常被稱為l3高速緩存),其中l(wèi)3高速緩存在計算復合體的處理器核心之間共享(下文中稱為“共享高速緩存”)。在一些處理系統(tǒng)中,獨立于l3高速緩存的最低級或末級高速緩存(llc)也在計算復合體的處理器核心之間共享。
2、常規(guī)上,數(shù)據以固定大小的塊在存儲器和高速緩存之間傳送。此類塊包括存儲在高速緩存中的數(shù)據(本文中稱為高速緩存行)以及其他信息。此外,此類塊可包括存儲在多個高速緩存行中的數(shù)據。當將一個或多個高速緩存行從存儲器復制到高速緩存中時,創(chuàng)建高速緩存條目。該高速緩存條目通常包括所復制的數(shù)據以及所請求的存儲器位置。為了確保存儲器一致性,高速緩存分級結構通常被配置為實現(xiàn)一致性協(xié)議,其中分級結構的高速緩存維持用于它們的相應高速緩存行的一致性狀態(tài)信息并且將高速緩存探測傳達到分級結構的其他高速緩存以確保遵循一致性協(xié)議的規(guī)則。
3、當處理器核心對存儲器中的位置進行讀取或寫入,其首先檢查高速緩存中的對應條目。高速緩存檢查可能包含地址的任何高速緩存行中所請求的存儲器位置的內容。如果處理器發(fā)現(xiàn)存儲器位置在高速緩存中,則已發(fā)生高速緩存命中。然而,如果處理器未在高速緩存中找到存儲器位置,則已發(fā)生高速緩存未命中。就高速緩存命中而言,處理器立即對高速緩存行中的數(shù)據進行讀取或寫入。對于高速緩存未命中,高速緩存分配新的條目并且將數(shù)據從主存儲器復制到高速緩存中新分配的條目(即,高速緩存將從存儲器位置處的主存儲器“找取”數(shù)據到高速緩存),并且從高速緩存的內容完成請求。為了在高速緩存未命中時為新條目騰出空間,高速緩存可能必須將現(xiàn)有條目中的一個現(xiàn)有條目逐出。
4、所逐出的數(shù)據在本文中被稱為“受害者數(shù)據”或“受害數(shù)據”。未被立即鏡像到主存儲器的對高速緩存的寫入被標記為“臟數(shù)據”,并且高速緩存跟蹤哪些位置已被寫入覆蓋(例如,經由寫入指令或修改指令)。因此,在主存儲器中不再是當前的受害數(shù)據(即,在高速緩存處已被修改但在主存儲器處未被修改的數(shù)據)在本文中被稱為“臟數(shù)據”,而當前的(即,在高速緩存處不被修改的)數(shù)據在本文中被稱為“干凈數(shù)據”。此外,常規(guī)的排他性高速緩存需要將干凈受害者數(shù)據(例如,從l3)逐出以維持一致性和高速緩存排他性,這增加了結構中的數(shù)據移動,消耗了額外的電力和帶寬。
技術實現(xiàn)思路
1、在一個示例中,一種方法包括:響應于從中間級別的高速緩存對第一干凈數(shù)據塊的逐出,訪問第一干凈數(shù)據塊的地址。該方法還包括使用地址發(fā)起從系統(tǒng)存儲器中將第一干凈數(shù)據塊找取到末級高速緩存(llc)中。
2、在另一個示例中,該方法還包括將第一干凈數(shù)據塊的地址從中間級別的高速緩存?zhèn)鞑サ絣lc。該方法還可以包括響應于從中間級別的高速緩存對第一臟數(shù)據塊的逐出,將第一臟數(shù)據塊從中間級別的高速緩存?zhèn)鞑サ絣lc。在一些示例中,第一臟數(shù)據塊包括經由寫入指令或修改指令中的一者或多者已被寫入到高速緩存分級結構的一個或多個高速緩存的數(shù)據。
3、在一些示例中,響應于從中間級別的高速緩存對第二干凈數(shù)據塊的逐出,該方法包括基于確定llc的命中率低于預先確定的閾值或者確定系統(tǒng)存儲器與llc之間的接口當前具有低于用于找取數(shù)據的預先確定的閾值的容量,繞過將第二干凈數(shù)據塊存儲在llc中。在一些示例中,該方法包括響應于從中間級別的高速緩存對第二干凈數(shù)據塊的逐出,基于確定中間級別的高速緩存與llc之間的一致性互連當前具有高于用于傳播數(shù)據的預先確定的閾值的容量或者確定當前電力使用水平小于預先確定的閾值電力使用水平,將第二干凈數(shù)據塊從中間級別的高速緩存?zhèn)鞑サ絣lc。
4、在一些示例中,該方法包括發(fā)起從系統(tǒng)存儲器對第一干凈數(shù)據塊的找取包括訪問存儲器控制器。在一些示例中,該方法還包括繞過將第一干凈數(shù)據塊從中間級別的高速緩存?zhèn)鞑サ絣lc。
5、在另一個示例中,一種處理系統(tǒng)包括處理器、系統(tǒng)存儲器、多高速緩存分級結構和高速緩存控制器,該高速緩存控制器用以響應于從多高速緩存分級結構中的中間級別的高速緩存對第一干凈數(shù)據塊的逐出,訪問第一干凈數(shù)據塊的地址,以及使用地址發(fā)起從系統(tǒng)存儲器中將第一干凈數(shù)據塊找取到末級高速緩存(llc)中。在一些示例中,該高速緩存控制器進一步用以將第一干凈數(shù)據塊的地址從中間級別的高速緩存?zhèn)鞑サ絣lc。
6、在一些示例中,該高速緩存控制器進一步用以響應于從中間級別的高速緩存對第一臟數(shù)據塊的逐出,將第一臟數(shù)據塊從中間級別的高速緩存?zhèn)鞑サ絣lc。在一些示例中,該第一臟數(shù)據塊包括經由寫入指令或修改指令中的一者或多者已被寫入到多高速緩存分級結構的一個或多個高速緩存的數(shù)據。
7、在一些示例中,該高速緩存控制器進一步用以基于確定llc的命中率低于預先確定的閾值或者確定系統(tǒng)存儲器與llc之間的接口當前具有低于用于找取數(shù)據的預先確定的閾值的容量,響應于從中間級別的高速緩存對第二干凈數(shù)據塊的逐出來繞過將第二干凈數(shù)據塊存儲在llc中。在一些示例中,該高速緩存控制器進一步用以基于確定中間級別的高速緩存與llc之間的一致性互連當前具有高于用于傳播數(shù)據的預先確定的閾值的容量或者確定當前電力使用水平小于預先確定的閾值電力使用水平,響應于從中間級別的高速緩存對第二干凈數(shù)據塊的逐出來將第二干凈數(shù)據塊從中間級別的高速緩存?zhèn)鞑サ絣lc。
8、在一些示例中,發(fā)起從系統(tǒng)存儲器對第一干凈數(shù)據塊的讀取包括訪問存儲器控制器。在一些示例中,該高速緩存控制器進一步用以繞過將第一干凈數(shù)據塊從中間級別的高速緩存?zhèn)鞑サ絣lc。
9、在另一個示例中,一種方法包括響應于將第一高速緩存數(shù)據存儲在處理系統(tǒng)的多高速緩存分級結構中的中間級別的高速緩存中的請求,確定超過中間級別的高速緩存的存儲容量。該方法還包括:發(fā)起從中間級別的高速緩存對第一干凈數(shù)據塊的逐出,該逐出包括將第一干凈數(shù)據塊的地址發(fā)送到末級高速緩存(llc),以及響應于在llc處接收到地址,通過使用從中間級別的高速緩存發(fā)送的地址從系統(tǒng)存儲器找取第一干凈數(shù)據塊,將所逐出的第一干凈數(shù)據塊高速緩存在llc中。
10、在一些示例中,該方法還包括響應于從中間級別的高速緩存對第一臟數(shù)據塊的逐出,將第一臟數(shù)據塊從中間級別的高速緩存發(fā)送到llc。在一些示例中,該方法包括繞過將第一干凈數(shù)據塊從中間級別的高速緩存發(fā)送到llc。在一些示例中,該方法包括從存儲在中間級別的高速緩存中的系統(tǒng)探測信息獲得第一干凈數(shù)據塊的地址。