亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

數(shù)據(jù)處理系統(tǒng)和方法

文檔序號:6558943閱讀:158來源:國知局
專利名稱:數(shù)據(jù)處理系統(tǒng)和方法
技術(shù)領(lǐng)域
本發(fā)明一般地涉及數(shù)據(jù)處理,具體地說,涉及高速緩存一致數(shù)據(jù)處理系統(tǒng)中的數(shù)據(jù)處理。
背景技術(shù)
傳統(tǒng)的對稱多處理器(SMP)計算機系統(tǒng)(如服務(wù)器計算機系統(tǒng))包括多個全部連接到系統(tǒng)互連的處理單元,所述系統(tǒng)互連通常包括一個或多個地址、數(shù)據(jù)和控制總線。連接到所述系統(tǒng)互連的是系統(tǒng)存儲器,其代表所述多處理器計算機系統(tǒng)中的易失性存儲器的最低級別并且通??捎伤刑幚韱卧M行讀和寫訪問。為了減少對駐留在系統(tǒng)存儲器中的指令和數(shù)據(jù)的訪問等待時間,每個處理單元通常都由各自的多級別高速緩存層次結(jié)構(gòu)來進一步支持,所述層次結(jié)構(gòu)的較低級別可由一個或多個處理器核心所共享。
由于多個處理器核心可以請求對數(shù)據(jù)的同一高速緩存線的寫訪問并且由于修改后的高速緩存線不會立即與系統(tǒng)存儲器同步,所以多處理器計算機系統(tǒng)的高速緩存層次結(jié)構(gòu)通常實現(xiàn)高速緩存一致性(coherency)協(xié)議以確保系統(tǒng)存儲器內(nèi)容的各種處理器核心的“視圖”之間的一致性的至少最低級別。具體地說,高速緩存一致性至少要求在處理單元訪問存儲器塊的副本并隨后訪問所述存儲器塊的更新后的副本之后,所述處理單元不能再次訪問所述存儲器塊的舊副本。
高速緩存一致性協(xié)議通常定義一組與每個高速緩存層次結(jié)構(gòu)的高速緩存線關(guān)聯(lián)存儲的高速緩存狀態(tài),以及一組用于在高速緩存層次結(jié)構(gòu)之間傳送高速緩存狀態(tài)信息的一致性消息。在一個典型實現(xiàn)中,高速緩存狀態(tài)信息采取公知的MESI(修改、獨占、共享和無效)協(xié)議或其變型的形式,并且一致性消息指示存儲器訪問請求的請求方和/或接收方的高速緩存層次結(jié)構(gòu)中的協(xié)議定義的一致性狀態(tài)轉(zhuǎn)換。
傳統(tǒng)的高速緩存一致性協(xié)議通常假設(shè)要維持高速緩存一致性,必須采用一致性消息的全局廣播。即,所有一致性消息都必須被SMP計算機系統(tǒng)中的所有高速緩存層次結(jié)構(gòu)所接收。但是本發(fā)明認(rèn)識到,一致性消息的全局廣播的要求對SMP計算機系統(tǒng)的可伸縮性產(chǎn)生了明顯的妨礙,具體地說,隨著系統(tǒng)的擴展,將消耗所述系統(tǒng)互連的越來越多的帶寬量。

發(fā)明內(nèi)容
鑒于以上所述,本發(fā)明提供了一種改進的高速緩存一致數(shù)據(jù)處理系統(tǒng)、高速緩存系統(tǒng)和在高速緩存一致數(shù)據(jù)處理系統(tǒng)中的數(shù)據(jù)處理的方法。
在一個實施例中,為在數(shù)據(jù)處理系統(tǒng)的互連上傳輸?shù)囊粋€或多個先前操作維護指示廣播的歷史范圍的預(yù)測器。通過參考所述預(yù)測器來預(yù)言性地選擇后續(xù)操作的廣播范圍。
本發(fā)明的所有目標(biāo)、特征和優(yōu)點將在以下詳細(xì)的書面描述中變得顯而易見。


在所附權(quán)利要求書中說明了被認(rèn)為是本發(fā)明特性的新穎特征。但是,當(dāng)結(jié)合附圖閱讀時,通過參考以下對示例性實施例的詳細(xì)說明,可以最佳地理解本發(fā)明及其優(yōu)選使用方式,這些附圖是圖1是根據(jù)本發(fā)明的示例性數(shù)據(jù)處理系統(tǒng)的高級方塊圖;圖2是根據(jù)本發(fā)明的處理單元的更詳細(xì)的方塊圖;圖3是圖2中示出的L2高速緩存陣列和目錄的更詳細(xì)的方塊圖;圖4是圖1的數(shù)據(jù)處理系統(tǒng)的系統(tǒng)互連上的示例性事務(wù)的時空圖;圖5示出了根據(jù)本發(fā)明的優(yōu)選實施例的域指示符;圖6是根據(jù)本發(fā)明的高速緩沖存儲器通過其為數(shù)據(jù)處理系統(tǒng)中的處理器核心接收的操作服務(wù)的示例性方法的高級邏輯流程圖;
圖7是圖2中示出的范圍預(yù)測邏輯的一個實施例的更詳細(xì)的方塊圖;圖8是根據(jù)本發(fā)明的范圍預(yù)測的示例性過程的高級邏輯流程圖;以及圖9是根據(jù)本發(fā)明的基于歷史的范圍預(yù)測的示例性過程的更詳細(xì)的邏輯流程圖。
具體實施例方式
I 示例性數(shù)據(jù)處理系統(tǒng)現(xiàn)在參考附圖,具體地說,參考圖1,其中示出了根據(jù)本發(fā)明的高速緩存一致對稱多處理器(SMP)數(shù)據(jù)處理系統(tǒng)的一個示例性實施例的高級方塊圖。如圖所示,數(shù)據(jù)處理系統(tǒng)100包括用于處理數(shù)據(jù)和指令的多個處理節(jié)點102a、102b。處理節(jié)點102a、102b與系統(tǒng)互連110相連以便傳送地址、數(shù)據(jù)和控制信息。系統(tǒng)互連110可以被實現(xiàn)為例如總線互連、交換互連或混合互連。
在示出的實施例中,每個處理節(jié)點102都被實現(xiàn)為包含四個處理單元104a-104d的多芯片模塊(MCM),每個處理單元優(yōu)選地被實現(xiàn)為相應(yīng)的集成電路。每個處理節(jié)點102內(nèi)的處理單元104a-104d都通過本地互連114連接以便進行通信,類似于系統(tǒng)互連110,可以使用一個或多個總線和/或交換機來實現(xiàn)本地互連114。
連接到每個本地互連114的設(shè)備不僅包括處理單元104,還包括一個或多個系統(tǒng)存儲器108a-108d。駐留在系統(tǒng)存儲器108中的數(shù)據(jù)和指令通??梢杂蓴?shù)據(jù)處理系統(tǒng)100的任何處理節(jié)點102中的任何處理單元104中的處理器核心來訪問并修改。在本發(fā)明的可替代實施例中,一個或多個系統(tǒng)存儲器108可以被連接到系統(tǒng)互連110,而不是本地互連114。
本領(lǐng)域的技術(shù)人員將理解,SMP數(shù)據(jù)處理系統(tǒng)100可以包括許多額外的未示出的組件,例如互連橋、非易失性存儲裝置、用于連接到網(wǎng)絡(luò)或附加設(shè)備的端口等。由于此類額外組件并不是理解本發(fā)明所必需的,因此它們并未在圖1中示出或在此進一步被討論。但是,還應(yīng)當(dāng)理解,本發(fā)明提供的增強可應(yīng)用于各種體系結(jié)構(gòu)的高速緩存一致數(shù)據(jù)處理系統(tǒng)并且絕非限于圖1中示出的通用數(shù)據(jù)處理系統(tǒng)體系結(jié)構(gòu)。
現(xiàn)在參考圖2,其中示出了根據(jù)本發(fā)明的示例性處理單元104的更詳細(xì)的方塊圖。在所示實施例中,每個處理單元104包括兩個用于獨立地處理指令和數(shù)據(jù)的處理器核心200a、200b。每個處理器核心200至少包括用于取回和排序指令以便執(zhí)行的指令定序單元(ISU)208和一個或多個用于執(zhí)行指令的執(zhí)行單元224。執(zhí)行單元224優(yōu)選地包括用于執(zhí)行引用存儲器塊或?qū)е乱么鎯ζ鲏K的操作的生成的存儲器訪問指令的加載存儲單元(LSU)228。在一個優(yōu)選實施例中,每個處理器核心200都能夠在兩個或更多個硬件執(zhí)行線程中同時執(zhí)行指令。
每個處理器核心200的操作都由在其最低級別具有共享系統(tǒng)存儲器108a-108d并且在其較高級別具有一個或多個級別的高速緩沖存儲器的多級別易失性存儲器層次結(jié)構(gòu)來支持。在所示實施例中,每個處理單元104都包括集成存儲器控制器(IMC)206,集成存儲器控制器206控制對其處理節(jié)點102內(nèi)的系統(tǒng)存儲器108a-108d中的相應(yīng)系統(tǒng)存儲器的讀寫訪問,以響應(yīng)從處理器核心200a-200b接收的請求和由窺探器(S)222在本地互連114上窺探的操作。IMC 206通過引用基地址寄存器(BAR)邏輯240來確定其所負(fù)責(zé)的地址。
在示例性實施例中,處理單元104的高速緩沖存儲器層次結(jié)構(gòu)包括每個處理器核心200內(nèi)的直通存儲(store-through)一級(L1)高速緩存226(其可以分成單獨的L1指令和數(shù)據(jù)高速緩存)和由處理單元104的所有處理器核心200a、200b共享的二級(L2)高速緩存230。L2高速緩存230包括L2陣列和目錄234以及高速緩存控制器,所述高速緩存控制器包括主機(master)232和窺探器236。主機232啟動本地互連114和系統(tǒng)互連110上的事務(wù)并響應(yīng)于從關(guān)聯(lián)的處理器核心200a-200b接收的存儲器訪問(以及其他)請求而訪問L2陣列和目錄234。主機232包括BAR注冊器252(其指示哪些地址駐留在其處理節(jié)點102內(nèi)的系統(tǒng)存儲器108中)和范圍預(yù)測邏輯250,如以下進一步描述的,范圍預(yù)測邏輯250可以被用來預(yù)測在包括本地互連114和系統(tǒng)互連110的互連構(gòu)造上傳輸?shù)牟僮鞯姆秶?。窺探器236窺探本地互連114上的操作、提供適合的響應(yīng),并執(zhí)行所述操作所需的對L2陣列和目錄234的任何訪問。
盡管示出的高速緩存層次結(jié)構(gòu)僅包括兩級高速緩存,但是本領(lǐng)域的技術(shù)人員將理解,可替代的實施例可以包括其他級別(L3、L4、L5等)的片上或片外嵌入或旁視高速緩存,其可以完全包括、部分包括或不包括較高級別的高速緩存的內(nèi)容。
每個處理單元104還包括響應(yīng)邏輯210的實例,該實例實現(xiàn)在數(shù)據(jù)處理系統(tǒng)100內(nèi)維持高速緩存一致性的分布式一致性發(fā)信號機制的一部分。此外,每個處理單元104包括用于在其本地互連114和系統(tǒng)互連110之間選擇性地轉(zhuǎn)發(fā)通信的互連邏輯212的實例。最后,每個處理單元104包括支持附加一個或多個I/O設(shè)備(如I/O設(shè)備216)的集成I/O(輸入/輸出)控制器214。I/O控制器214可以響應(yīng)于I/O設(shè)備216的請求而在本地互連114和/或系統(tǒng)互連110上發(fā)布操作。
現(xiàn)在參考圖3,其中示出了L2陣列和目錄234的示例性實施例的更詳細(xì)的方塊圖。如圖所示,L2陣列和目錄234包括一組相關(guān)的L2高速緩存陣列300和L2高速緩存陣列300的內(nèi)容的L2高速緩存目錄302。如在傳統(tǒng)的一組相關(guān)高速緩存中,利用系統(tǒng)存儲器(真實)地址中的預(yù)定索引位將系統(tǒng)存儲器108中的存儲器單元映射到高速緩存陣列300中的特定一致類。存儲在高速緩存陣列300中的特定高速緩存線被記錄在高速緩存目錄302中,高速緩存目錄302包含一個用于高速緩存陣列300中的每個高速緩存線的目錄表項。如本領(lǐng)域的技術(shù)人員所理解的,高速緩存目錄302中的每個目錄表項至少包括標(biāo)記字段304(其利用相應(yīng)真實地址的標(biāo)記部分指定了存儲在高速緩存陣列300中的特定高速緩存線)、狀態(tài)字段306(其指示高速緩存線的一致性狀態(tài))以及LRU(最近最少使用)字段308(其指示了相對于同一一致類中的其他高速緩存線而言的高速緩存線的替換順序)。
II.示例性操作現(xiàn)在參考圖4,其中示出了圖1的數(shù)據(jù)處理系統(tǒng)100的本地或系統(tǒng)互連110、114上的示例性操作的時空圖。盡管互連110、114不必是總線互連,但是在一個或多個本地互連114和/或系統(tǒng)互連110上傳輸?shù)牟僮髟诖吮环Q為“總線操作”,以便將其與在處理器核心200與駐留在它們自己的高速緩存層次結(jié)構(gòu)內(nèi)的高速緩沖存儲器之間傳輸?shù)腃PU請求區(qū)分開。
當(dāng)L2高速緩存230的主機232(或其他主機,如I/O控制器214)在本地互連114和/或系統(tǒng)互連110上發(fā)出請求402時,示出的總線操作開始。請求402優(yōu)選地包括事務(wù)類型(指示期望的訪問類型)和資源標(biāo)識符(如,真實地址,指示將被所述請求訪問的資源)。常見的請求類型優(yōu)選地包括那些在下表I中說明的類型。
表I


請求402由L2高速緩存230的窺探器236以及存儲器控制器206(圖1)的窺探器222接收。通常(存在某些例外),由于僅當(dāng)處理單元104無法內(nèi)部地為請求402服務(wù)時,請求402才在本地互連114和/或系統(tǒng)互連110上傳輸,所以在與請求402的主機232處于同一L2高速緩存230中的窺探器236不會窺探請求402(即,通常沒有自窺探)。每個接收請求402的窺探器222、236都可以提供代表至少該窺探器對請求402的響應(yīng)的相應(yīng)部分響應(yīng)406。存儲器控制器206中的窺探器222根據(jù)例如窺探器222是否負(fù)責(zé)請求地址以及其是否具有可用于為所述請求服務(wù)的資源來確定部分響應(yīng)406。L2高速緩存230的窺探器236可以根據(jù)例如其L2高速緩存目錄302的可用性、窺探器236內(nèi)處理所述請求的窺探邏輯實例的可用性以及與L2高速緩存目錄302中的請求地址關(guān)聯(lián)的一致性狀態(tài)來確定其部分請求406。
窺探器222和236的部分響應(yīng)由響應(yīng)邏輯210的一個或多個實例分步或立即邏輯地組合以確定對請求402的系統(tǒng)范圍的組合響應(yīng)(CR)410。根據(jù)下面討論的范圍限制,響應(yīng)邏輯210通過其本地互連114和/或系統(tǒng)互連110將組合響應(yīng)410提供給主機232和窺探器222、236以指示對請求402的系統(tǒng)范圍的響應(yīng)(例如,成功、失敗、重試等)。如果CR 410指示請求402成功,則CR 410可以指示例如請求的存儲器塊的數(shù)據(jù)源、其中將被主機232緩存的所述請求的存儲器塊的高速緩存狀態(tài),以及是否需要無效一個或多個L2高速緩存230中的請求的存儲器塊的“清空”操作。
響應(yīng)于接收到組合響應(yīng)410,一個或多個主機232和窺探器222、236通常執(zhí)行一個或多個操作以便為請求402服務(wù)。這些操作可以包括向主機232提供數(shù)據(jù)、無效或更新一個或多個L2高速緩存230中緩存的數(shù)據(jù)的一致性狀態(tài)、執(zhí)行驅(qū)逐操作、將數(shù)據(jù)寫回系統(tǒng)存儲器108等。如果請求402需要,在響應(yīng)邏輯210生成組合響應(yīng)410之前或之后,請求或目標(biāo)存儲器塊可以被傳輸?shù)街鳈C232或從主機232傳輸請求或目標(biāo)存儲器塊。
在以下描述中,將根據(jù)請求指定的請求地址參考窺探器是一致性最高點(HPC)、一致性最低點(LPC)還是兩者皆不是來描述窺探器222、236對所述請求的部分響應(yīng)以及由所述窺探器響應(yīng)于所述請求和/或其組合響應(yīng)而執(zhí)行的操作。LPC在此被定義為用作存儲器塊的庫的存儲器設(shè)備或I/O設(shè)備。在沒有用于存儲器塊的HPC的情況下,LPC持有存儲器塊的真實映像并具有許可或拒絕生成所述存儲器塊的附加高速緩存副本的請求的授權(quán)。對于圖1和2的數(shù)據(jù)處理系統(tǒng)實施例中的典型請求,所述LPC將是持有所述引用的存儲器塊的系統(tǒng)存儲器108的存儲器控制器206。HPC在此被定義為緩存所述存儲器塊(其與LPC處的相應(yīng)存儲器塊可能一致,也可能不一致)的真實映像的唯一標(biāo)識的設(shè)備并具有許可或拒絕修改存儲器塊的請求的授權(quán)。說明性地,HPC還可以響應(yīng)于不修改所述存儲器塊的操作而向請求方提供所述存儲器塊的副本。因此,對于圖1和2的數(shù)據(jù)處理系統(tǒng)實施例中的典型請求,HPC(如果存在)將是L2高速緩存230。如下面參考表II進一步描述的,盡管其他指示符可以被用來為存儲器塊指定HPC,但是本發(fā)明的優(yōu)選實施例利用L2高速緩存230的L2高速緩存目錄302內(nèi)的選定高速緩存一致性狀態(tài)(多個)來為存儲器塊指定HPC(如果存在)。
仍然參考圖4,用于在請求402中引用的存儲器塊的HPC(如果存在),或在沒有HPC的情況下,所述存儲器塊的LPC優(yōu)選地具有保護存儲器塊的所有權(quán)的轉(zhuǎn)移以響應(yīng)保護窗口404a期間的請求402的責(zé)任。在圖4中示出的示例性情況中,窺探器236(其是用于由請求402的請求地址指定的存儲器塊的HPC)在保護窗口404a期間(從窺探器236確定其部分響應(yīng)406時延伸到窺探器236接收到組合響應(yīng)410時為止)保護將所請求的存儲器塊的所有權(quán)轉(zhuǎn)移到主機232。在保護窗口404a期間,窺探器236通過將部分響應(yīng)406提供給其他請求(指定了相同的請求地址并且阻止其他主機獲得所有權(quán)直到所有權(quán)已被成功地轉(zhuǎn)移到主機232為止)來保護所有權(quán)的轉(zhuǎn)移。主機232在接收到組合響應(yīng)410后同樣啟動一個保護窗口404b來保護其在請求402中請求的存儲器塊的所有權(quán)。
由于窺探器222、236都具有用于處理上述的CPU和I/O請求的有限資源,所以若干不同級別的部分響應(yīng)和相應(yīng)的CR是可能的。例如,如果在負(fù)責(zé)請求的存儲器塊的存儲器控制器206中的窺探器222具有可用于處理請求的隊列,則窺探器222可以響應(yīng)以指示其能夠用作所述請求的LPC的部分響應(yīng)。另一方面,如果窺探器222沒有可用于處理請求的隊列,則窺探器222可以響應(yīng)以指示其是存儲器塊的LPC,但是當(dāng)前無法為所述請求服務(wù)的部分響應(yīng)。
類似地,L2高速緩存230中的窺探器236可能需要窺探邏輯的可用實例并訪問L2高速緩存目錄302以便處理請求。缺少對這些資源中的任一資源(或兩者)的訪問將導(dǎo)致發(fā)信號告知由于缺少所需資源而當(dāng)前無法為所述請求服務(wù)的部分響應(yīng)(以及相應(yīng)的CR)。
此后,提供了指示窺探器具有當(dāng)前為請求服務(wù)所需的全部內(nèi)部資源的部分響應(yīng)的窺探器222、236(如果需要)被稱為“確認(rèn)”請求。對于窺探器236,確認(rèn)了窺探操作的部分響應(yīng)優(yōu)選地指示在該窺探器236處的請求或目標(biāo)存儲器塊的高速緩存狀態(tài)。提供了指示窺探器236不具有當(dāng)前為請求服務(wù)所需的全部內(nèi)部資源的部分響應(yīng)的窺探器222、236可以被稱為“可能隱藏”或“無法”為所述請求服務(wù)。由于窺探器236因缺少窺探邏輯的可用實例或?qū)2高速緩存目錄302的當(dāng)前訪問而無法在以上定義的意義上“確認(rèn)”請求并且從其他主機232和窺探器222、236的角度,具有未知的一致性狀態(tài),所以此類窺探器236是“可能隱藏的”或“無法”為請求服務(wù)。
III.數(shù)據(jù)傳送域傳統(tǒng)的基于廣播的數(shù)據(jù)處理系統(tǒng)通過廣播通信來處理高速緩存一致性和數(shù)據(jù)傳送這兩者,在傳統(tǒng)的系統(tǒng)中,在系統(tǒng)互連上將所述廣播通信至少傳輸?shù)剿鱿到y(tǒng)中的所有存儲器控制器和高速緩存層次結(jié)構(gòu)。與具有可替代體系結(jié)構(gòu)和類似規(guī)模的系統(tǒng)相比,基于廣播的系統(tǒng)傾向于提供降低的訪問等待時間和更好的共享存儲器塊的數(shù)據(jù)處理和一致性管理。
隨著基于廣播的系統(tǒng)的規(guī)模的擴大,系統(tǒng)互連上的通信量倍增,意味著由于需要更多的帶寬用于系統(tǒng)互連上的通信,系統(tǒng)成本隨著系統(tǒng)規(guī)模而急劇增加。即,具有m個處理器核心(每個處理器核心都具有n個事務(wù)的平均通信量)的系統(tǒng)具有m×n的通信量,意味著基于廣播的系統(tǒng)中的通信量成倍地而不是累加性地增加。除了對實際更大的互連帶寬的要求以外,系統(tǒng)大小的增加具有增加某些訪問等待時間的副作用。例如,讀取數(shù)據(jù)的訪問等待時間,在最壞的情況下,由持有處于共享一致性狀態(tài)中的請求存儲器塊(其可以作為請求的數(shù)據(jù)的源)的最遠低級高速緩存的組合響應(yīng)等待時間所限制。
為了減少系統(tǒng)互連帶寬要求和訪問等待時間同時仍然保留基于廣播的系統(tǒng)的優(yōu)點,分布在整個數(shù)據(jù)處理系統(tǒng)100中的多個L2高速緩存230被允許持有處于“特殊”共享一致性狀態(tài)中的同一存儲器塊的副本,所述“特殊”共享一致性狀態(tài)允許這些高速緩存使用高速緩存到高速緩存干預(yù)將所述存儲器塊提供給發(fā)出請求的L2高速緩存230。為了實現(xiàn)用于SMP數(shù)據(jù)處理系統(tǒng)(如數(shù)據(jù)處理系統(tǒng)100)中的共享存儲器塊的多個并發(fā)和分布的源,必須解決兩個問題。首先,必須實現(xiàn)某些管理處于以上提到的“特殊”共享一致性狀態(tài)中的存儲器塊的副本的創(chuàng)建的規(guī)則。其次,必須存在管理哪一個窺探L2高速緩存230(如果存在)例如響應(yīng)于總線讀取操作或總線RWITM操作將共享存儲器塊提供給發(fā)出請求的L2高速緩存230的規(guī)則。
根據(jù)本發(fā)明,這兩個問題都通過實現(xiàn)數(shù)據(jù)源域來解決。具體地說,SMP數(shù)據(jù)處理系統(tǒng)中的每個域(其中域被定義為包括一個或多個參與響應(yīng)數(shù)據(jù)請求的低級(例如,L2)高速緩存)被允許每次只包括一個持有處于“特殊”共享一致性狀態(tài)中的特定存儲器塊的高速緩存層次結(jié)構(gòu)。該高速緩存層次結(jié)構(gòu),如果當(dāng)同一域中的請求低級高速緩存啟動總線讀取類型(例如,讀取或RWITM)操作時存在,負(fù)責(zé)將請求的存儲器塊作為源提供給發(fā)出請求的低級高速緩存。盡管可以定義許多不同的域大小,但是在圖1的數(shù)據(jù)處理系統(tǒng)100中,如果每個處理節(jié)點102(即,MCM)都被視為數(shù)據(jù)源域是很方便的。參考表II在下面描述了此類“特殊”共享狀態(tài)(即,Sr)的一個實例。
IV.一致性域盡管實現(xiàn)上述數(shù)據(jù)傳送域改進了數(shù)據(jù)訪問等待時間,但是此改進并未解決隨著系統(tǒng)規(guī)模增加而出現(xiàn)的通信量的m×n倍增。為了減少通信量同時仍然維持基于廣播的一致性機制,本發(fā)明的優(yōu)選實施例額外地實現(xiàn)了一致性域,其類似于此前描述的數(shù)據(jù)傳送域,可以方便地(但不是必需的)用每個形成單獨的一致性域的處理節(jié)點102來實現(xiàn)。數(shù)據(jù)傳送域和一致性域可以(但并不要求)是同延的,并且出于解釋數(shù)據(jù)處理系統(tǒng)100的示例性操作的目的,此后將被假設(shè)為具有由處理節(jié)點102定義的邊界。
通過限制在系統(tǒng)互連110上的域內(nèi)廣播通信,在其中請求可以由少于所有一致性域的域參與提供服務(wù)的情況下,一致性域的實現(xiàn)減少了系統(tǒng)通信量。例如,如果處理節(jié)點102a的處理單元104a具有總線讀取操作要發(fā)布,則處理單元104a可以選擇首先將所述總線讀取操作廣播到其自己的一致性域(例如,處理節(jié)點102a)內(nèi)的所有參與者,但是不廣播到其他一致性域(例如,處理節(jié)點102b)中的參與者。僅傳送到那些與操作的主機在同一一致性域中的參與者的廣播操作在此被定義為“本地操作”。如果可以在處理單元104a的一致性域中為本地總線讀取操作服務(wù),則不執(zhí)行總線讀取操作的進一步廣播。但是,如果對本地總線讀取操作的部分響應(yīng)和組合響應(yīng)指示無法單獨在處理單元104a的一致性域中為總線讀取操作服務(wù),則廣播的范圍可以被擴展到包括(除了本地一致性域以外)一個或多個其他一致性域。
在一個基本實現(xiàn)中,采用了兩個廣播范圍只包括本地一致性域的“本地”范圍和包括SMP數(shù)據(jù)處理系統(tǒng)中的所有其他一致性域的“全局”范圍。因此,被傳送到SMP數(shù)據(jù)處理系統(tǒng)中的所有一致性域的操作在此被定義為“全局操作”。重要的是,無論是否采用本地操作或更大擴展范圍的操作(例如,全局操作)來為操作服務(wù),都將在SMP數(shù)據(jù)處理系統(tǒng)中的所有一致性域之間維護高速緩存一致性。在美國專利申請No.11/055,697(其全部內(nèi)容在此引入作為參考)中詳細(xì)描述了本地和全局操作的實例。
在一個優(yōu)選實施例中,由本地/全局范圍指示符(信號)指示總線操作中的操作的范圍,在一個實施例中,所述指示符可以包括1-位標(biāo)志。處理單元104中的轉(zhuǎn)發(fā)邏輯212優(yōu)選地根據(jù)操作中的本地/全局范圍指示符(信號)的設(shè)置來確定是否將通過本地互連114接收到的操作轉(zhuǎn)發(fā)到系統(tǒng)互連110上。
V.域指示符為了限制不需要的本地操作的發(fā)布并由此減少操作等待時間并節(jié)約本地互連上的附加帶寬,本發(fā)明優(yōu)選地實現(xiàn)每存儲器塊的域指示符,該指示符指示關(guān)聯(lián)存儲器塊的副本是否被緩存在本地一致性域之外。例如,圖5示出了根據(jù)本發(fā)明的域指示符的第一示例性實現(xiàn)。如圖5所示,系統(tǒng)存儲器108(其可以以動態(tài)隨機存取存儲器(DRAM)實現(xiàn))存儲了多個存儲器塊500。系統(tǒng)存儲器108與每個存儲器塊500關(guān)聯(lián)地存儲了用來校正存儲器塊500中的錯誤(如果存在)的關(guān)聯(lián)錯誤校正碼(ECC)502和域指示符504。盡管在本發(fā)明的某些實施例中,域指示符504可以標(biāo)識特定的一致性域(即,指定一致性域或節(jié)點ID),但是此后假設(shè)域指示符504是1-位指示符,在關(guān)聯(lián)的存儲器塊500(如果有)僅被緩存在與用作存儲器塊500的LPC的存儲器控制器206相同的一致性域中的情況下,所述指示符被設(shè)置(例如,設(shè)置成‘1’以指示‘本地’)。否則,重置域指示符504(例如,重置為‘0’以指示‘全局’)。設(shè)置域指示符504以指示“本地”可以被不嚴(yán)密地實現(xiàn),因為錯誤設(shè)置“全局”將不會引起任何一致性錯誤,但可能會導(dǎo)致操作的不需要的全局廣播。
響應(yīng)于操作而作為存儲器塊的源的存儲器控制器206(和L2高速緩存230)優(yōu)選地將關(guān)聯(lián)的域指示符504與請求的存儲器塊一起傳送。
VI.示例性一致性協(xié)議本發(fā)明優(yōu)選地實現(xiàn)了高速緩存一致性協(xié)議,該協(xié)議旨在影響如上所述的數(shù)據(jù)傳送和一致性域的實現(xiàn)。在一個優(yōu)選實施例中,所述協(xié)議中的高速緩存一致性狀態(tài)除了提供(1)高速緩存是否是存儲器塊的HPC的指示之外,還指示(2)高速緩存的副本在該存儲器層次結(jié)構(gòu)級別的高速緩存之間是否唯一(即,是系統(tǒng)范圍內(nèi)僅有的高速緩存副本),(3)所述高速緩存是否以及何時可以將存儲器塊的副本提供給用于所述存儲器塊的請求的主機,(4)所述存儲器塊的高速緩存的映像與在LPC(系統(tǒng)存儲器)處的相應(yīng)存儲器塊是否一致,以及(5)遠程一致性域(可能)中的其他高速緩存是否持有具有匹配地址的高速緩存表項。這五個屬性可以例如在下表II中總結(jié)的公知MESI(修改、獨占、共享、無效)協(xié)議的示例性變型中被表達。
表II



A.Ig狀態(tài)為了避免不得不訪問LPC以確定存儲器塊是否將僅本地地被緩存(如果可能),Ig(無效全局)一致性狀態(tài)被用來在其中沒有存儲器塊的副本保持緩存在一致性域中的情況下維持域指示。所述Ig狀態(tài)在此被定義為指示以下項的高速緩存一致性狀態(tài)(1)高速緩存陣列中的關(guān)聯(lián)存儲器塊是無效的,(2)高速緩存目錄中的地址標(biāo)志是有效的,以及(3)由地址標(biāo)志標(biāo)識的存儲器塊的副本可能被緩存在另一個一致性域中。所述Ig指示優(yōu)選地是不精確的,意味著在不違反一致性的情況下其可能是不正確的。
所述Ig狀態(tài)在低級高速緩存中形成以響應(yīng)高速緩存將請求的存儲器塊提供給另一個一致性域中的請求方以響應(yīng)獨占訪問請求(例如,總線RWITM操作)。在本發(fā)明的某些實施例中,僅在包含用于所述存儲器塊的LPC的一致性域中形成所述Ig狀態(tài)是優(yōu)選的。在此類實施例中,某些機制(例如,LPC的部分響應(yīng)和隨后的組合響應(yīng))必須被實現(xiàn)以便向作為請求的存儲器塊的源的高速緩存指示所述LPC在其本地一致性域中。在不支持傳送所述LPC是本地的指示的其他實施例中,可以在高速緩存將存儲器塊作為源提供給遠程一致性域以響應(yīng)獨占訪問請求的任何時刻形成所述Ig狀態(tài)。
由于包括Ig狀態(tài)的高速緩存目錄表項可能攜帶有用信息,所以至少在某些實現(xiàn)中,希望優(yōu)選地保留Ig狀態(tài)中的表項而不是I狀態(tài)中的表項(例如,通過修改用來選擇用于替換的犧牲品高速緩存表項的最近最少使用(LRU)算法)。由于Ig目錄表項被保留在高速緩存中,某些Ig表項可能隨著時間的推移而變得“失效”,因為高速緩存(其獨占訪問請求導(dǎo)致了Ig狀態(tài)的形成)可以解除分配或?qū)懟仄浯鎯ζ鲏K的副本,而不通知將存儲器塊的地址標(biāo)記保持在Ig狀態(tài)的高速緩存。在這種情況下,所述“失效”Ig狀態(tài)(其錯誤地指示應(yīng)發(fā)布全局操作而不是本地操作)將不會導(dǎo)致任何一致性錯誤,而只是導(dǎo)致某些操作(可以利用本地操作以其他方式為它們服務(wù))被發(fā)布為全局操作。如下面進一步描述的,此類低效率的出現(xiàn)將通過最終替換“失效”Ig高速緩存表項和通過域指示擦除來在持續(xù)時間上進行限制。
若干規(guī)則管理著Ig高速緩存表項的選擇和替換。首先,如果高速緩存選擇Ig表項作為替換的犧牲品,則執(zhí)行Ig表項的驅(qū)逐(不同于當(dāng)I表項被選擇時的情況)。其次,如果導(dǎo)致存儲器塊被加載到高速緩存中的請求命中該同一高速緩存中的Ig高速緩存表項,則所述高速緩存將Ig命中視為高速緩存未命中并在將Ig表項作為選定的犧牲品的情況下執(zhí)行驅(qū)逐操作。所述高速緩存因此避免了將同一地址標(biāo)記的兩個副本放置在高速緩存目錄中。第三,Ig狀態(tài)的驅(qū)逐優(yōu)選地被作為本地操作執(zhí)行,或者如果作為全局操作執(zhí)行,則被非本地一致性域的存儲器控制器所忽略。如果允許在與用于存儲器塊的LPC不同的一致性域內(nèi)的高速緩存中形成Ig表項,則無需更新LPC中的域指示符。第四,Ig狀態(tài)的驅(qū)逐優(yōu)選地被執(zhí)行為無數(shù)據(jù)僅地址操作,其中域指示符被寫回LPC(如果對于執(zhí)行驅(qū)逐的高速緩存是本地的)。
根據(jù)本發(fā)明的Ig狀態(tài)的實現(xiàn)通過為一致性域中的存儲器塊維護高速緩存的域指示符(即使沒有存儲器塊的有效副本繼續(xù)緩存在該一致性域中)來提高通信效率。結(jié)果,用于存儲器塊的HPC可以為來自遠程一致性域的獨占訪問請求(例如,總線RWITM操作)服務(wù),而無需重試所述請求并執(zhí)行將請求的存儲器塊推動到LPC。
B.In狀態(tài)In狀態(tài)在此被定義為高速緩存一致性狀態(tài),所述高速緩存一致性狀態(tài)指示(1)高速緩存陣列中的關(guān)聯(lián)存儲器塊是無效的,(2)高速緩存目錄中的地址標(biāo)記是有效的,以及(3)由所述地址標(biāo)記標(biāo)識的存儲器塊的副本可能僅由本地一致性域中的一個或多個其他高速緩存層次結(jié)構(gòu)來緩存(如果可能)。In指示優(yōu)選地是不精確的,意味著在不違反一致性的情況下其可能是不正確的。In狀態(tài)在低級高速緩存中形成以響應(yīng)該高速緩存將請求的存儲器塊提供給同一一致性域中的請求方以響應(yīng)獨占訪問請求(例如,總線RWITM操作)。
由于包括In狀態(tài)的高速緩存目錄表項可能攜帶有用信息,所以至少在某些實現(xiàn)中,希望優(yōu)選地保留In狀態(tài)中的表項而不是I狀態(tài)中的表項(例如,通過修改用來選擇用于替換的犧牲品高速緩存表項的最近最少使用(LRU)算法)。由于In目錄表項被保留在高速緩存中,某些In表項可能隨著時間的推移而變得“失效”,因為高速緩存(其獨占訪問請求導(dǎo)致了In狀態(tài)的形成)自身可以將存儲器塊的共享副本提供給遠程一致性域,而不通知將存儲器塊的地址標(biāo)記保持在In狀態(tài)的高速緩存。在這種情況下,所述“失效”In狀態(tài)(其錯誤地指示應(yīng)發(fā)布本地操作而不是全局操作)將不會導(dǎo)致任何一致性錯誤,而只是導(dǎo)致某些操作首先錯誤地被發(fā)布為本地操作而非全局操作。此類低效率的出現(xiàn)將通過最終替換“失效”In高速緩存表項來在持續(xù)時間上進行限制。在一個優(yōu)選實施例中,處于In一致性狀態(tài)的高速緩存表項不會受到驅(qū)逐,而只是被替換。因此,與Ig高速緩存表項不同,In高速緩存表項并未被用來更新系統(tǒng)存儲器108中的域指示符504。
根據(jù)本發(fā)明的In狀態(tài)的實現(xiàn)通過為存儲器塊(可由主機咨詢以便為其操作中的某一操作選擇本地范圍)維護高速緩存的域指示符來提高通信效率。結(jié)果,節(jié)約了其他一致性域中的系統(tǒng)互連110和本地互連114上的帶寬。
C.Sr狀態(tài)在下面描述的操作中,能夠確定持有處于Sr一致性狀態(tài)的共享請求存儲器塊的低級高速緩存是否位于與發(fā)出請求的主機相同的域中是有用的。在一個實施例中,位于與發(fā)出請求的主機相同的域中的“本地”Sr窺探器的存在可以由在持有處于Sr一致性狀態(tài)的請求存儲器塊的低級高速緩存處的窺探器的響應(yīng)行為來指示。例如,假設(shè)每個總線操作都包括范圍指示符,所述范圍指示符指示所述總線操作是否已穿過域邊界(例如,主機的顯式域標(biāo)識符或單個本地/非本地范圍位),持有處于Sr一致性狀態(tài)的共享存儲器塊的低級高速緩存可以提供部分響應(yīng)(僅為同一數(shù)據(jù)源域中的主機的請求確認(rèn)請求處于Sr狀態(tài))并提供指示所有其他請求的S狀態(tài)的部分響應(yīng)。在此類實施例中,響應(yīng)行為可以被總結(jié)為如表III所示,其中最初的(’)符號被用來指定可能與存儲器塊的實際高速緩存狀態(tài)不同的部分響應(yīng)。
表III

假設(shè)以上在表III中說明了響應(yīng)行為,通過增加在可用作數(shù)據(jù)源的SMP數(shù)據(jù)處理系統(tǒng)中分布的存儲器塊的共享副本的數(shù)量,共享數(shù)據(jù)的平均數(shù)據(jù)等待時間可以顯著減少。
VII.示例性操作首先參考圖6,其中示出了根據(jù)本發(fā)明的在數(shù)據(jù)處理系統(tǒng)中為處理器(CPU)請求服務(wù)的示例性方法的高級邏輯流程圖。如圖所示,所述過程開始于方塊600,方塊600代表從其處理單元104中的關(guān)聯(lián)處理器核心200接收CPU請求(例如,CPU數(shù)據(jù)加載請求、CPU數(shù)據(jù)存儲請求、CPU負(fù)載和保留請求、CPU指令加載請求等)的L2高速緩存230中的主機232。響應(yīng)于接收到所述CPU請求,主機232在方塊602判定目標(biāo)存儲器塊(其在所述CPU請求中由目標(biāo)地址來標(biāo)識)是否被以一致性狀態(tài)(允許為所述CPU請求服務(wù)而不在互連構(gòu)造上發(fā)布總線操作)保存在L2高速緩存目錄302中。例如,如果L2高速緩存目錄302指示所述目標(biāo)存儲器塊的一致性狀態(tài)是M、Me、Tx(例如,T、Tn、Te或Ten)、Sr或S狀態(tài)中的任何狀態(tài),則可以為CPU指令取回請求或數(shù)據(jù)加載請求服務(wù)而不在互連構(gòu)造上發(fā)布總線操作。如果L2高速緩存目錄302指示所述目標(biāo)存儲器塊的一致性狀態(tài)是M或Me狀態(tài)中的一個狀態(tài),則可以為CPU數(shù)據(jù)存儲請求服務(wù)而不在互連構(gòu)造上發(fā)布總線操作。如方塊624所示,如果主機232在方塊602判定可以為所述CPU請求服務(wù)而不在互連構(gòu)造上發(fā)布總線操作,則主機232訪問L2高速緩存陣列300來為所述CPU請求服務(wù)。例如,主機232可以獲得請求的存儲器塊并將所述請求的存儲器塊提供給發(fā)出請求的處理器核心200以響應(yīng)CPU數(shù)據(jù)加載請求或指令取回請求或者可以將CPU數(shù)據(jù)存儲請求中提供的數(shù)據(jù)存儲到L2高速緩存陣列300中。在方塊624之后,所述過程在方塊626終止。
返回方塊602,如果所述目標(biāo)存儲器塊并未以一致性狀態(tài)(允許為所述CPU請求服務(wù)而不在互連構(gòu)造上發(fā)布總線操作)保存在L2目錄302中,則還在方塊604判定是否需要驅(qū)逐現(xiàn)有高速緩存線以容納L2高速緩存230中的所述目標(biāo)存儲器塊。在一個實施例中,如果存儲器塊被選擇以便從請求處理器的L2高速緩存230中被驅(qū)逐以響應(yīng)所述CPU請求并且所述存儲器塊在L2目錄302中被標(biāo)記為處于M、T、Te、Tn或Ig一致性狀態(tài)中的任何狀態(tài),則在方塊604需要驅(qū)逐操作。響應(yīng)于在方塊604判定需要驅(qū)逐,如方塊606所指示的,執(zhí)行高速緩存驅(qū)逐操作。同時,主機232在方塊610確定將被發(fā)布以便為所述CPU請求服務(wù)的總線操作的范圍。例如,在一個實施例中,主機232在方塊610確定將總線操作作為本地操作還是全局操作來廣播。
在其中每個總線操作最初被發(fā)布為本地操作并且作為本地操作僅被發(fā)布一次的第一實施例中,在方塊610示出的判定可以只代表由主機進行的總線操作先前是否已被發(fā)布為本地總線操作的判定。在其中本地總線操作可以被重試的第二可替代實施例中,在方塊610示出的判定可以代表由主機進行的總線操作先前是否被發(fā)布了超過閾值次數(shù)的判定。在第三可替代實施例中,在方塊610做出的判定可以基于由主機232進行的本地總線操作是否可能成功地解決目標(biāo)存儲器塊的一致性而不與其他一致性域中的處理節(jié)點通信的預(yù)測。參考圖7-9在以下更詳細(xì)地描述了此第三可替代實施例的示例性實現(xiàn)。
響應(yīng)于在方塊610的發(fā)布全局總線操作而不是本地總線操作的判定,所述過程從方塊610繼續(xù)到方塊620,這將在下面進行描述。另一方面,如果在方塊610做出發(fā)布本地總線操作的判定,則主機232在其本地互連114上啟動本地總線操作,如方塊612所示。所述本地總線操作僅在包含主機232的本地一致性域(例如,處理節(jié)點102)中廣播。如果主機232接收到指示“成功”的CR(方塊614),則所述過程進入方塊623,這代表主機232更新了用來做出在方塊610示出的范圍選擇的預(yù)測器。另外,主機232為所述CPU請求服務(wù),如方塊624所示。此后,所述過程在方塊626終止。
返回方塊614,如果用于本地總線讀取操作的CR未指示“成功”,則主機232在方塊616做出所述CR是否是重試全局”CR(其明確指示一致性協(xié)議托管在本地一致性域以外的一個或多個處理節(jié)點的參與并且指示總線操作因此應(yīng)被重新發(fā)布為全局總線操作)的判定。如果是,則所述過程進入到方塊620,這將在下面進行描述。另一方面,如果所述CR是未明確指示所述總線操作無法在本地一致性域中被服務(wù)的“重試”CR,則所述過程從方塊616返回到方塊610,其示出了主機232再次判定是否發(fā)布本地總線操作以為所述CPU請求服務(wù)。在這種情況下,主機232可以在所述判定中采用任何由所述CR提供的附加信息。在方塊610之后,所述過程進入上面描述的方塊612,或進入方塊620。
方塊620示出了主機232向數(shù)據(jù)處理系統(tǒng)中的所有處理節(jié)點102發(fā)布全局總線操作以便為所述CPU請求服務(wù)。如果全局總線讀取操作的CR未在方塊622指示“成功”,則主機232在方塊620重新發(fā)布所述全局總線操作直到接收到指示“成功”的CR。如果全局總線讀取操作的CR指示“成功”,則所述過程進入到方塊623和已經(jīng)被描述的之后的方塊。
因此,假設(shè)同一一致性域中的過程與它們的數(shù)據(jù)之間存在親密關(guān)系,則可以利用范圍限于請求主機的一致性域或其他小于整個全局范圍的受限范圍的廣播通信來頻繁地為所述CPU請求服務(wù)。如以上所述的數(shù)據(jù)傳送域的組合和一致性域因此不僅改進了數(shù)據(jù)訪問等待時間,而且還通過限制廣播通信的范圍減少了系統(tǒng)互連(和其他本地互連)上的通信量。
VIII.范圍預(yù)測現(xiàn)在參考圖7,其中示出了根據(jù)本發(fā)明的一個實施例的L2高速緩存230的主機232中的范圍預(yù)測邏輯250的示例性實施例的方塊圖表示。如上所述,可以采用范圍預(yù)測邏輯250來執(zhí)行在圖6的方塊610、614和616處示出的范圍選擇。
在一個優(yōu)選實施例中,范圍預(yù)測邏輯250包括用于生成廣播總線操作的范圍的靜態(tài)預(yù)測的未示出的邏輯。在一個實施例中,范圍預(yù)測邏輯250根據(jù)要被發(fā)布的總線操作(例如,讀取、RWITM、DClaim、DCBZ、寫入、部分寫入等)的事務(wù)類型(TTYPE)和本地L2高速緩存目錄302中的總線操作的目標(biāo)存儲器塊的當(dāng)前一致性狀態(tài)來生成所述靜態(tài)預(yù)測。
如圖7中進一步示出的,范圍預(yù)測邏輯250可以有利地包括基于歷史的預(yù)測邏輯700,預(yù)測邏輯700根據(jù)先前總線操作的實際范圍來為總線操作生成范圍預(yù)測。由于不同類的總線操作趨向于展示不同的行為,基于歷史的預(yù)測邏輯700為預(yù)測器陣列702的各種預(yù)測器704a-704n中的不同類的總線操作單獨記錄歷史信息。通常,如果正確地構(gòu)建操作類,則每個類中的總線操作的過去行為都將用作同一類中的未來總線操作的范圍的精確預(yù)測器。
在一個實施例中,每個預(yù)測器704都被實現(xiàn)為計數(shù)器。假設(shè)良好的軟件密切關(guān)系,每個操作類中的大多數(shù)總線操作都應(yīng)能夠只利用本地總線操作來服務(wù)。因此,在一個實施例中,每個計數(shù)器704都被初始化為代表全局操作范圍的初始值,由更新邏輯714為完全在本地一致性域中提供服務(wù)的關(guān)聯(lián)類中的每個連續(xù)總線操作來更新直到達到閾值(例如,3),并且此后指示關(guān)聯(lián)類中的總線操作的本地操作范圍,直到關(guān)聯(lián)類中的總線操作由本地處理節(jié)點102以外的參與者來提供服務(wù)。在此情況下,預(yù)測器704被更新邏輯714重置為其初始值。因此,在此實施例中,預(yù)測器704對總線操作的本地范圍的預(yù)測緩慢地飽和,但對不經(jīng)常發(fā)生的全局總線操作迅速做出反應(yīng)。在其他實施例中,當(dāng)然,預(yù)測器704可以只是遞減以響應(yīng)全局總線操作以便預(yù)測器704以相同速率對全局和本地范圍預(yù)測飽和。
盡管良好的軟件密切關(guān)系是典型的,但是在某些情況下,特定存儲器塊或存儲器頁可以展示較弱的密切關(guān)系并因此需要很大比例的全局總線操作。因此,基于歷史的預(yù)測邏輯700可以可選地包括模式字段708,其可以由硬件(例如,主機232)或軟件(例如,系統(tǒng)固件)來設(shè)置以導(dǎo)致一個或多個預(yù)測器704a-704n使用相反偏差來操作,或被解釋為具有相反偏差。利用相反偏差,預(yù)測器704的初始值代表本地操作范圍的預(yù)測,預(yù)測器704在閾值數(shù)量的操作(例如,3)在本地一致性域中被解決之后對全局操作范圍的指示飽和,并且預(yù)測器704在關(guān)聯(lián)類中的操作被在本地一致性域中服務(wù)時被更新邏輯714重置為本地范圍的預(yù)測。
如將被理解的,可以利用大量準(zhǔn)則集合中的任何準(zhǔn)則來構(gòu)造對應(yīng)于預(yù)測器704a-704n的類。在一個實施例中,這些準(zhǔn)則形成了一組讀取輸入720和一組更新輸入730,包括線程標(biāo)識符(TID)、總線操作(例如,讀取、RWITM、DClaim、DCBZ、寫、部分寫等)的事務(wù)類型(TTYPE)、指示目標(biāo)存儲器塊的內(nèi)容是指令還是數(shù)據(jù)的指令/數(shù)據(jù)(I/D)指示、指示請求的數(shù)據(jù)訪問是否與原子存儲器更新相關(guān)的原子指示(例如,CPU請求是否通過源處理器核心200執(zhí)行加載并保留或存儲條件指令來被觸發(fā)),以及LPC指示。
TID(其優(yōu)選地作為CPU請求的一部分或結(jié)合CPU請求從處理器核心200接收)唯一地標(biāo)識發(fā)布了將被服務(wù)的CPU請求的處理器線程。在其中多個處理器核心200共享L2高速緩存230的實施例中,所述TID優(yōu)選地包括處理器核心標(biāo)識符以便能夠消除不同處理器核心200的線程的歧義。例如,對于包括兩個處理器核心200(每個處理器核心200都支持兩個同時的硬件線程)的處理單元104的實施例,所述TID可以使用2個位來實現(xiàn)1位標(biāo)識源處理器核心200,1位標(biāo)識發(fā)布了所述CPU請求的處理器核心200的線程。
所述I/D指示也優(yōu)選地作為CPU請求的一部分或結(jié)合CPU請求由L2高速緩存230從處理器核心200接收。所述I/D指示可以由L1高速緩存226根據(jù)所述CPU請求是起因于指令取回未命中還是數(shù)據(jù)訪問來生成。
所述LPC指示提供了用于目標(biāo)存儲器塊的LPC是否駐留在包含L2高速緩存230的本地一致性域中的指示。所述LPC指示可以例如由主機232的BAR注冊器252以常規(guī)方法來生成。
根據(jù)讀取輸入720和更新輸入730組,至少部分地基于索引(至少包括TTYPE_group字段、TID字段以及LPC字段)的二進制擴展來構(gòu)造操作類。
TTYPE_group字段標(biāo)識了總線操作落入其中的特定一組TTYPE。在一個實施例中,總線操作的大量TTYPE由較少數(shù)量的TTYPE_group來表示。TTYPE_group不但可以基于總線操作TTYPE而且可以基于諸如I/D和原子指示之類的其他信息來構(gòu)造。例如,在一個實施例中,由四個TTYPE_group(指令取回、數(shù)據(jù)取回、加載并保留以及存儲,它們可以被有利地編碼為2-位TTYPE_group字段)來表示各種可能的總線操作。
如圖7所示,基于歷史的預(yù)測邏輯700包括用于生成讀取和更新索引的索引生成邏輯712,所述讀取和更新索引用來選擇性地訪問與特定操作類對應(yīng)的預(yù)測器陣列702中的預(yù)測器704。在實現(xiàn)以上定義的四個TTYPE_group的實施例中,索引生成邏輯712根據(jù)下表IV(破折號(“-”)表示“無關(guān)”),從所述總線操作TTYPE、I/D以及原子指示來生成讀取或更新索引的2-位TTYPE_group字段。索引生成邏輯712然后通過將所述TTYPE_group字段與所述TID和LPC指示鏈接在一起來形成完整的索引。
表IV

假設(shè)索引生成邏輯712生成包括2-位TTYPE_group字段、2-位TID字段和1-位LPC字段的5-位索引,預(yù)測器陣列702可以支持32(即,25)個操作類(每個都具有相應(yīng)的預(yù)測器704)的基于歷史的范圍預(yù)測。由索引生成邏輯712生成的更新索引可以被解碼器706用來更新特定預(yù)測器704的值,并且讀取索引可以被N到1多路轉(zhuǎn)換器710用來輸出特定預(yù)測器704的范圍預(yù)測。當(dāng)然,可以根據(jù)其他類準(zhǔn)則(例如,目標(biāo)存儲器地址的位子范圍等)來實現(xiàn)其他類和索引位。
還應(yīng)該注意,對于每個包括在讀取和更新索引內(nèi)的附加位,預(yù)測器704的數(shù)量可以(但不必)加倍。相反,可以與由所述索引中的主導(dǎo)位表示的特定準(zhǔn)則聯(lián)合建立單個計數(shù)器704。解碼器706和多路轉(zhuǎn)換器710可以被進一步實現(xiàn)成當(dāng)主導(dǎo)位被斷言時訪問該相應(yīng)的計數(shù)器704,而不管其他索引位的值。在其中特定類準(zhǔn)則可能比其他索引位更確定實際范圍結(jié)果的情況下,此類實現(xiàn)將是有利和所希望的。
現(xiàn)在參考圖8,其中示出了根據(jù)本發(fā)明的優(yōu)選實施例的由范圍預(yù)測邏輯250執(zhí)行的范圍預(yù)測的示例性方法。如圖所示,所述過程開始于方塊800,例如,響應(yīng)于在圖6的方塊610處由范圍預(yù)測邏輯250接收到將被發(fā)布的總線操作的TTYPE、L2高速緩存目錄302中的總線操作的目標(biāo)地址的本地一致性狀態(tài)以及一組讀取輸入720。然后,所述過程進入到方塊802,方塊802示出了范圍預(yù)測邏輯250判定TTYPE輸入指示由主機232發(fā)布的總線操作是總線讀取、總線RWITM還是總線DCBZ操作。如果否,則所述過程進入到下面描述的方塊810。另一方面,如果TTYPE輸入指示將被發(fā)布的總線操作是總線讀取、總線RWITM或總線DCBZ操作,則如果可能,范圍預(yù)測邏輯250中未示出的邏輯優(yōu)選地根據(jù)目標(biāo)存儲器塊的本地一致性狀態(tài)來預(yù)測所述總線操作的范圍。
也就是說,如果一致性狀態(tài)輸入指示就本地L2高速緩存目錄302而言的目標(biāo)地址的一致性狀態(tài)是In,則范圍預(yù)測邏輯250為所述總線操作預(yù)測了本地范圍,如方塊804和822所示。可替代地,如果一致性狀態(tài)輸入指示就本地L2高速緩存目錄302而言的目標(biāo)地址的一致性狀態(tài)是Ig,則范圍預(yù)測邏輯250為所述總線操作預(yù)測了全局范圍,如方塊808和814所示??商娲?,如果目標(biāo)地址并未與L2高速緩存目錄302中的In或Ig一致性狀態(tài)關(guān)聯(lián),則范圍預(yù)測邏輯250優(yōu)選地利用基于歷史的預(yù)測邏輯700來預(yù)測所述總線操作的范圍,如方塊820所示以及如參考圖9在下面更詳細(xì)地描述的。
現(xiàn)在參考方塊810,如果范圍預(yù)測邏輯250確定將被發(fā)布的總線操作是總線寫入或總線驅(qū)逐操作,則范圍預(yù)測邏輯250中未示出的邏輯優(yōu)選地基于LPC輸入來預(yù)測總線操作的范圍,如方塊812所示。因此,如果LPC輸入指示用于目標(biāo)地址的LPC不在本地處理節(jié)點104內(nèi),則范圍預(yù)測邏輯250為所述總線操作預(yù)測全局范圍(方塊814),否則,為所述總線操作預(yù)測本地范圍(方塊822)。
再次參考方塊810,如果TTYPE輸入指示所述總線操作是另一類操作,例如,總線DClaim操作,則范圍預(yù)測邏輯250優(yōu)選地利用基于歷史的預(yù)測邏輯700來預(yù)測總線操作的范圍,如方塊820所示。如果這樣,當(dāng)基于歷史的預(yù)測邏輯700指示本地范圍時,范圍預(yù)測邏輯250提供本地范圍預(yù)測(方塊822),而當(dāng)基于歷史的預(yù)測邏輯700指示全局范圍時,范圍預(yù)測邏輯250提供全局范圍預(yù)測(方塊814)。
現(xiàn)在參考圖9,其中示出了根據(jù)本發(fā)明的基于歷史的范圍預(yù)測的示例性過程的更詳細(xì)的邏輯流程圖。在圖7的實施例中,由基于歷史的預(yù)測邏輯700來實現(xiàn)所示的過程。
如圖所示,所述過程開始于方塊900并且此后進入到方塊902和904,它們分別示出了例如作為硬件加電重置操作和/或固件初始化過程的一部分的模式字段708和預(yù)測器704的初始化。此后,所述過程分為三叉并平行地進入方塊906、920和930中的每一個方塊。
方塊906表示基于歷史的預(yù)測邏輯700不斷循環(huán)直到接收到一組與將被發(fā)布的預(yù)期總線操作關(guān)聯(lián)的讀取輸入720為止。當(dāng)接收到一組讀取輸入720時,索引生成邏輯712生成讀取索引,如方塊908所示。響應(yīng)于接收到讀取索引,多路轉(zhuǎn)換器710從預(yù)測器陣列702選擇并輸出與由讀取索引標(biāo)識的操作類對應(yīng)的特定預(yù)測器704的值,如方塊910所示。如果對于當(dāng)前總線操作,范圍預(yù)測邏輯250已選擇了基于歷史的預(yù)測(例如,根據(jù)圖8的方法),則范圍預(yù)測邏輯250通過參考預(yù)測器值和模式字段708的值(如果存在)來確定范圍預(yù)測。例如,假設(shè)模式字段708(如果存在)被設(shè)置以便相關(guān)預(yù)測器704具有默認(rèn)的偏差,范圍預(yù)測邏輯250在預(yù)測器值低于飽和閾值時預(yù)測全局范圍,而在預(yù)測器值等于或高于飽和閾值時預(yù)測本地范圍。如果模式字段708被設(shè)置以便相關(guān)預(yù)測器704具有相反偏差,則預(yù)測相反。在方塊910之后,所述過程返回方塊906。
現(xiàn)在參考方塊920,基于歷史的預(yù)測邏輯700在方塊920循環(huán),直到從主機232接收到一組描述總線操作(已為其在本地互連114上接收到指示“成功”的組合響應(yīng))的更新輸入730為止。(主機232為每個總線操作維持狀態(tài)直到它成功地完成為止。)響應(yīng)于接收到一組更新輸入730,索引生成邏輯712為為其接收到組合響應(yīng)的總線操作生成更新索引,如在方塊922指示的。接著,如方塊924所示,更新邏輯714利用為總線操作接收的組合響應(yīng)來生成用于預(yù)測器704的更新,該更新被應(yīng)用到由解碼器706選擇的預(yù)測器704以響應(yīng)從索引生成邏輯712接收到更新索引。具體地說,如果“成功”CR指示總線操作由本地一致性域內(nèi)的窺探器122、236來服務(wù),則更新邏輯714輸出計數(shù)器遞增信號。如果“成功”CR指示總線操作由本地一致性域之外的窺探器122、236來服務(wù),則更新邏輯714輸出計數(shù)器重置信號。如果模式字段708指示將對其應(yīng)用更新信號的計數(shù)器704使用相反偏差來工作,則對這些更新信號的解釋變得相反。在方塊922之后,所述過程返回方塊920。
現(xiàn)在參考方塊930,基于歷史的預(yù)測邏輯700在方塊930循環(huán),直到接收到對模式字段930的更新為止。響應(yīng)于接收到對模式字段708的更新,基于歷史的預(yù)測邏輯700更新模式字段708以正確地反映哪個預(yù)測器704使用正向偏差工作以及哪個預(yù)測器704使用相反偏差工作,如方塊902所示。此外,受對模式字段708的更新影響的一個或多個預(yù)測器704在方塊904被初始化。此后,所述過程返回方塊930。
如所描述的,本發(fā)明提供了一種用于選擇或預(yù)測在數(shù)據(jù)處理系統(tǒng)的互連上傳輸?shù)膹V播操作的范圍的改進的方法和系統(tǒng)。根據(jù)本發(fā)明,通過參考以前成功的廣播操作的實際范圍來預(yù)測至少某些廣播操作的范圍。通過為不同類的操作維護操作范圍的單獨歷史指示,可以增強基于歷史的預(yù)測。
盡管參考優(yōu)選實施例具體示出并描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員將理解,在不偏離本發(fā)明的精神和范圍的情況下,可以在其中做出形式和細(xì)節(jié)上的各種修改。
權(quán)利要求
1.一種用于數(shù)據(jù)處理系統(tǒng)的高速緩沖存儲器,所述數(shù)據(jù)處理系統(tǒng)包括互連構(gòu)造并包括至少第一和第二一致性域,每個域都包含至少一個處理單元,所述高速緩沖存儲器包括數(shù)據(jù)陣列;所述數(shù)據(jù)陣列的內(nèi)容的高速緩存目錄;以及包括范圍預(yù)測邏輯的高速緩存控制器,所述范圍預(yù)測邏輯還包括多個預(yù)測器,每個預(yù)測器都為多個操作類中的一個相應(yīng)類的一個或多個先前操作指示所述互連構(gòu)造上的廣播的歷史范圍;索引生成邏輯,所述索引生成邏輯響應(yīng)于接收到一組表征將被發(fā)布的預(yù)期總線操作的讀取輸入,生成讀取索引以便由所述多個預(yù)測器中的一個預(yù)測器選擇范圍預(yù)測指示以用在所述預(yù)期總線操作的傳輸中;以及更新邏輯,所述更新邏輯響應(yīng)于接收到對成功完成的總線操作的組合響應(yīng),根據(jù)所述數(shù)據(jù)處理系統(tǒng)中的服務(wù)窺探器的位置來生成對所述多個預(yù)測器中的一個預(yù)測器的更新。
2.一種數(shù)據(jù)處理系統(tǒng)中的數(shù)據(jù)處理的方法,所述方法包括維護為在數(shù)據(jù)處理系統(tǒng)的互連上傳輸?shù)囊粋€或多個先前操作指示廣播的歷史范圍的預(yù)測器;以及通過參考所述預(yù)測器來預(yù)測性地選擇后續(xù)操作的廣播的范圍。
3.根據(jù)權(quán)利要求2的方法,其中所述數(shù)據(jù)處理系統(tǒng)包括至少第一和第二一致性域;以及所述預(yù)測性地選擇包括響應(yīng)于所述預(yù)測器的第一設(shè)置而選擇包括所述第一和第二一致性域兩者的廣播的第一范圍,以及響應(yīng)于所述預(yù)測器的第二設(shè)置而選擇包括所述第一一致性域并且不包括所述第二一致性域的廣播的第二范圍。
4.根據(jù)權(quán)利要求2的方法,其中所述維護包括在所述數(shù)據(jù)處理系統(tǒng)中的低級高速緩存處維護所述預(yù)測器。
5.根據(jù)權(quán)利要求2的方法,其中所述維護包括維護多個預(yù)測器,其中所述多個預(yù)測器中的每個預(yù)測器都指示處于多個操作類中的一個相應(yīng)類中的操作的廣播的歷史范圍。
6.根據(jù)權(quán)利要求2的方法,其中所述預(yù)測性地選擇包括在后續(xù)操作具有第一預(yù)定操作類型時,通過參考所述預(yù)測器來預(yù)測性地選擇所述操作的廣播的范圍;以及所述方法還包括在后續(xù)操作具有第二預(yù)定操作類型時,通過參考所述操作的目標(biāo)存儲器地址的一致性狀態(tài)來預(yù)測性地選擇所述操作的廣播的范圍。
7.根據(jù)權(quán)利要求2的方法,其中所述維護包括維護在預(yù)測更窄廣播范圍時飽和的飽和計數(shù)器。
8.根據(jù)權(quán)利要求7的方法,還包括反轉(zhuǎn)由所述飽和計數(shù)器指示的預(yù)測以響應(yīng)模式字段的設(shè)置。
9.一種數(shù)據(jù)處理系統(tǒng),所述數(shù)據(jù)處理系統(tǒng)包括至少第一和第二一致性域,每個域都包含至少一個包括高速緩沖存儲器的處理單元;連接所述第一和第二一致性域的互連構(gòu)造;以及在所述第一一致性域內(nèi)的范圍預(yù)測邏輯,所述范圍預(yù)測邏輯包括為在所述互連構(gòu)造上傳輸?shù)囊粋€或多個先前操作指示廣播的歷史范圍的預(yù)測器,其中所述范圍預(yù)測邏輯通過參考所述預(yù)測器來預(yù)測性地選擇后續(xù)操作的廣播的范圍。
10.根據(jù)權(quán)利要求9的數(shù)據(jù)處理系統(tǒng),其中所述范圍預(yù)測邏輯響應(yīng)于所述預(yù)測器的第一設(shè)置而預(yù)測性地選擇包括所述第一和第二一致性域兩者的廣播的第一范圍,以及響應(yīng)于所述預(yù)測器的第二設(shè)置而選擇包括所述第一一致性域并且不包括所述第二一致性域的廣播的第二范圍。
11.根據(jù)權(quán)利要求9的數(shù)據(jù)處理系統(tǒng),其中所述第一一致性域的所述高速緩沖存儲器包括所述范圍預(yù)測邏輯。
12.根據(jù)權(quán)利要求9的數(shù)據(jù)處理系統(tǒng),其中所述范圍預(yù)測邏輯包括多個預(yù)測器,每個預(yù)測器都指示處于多個操作類中的一個相應(yīng)類中的操作的廣播的歷史范圍。
13.根據(jù)權(quán)利要求9的數(shù)據(jù)處理系統(tǒng),其中所述范圍預(yù)測邏輯在后續(xù)操作具有第一預(yù)定操作類型時,通過參考所述預(yù)測器來預(yù)測性地選擇所述操作的廣播的范圍,并且在后續(xù)操作具有第二預(yù)定操作類型時,通過參考所述操作的目標(biāo)存儲器地址的一致性狀態(tài)來預(yù)測性地選擇所述操作的廣播的范圍。
14.根據(jù)權(quán)利要求9的數(shù)據(jù)處理系統(tǒng),其中所述預(yù)測器包括在預(yù)測更窄廣播范圍時飽和的飽和計數(shù)器。
15.根據(jù)權(quán)利要求14的數(shù)據(jù)處理系統(tǒng),其中所述范圍預(yù)測邏輯包括模式字段,并且其中所述范圍預(yù)測邏輯反轉(zhuǎn)由所述飽和計數(shù)器指示的預(yù)測以響應(yīng)所述模式字段的設(shè)置。
16.一種用于數(shù)據(jù)處理系統(tǒng)的高速緩沖存儲器,所述數(shù)據(jù)處理系統(tǒng)包括互連構(gòu)造并包括至少第一和第二一致性域,每個域都包含至少一個處理單元,所述高速緩沖存儲器包括數(shù)據(jù)陣列;所述數(shù)據(jù)陣列的內(nèi)容的高速緩存目錄;以及包括范圍預(yù)測邏輯的高速緩存控制器,其中所述范圍預(yù)測邏輯包括預(yù)測器,所述預(yù)測器為在所述互連構(gòu)造上由所述高速緩沖存儲器傳輸?shù)囊粋€或多個先前操作指示廣播的歷史范圍,其中所述范圍預(yù)測邏輯通過參考所述預(yù)測器來預(yù)測性地選擇后續(xù)操作的廣播的范圍。
17.根據(jù)權(quán)利要求16的高速緩沖存儲器,其中所述范圍預(yù)測邏輯響應(yīng)于所述預(yù)測器的第一設(shè)置而預(yù)測性地選擇包括所述第一和第二一致性域兩者的廣播的第一范圍,以及響應(yīng)于所述預(yù)測器的第二設(shè)置而選擇包括所述第一一致性域并且不包括所述第二一致性域的廣播的第二范圍。
18.根據(jù)權(quán)利要求16的高速緩沖存儲器,其中所述范圍預(yù)測邏輯包括多個預(yù)測器,每個預(yù)測器都指示處于多個操作類中的一個相應(yīng)類中的操作的廣播的歷史范圍。
19.根據(jù)權(quán)利要求16的高速緩沖存儲器,其中所述范圍預(yù)測邏輯在后續(xù)操作具有第一預(yù)定操作類型時,通過參考所述預(yù)測器來預(yù)測性地選擇所述操作的廣播的范圍,并且在后續(xù)操作具有第二預(yù)定操作類型時,通過參考記錄在所述高速緩存目錄中的所述操作的目標(biāo)存儲器地址的一致性狀態(tài)來預(yù)測性地選擇所述操作的廣播的范圍。
20.根據(jù)權(quán)利要求16的高速緩沖存儲器,其中所述預(yù)測器包括在預(yù)測更窄廣播范圍時飽和的飽和計數(shù)器。
21.一種處理單元,所述處理單元包括根據(jù)權(quán)利要求16的高速緩沖存儲器;以及至少一個連接到所述高速緩沖存儲器的處理器核心。
全文摘要
根據(jù)一種數(shù)據(jù)處理的方法,維護為在數(shù)據(jù)處理系統(tǒng)的互連上傳輸?shù)囊粋€或多個先前操作指示廣播的歷史范圍的預(yù)測器。通過參考所述預(yù)測器來預(yù)測性地選擇后續(xù)操作的廣播的范圍。
文檔編號G06F12/08GK1873628SQ20061008467
公開日2006年12月6日 申請日期2006年5月29日 優(yōu)先權(quán)日2005年5月31日
發(fā)明者B·L·古德曼, G·L·古思里, W·J·施塔克, J·A·施蒂切利, D·E·威廉姆斯 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1