一般來說,本公開涉及電子領域。更具體來說,本發(fā)明的一個實施例涉及歸屬代理數據(homeagentdata)和存儲器管理。
背景技術:
可使用監(jiān)聽總線或者基于目錄的協(xié)議來使計算機系統(tǒng)中的高速緩存存儲器保持為一致(coherent)。在任一種情況下,存儲器地址與系統(tǒng)中的特定位置關聯。這個位置一般稱作存儲器地址的“歸屬節(jié)點”。
在基于目錄的協(xié)議中,處理/高速緩存代理可向歸屬節(jié)點發(fā)送訪問對應“歸屬代理”與其關聯的存儲器地址的請求。相應地,這類計算機系統(tǒng)的性能可直接取決于管理歸屬代理數據和/或存儲器的有效程度。
技術實現要素:
本發(fā)明提供了一種設備,包括:從第二代理接收與目標地址對應的請求的第一代理;目錄高速緩存,耦合到所述第一代理,存儲與耦合到所述第一代理的多個高速緩存代理對應的數據;存儲器,耦合到所述第一代理,存儲與所述請求對應的數據;以及擦除器邏輯,校正與所述目標地址對應的所述存儲器中的位置的錯誤。
本發(fā)明還提供了一種設備,包括:從第二代理接收與目標地址對應的請求的第一代理;目錄高速緩存,耦合到所述第一代理,存儲與耦合到所述第一代理的多個高速緩存代理對應的數據;存儲器,耦合到所述第一代理,存儲與所述請求對應的數據;以及規(guī)劃邏輯,響應與所述目錄高速緩存對應的多個錯誤超過閾值而規(guī)劃所述目錄高速緩存的索引或路。
本發(fā)明還提供了一種方法,包括:在第一代理接收與目標地址對應的請求;以及將對應于耦合到所述第一代理的多個高速緩存代理的數據存儲在目錄高速緩存中;將對應于所述請求的數據存儲在存儲器中;以及根據所述第一代理將對應于所述請求的所述數據的校正形式寫到對應于所述目標地址的所述存儲器的位置,來校正與所述目標地址對應的所述存儲器的位置的錯誤。
本發(fā)明還提供了一種系統(tǒng),包括:存儲目錄的存儲器;接收與所述存儲器中的目標地址對應的請求的第一代理,其中所述存儲器存儲與所述請求對應的數據;以及目錄高速緩存,耦合到所述第一代理,存儲與耦合到所述第一代理的多個高速緩存代理對應的數據,其中,所述目錄高速緩存中的已存儲數據指明所述多個高速緩存代理的哪一個具有與所述目標地址對應的所述數據的副本,其中所述第一代理包括下列至少一個:校正與所述目標地址對應的所述存儲器中的位置的錯誤的擦除器邏輯,或者響應與所述目錄高速緩存對應的多個錯誤超過閾值而規(guī)劃所述目錄高速緩存的索引或路的規(guī)劃邏輯。
附圖說明
參照附圖來提供具體實施方式。附圖中,參考標號最左邊的數字標識首次出現該參考標號的附圖。不同附圖中相同的參考標號的使用表示相似或相同項。
圖1-2和圖8-9示出可用來實現本文所述的各個實施例的計算系統(tǒng)的實施例的框圖。
圖3-7示出根據一些實施例的流程圖。
具體實施方式
在以下描述中,提出許多具體細節(jié),以便提供對各個實施例的透徹了解。但是,即使沒有具體細節(jié)也可實施一些實施例。在其它情況下,沒有詳細描述眾所周知的方法、過程、組件和電路,以免影響對具體實施例的理解。
本文所述的一些實施例一般涉及在歸屬代理例如通過使用系統(tǒng)地址來擦除(scrubbing)存儲器。存儲器擦除可涉及存儲器裝置中錯誤的檢測和/或校正。正如本文將例如參照圖3和圖4進一步論述,擦除可作為需求擦除(demandscrub)或巡查擦除(patrolscrub)來執(zhí)行。
另外,在一些實施例中,一個或多個毒性狀態(tài)位(poisonstatusbit)可用于避免或者至少降低在首次遇到不可校正錯誤時發(fā)信號通知關于致命錯誤的可能性。此外,一個實施例確保不存在存儲器數據的靜寂破壞,和/或不會將已破壞數據遞交(commit)給非易失性存儲器。
此外,在一個實施例中,動態(tài)規(guī)劃來自目錄高速緩存的索引/路(index/way)。一般來說,目錄高速緩存(本文中又稱作“dir$”,在一個實施例中,它可在與歸屬代理相同的集成電路管芯上)存儲可由系統(tǒng)中的一個或多個代理來存儲的與地址和對應擁有者有關的信息。例如,高速緩存可指明哪些代理可能正存儲與給定地址關聯的所請求數據并且因此是在那個地址的數據的擁有者。相應地,假定目錄包含與系統(tǒng)的高速緩存代理中的一致性單元(例如存儲器或高速緩存的高速緩存行或高速緩存塊或者另一個部分)的高速緩存狀態(tài)有關的信息,例如為了減少監(jiān)聽業(yè)務,諸如減少或避免監(jiān)聽廣播。另外,由于有效地保持目錄高速緩存,所以設計預算可通過更小的目錄高速緩存來降低。
一般來說,可使用監(jiān)聽總線或者基于目錄的協(xié)議來使計算系統(tǒng)中的高速緩存存儲器保持為一致。在任一種情況下,系統(tǒng)存儲器地址可與系統(tǒng)中的特定位置關聯。這個位置一般稱作存儲器地址的“歸屬節(jié)點”。在基于目錄的協(xié)議中,處理/高速緩存代理可向歸屬節(jié)點發(fā)送訪問“歸屬代理”與其關聯的存儲器地址的請求。此外,在分布式高速緩存一致性協(xié)議中,高速緩存代理可向控制對相應存儲器空間的一致訪問的歸屬代理發(fā)送請求。歸屬代理又負責確保從擁有所請求數據的存儲器或者高速緩存代理向請求方返回所請求數據的最新副本。例如,歸屬代理還可負責在請求是針對獨占副本時作廢(invalidate)其它高速緩存代理處的數據的副本。為此,歸屬代理一般可監(jiān)聽每一個高速緩存代理或者依靠目錄來跟蹤其中數據可存在的一組高速緩存代理。
各種計算系統(tǒng)可用于實現本文所述的實施例,例如參照圖1和圖8-9所述的系統(tǒng)。更具體來說,圖1示出根據本發(fā)明的一個實施例的計算系統(tǒng)100的框圖。系統(tǒng)100可包括一個或多個代理102-1至102-m(本文中統(tǒng)稱為“多個代理102”或者更一般地稱為“代理102”)。在一個實施例中,代理102的一個或多個可以是例如參照圖8-9所述的計算系統(tǒng)等計算系統(tǒng)的組件的任一個。
如圖1所示,代理102可經由網絡結構104進行通信。在一個實施例中,網絡結構104可包括計算機網絡,它允許各個代理(例如計算裝置)傳遞數據。在一個實施例中,網絡結構104可包括一個或多個互連(或者互連網絡),它們經由串行(例如點對點)鏈路和/或共享通信網絡進行通信。例如,一些實施例可便于允許與全緩沖雙列直插存儲器模塊(fbd)的通信的鏈路上的組件調試或驗證,例如,其中fbd鏈路是用于將存儲器模塊耦合到主控制器裝置(例如處理器或存儲集線器)的串行鏈路。調試信息可從fbd信道主機傳送,使得可通過信道業(yè)務軌跡捕捉工具(例如一個或多個邏輯分析器)沿信道觀測調試信息。
在一個實施例中,系統(tǒng)100可支持分層協(xié)議方案,它可包括物理層、鏈路層、路由選擇層、傳輸層和/或協(xié)議層。結構104還可便于對于點對點或共享網絡從一個協(xié)議(例如高速緩存處理器或高速緩存感知存儲控制器)到另一個協(xié)議的數據(例如采取分組形式)的傳輸。另外,在一些實施例中,網絡結構104可提供遵守一個或多個高速緩存一致協(xié)議的通信。
此外,如圖1中的箭頭方向所示,代理102可經由網絡結構104傳送和/或接收數據。因此,對于通信,一些代理可利用單向鏈路,而其它代理可利用雙向鏈路。例如,一個或多個代理(例如代理102-m)可傳送數據(例如經由單向鏈路106),其它代理(例如代理102-2)可接收數據(例如經由單向鏈路108),而某些(某個)代理(例如代理102-1)可傳送和接收數據(例如經由雙向鏈路110)。
另外,代理102的至少一個可以是歸屬代理,而代理102的一個或多個可以是請求或高速緩存代理,正如本文將會進一步論述。如圖所示,至少一個代理(僅示出一個代理102-1)可包括或者有權訪問擦除器(scrubber)或規(guī)劃邏輯(mapoutlogic)(或引擎)111,以便分別根據需求或巡查擦除來擦除存儲器中的錯誤(本文中將會例如參照圖2-3進一步論述)或者規(guī)劃存儲器的部分(例如,諸如目錄高速緩存122的行或條目等部分,正如本文將會例如參照圖7進一步論述)。此外,在一個實施例中,代理102的一個或多個(僅示出一個代理102-1)可有權訪問存儲器(它可以是代理專用的或者與其它代理共享的)、如存儲器120。另外,代理102的一個或多個(僅示出一個代理102-1)可將條目保存在一個或多個存儲裝置(僅對代理102-1示出一個,例如目錄高速緩存122,例如實現為表、隊列、緩沖器、鏈接列表等等)中,以便跟蹤與代理102-1(作為歸屬代理)所存儲/保存的項有關的信息。在一些實施例中,代理102的每個或者至少一個可耦合到存儲器120和/或對應目錄高速緩存122,它們是在與代理相同的管芯(die)上或者是另外由代理可訪問的。
圖2是根據一個實施例的計算系統(tǒng)的框圖。系統(tǒng)200可包括多個插槽(socket)202-208(示出四個,但一些實施例可具有更多或更少的插槽)。在一個實施例中,各插槽可包括處理器。另外,各插槽可經由例如參照圖9所述的點對點(ptp)鏈路耦合到其它插槽。如針對圖1參照網絡結構104所述,各插槽可耦合到例如由可包括動態(tài)隨機存取存儲器(dram)的多個雙列直插存儲器模塊(dimm)所形成的系統(tǒng)存儲器的本地部分。
如圖2所示,各插槽可耦合到存儲控制器(mc)/歸屬代理(ha)(例如mc0/ha0至mc3/ha3)。存儲控制器可耦合到對應的本地存儲器(標記為mem0至mem3),它們可以是系統(tǒng)存儲器(例如圖9的存儲器912)的一部分。在一些實施例中,存儲控制器(mc)/歸屬代理(ha)(例如mc0/ha0至mc3/ha3)可與圖1的代理102-1(例如包括邏輯111等)相同或相似,并且標記為mem0至mem3的存儲器可與圖1的存儲器120相同或相似。另外,在一個實施例中,mem0至mem3可配置成將數據鏡像(mirror)為例如主(master)和從(slave)。另外,在一些實施例中,系統(tǒng)200的一個或多個組件可包含在同一個集成電路管芯上。
因此,例如圖2所示的實現可用于具有鏡像的插槽無粘接配置(asocketgluelessconfigurationwithmirroring)。例如,可通過ptp鏈路將分配給存儲控制器(例如mc0/ha0)的數據鏡像到另一個存儲控制器(例如mc3/ha3)。另外,與存儲控制器mc3/ha3關聯的目錄可在鏡像副本時(uponacopytomirror)以未知(u)狀態(tài)來初始化。在故障轉移(failover)到這個控制器(例如由于對這個存儲控制器的在線服務調用)時,可從u狀態(tài)重構目錄。
圖3示出根據一個實施例的需求擦除操作的流程圖。一般來說,需求擦除涉及主動清理正常操作期間所遇到的可校正軟存儲器(例如dram或dimm)錯誤。例如,在遇到關于讀操作的可校正錯誤時,存儲控制器可向歸屬代理發(fā)信號通知關于可校正響應。歸屬代理又可確保將經校正的數據(例如存儲在其緩沖器中,它可存儲在歸屬代理中或者另外由歸屬代理可訪問)寫回到存儲器(例如圖1的存儲器120和/或圖3的mem0-mem3)。
參照圖3,“ca0”表示高速緩存代理(它可以是圖1的代理之一和/或圖2中例如插槽202-208或mc0-mc3等組件之一,取決于實現),以及“ha”表示歸屬代理(它可以是圖1的代理之一和/或圖2中例如mc0-mc3等組件之一,取決于實現)。
如圖所示,來自ca0的(例如讀取數據的)rddata請求引起對存儲控制器(ha)的讀操作,以便從存儲器讀取數據。這種讀取引起corr(或者經校正的)響應(例如指明存儲控制器ecc(錯誤校正碼)邏輯成功地校正存儲器中、如dimm中的瞬態(tài)錯誤)。ha將經校正的數據返回給請求方ca0(標記為“datae_cmp”,指明數據錯誤校正完成)。另外,單獨地或者在后臺,ha可發(fā)起對存儲器的寫操作(標記為“scrub/dirwrite”),其中寫操作可更新目錄(例如圖1的目錄122)以及將經校正的數據寫回到存儲器,這允許數據的后續(xù)讀操作沒有招致(incur)一遍ecc校正(anecccorrectionpass)的等待時間。
圖4示出根據一個實施例的巡查擦除的流程圖。一般來說,巡查擦除器主動清理可校正軟存儲器(例如dram或dimm)錯誤。在一個實施例中,遇到可校正錯誤的巡查擦除器發(fā)起的存儲器讀取將導致采用經校正的數據的存儲器寫入。
參照圖4,“ha”表示歸屬代理(它可以是圖1的代理之一和/或圖2中例如mc0-mc3等組件之一,取決于實現),以及“存儲器”表示本地存儲器或者耦合到ha并且由ha管理的存儲器(例如圖1的存儲器120和/或圖3的mem0-mem3)。
在一個實施例中,ha的邏輯111可采用下列一個或多個來編程:地址范圍(例如,對其將執(zhí)行擦除或者錯誤檢測/校正),步幅(例如,指明在執(zhí)行擦除操作之后如何遞增地址),以及間隔(例如,指明必須執(zhí)行擦除操作的頻度)。
如圖4所示,ha向存儲器發(fā)送讀操作(例如,讀操作源自ha而不是高速緩存代理)。對讀操作的標準響應由存儲器來確認(如圖4中由“ack”標記表示)。另外,ha巡查地址范圍(由addr++標記表示),讀取數據,并且將由存儲控制器校正的任何數據(例如,由corr表示)主動寫到存儲器。因此,經校正的數據的未來讀操作不會招致ecc嘗試的等待時間。更具體來說,如圖4所示,ha向存儲器發(fā)出讀取,接收ack,這次向下一個地址發(fā)送另一個讀取(如“addr++”所示),接收對應ack,向存儲器發(fā)送下一個讀取(它如corr標記所示經過校正),接收corrack,將經校正的數據寫到存儲器,以及接收確認(ack)(例如,指明擦除寫入(write)已經完成)。
在一個實施例中,巡查和需求擦除邏輯對系統(tǒng)地址(例如,諸如快速路徑接口(qpi)地址等)而不是壓縮“裝置級”地址進行操作。這意味著,巡查和需求擦除引擎可利用在歸屬代理中實現的前向推進算法(forwardprogressalgorithm)。對于巡查擦除器,需要被擦除的適當系統(tǒng)地址范圍、基于系統(tǒng)交織的地址遞增或步幅以及擦除間隔可在歸屬代理寄存器(例如,控制和狀態(tài)寄存器(csr))中編程。
在巡查擦除器已經完成擦除或者檢查地址范圍之后,它可執(zhí)行下列步驟:(1)觸發(fā)中斷(例如平臺管理中斷(pmi)),例如以便通知(alert)軟件抽象層(例如bios(基本輸入/輸出系統(tǒng))),使得bios可對ha寄存器重新編程,以便發(fā)起下一個地址范圍的巡查擦除;或者(2)設置完成位,bios可對它進行輪詢以了解發(fā)起下一個地址范圍的巡查擦除的時間。
如上所示,巡查擦除器可對于由軟件(例如bios)所編程的地址范圍進行操作。對于這個范圍內的各行(例如高速緩存行),擦除器發(fā)起(launch)對存儲控制器的讀取。如果巡查擦除器接收到對讀操作的校正響應,它則向同一個地址發(fā)出寫入。當執(zhí)行寫操作時,可使用高速緩存目錄和毒性位的用戶編程值,正如本文中例如參照圖5或圖6進一步論述。這個特征可用于有效地清除存儲器中的中毒數據(poisoneddata)(包括例如數據行)。
根據一個實施例,擦除器可按照下列偽代碼進行操作:
hiaddr-擦除范圍的高地址
loaddr-擦除范圍的低地址
curraddr-擦除器正對curraddr進行操作
stride-在各擦除操作之后將curraddr遞增這個量(例如8路128b交織將要求這個值設置在8×128,這還要求兩遍(128b高速緩存行一半的每個64b一遍)
scrub_enable_pmi-當編程范圍的擦除完成時發(fā)起(fire)pmi
scrub_range_done-當前編程范圍的擦除已經完成
scrub_ctr-每隔2**cpu時鐘發(fā)起擦除操作
scrub_en-啟用巡查擦除器
scrub_withuser_poison-在擦除寫入時,使用用戶定義的毒性值
scrub_user_poison_val-對擦除寫操作使用的毒性值
scrub_with_user_dirbits-在擦除寫入時,使用用戶定義的dirbits值
scrub_user_dkbits_val-對擦除寫操作使用的dirbits值
在一個實施例中,scrub_ctr缺省為0xffff。另外,curraddr可設置成loaddr,除非請求從除了范圍的底部之外的位置進行擦除。
相應地,在一些實施例中,需求或巡查擦除主動清理存儲器中的軟錯誤。這又減少對存儲器的相同位置的后續(xù)訪問的ecc嘗試的等待時間處罰。它還防止多個軟錯誤隨時間積累。多個軟錯誤可能會使數據變成不可校正。另外,巡查擦除器邏輯可在系統(tǒng)地址空間中操作,因此,配置該邏輯將是固件建立系統(tǒng)地址映射所采用的算法的自然擴展。此外,ha可再使用前向推進算法來確保擦除與結構請求之間的公平性。另一方面,如果擦除器邏輯使用壓縮(裝置級)地址來實現,則確保前向推進變得更難且不太有效。這是因為存儲控制器可能必須為巡查擦除器請求和ha請求提供唯一前向機制(forwardmechanism)。由于擦除器由ha控制,所以它可為擦除和結構請求提供相似的服務質量保證。此外,在一個實施例中,巡查擦除器日志(patrolscrubberlog)可包括允許系統(tǒng)固件從存儲器清理毒性數據的特征,正如下面進一步論述。這防止在使用中毒數據時的致命錯誤。
圖5和圖6示出根據一些實施例、在歸屬代理存儲和傳播中毒數據的流程圖。在一個實施例中,歸屬代理保持存儲器的一部分的毒性狀態(tài)位、如存儲器的一個或多個位(包括例如對于64b行邊界)。毒性狀態(tài)保持和更新可經由下列之一來引入:
(1)高速緩存代理對歸屬代理的寫回設置了毒性位。在一個實施例中,毒性位設置在例如數據有效載荷換位(flit)的位52中。存儲器的對應行或部分使用特殊目錄編碼遞交給存儲器。這種編碼可利用待設置的目錄編碼的位12(第13位),指明數據中毒。注意,目錄編碼的較低12位(0-11)可包含標準mesi/所有權列表信息(其中mesi分別表示修改、獨占、共享、無效存儲器狀態(tài))。目錄/毒性可保存在存儲器的備用ecc位中。
(2)從存儲器的讀取產生未校正錯誤-在這種情況下,歸屬代理將向請求方發(fā)送中毒數據(假定要求歸屬代理發(fā)送數據,并且沒有接收到對那個地址的寫回)。相應地,如果請求要求目錄更新,則歸屬代理將采用所設置的中毒位向存儲器寫回存儲器的部分(例如行)。注意,在產生不可校正錯誤的讀取時,目錄編碼(除了數據之外)可能不可靠。因此,目錄控制器邏輯需要向系統(tǒng)中的所有高速緩存代理廣播監(jiān)聽(snoop)。但是,在鏡像期間,歸屬代理將把未校正讀取透明地故障轉移到鏡像歸屬代理,與返回中毒的數據相反。
(3)從存儲器的讀取返回中毒目錄編碼(并且沒有不可校正錯誤產生)。注意,在這種情況下,目錄編碼本身是正確的,但是數據可能不可靠。在這種情況下,目錄控制器可使用目錄編碼來選擇性地發(fā)送監(jiān)聽。例如,歸屬代理將向請求方發(fā)送中毒數據(假定要求歸屬代理發(fā)送數據,并且沒有接收到對那個地址的寫回)。但是,在鏡像期間,歸屬代理將把中毒讀取透明地故障轉移到鏡像歸屬代理,與在一個實施例中返回中毒的數據相反。此外,有可能的是,從存儲器不正確地取出的行由于對相同地址的清掃寫回(cleanwriteback)(隱式或顯式)而使其毒性位重置。但是,部分寫回將繼續(xù)使毒性位保持被設置。存儲器中標記為中毒的一致行將要求全行寫入,以便清除毒性位(例如,使用invitoe/wbmtoi組合,它們指明cpu已經進行對全高速緩存行的存儲而沒有首先對它進行讀取)。另外,在一些實施例中,能夠使周巡查擦除器邏輯來選擇性地清除存儲器中的毒性位。
參照圖5,“ca0”和“ca1”表示高速緩存代理(它們可以是圖1的代理之一和/或圖2中例如插槽202-208或mc0-mc3等組件之一,取決于實現),“ha”表示歸屬代理(它可以是圖1的代理之一和/或圖2中例如mc0-mc3等組件之一,取決于實現),以及“存儲器”表示本地存儲器或者耦合到ha并且由ha管理的存儲器(例如圖1的存儲器120和/或圖3的mem0-mem3)。
如圖5所示,cal(它可配置為節(jié)點控制器或委托代理(proxyagent))向ha發(fā)出wbm2e/wbedata(保留所有權e的高速緩存行寫回)。在一個實施例中,這個數據包括設置的毒性位。ha將數據寫到存儲器,并且目錄繼續(xù)指向作為獨占擁有者的ca1。設置毒性位。ca0執(zhí)行相同地址的rdinvown(例如獲取獨占所有權的讀操作)。由于目錄指向作為擁有者的ca1,所以ha向ca1發(fā)送snpinvown(它發(fā)送監(jiān)聽以廢除(invalid)其它高速緩存代理、本例中為ca1中的所有權)。ca1靜寂地驅逐(castout)該行,因此它采用rspi(指明響應是無效的)來響應snpinvown。
在接收到監(jiān)聽響應時,ha將數據從存儲器發(fā)送給ca0。由于毒性位被設置,所以ha向ca0發(fā)送中毒數據。此外,由于行的新擁有者為ca0,所以ha將目錄更新到e@ca0。它繼續(xù)使數據的毒性位保持被設置。ca0將檢查它是否消耗(consume)數據。
參照圖6,存在與圖5的如下變化:
(1)在接收到snpinvown時,ca1采用全行寫回進行響應。寫回數據不再中毒。當ha接收到非中毒數據時,它繼續(xù)將其寫到存儲器。將目錄更新到e@ca0,在存儲器中進一步清除毒性位。
(2)ha向ca0發(fā)送數據,數據不再中毒。
相應地,一個實施例允許系統(tǒng)在首次遇到不可校正錯誤時沒有發(fā)信號通知關于致命錯誤。而是只有消耗中毒數據的過程才需要被終止/刪除(terminated/killed)。此外,一個實施例確保不存在存儲器數據的靜寂破壞,和/或不會將已破壞數據遞交給非易失性存儲器(例如參照圖8或圖9所述的非易失性存儲器)。
圖7示出根據一個實施例、動態(tài)規(guī)劃來自目錄高速緩存的索引/路的方法700的流程圖。在一個實施例中,參照圖1-2和圖8-9所述的各種組件可用來執(zhí)行參照圖7所述操作的一個或多個。例如,歸屬代理(或者歸屬代理內的邏輯,例如圖1的代理102-1、圖2的歸屬代理、圖8或圖9的組件等等中的規(guī)劃邏輯)可在各個實施例中執(zhí)行方法700的操作。
如圖1所示,歸屬代理可包括用于高速緩存頻繁使用的目錄標簽(例如,各目錄標簽以64b高速緩存行粒度來跟蹤所有權)的目錄高速緩存(例如高速緩存122)。在一個實施例中,目錄可跟蹤包括ioh高速緩存代理(如參照圖8的芯片組806或者圖9的芯片組920所述的輸入/輸出集線器高速緩存代理,或者它可另外耦合到插槽或處理器以提供i/o功能性)的高達64個高速緩存代理和節(jié)點控制器/委托代理的所有權。目錄高速緩存可以是存儲在由ha控制或者是由ha可訪問的存儲器(例如圖1的存儲器120或者圖3的mem0-mem3)中的全目錄的(全部或部分的)備份。例如,對ha的高速緩存行請求可在目錄高速緩存中生成并行查找表來獲得所有權信息。
在一些實施例中,目錄對于存儲器的一部分(例如高速緩存行)跟蹤下列一個或多個:無效行,獨占所有權,正好一個共享者,和/或經由粗略共享列表(coarsesharinglist)的多個共享者。經由目錄來跟蹤高速緩存行(或者存儲器的其它部分)的所有權允許對高速緩存代理的子集的定向監(jiān)聽;因而降低對系統(tǒng)結構的監(jiān)聽帶寬需求。
在一個實施例中,耦合到目錄高速緩存(未示出)的邏輯提供動態(tài)禁用例如因潛在缺陷而已經成為硬錯誤源的高速緩存條目(或其它部分)的機制。目錄高速緩存存儲字段可經過奇偶校驗保護,并且可檢測單個比特錯誤。通過主動禁用遇到持續(xù)奇偶校驗錯誤的高速緩存條目,靜寂數據破壞的可能性可顯著降低。目錄高速緩存邏輯例如可禁用多路(例如高達16路),而與目錄高速緩存索引無關。在一個實施例中,可編程錯誤閾值可確定需要發(fā)生以引起來自目錄高速緩存的特定索引和/或路的規(guī)劃的奇偶校驗錯誤的數量。目錄高速緩存邏輯還可防止一次性軟錯誤不必要地占用(例如16個)寄存器跟蹤條目其中之一。在一些實施例中,將高速緩存陣列組織成8k集合(在兩個物理組(physicalbank)上劃分),其中每個集合16路。各路可具有三個字段:一個30位標簽字段以及保存128字節(jié)核心高速緩存行的兩個64字節(jié)伙伴(buddy)的mesi和所有權信息的兩個12位字段。在一個實施例中,各字段可經過奇偶校驗保護。
在一個實施例中,字段(可實現為cam(內容可尋址存儲器)可包括下列項:
參照圖7,在接收到對目錄高速緩存的地址查找702時,可確定目錄高速緩存中的奇偶校驗錯誤是否在查找期間已經發(fā)生704。如果沒有發(fā)生奇偶校驗錯誤,則命中/未命中信令在操作706發(fā)生(例如以標準方式指明命中/未命中)。否則,在操作708,可訪問已登記的(registered)cam以查找命中,然后可將error_count[2:0]遞增,例如遞增到在操作710所確定的可編程閾值。
在操作708,在一個實施例,如果條目在cam寄存器中不存在,則記錄新條目。如果所有條目全滿,則可斷言目錄高速緩存溢出位。如果在一路以上指明奇偶校驗錯誤,則可僅使一個錯誤計數遞增。但是,目錄高速緩存可調度所檢測的各奇偶校驗錯誤的擦除。這確保一次性軟錯誤不會對后續(xù)訪問引起奇偶校驗錯誤。在cam具有命中、但目錄高速緩存指明沒有奇偶校驗錯誤(即,原始記錄條目為軟錯誤)的情況下,將錯誤計數遞減一。此外,零的錯誤計數又將作廢對應cam寄存器條目。在一個實施例中,在條目命中編程錯誤閾值之后沒有錯誤計數遞增或遞減可發(fā)生。在一些實施例中,閾值可缺省為二。
在一個實施例中,cam操作與每一個目錄高速緩存查找并行執(zhí)行。目錄高速緩存索引和組信息可用于cam操作。在cam命中時,將對條目的錯誤計數與編程錯誤閾值進行比較。如果計數在操作時等于閾值,則cam條目中保存的路被看作禁用。禁用信息可用于掩蔽對那一路的命中或分配。已經命中閾值的條目將被看作禁周,直到cam寄存器在系統(tǒng)狀態(tài)重置時被重置。這些日志可在系統(tǒng)狀態(tài)重置之后被讀出和重新編程,以便避免重新發(fā)現潛在缺陷的懲罰。
參照圖7,如果錯誤的數量高于極限(或閾值),則可發(fā)信號通知關于可恢復錯誤,并且可規(guī)劃組/路(set/way)。否則,在操作714,經校正的錯誤可以是具有未命中的信號(correctederrormaybesignalswithamissatoperation714)。相應地,一些實施例動態(tài)規(guī)劃目錄高速緩存的索引/路。規(guī)劃索引/路可防止部分由于來自查找索引/路的潛在缺陷的奇偶校驗錯誤而與為目錄標簽訪問存儲器關聯的附加等待時間。這類實施例還可降低目錄高速緩存中的任何索引/路的靜寂數據破壞的可能性。
圖8示出計算系統(tǒng)800的一個實施例的框圖。圖1的代理102的一個或多個可包括計算系統(tǒng)800的一個或多個組件。另外,系統(tǒng)800的各種組件可包括目錄高速緩存(例如,諸如圖1的目錄高速緩存122等)和/或擦除器或規(guī)劃邏輯(例如圖1的邏輯111),如圖8所示。但是,目錄高速緩存和/或擦除器邏輯可設置在整個系統(tǒng)800的各個位置,包括或排除所示的位置。計算系統(tǒng)800可包括耦合到互連網絡(或總線)804的一個或多個中央處理單元(cpu)802(它在本文中統(tǒng)稱為“多個處理器802”或者更一般地稱為“處理器802”)。處理器802可以是任何類型的處理器,例如通用處理器、網絡處理器(它可處理通過計算機網絡805所傳遞的數據)等,(包括精簡指令集計算機(risc)處理器或復雜指令集計算機(cisc))。此外,處理器802可具有單核或多核設計。多核設計的處理器802可將不同類型的處理器核心集成到同一個集成電路(ic)管芯上。多核設計的處理器802還可實現為對稱或不對稱多處理器。
處理器802可包括一個或多個高速緩存(例如不同于所示目錄高速緩存122),它/它們在各個實施例中可以是專用和/或共享的。一般來說,高速緩存存儲與存儲在其它位置或者先前計算的原始數據對應的數據。為了減少存儲器訪問等待時間,一旦數據存儲在高速緩存中,則可通過訪問經高速緩存的副本而不是重取或重新計算原始數據來進行將來的使用。高速緩存可以是存儲由系統(tǒng)800的一個或多個組件使用的電子數據(例如包括指令)的任何類型的高速緩存,例如第1級(l1)高速緩存、第2級(l2)高速緩存、第3級(l3)、中間級高速緩存、最后一級高速緩存(llc)等等。另外,這種(這類)高速緩存可位于各個位置(例如,在本文所述的包括圖1、圖2、圖8或圖9的系統(tǒng)的計算系統(tǒng)的其它組件的內部)。
芯片組806還可耦合到互連網絡804。此外,芯片組806可包括圖形存儲控制集線器(gmch)808。gmch808可包括耦合到存儲器812的存儲控制器810。存儲器812可存儲數據,例如包括由處理器802或者與計算系統(tǒng)800的組件進行通信的任何其它裝置運行的指令序列。另外,在本發(fā)明的一個實施例中,存儲器812可包括一個或多個易失性存儲(或存儲器)裝置,例如隨機存取存儲器(ram)、動態(tài)ram(dram)、同步dram(sdram)、靜態(tài)ram(sram)等。還可使用非易失性存儲器、如硬盤。附加裝置可耦合到互連網絡804,例如多個處理器和/或多個系統(tǒng)存儲器。
gmch808還可包括(例如在一個實施例中經由圖形加速器)與顯示裝置816耦合的圖形接口814。在一個實施例中,圖形接口814可經由加速圖形端口(agp)耦合到顯示裝置816。在本發(fā)明的一個實施例中,顯示裝置816(例如平板顯示器)可通過例如信號轉換器耦合到圖形接口814,其中信號轉換器將存儲裝置、如視頻存儲器或系統(tǒng)存儲器(例如存儲器812)中存儲的圖像的數字表示轉換成由顯示器816解釋和顯示的顯示信號。
如圖8所示,集線器接口818可將gmch808耦合到輸入/輸出控制集線器(ich)820。ich820可提供到與計算系統(tǒng)800耦合的輸入/輸出(i/o)裝置的接口。ich820可通過例如可符合pcie規(guī)范的外設部件互連(pci)橋、通用串行總線(usb)控制器等外設橋(或控制器)824耦合到總線822。橋824可提供處理器802與外圍裝置之間的數據通路??墒褂闷渌愋偷耐負浣Y構。多個總線也可例如通過多個橋或控制器耦合到ich820。此外,總線822可包括總線系統(tǒng)的其它類型和配置。此外,在本發(fā)明的各個實施例中,耦合到ich820的其它外設可包括集成驅動電子器件(ide)或小型計算機系統(tǒng)接口(scsi)硬盤驅動、usb端口、鍵盤、鼠標、并行端口、串行端口、軟盤驅動、數字輸出支持(例如數字視頻接口(dvi))等等。
總線822可耦合到音頻裝置826、一個或多個磁盤驅動828和網絡適配器830(它在一個實施例中可以是nic)。在一個實施例中,耦合到總線822的網絡適配器830或其它裝置可與芯片組806進行通信。另外,在本發(fā)明的一些實施例中,各種組件(例如網絡適配器830)可耦合到gmch808。此外,可組合處理器802和gmch808以形成單個芯片。在一個實施例中,存儲控制器810可設置在cpu802的一個或多個中。此外,在一個實施例中,gmch808和ich820可組合到外設控制集線器(pch)中。
另外,計算系統(tǒng)800可包括易失性和/或非易失性存儲器(或存儲裝置)。例如,非易失性存儲器可包括下列一個或多個:只讀存儲器(rom),可編程rom(prom),可擦prom(eprom),電eprom(eeprom),磁盤驅動(例如828),軟盤,光盤rom(cd-rom),數字多功能光盤(dvd),閃速存儲器,磁-光盤,或者能夠存儲電子數據(例如包括指令)的其它類型的非易失性機器可讀介質。
在一個實施例中,存儲器812可包括下列一個或多個:操作系統(tǒng)(o/s)832、應用834、目錄801和/或裝置驅動器836。存儲器812還可包括專用于存儲器映射i/o(mmio)操作的區(qū)域。作為存儲器管理操作的一部分,可將存儲器812中存儲的程序和/或數據交換到磁盤驅動828。應用834可運行(例如在處理器802上),以便與耦合到網絡805的一個或多個計算裝置傳遞一個或多個分組。在一個實施例中,分組可以是可通過(例如經由諸如網絡805等網絡)從至少一個發(fā)送器傳送到至少一個接收器的一個或多個電信號來編碼的一個或多個符號和/或值的序列。例如,各分組可具有報頭,報頭包括可用于路由和/或處理分組的各種信息,例如源地址、目標地址、分組類型等等。各分組還可具有有效載荷,它包括該分組通過計算機網絡(例如網絡805)正在各種計算裝置之間轉移的原始數據(或內容)。
在一個實施例中,應用834可利用o/s832、例如通過裝置驅動器836來與系統(tǒng)800的各種組件進行通信。因此,裝置驅動器836可包括網絡適配器830特定命令,以便提供o/s832與網絡適配器830或者例如經由芯片組806耦合到系統(tǒng)800的其它i/o裝置之間的通信接口。
在一個實施例中,o/s832可包括網絡協(xié)議棧。協(xié)議棧一般表示可運行以處理通過網絡805所發(fā)送的分組的一組過程或程序,其中分組可符合指定協(xié)議。例如,tcp/ip(傳輸控制協(xié)議/因特網協(xié)議)分組可使用tcp/ip棧來處理。裝置驅動器836可指明例如經由協(xié)議棧將要處理的存儲器812中的緩沖器。
網絡805可包括任何類型的計算機網絡。網絡適配器830還可包括直接存儲器存取(dma)引擎,它將分組寫入分配給可用描述符(例如存儲在存儲器812中)的緩沖器(例如存儲在存儲器812中),以便通過網絡805傳送和/或接收數據。另外,網絡適配器830可包括網絡適配器控制器,它可包括執(zhí)行適配器相關操作的邏輯(例如一個或多個可編程處理器)。在一個實施例中,適配器控制器可以是mac(媒體存取控制)組件。網絡適配器830還可包括存儲器,例如任何類型的易失性/非易失性存儲器(例如包括一個或多個高速緩存和/或參照存儲器812所述的其它存儲器類型)。
圖9示出根據本發(fā)明的一個實施例、設置成點對點(ptp)配置的計算系統(tǒng)900。具體來說,圖9示出其中處理器、存儲器和輸入/輸出裝置通過多個點對點接口進行互連的系統(tǒng)。參照圖1-8所述的操作可由系統(tǒng)900的一個或多個組件來執(zhí)行。
如圖9所示,系統(tǒng)900可包括若干處理器,為了清楚起見僅示出其中兩個處理器,即處理器902和904。處理器902、904均可包括實現與存儲器910、912的通信的本地存儲控制器集線器(gmch)906、908。存儲器910和/或912可存儲例如參照圖9的存儲器912所述的各種數據。如圖9所示,處理器902和904(或者系統(tǒng)900的其它組件,例如芯片組920、i/o裝置943等等)還可包括例如參照圖1-8所述的一個或多個高速緩存。
在一個實施例中,處理器902和904可以是參照圖9所述的處理器902其中之一。處理器902和904可分別使用點對點(ptp)接口電路916、918經由ptp接口914來交換數據。另外,處理器902、904均可使用點對點接口電路926、928、930、932經由各個ptp接口922、924來與芯片組920交換數據。芯片組920還可例如使用ptp接口電路937經由高性能圖形接口936來與高性能圖形電路934交換數據。
在至少一個實施例中,目錄高速緩存和/或擦除器邏輯可設置在處理器902、904和/或芯片組920的一個或多個中。但是,本發(fā)明的其它實施例可存在于圖9的系統(tǒng)900內的其它電路、邏輯單元或裝置中。此外,本發(fā)明的其它實施例可分布于圖9所示的若干電路、邏輯單元或裝置上。例如,系統(tǒng)900的各種組件可包括目錄高速緩存(例如,諸如圖1的目錄高速緩存122等)和/或擦除器或規(guī)劃邏輯(例如圖1的邏輯111)。但是,目錄高速緩存和/或擦除器邏輯可設置在整個系統(tǒng)900的各個位置,包括或排除所示的位置。
芯片組920可使用ptp接口電路941與總線940進行通信。總線940可具有與其通信的一個或多個裝置,例如總線橋942和i/o裝置943。經由總線944,總線橋942可與例如鍵盤/鼠標945、通信裝置946(例如調制解調器、網絡接口裝置或者可與計算機網絡905進行通信的其它通信裝置)、音頻i/o裝置和/或數據存儲裝置948等其它裝置進行通信。數據存儲裝置948可存儲可由處理器902和/或904運行的代碼949。
在本發(fā)明的各個實施例中,本文中例如參照圖1-9所述的操作可實現為硬件(例如電路)、軟件、固件、微碼或者它們的組合,它們可作為計算機程序產品來提供,例如包括機器可讀或計算機可讀介質,其上存儲了用于對計算機進行編程以執(zhí)行本文所述過程的指令(或軟件過程)。術語“邏輯”作為舉例還可包括軟件、硬件或者軟件和硬件的組合。機器可讀介質可包括例如針對圖1-9所述的存儲裝置。另外,這類計算機可讀介質可作為計算機程序產品來下載,其中,程序可通過載波或其它傳播介質中所提供的數據信號、經由通信鏈路(例如總線、調制解調器或網絡連接)從遠程計算機(例如服務器)轉移到請求計算機(例如客戶機)。
說明書中提到“一個實施例”或“實施例”表示結合該實施例所述的具體特征、結構或特性可包含在至少一個實現中。詞語“在一個實施例中”在本說明書的各個位置的出現可能或者可能不是全部指同一個實施例。
在描述和權利要求書中,還可使用術語“耦合”和“連接”及其派生。在本發(fā)明的一些實施例中,“連接”可用來指明兩個或更多元件相互直接物理或電接觸。“耦合”可表示兩個或更多元件直接物理或電接觸。但是,“耦合”也可表示兩個或更多元件可能不是相互直接接觸,但可仍然相互配合或交互。
因此,雖然已經通過結構特征和/或方法動作特定的語言來描述本發(fā)明的實施例,但是要理解,要求權益的主題可以并不局限于所述的特定特征或動作。特定特征和動作而是作為實現要求權益的主題的示例形式來公開。