專利名稱:對多個(gè)一致域的支持的制作方法
對多個(gè)一致域的支持
背景技術(shù):
本發(fā)明涉及多處理器系統(tǒng),更具體而言,涉及在多處理器系統(tǒng)中維持多個(gè)獨(dú)立的
一致域。半導(dǎo)體制造技術(shù)的進(jìn)步使微處理器時(shí)鐘速度顯著提高。雖然這樣的進(jìn)步還使得存儲密度和存取時(shí)間得以改進(jìn),但微處理器時(shí)鐘速度與存儲器存取時(shí)間之間的不一致繼續(xù)存 在。為了減小延遲,通常使用一個(gè)或更多個(gè)級別的緩沖存儲器來保持主存儲器中所存儲的 數(shù)據(jù)或指令的子集。已開發(fā)出了若干技術(shù)以增加微處理器重復(fù)使用緩存中所保持的數(shù)據(jù)/ 指令的可能性。為了使任何給定的操作頻率下的性能得以提高,已開發(fā)出了具有多個(gè)并行地執(zhí)行 指令的處理核的微處理器??梢詫⑻幚砗?下文中可替選地稱為核)集成在同一個(gè)半導(dǎo)體 晶片內(nèi),或者可以將其形成于在封裝內(nèi)相互耦合的不同半導(dǎo)體晶片上,或者二者的組合。每 個(gè)核通常包括其自身的1級緩存以及可選的2級緩存。緩存一致性協(xié)議對與核相關(guān)聯(lián)的存儲器與緩存之間的流量流進(jìn)行管理,以確保它 們之間的一致性。例如,緩存一致性協(xié)議確保如果數(shù)據(jù)項(xiàng)的副本在緩存中的一個(gè)中被修改, 則存儲在其它緩存以及主存儲器中的該數(shù)據(jù)項(xiàng)的副本根據(jù)該修改而被更新或被無效。圖1是如現(xiàn)有技術(shù)中已知的具有四個(gè)獨(dú)立的核IO1UO2UO3* IO4的微處理器 20(下文中可替選地稱為處理器)的框圖。每個(gè)核IOi被示為包括1級(Li)緩存15”其 中,i是從1到4變化的整數(shù)。假設(shè)核IO1所請求的數(shù)據(jù)不存在于其Ll緩存K1中。為了 獲得對該數(shù)據(jù)的訪問,核IO1S出讀取請求。在每個(gè)時(shí)鐘周期中,仲裁器25接收所有這些 讀取請求并將其串行化,并且將被串行化的請求中的一個(gè)請求傳送給核IO1UO2UO3* 104。 如果檢測到與核IO1作出的讀取請求相關(guān)聯(lián)的數(shù)據(jù)存在于Ll緩存中的任何緩存中,則將所 請求的數(shù)據(jù)從該數(shù)據(jù)所存在的Ll緩存?zhèn)魉徒o緩存15lt)如果Ll緩存都不包含該請求數(shù)據(jù), 則經(jīng)由系統(tǒng)總線30從主存儲器35重新獲得該數(shù)據(jù)的副本并隨后將其存儲在緩存IS1中。如上所述,由仲裁器25發(fā)出的讀取請求使所有的緩存搜索所請求的數(shù)據(jù),因而消 耗能量。此外,由于必須接收來自所有核的響應(yīng)以確定其它緩存是否包含所請求的數(shù)據(jù),因 此正在參與執(zhí)行其它指令而無法處理所請求的操作的核減慢該過程并對其另外完成所述 讀取請求將花費(fèi)的時(shí)間造成不利影響。隨著微處理器中核數(shù)量的增加,一致流量會變得日益繁重,因此導(dǎo)致更多的能耗 以及系統(tǒng)總線帶寬使用。當(dāng)來自多個(gè)I/O設(shè)備(I/O)的流量請求也被發(fā)送給緩存時(shí),該問 題復(fù)雜化。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)實(shí)施例,在布置在微處理器中的多個(gè)處理核之間維持若干一致 域。微處理器包括(部分地)緩存一致性管理器,適合于定義多個(gè)處理核中的每個(gè)處理核 之間的一致性關(guān)系,以使得一致流量僅在被定義為具有一致性關(guān)系的處理核之間流動。在一個(gè)實(shí)施例中,定義處理核之間的一致性關(guān)系的數(shù)據(jù)存儲在可編程寄存器中。對于一致請求的每個(gè)源,在可編程寄存器中標(biāo)識該請求的處理核目標(biāo)。在一個(gè)實(shí)施例中,可 以將處理核定義成與其它處理核中的每個(gè)處理核相一致。在另一個(gè)實(shí)施例中,可以將每個(gè) 核定義成與處理核的子集相一致。在一個(gè)實(shí)施例中,響應(yīng)于處理核中的任何一個(gè)處理核作出的一致請求,將介入消 息轉(zhuǎn)發(fā)給請求核以及所有被定義成與該請求核處于同一個(gè)一致域中的核。如果該請求是讀 取請求,并且所請求的數(shù)據(jù)以修改或獨(dú)占狀態(tài)存儲在接收到介入消息的核中的任何核的緩 沖存儲器中,則使請求核可從該緩沖存儲器中得到所請求的數(shù)據(jù)。如果所請求的數(shù)據(jù)未以 修改或獨(dú)占狀態(tài)存儲在接收到介入消息的核中的任何核的緩沖存儲器中,則使請求核可從 系統(tǒng)存儲器、或者從可選的2級緩存或3級緩存中得到所請求的數(shù)據(jù)。在一個(gè)實(shí)施例中,一致性管理器包括Ll緩存標(biāo)記陣列,該Ll緩存標(biāo)記陣列是被布置在處理核中的聚集的Ll緩存標(biāo)記的副本。副本緩存標(biāo)記陣列標(biāo)識接收介入消息的核,并 且免除具有與每個(gè)核相關(guān)聯(lián)的專用副本緩存標(biāo)記的需要。在另一個(gè)實(shí)施例中,一致性管理 器包括被配置成遵照所建立的一致性關(guān)系來引導(dǎo)介入消息的目錄。如果該目錄表明核中存 在一致請求所標(biāo)識的數(shù)據(jù),則將介入消息發(fā)送給該核。在另一個(gè)實(shí)施例中,遵照緩存一致性 管理器所維持的多個(gè)一致性關(guān)系對主系統(tǒng)存儲器進(jìn)行邏輯分區(qū)。這樣,將每個(gè)一致域映射 到主存儲器內(nèi)一定范圍的地址并將每個(gè)一致域與該一定范圍的地址相關(guān)聯(lián)。緩存一致性管理器還適合于維持輸入/輸出設(shè)備與被布置在微處理器中的一個(gè) 或更多個(gè)處理核之間的一致性。輸入/輸出設(shè)備可以經(jīng)由總線耦合到微處理器。在一個(gè)實(shí)施例中,微處理器包括(部分地)第一處理核、第二處理核及第三處理 核,每個(gè)包括(部分地)適合于執(zhí)行程序指令的核;適合于在緩存行中存儲數(shù)據(jù)的緩沖存儲 器;以及緩存控制邏輯。在一個(gè)實(shí)施例中,可編程寄存器中存儲的數(shù)據(jù)可以使第一處理核與 第二處理核成為緩存一致的、第一處理核與第三處理核成為緩存一致的、并且第二處理核 與第三處理核成為非緩存不一致的。根據(jù)本發(fā)明的另一個(gè)實(shí)施例,一種在被布置在微處理器中的多個(gè)處理核之間控制 一致流量的方法,包括(部分地)允許在被定義為具有一致性關(guān)系的處理核之間的一致流 量的流動;以及禁止在被定義為不具有一致性關(guān)系的處理核之間的一致流量的流動。響應(yīng)于從核中的任何一個(gè)核接收到一致請求,將介入消息僅發(fā)送給被定義為與請 求核相一致的處理核。在一個(gè)實(shí)施例中,可以將處理核定義成與被布置于微處理器中的其 它核中的每個(gè)核相一致。在另一個(gè)實(shí)施例中,可以將處理核定義成與被布置在微處理器中 的處理核的子集相一致。在一個(gè)實(shí)施例中,響應(yīng)于處理核中的任何一個(gè)處理核的一致請求,將介入消息轉(zhuǎn) 發(fā)給請求核以及所有被定義成與該請求核處于同一個(gè)一致域中的核。如果請求是讀取請求 并且所請求的數(shù)據(jù)以修改或獨(dú)占狀態(tài)存儲在接收到介入消息的核中的任何核的緩沖存儲 器中,則使請求核可得到所請求的數(shù)據(jù)。如果所請求的數(shù)據(jù)未以修改或獨(dú)占狀態(tài)存儲在接 收到介入消息的核中的任何核的緩沖存儲器中,則使請求核可從系統(tǒng)存儲器、或者從可選 的2級緩存或3級緩存得到所請求的數(shù)據(jù)。在一個(gè)實(shí)施例中,緩存一致性管理器還適合于 維持輸入/輸出設(shè)備與被布置在微處理器中的一個(gè)或更多個(gè)處理核之間的一致性。輸入/ 輸出設(shè)備可以經(jīng)由系統(tǒng)總線耦合到微處理器。
圖1是如現(xiàn)有技術(shù)中已知的多核微處理器的框圖。圖2A示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的微處理器,該微處理器與若干I/O設(shè)備和系 統(tǒng)存儲器通信,并且具有多個(gè)有選擇地維持相互一致或不一致的核。圖2B示出了根據(jù)本發(fā)明一個(gè)示例性實(shí)施例的1級緩存及其相關(guān)聯(lián)的、被布置在圖 2A中所示的核中的一個(gè)或更多個(gè)核中的雙緩存標(biāo)記陣列。圖2C示出了根據(jù)本發(fā)明另一個(gè)示例性實(shí)施例的1級緩存及其相關(guān)聯(lián)的、被布置在 圖2A中所示的核中的一個(gè)或更多個(gè)核中的緩存標(biāo)記陣列。圖3示出了被布置在圖2的微處理器中的一致性管理器的各種塊。圖4示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的微處理器,該微處理器與若干I/O設(shè)備和 系統(tǒng)存儲器通信,并且具有多個(gè)有選擇地維持相互一致或不一致的核。圖5示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的微處理器,該微處理器具有多個(gè)有選擇地 維持相互一致或不一致以及與其它微處理器相一致或不一致的核。圖6是根據(jù)本發(fā)明一個(gè)實(shí)施例的被執(zhí)行以用于維持多個(gè)一致域的步驟的流程圖。圖7示出了被配置成建立與圖4相關(guān)聯(lián)的多個(gè)一致域的屏蔽寄存器中所存儲的示 例性數(shù)據(jù)。圖8示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的被布置在圖2的微處理器中的一致性管理 器的各種塊。圖9示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的被布置在圖2的微處理器中的一致性管理 器的各種塊。圖10示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的具有可尋址存儲空間的主存儲器,該可尋 址存儲空間被分區(qū)以支持多個(gè)一致域。圖11示出了使用本發(fā)明實(shí)施例的示例性計(jì)算機(jī)系統(tǒng)。
具體實(shí)施例方式根據(jù)本發(fā)明的一個(gè)實(shí)施例,在被布置在微處理器中的多個(gè)處理核之間建立若干一 致域。緩存一致性管理器定義一致性關(guān)系,以使得一致流量僅在被定義為具有一致性關(guān)系 的處理核之間流動。例如,當(dāng)應(yīng)用軟件提前獲知不同處理核上工作量的分區(qū)時(shí),該軟件對一 致性管理器進(jìn)行配置,以使得僅將共享數(shù)據(jù)的核維持在同一個(gè)一致域中。在一個(gè)實(shí)施例中,將定義處理核之間的一致性關(guān)系的數(shù)據(jù)可選地存儲在可編程寄 存器中。在另一個(gè)實(shí)施例中,將該數(shù)據(jù)存儲在被布置在一致性管理器中的隨機(jī)存取(RAM) 存儲器中。在又一個(gè)實(shí)施例中,硬連線電路可以提供該數(shù)據(jù)。雖然部分地參照屏蔽寄存器 提供以下描述,但可以理解的是,可以使用任何其它的存儲位置或硬連線電路來定義一致 性關(guān)系。 圖2A是根據(jù)本發(fā)明一個(gè)示例性實(shí)施例的微處理器100的框圖,該微處理器經(jīng)由系 統(tǒng)總線325與系統(tǒng)存儲器300和I/O單元310、320通信。微處理器(下文中可替選地稱為 處理器)100被示為包括(部分地)四個(gè)核IOSiUOS2UOS3* 1054,緩存一致性管理器200 以及可選的2級(L2)緩存305。每個(gè)核105J其中,i是范圍從1到4的整數(shù))被示為包 括(部分地)處理核IlOp Ll緩存IlSi以及緩存控制邏輯120ρ雖然處理器100的示例性實(shí)施例被示為包括四個(gè)核,但可以理解的是,處理器100的其它實(shí)施例可以包括多于或 少于四個(gè)核。每個(gè)處理核IlOi適合于響應(yīng)于程序指令進(jìn)行多個(gè)固定的或可變的操作序列。每個(gè) 處理核IlOi可以符合CISC和/或RISC架構(gòu),以使用SISD指令或SIMD指令來處理標(biāo)量或 矢量數(shù)據(jù)類型。每個(gè)處理核IlOi可以包括通用和專用寄存器文件以及被配置成進(jìn)行邏輯、 算術(shù)及任何其它類型的數(shù)據(jù)處理功能的執(zhí)行單元??梢詫⑻幚砗薎lO1UlO2UlOdn IlO4(集 體地稱為處理核110)配置成進(jìn)行相同的功能,或者可替選地,可以將其配置成進(jìn)行適合于 不同應(yīng)用的不同功能。處理核110可以是單線程或多線程的,S卩,能夠并行地執(zhí)行多個(gè)程序 指令序列。每個(gè)核IOSi被示為包括1級(Li)緩存。在其它實(shí)施例中,每個(gè)核IlOi可以包括 更多的緩存級別,例如,2級、3級等。每個(gè)緩存1151可以包括指令和/或數(shù)據(jù)。通常將每 個(gè)緩存IKi組織成包括多個(gè)緩存行,每行適合于存儲與一個(gè)或更多個(gè)虛擬或物理存儲地址 對應(yīng)的數(shù)據(jù)的副本。每個(gè)緩存行還存儲用于管理該緩存行的額外的信息。這種額外的信息 例如包括用于識別與緩存行相關(guān)聯(lián)的主存儲器地址的標(biāo)記信息;以及用于將緩存行中的 數(shù)據(jù)與其它緩存和或與主系統(tǒng)存儲器同步的緩存一致性信息??梢愿鶕?jù)與緩存行相關(guān)聯(lián)的 所有或部分存儲器地址形成緩存標(biāo)記。
每個(gè)Ll緩存由總線125i耦合到其相關(guān)聯(lián)的處理核IlOp每個(gè)總線
括多個(gè)用于承載數(shù)據(jù)和/或指令的信號線。每個(gè)核IOSi還被示為包括緩存控制邏輯120i; 以便于去往和來自其相關(guān)聯(lián)的緩存IKi的數(shù)據(jù)傳送。每個(gè)緩存1151可以是全關(guān)聯(lián)的、采用 雙路或更多路的組關(guān)聯(lián)的、或者直接映射的。為清楚起見,每個(gè)緩存1153皮示為用于存儲 核IOSi所需要的數(shù)據(jù)和指令的單個(gè)緩沖存儲器。雖然未示出,但可以理解的是,每個(gè)核105, 可以包括用于存儲數(shù)據(jù)的Ll緩存以及用于存儲指令的Ll緩存。每個(gè)緩存115,被分區(qū)成若干緩存行,每個(gè)緩存行對應(yīng)于共享系統(tǒng)存儲器300中一 定范圍的相鄰位置。在一個(gè)實(shí)施例中,如下面進(jìn)一步描述的,每個(gè)緩存(例如,緩存115》的 每行包括便于例如緩存1K1、主存儲器300和任何其它要與緩存1K1保持一致的緩存1152、 1153、1154之間的一致性的數(shù)據(jù)。例如,如所公知的,根據(jù)MESI緩存一致性協(xié)議,將每個(gè)緩 存行標(biāo)記為修改“M”、獨(dú)占“E”、共享“S”或無效“I”。本發(fā)明的實(shí)施例還支持其它緩存一致 性協(xié)議,例如MSI、MOSI以及MOESI —致性協(xié)議。每個(gè)核105,經(jīng)由相關(guān)聯(lián)的總線135,耦合到緩存一致性管理器200。緩存一致性 管理器200便于核IOSi、系統(tǒng)存儲器300、I/O單元310、I/O單元320與可選的共享L2緩存 305之間的指令和/或數(shù)據(jù)的傳送。緩存一致性管理器200建立請求的全局次序,發(fā)送介入 請求,收集對這些請求的響應(yīng),并且將所請求的數(shù)據(jù)發(fā)送回請求核。緩存一致性管理器200 對請求進(jìn)行排序,以優(yōu)化存儲器存取,對請求進(jìn)行負(fù)載平衡,賦予一個(gè)或更多個(gè)核高于其它 核的優(yōu)先級,并且/或者賦予一種或更多種類型的請求高于于其它類型請求的優(yōu)先級。參 照圖2A和圖2B,在一個(gè)實(shí)施例中,Ll緩存IlSi包括用于常規(guī)流量的第一緩存標(biāo)記陣列150 以及用于介入流量的第二緩存標(biāo)記陣列155。在圖2C中所示的另一個(gè)實(shí)施例中,Ll緩存中 的一個(gè)或更多個(gè)Ll緩存包括用于常規(guī)及介入一致流量的單個(gè)緩存標(biāo)記陣列160。雖然未示 出,但在一些實(shí)施例中,核IOSi中的一個(gè)或更多個(gè)核包括2級(L2)緩存。圖3是根據(jù)本發(fā)明一個(gè)實(shí)施例的緩存一致性管理器200的框圖。緩存一致性管理器200被示為包括(部分地)請求單元205、介入單元210、響應(yīng)單元215以及存儲器接口 單元220。請求單元205包括適合于從核IOSi接收例如讀取請求、寫入請求、回寫請求及任 何其它與緩沖存儲器相關(guān)的請求的輸入端口 225。請求單元205將其從核IOSi接收的請求 串行化并經(jīng)由端口 230將不一致讀取/寫入請求、推測一致讀取請求以及被修改的緩存數(shù) 據(jù)的顯式和隱式回寫請求發(fā)送給存儲器接口單元220。請求單元205經(jīng)由端口 235將一致 請求發(fā)送給介入單元210。為了避免寫后讀沖突(readafter write hazard),針對能夠生 成寫入操作的未決的一致請求來比較讀取地址。如果作為該比較的結(jié)果檢測出匹配,則不 推測性地開始讀取請求。響應(yīng)于從請求單元205接收到的一致介入請求,介入單元210將與發(fā)起該請求的核相關(guān)聯(lián)的標(biāo)識符與屏蔽寄存器260中所存儲的數(shù)據(jù)相比較,以確定核中的哪個(gè)核接收該 請求。這樣,屏蔽寄存器260識別要保持相互一致的核。結(jié)果是,未被屏蔽寄存器260識別 為一致的核將保持互不一致。根據(jù)屏蔽寄存器260中所存儲的數(shù)據(jù),經(jīng)由輸出端口 240將 請求單元205所轉(zhuǎn)發(fā)的數(shù)據(jù)訪問請求作為介入消息發(fā)給那些要與請求核保持一致的核。如 果核所請求的數(shù)據(jù)存儲在任何接收到介入消息的核的緩沖存儲器中,則經(jīng)由輸入端口 245 將此數(shù)據(jù)返回給介入單元。在另一個(gè)實(shí)施例中,只有在數(shù)據(jù)存儲在具有獨(dú)占或修改狀態(tài)的 緩存行中時(shí),才將所請求的數(shù)據(jù)返回給介入單元210。介入單元210隨后經(jīng)由輸出端口 250 將該數(shù)據(jù)轉(zhuǎn)發(fā)給響應(yīng)單元205。響應(yīng)單元215經(jīng)由輸出端口 265將該數(shù)據(jù)轉(zhuǎn)發(fā)給請求(發(fā) 起該請求的)核。如果在接收到介入消息的核中的任何核的緩沖存儲器中都未找到所請求 的數(shù)據(jù)并且不推測性地進(jìn)行讀取請求,則介入單元210通過經(jīng)由輸出端口 255將一致讀取 或?qū)懭胝埱蟀l(fā)送給存儲器接口單元220來請求對該數(shù)據(jù)的訪問。讀取請求可以不加推測地 繼續(xù)進(jìn)行,例如,被布置在請求單元205中并且適合于存儲和傳送去往存儲器接口單元220 的請求的請求存儲緩沖器265已滿的時(shí)候。存儲器接口單元220接收來自請求單元205的不一致讀取/寫入請求以及來自介 入單元210的一致讀取/寫入請求和回寫請求。作為響應(yīng),存儲器接口單元220經(jīng)由輸入 /輸出端口 255訪問系統(tǒng)存儲器300和/或諸如L2緩存305的更高級的緩沖存儲器以完 成這些請求。經(jīng)由輸出端口 260將響應(yīng)于這些存儲器請求從存儲器300和/或更高級的緩 沖存儲器重新獲取的數(shù)據(jù)轉(zhuǎn)發(fā)給響應(yīng)單元215。響應(yīng)單元215經(jīng)由輸出端口 265返回請求 核所請求的數(shù)據(jù)。如所理解的,所請求的數(shù)據(jù)可以是從另一個(gè)核的Ll緩存、從系統(tǒng)存儲器 300、或者從可選的更高級的緩沖存儲器重新獲取的。根據(jù)本發(fā)明的一個(gè)實(shí)施例,在處理器100中建立并維持多個(gè)一致域。在一個(gè)示例 性實(shí)施例中,被布置在處理器100中的各種核被分區(qū),以支持兩個(gè)緩存一致域。例如,核105i 和1052可以形成第一一致域150,并且核1053和1054可以形成第二一致域160。因?yàn)楹?IOS1* 1052被布置在同一個(gè)域150中,所以維持它們的Ll緩存IM1和1152彼此一致。類 似地,因?yàn)楹?053和1054被布置在同一個(gè)一致域160中,所以維持它們的Ll緩存1153和 1154彼此一致。然而,Ll緩存IlS1和1152均不與Ll緩存1153或Ll緩存1154相一致。為了維持被布置在同一個(gè)一致域中的Ll緩存之間的一致性,從核中的任何核接 收到的一致請求都僅轉(zhuǎn)發(fā)給與該請求核處于同一個(gè)一致域中的核。例如,將來自例如核 IOS1的請求作為介入消息僅發(fā)送給核IOS1和1052。類似地,將來自例如核1054的請求作 為介入消息僅發(fā)送給核1053和1054。為了實(shí)現(xiàn)這一點(diǎn),如上所述,在一個(gè)實(shí)施例中,被布置在介入單元210中的屏蔽寄存器260存儲定義各種核之間的一致性關(guān)系的數(shù)據(jù)。例如,為 了維持核IOS1與核1052彼此一致,屏蔽寄存器260包括使得將來自IOS1和1052的請求作 為介入消息僅發(fā)送給核IOS1和核1052的數(shù)據(jù)。類似地,為了維持核1053與核1054彼此一 致,屏蔽寄存器260包括使得將來自1053和1054的請求作為介入消息僅發(fā)送給核1053和 核1054的數(shù)據(jù)。因此,被布置在處理器100中的核中的任何核所發(fā)出的一致請求在介入單元210 發(fā)送任何介入消息之前被屏蔽寄存器260接收到。一致請求包括標(biāo)識請求核的信息并被與 存儲在屏蔽寄存器260中的數(shù)據(jù)相比較。使用以上示例,如果屏蔽寄存器260將請求核識 別為存在于例如一致域150中,則經(jīng)由輸出端口 245將介入消息僅發(fā)送給核IOS1和核1052。 另一方面,如果屏蔽寄存器260將請求核識別為存在于例如一致域160中,則經(jīng)由輸出端口 245將介入消息僅發(fā)送給核1053和核1054。根據(jù)本發(fā)明的一個(gè)實(shí)施例,屏蔽寄存器260使 得用戶能夠以用戶所期望的任何方式來定義各種核之間的一致性關(guān)系。具有所請求的數(shù)據(jù)的核針對該介入更新其緩存狀態(tài)并提供響應(yīng)。假設(shè),例如,圖2 的核1052請求讀取訪問而無需修改所請求的數(shù)據(jù)。根據(jù)屏蔽寄存器260中的數(shù)據(jù),經(jīng)由輸 出端口 240將介入消息發(fā)送給核IOS1和核1052。進(jìn)一步假設(shè)所請求的數(shù)據(jù)以獨(dú)占狀態(tài)存 儲在Ll緩存IK1中。相應(yīng)地,當(dāng)核IOS1提供所請求的數(shù)據(jù)時(shí),它還將所提供的緩存行的緩 存狀態(tài)從獨(dú)占更新成共享。類似地,如果所請求的數(shù)據(jù)以例如修改狀態(tài)存儲在Ll緩存IK1 中,則核所請求的行的緩存狀態(tài)更新成共享并將該數(shù)據(jù)提供給核1052。如上所述,以 修改或獨(dú)占狀態(tài)包含所請求的數(shù)據(jù)的副本的Ll緩存將把該數(shù)據(jù)返回給緩存一致性管理器 200的介入單元210。經(jīng)由緩存一致性管理器200的響應(yīng)單元215將該數(shù)據(jù)傳送給請求核。 在其它實(shí)施例中,如果包含該數(shù)據(jù)的緩存行不具有無效狀態(tài),則返回存儲在Ll緩存IK1中 的數(shù)據(jù)。在一個(gè)實(shí)施例中,如果在同一個(gè)一致域中存在以共享狀態(tài)在它們各自的Ll緩存 行中具有所請求的數(shù)據(jù)的副本的多個(gè)核,則為了優(yōu)化的目的,從系統(tǒng)存儲器提供所請求的 數(shù)據(jù)。在一個(gè)實(shí)施例中,如果一致域中的核的一致讀取請求是共享請求并且確定該一致域 中的其它核都不包含所請求的數(shù)據(jù)的副本,則將共享狀態(tài)升級到獨(dú)占狀態(tài)。該升級確保當(dāng) 該一致域中的另一個(gè)核隨后請求對同一數(shù)據(jù)的訪問時(shí),由以獨(dú)占狀態(tài)具有該數(shù)據(jù)的副本的 核來提供所請求的數(shù)據(jù)。將來自核中的任何核的一致讀取請求轉(zhuǎn)發(fā)給存儲器接口單元220以用于對存儲 器300的推測讀取。推測讀取假設(shè)在與請求核一致的核中的任何核中都將不會找到所請求 的數(shù)據(jù)。如果響應(yīng)于介入消息找到所請求的數(shù)據(jù),則對存儲器300的推測讀取在它還未被 存儲器接口單元220發(fā)出的情況下被取消,或者可替選地,該響應(yīng)在它從系統(tǒng)存儲器300返 回時(shí)被丟棄。參照圖2A和圖3,微處理器100還被示為包括(部分地)1/0 —致單元325,適合 于與一致性管理器200協(xié)作操作,以根據(jù)屏蔽寄存器260中所存儲的數(shù)據(jù)有選擇地提供I/ 0單元310、I/O單元320與核105”1052、1053和1054中的一個(gè)或更多個(gè)核之間的一致性。 例如,可以將屏蔽寄存器260配置成建立I/O單元310與核IOS1UOS2之間、或者I/O單元 310與核IOSiUOS2UOS3* 1054之間、或者任何其它組合的一致性。還可以經(jīng)由屏蔽寄存器 260中所存儲的數(shù)據(jù)有選擇地建立I/O單元320與一個(gè)或更多個(gè)核IOSiUOS2UOS3和1054之間的一致性。在圖2A中,I/O單元310、I/O單元320被示為經(jīng)由系統(tǒng)總線30與I/O— 致單元325通信。在其它實(shí)施例中,I/O單元310、1/0單元320經(jīng)由不同的總線(未示出) 與I/O —致單元325通信。例如,假設(shè)要維持I/O單元310與全部四個(gè)核1051、1052、1053和1054相一致,并且 要維持I/O單元320與核IOS1和1053相一致。相應(yīng)地,屏蔽寄存器260配置有這種數(shù)據(jù) 其使得將任何來自I/O單元310的針對數(shù)據(jù)的一致讀取請求作為介入消息轉(zhuǎn)發(fā)給全部四個(gè) 緩存115ρ1152、1153和1154類似地,如果例如I/O單元310發(fā)出一致寫入請求,則根據(jù)屏 蔽寄存器260中的數(shù)據(jù)使存在于緩存115ρ1152、1153* 1154中的任何緩存中的任何舊數(shù)據(jù) 無效。類似地,屏蔽寄存器260配置有這種數(shù)據(jù)其使得將任何來自I/O單元320的針對數(shù) 據(jù)的一致讀取請求作為介入消息轉(zhuǎn)發(fā)給緩存IOS1和1053。結(jié)果是,如上所述根據(jù)本發(fā)明的一個(gè)實(shí)施例,可以將屏蔽寄存器260配置成實(shí)現(xiàn) I/O單元310與例如核105”1052、1053和1054之間的一致性,而同時(shí),⑴維持I/O單元320 與例如核1052、1054相一致,(ii)維持核105!與核1052彼此一致,并且(iii)維持核1053 與核1054彼此一致,而(iv)維持核IOS1、核1052與核1053、核1054不一致。屏蔽寄存器260 包含針對每個(gè)核或每個(gè)I/O設(shè)備識別介入消息能來自何處、或者介入消息將被發(fā)送給哪些 核的數(shù)據(jù)。這樣,屏蔽寄存器260使得用戶能夠獨(dú)立地且有選擇地定義數(shù)據(jù)處理系統(tǒng)的各 種處理核、I/O單元等之間的一致性關(guān)系。在一些實(shí)施例中,定義各種核之間的一致性關(guān)系 的數(shù)據(jù)存儲在被布置在例如一致性管理器中的隨機(jī)存取存儲器(RAM)中。在又一個(gè)實(shí)施例 中,可以使用硬連線電路來提供該數(shù)據(jù)。圖4示出了被分區(qū)成三個(gè)一致域的微處理器100中的核,根據(jù)這些域,核IOS1與核 1052、1053和1054中的每個(gè)核相一致,而維持核1052、1053和1054互不一致。當(dāng)核IOS1被 配置為專用于控制層面功能的主核而核1052、1053和1054被配置為專用于數(shù)據(jù)層面功能的 從核時(shí),可以使用對一致域的該分區(qū)。數(shù)據(jù)層面中的每個(gè)從核是獨(dú)立的,并且對不同的數(shù)據(jù) 集進(jìn)行操作。因此,從核不需要彼此緩存一致。然而,主核Ios1被配置成監(jiān)管并控制從核 1052、1053和1054的活動。相應(yīng)地,根據(jù)屏蔽寄存器260中所加載的數(shù)據(jù)維持主核IOS1與 從核1052、1053和1054緩存一致。假設(shè)維持I/O單元310與全部四個(gè)核105” 1052、1053和 1054相一致,并且假設(shè)維持I/O單元320與核IOS1和1053相一致。包括緩存一致性管理器的多核處理器(例如處理器100)可以與不具有維持緩存 一致性所需的邏輯的其它處理器一起使用。圖5是包括處理器100 (圖2)、系統(tǒng)存儲器300 以及處理器400、450和460的系統(tǒng)的框圖。處理器400包括(部分地)L1緩存415和緩存控制邏輯420。處理器400使用 端口 480維持與一致性管理器200的直接通信。假設(shè)處理器400不包括緩存一致性管理器 或介入端口。因此,不能維持處理器400的Ll緩存415與Ll緩存IIS1UIS2UIS3* 1154 中的任何緩存相一致。假設(shè)處理器400要保持與核IOSiUOS2UOS3和1054完全不一致。相 應(yīng)地,如果處理器400所請求的數(shù)據(jù)不存在于其相關(guān)聯(lián)的Ll緩存415中,則處理器400在 可選的L2緩存305或系統(tǒng)存儲器300中查找該數(shù)據(jù)。因?yàn)樘幚砥?00與核IOS1UOS2UOS3 和1054完全不一致,所以它不在緩存115ρ1152、1153* 1154中的任何緩存中查找所請求的 數(shù)據(jù)。處理器450包括Ll緩存465和緩存控制邏輯470。處理器450使用端口 490維持與一致性管理器200的直接通信。還假設(shè)處理器450不包括緩存一致性管理器或介入端 口。因此,不能維持處理器450的Ll緩存465與Ll緩存IIS1UIS2UIS3* 1154中的任何 緩存相一致。假設(shè),例如,要保持處理器450與核IOS1和核1052部分地一致,如屏蔽寄存器 260所定義的。如果具有不包括介入端口和/或緩存一致性管理器的緩沖存儲器的處理器 被配置成在訪問系統(tǒng)存儲器或L2緩存之前首先在被布置在其它核中的緩沖存儲器中查找 所請求的數(shù)據(jù),則將該處理器定義為與其它核部分地不一致。因此,如果例如處理器450所 請求的數(shù)據(jù)不存在于其相關(guān)聯(lián)的Ll緩存465中,則根據(jù)屏蔽寄存器260中所存儲的數(shù)據(jù)使 得將其讀取請求作為介入消息發(fā)送給核IOS1和1052。如果這些核都不具有所請求的數(shù)據(jù) 的副本,則訪問L2緩存305或系統(tǒng)存儲器300以獲得該數(shù)據(jù)。類似地,當(dāng)處理器450請求 例如寫入操作時(shí),需要使核IOS1和核1052中存在的該數(shù)據(jù)的任何舊副本無效。處理器460不包括Ll緩存,并使用端口 495維持與一致性管理器200的直接通信。 因?yàn)榧僭O(shè)處理器460不包括緩沖存儲器,所以它可以保持與緩沖存儲器IOSiUOS2UOS3和 1054完全一致。例如,處理器460響應(yīng)于讀取請求接收所請求的數(shù)據(jù)的最新副本。同樣地,當(dāng)處理器460發(fā)出寫入請求時(shí),存在于緩沖存儲器IOSiUOS2UOS3和1054中的任何緩沖存 儲器中的任何舊數(shù)據(jù)變成無效。圖6是根據(jù)本發(fā)明一個(gè)示例性實(shí)施例的被執(zhí)行以建立并維持多個(gè)一致域的步驟 的流程圖500。為實(shí)現(xiàn)這一點(diǎn),存儲502將每個(gè)一致請求的目標(biāo)映射到一致請求的源的若干 條目;該映射定義各種一致性關(guān)系。為了維持一致域,當(dāng)接收到一致請求時(shí),識別504該請 求的源。作為響應(yīng),根據(jù)所存儲的條目,將介入消息發(fā)送506給每個(gè)被定義為與請求核處于 同一個(gè)一致域中的核。接下來,在接收介入消息的核的緩沖存儲器中查找508所請求的數(shù) 據(jù)。如果出現(xiàn)510緩存命中,則按照請求類型以及數(shù)據(jù)的一致性狀態(tài),使得請求核可從導(dǎo)致 生成緩存命中信號的緩存得到對所請求的數(shù)據(jù)的訪問。如果出現(xiàn)緩存未命中,則使得請求 核512可經(jīng)由系統(tǒng)存儲器或者可選的L-2或L-3緩存得到對所請求的數(shù)據(jù)的訪問。圖7示出了被配置成建立以上參照圖4所描述的多個(gè)一致域的屏蔽寄存器260 中所存儲的示例性數(shù)據(jù)。核IOS1所發(fā)出的請求導(dǎo)致選擇條目編號1,S卩,“000”,根據(jù)與此 條目相關(guān)聯(lián)的掩碼值“001111”,其繼而使得將介入消息發(fā)送給所有的核Ios1UOS2UOS3和 1054。核1052所發(fā)出的請求導(dǎo)致選擇條目編號2,S卩,“001”,根據(jù)與此條目相關(guān)聯(lián)的掩碼值 “000011”,其繼而使得將介入消息發(fā)送給核IOS1和核1052。核1053所發(fā)出的請求導(dǎo)致選 擇條目編號3,S卩,“010”,根據(jù)與此條目相關(guān)聯(lián)的掩碼值“000101”,其繼而使得將介入消息 發(fā)送給核IOS1和核1053。核1054所發(fā)出的請求導(dǎo)致選擇條目編號4,S卩,“011”,根據(jù)與此 條目相關(guān)聯(lián)的掩碼值“001101”,其繼而使得將介入消息發(fā)送給核IOS1、核1053和核1054。 I/O單元310所發(fā)出的請求導(dǎo)致選擇條目編號5,即,“ 100”,根據(jù)與此條目相關(guān)聯(lián)的掩碼值 “001111”,其繼而使得將介入消息發(fā)送給所有的核IOSiUOS2UOS3* 1054。I/O單元320所 發(fā)出的請求導(dǎo)致選擇條目編號1,即,“101”,根據(jù)與此條目相關(guān)聯(lián)的掩碼值“000101”,其繼 而使得將介入消息發(fā)送給核IOS1和核1053。通過定義多個(gè)一致域并確保僅在能夠從它們的一致性獲益的設(shè)備(例如,核、I/O 等)之間維持一致性,得到許多益處。就減少緩存查找數(shù)量以及調(diào)用更少的響應(yīng)而言,實(shí)現(xiàn) 性能提升并且減少功耗。緩存查找的減少還可以免除為每個(gè)緩存配備復(fù)制的標(biāo)記陣列的需 要,其中,一個(gè)這種陣列用于常規(guī)緩存流量,并且另一個(gè)用于介入流量。由于建立多個(gè)一致域而引起的一致流量的減小可以使一致流量最小化到如下程度緩存大小的所得到的增加 勝過包括第二緩存標(biāo)記陣列以容納一致流量的任何好處。換言之,由于只在如此需要的設(shè) 備之間維持一致性,因此減少了介入消息的數(shù)量,因而可以避免每個(gè)緩存內(nèi)復(fù)制的標(biāo)記陣 列的需要。因此,其上形成本發(fā)明的處理器的半導(dǎo)體晶片可以具有更小的尺寸。
圖8是根據(jù)本發(fā)明另一個(gè)實(shí)施例的緩存一致性管理器200的框圖。圖8中所示的 緩存一致性管理器的實(shí)施例使用Ll緩存標(biāo)記陣列360來維持一致域。Ll緩存標(biāo)記陣列360 是核中所存儲的聚集的Ll緩存標(biāo)記的副本,并且可以被邏輯分區(qū)成分別與Ll緩存115” 1152、1153和1154相關(guān)聯(lián)的四個(gè)標(biāo)記陣列SeS1JeS2JeS3和3654。將與發(fā)起請求的核相關(guān) 聯(lián)的標(biāo)識符與屏蔽寄存器260中所存儲的索引相比較,以確定隨后將被搜索以便繼而識別 將接收相應(yīng)介入消息的核105,的Ll標(biāo)記陣列分區(qū)365”換言之,在Ll緩存標(biāo)記陣列360 中搜索所得到的命中識別出核中的哪個(gè)(如果有的話)核包含所請求的數(shù)據(jù),并且將使得 將介入消息僅發(fā)送給該核。Ll緩存標(biāo)記陣列360消除了每個(gè)核內(nèi)具有專用的復(fù)制的緩存標(biāo) 記的需要。圖9是根據(jù)本發(fā)明另一個(gè)實(shí)施例的緩存一致性管理器200的框圖。圖9中所示的 緩存一致性管理器的實(shí)施例使用目錄600來維持一致域。目錄600與屏蔽寄存器260 —起 適合于遵照所建立的一致性關(guān)系并基于該請求的地址來引導(dǎo)介入消息。對于每個(gè)一致請 求,目錄600識別出可能是該請求的目標(biāo)的一個(gè)或更多個(gè)核并將該信息提供給屏蔽寄存器 260。作為響應(yīng)并根據(jù)該信息,屏蔽寄存器260使用其中所存儲的掩碼值來使得將介入消息 轉(zhuǎn)發(fā)給有可能包含所請求的數(shù)據(jù)的核。接收該介入消息的核將在其各自的Ll緩存中搜索 該數(shù)據(jù)。根據(jù)規(guī)則更新目錄600,這些規(guī)則使得目錄600能夠識別出未存儲在緩存中的任 何緩存中的一致數(shù)據(jù)。然而,被目錄600識別為存儲在Ll緩存中的數(shù)據(jù)可能實(shí)際上并不存 在于該緩存中。被目錄600識別為存儲在緩存中并且隨后被檢測為存在于該緩存中的數(shù)據(jù) 在存儲該數(shù)據(jù)的緩存行不處于無效狀態(tài)的情況下被視為有效。目錄600使用尋址方案來確 定介入消息的目標(biāo)。在一些實(shí)施例中,遵照緩存一致性管理器所定義的多個(gè)一致域?qū)χ鞔鎯ζ?00進(jìn) 行邏輯分區(qū)。這樣,將每個(gè)一致域映射到并關(guān)聯(lián)到存儲器300內(nèi)一定范圍的地址。使用與 請求相關(guān)聯(lián)的地址來識別被搜索以訪問所請求的數(shù)據(jù)的主存儲器分區(qū)。例如,參照圖4,假設(shè)存儲器300被分區(qū)以支持核IOS1與核1052、核1053和核1054 中的每個(gè)核之間的一致性,以及核1052、核1053和核1054之間的不一致性。圖10是存儲器 300的這種分區(qū)的示例。涵蓋0與L之間的地址范圍的分區(qū)350被示為專用于存儲維持核 IOS1與核1052之間的一致性的數(shù)據(jù)的副本。涵蓋L+1與M之間的地址范圍的分區(qū)355被 示為專用于存儲維持核IOS1與核1053之間的一致性的數(shù)據(jù)的副本。涵蓋M+1與N之間的 地址范圍的分區(qū)360被示為專用于存儲適合于維持核IOS1與核1054之間的一致性的數(shù)據(jù) 的副本。涵蓋N+1與0之間的地址范圍的分區(qū)365被示為專用于存儲適合于維持所有的核 IOSiUOS2UOS3* 1054上的一致性的數(shù)據(jù)的副本。涵蓋0+1與P之間的地址范圍的分區(qū)370 被示為專用于存儲僅被核IOS1使用的數(shù)據(jù)的副本。涵蓋大于P+1的地址范圍的分區(qū)375被 示為專用于存儲非可緩存的數(shù)據(jù)。在一些實(shí)施例中,被布置在緩存一致性管理器200中的 介入單元210操縱主存儲器300的邏輯分區(qū)以及每個(gè)一致域與相關(guān)聯(lián)的存儲器300的分區(qū)之間的映射。如上所述,在一個(gè)實(shí)施例中,使用與請求相關(guān)聯(lián)的地址來提供所需映射并訪問 相應(yīng)的存儲器分區(qū)。在另一個(gè)實(shí)施例中,使用與發(fā)出請求的核相關(guān)聯(lián)的標(biāo)識符來提供所需映射并訪問相應(yīng)的存儲器分區(qū)。在又一個(gè)實(shí)施例中,使用請求地址和與發(fā)出請求的核相關(guān) 聯(lián)的標(biāo)識符的組合來提供所需映射并訪問相應(yīng)的存儲器分區(qū)。圖11圖解了在其中可以實(shí)施本發(fā)明的示例性計(jì)算機(jī)系統(tǒng)1000。計(jì)算機(jī)系統(tǒng)1000 通常包括一個(gè)或更多個(gè)輸出設(shè)備1100,包括顯示設(shè)備(例如,CRT、IXD、OLED、LED、氣體等 離子體、電子墨水、或其它類型的顯示器)、揚(yáng)聲器以及其它音頻輸出設(shè)備、和觸覺輸出設(shè)備 (例如,激振器);計(jì)算機(jī)1200 ;鍵盤1300 ;輸入設(shè)備1400 ;以及網(wǎng)絡(luò)接口 1500。輸入設(shè)備 1400可以包括計(jì)算機(jī)鼠標(biāo)、軌跡球、操縱桿、觸控板、繪圖板、觸摸屏、麥克風(fēng)、各種傳感器、 和/或其它允許用戶或環(huán)境與計(jì)算機(jī)系統(tǒng)1000交互的有線或無線輸入設(shè)備。網(wǎng)絡(luò)接口 1500 通常提供與電子通信網(wǎng)絡(luò)(例如,局域網(wǎng);廣域網(wǎng),例如因特網(wǎng);和/或虛擬網(wǎng)絡(luò),例如虛擬 專用網(wǎng)(VPN))的有線或無線通信。網(wǎng)絡(luò)接口 1500可以實(shí)施一種或更多種有線或無線網(wǎng)絡(luò) 技術(shù),包括以太網(wǎng)、802. 11標(biāo)準(zhǔn)中的一個(gè)或更多個(gè)標(biāo)準(zhǔn)、藍(lán)牙、以及超寬帶聯(lián)網(wǎng)技術(shù)。計(jì)算機(jī)1200通常包括諸如一個(gè)或更多個(gè)通用處理器1600的組件、以及諸如隨機(jī) 存取存儲器(RAM) 1700和非易失性存儲器1800的存儲器存儲設(shè)備。非易失性存儲器1800 可以包括軟盤;固定的或可移動的硬盤;諸如DVD-ROM、CD-ROM以及條形碼的光存儲媒體; 諸如閃存的非易失性半導(dǎo)體存儲設(shè)備;只讀存儲器(ROM);電池供電的易失性存儲器;紙或 其它打印介質(zhì);以及聯(lián)網(wǎng)的存儲設(shè)備。系統(tǒng)總線1900將以上組件互連。處理器1600可以 是諸如上述多處理器100的多處理器系統(tǒng)。RAM 1700和非易失性存儲器1800是用于存儲數(shù)據(jù)、音頻/視頻文件、計(jì)算機(jī)程序、 小應(yīng)用程序解釋器或編譯器、虛擬機(jī)、以及上述的本發(fā)明的實(shí)施例的有形介質(zhì)的示例。例 如,本發(fā)明的處理器的上述實(shí)施例可以被表示為使得能夠進(jìn)行計(jì)算機(jī)系統(tǒng)和/或集成電路 的設(shè)計(jì)、描述、建模、仿真、測試、集成、和/或制造的人可讀的或計(jì)算機(jī)可用的程序和數(shù)據(jù) 文件。這種程序和數(shù)據(jù)文件可以用于以單獨(dú)集成電路的形式實(shí)施本發(fā)明的實(shí)施例,或者用 于將本發(fā)明的實(shí)施例與其它組件集成以形成組合的集成電路,例如,微處理器、微控制器、 片上系統(tǒng)(SoC)、數(shù)字信號處理器、嵌入式處理器、或?qū)S眉呻娐?ASIC)。表達(dá)本發(fā)明實(shí)施例的程序和數(shù)據(jù)文件可以使用通用編程或腳本語言,例如C或 C++ ;硬件描述語言,例如VHDL或Verilog ;微碼,實(shí)施于RAM、ROM中,或者被硬連線并適合 于控制并協(xié)調(diào)處理器或其它集成電路內(nèi)的組件的操作;和/或標(biāo)準(zhǔn)或?qū)S懈袷綌?shù)據(jù)文件, 適用于本領(lǐng)域中已知的電子設(shè)計(jì)自動化軟件應(yīng)用。程序和數(shù)據(jù)文件可以按各種抽象級別表 達(dá)本發(fā)明的實(shí)施例,包括按功能描述、按邏輯門和其它電路組件的綜合網(wǎng)表、以及按適用 于半導(dǎo)體制造工藝的集成電路布圖或一組掩模。計(jì)算機(jī)所執(zhí)行的電子設(shè)計(jì)自動化軟件可以 處理這些程序和數(shù)據(jù)文件,以設(shè)計(jì)處理器并生成用于其制造的掩模。計(jì)算機(jī)1200進(jìn)一步的實(shí)施例可以包括用于配置、操作、仿真、測試在集成電路的 設(shè)計(jì)、測試和制造中使用的專用硬件和軟件并且與之通信的專用輸入、輸出以及通信子系 統(tǒng)。雖然本發(fā)明的以上實(shí)施例是參照具有四個(gè)核的處理器作出的,但可以理解的是, 處理器可以具有多于或少于四個(gè)核??驁D中所示出的各種設(shè)備的數(shù)量和布置是為清楚和易 于理解起見??梢岳斫獾氖?,塊的組合、新塊的添加、塊的重新布置等落入本發(fā)明的可替選實(shí)施例內(nèi)。例如,任意數(shù)量的I/O、一致多核處理器、系統(tǒng)存儲器、L2緩存和L3緩存以及不 一致緩存或無緩存處理核也可以用在單個(gè)系統(tǒng)中并根據(jù)屏蔽寄存器進(jìn)行分區(qū)以形成多個(gè) 一致域和不一致域。另外,雖然本發(fā)明是參照用屏蔽寄存器定義各種一致域來進(jìn)行描述的, 但可以理解的是,根據(jù)本發(fā)明,可以使用任何其它存儲介質(zhì)(例如RAM)以及任何其它技術(shù) (例如查找表)等來建立一致域并提供一致請求的發(fā)起者與所引起的介入消息的目標(biāo)之間 的映射。可以理解的是,本文中所描述的裝置和方法可以被包括在諸如微處理器核的半導(dǎo) 體知識產(chǎn)權(quán)核中(例如,被表達(dá)為硬件描述語言描述或綜合網(wǎng)表),并在集成電路的生產(chǎn)中 被轉(zhuǎn)變成硬件。另外,可以使用硬件與軟件的組合(包括適用于在處理器內(nèi)執(zhí)行的微碼) 來實(shí)施本發(fā)明的實(shí)施例。本發(fā)明的以上實(shí)施例是示例性的而非限制性的。可存在各種替選方案和等同物。本發(fā)明不限于可以布置本公開的集成電路的類型。本發(fā)明也不限于任何具體類型的工藝技 術(shù),例如,CMOS、雙極、BICM0S、或其它可以用于制造本發(fā)明各種實(shí)施例的方式。其它的增、減 或修改根據(jù)本發(fā)明是明顯的并且意在落入所附權(quán)利要求的范圍內(nèi)。
權(quán)利要求
一種微處理器,包括多個(gè)處理核;以及緩存一致性管理器,其適合于定義所述多個(gè)處理核之間的多個(gè)一致性關(guān)系,以使得被表征為與一致性關(guān)系相關(guān)聯(lián)的流量僅在被定義為具有所述一致性關(guān)系的處理核之間流動。
2.根據(jù)權(quán)利要求1所述的微處理器,其中,響應(yīng)于從所述多個(gè)處理核中的第一處理核 接收請求,所述緩存一致性管理器將介入消息發(fā)送給所述多個(gè)處理核的被定義為與所述多 個(gè)處理核中的所述第一處理核具有一致性關(guān)系的第一子集,所述第一子集包括所述多個(gè)處 理核中的所述第一處理核。
3.根據(jù)權(quán)利要求2所述的微處理器,其中,根據(jù)從由可編程寄存器、隨機(jī)存取存儲器和 硬連線電路組成的組提供的數(shù)據(jù)定義所述多個(gè)一致性關(guān)系。
4.根據(jù)權(quán)利要求2所述的微處理器,其中,所述緩存一致性管理器還包括邏輯電路,其 適合于如果所述請求是讀取訪問請求,并且所述請求所標(biāo)識的數(shù)據(jù)存儲在與所述多個(gè)處理核 中被布置在所述第一子集中的第二處理核相關(guān)聯(lián)的緩沖存儲器中,則將所述數(shù)據(jù)從與所述 多個(gè)處理核中的所述第二處理核相關(guān)聯(lián)的所述緩沖存儲器傳送給所述多個(gè)處理核中的所 述第一處理核。
5.根據(jù)權(quán)利要求4所述的微處理器,其中,所述緩存一致性管理器還包括邏輯電路,其 適合于如果所述數(shù)據(jù)未存儲在與所述第一子集相關(guān)聯(lián)的所述緩沖存儲器中,則將所述數(shù)據(jù)從 2級緩存和系統(tǒng)存儲器中的一個(gè)傳送給所述多個(gè)核中的所述第一核。
6.根據(jù)權(quán)利要求3所述的微處理器,其中,所述緩存一致性管理器還包括邏輯電路,其 適合于根據(jù)所提供的數(shù)據(jù)維持第一輸入/輸出設(shè)備與所述多個(gè)處理核的第二子集相一致, 所述輸入/輸出設(shè)備經(jīng)由系統(tǒng)總線耦合到所述微處理器。
7.根據(jù)權(quán)利要求1所述的微處理器,其中,所述多個(gè)處理核中的至少一個(gè)處理核包括 單個(gè)緩存標(biāo)記陣列。
8.根據(jù)權(quán)利要求2所述的微處理器,其中,所述緩存一致性管理器還包括邏輯塊,其適 合于將主存儲器邏輯分區(qū)成多個(gè)可尋址的區(qū)域,每個(gè)區(qū)域被配置成存儲與所述一致性關(guān)系 中一個(gè)不同的一致性關(guān)系相關(guān)聯(lián)的一致數(shù)據(jù),所述主存儲器經(jīng)由系統(tǒng)總線耦合到所述微處理器。
9.根據(jù)權(quán)利要求2所述的微處理器,其中,所述緩存一致性管理器被配置成根據(jù)與所 述多個(gè)處理核中的所述第一處理核相關(guān)聯(lián)的標(biāo)識符以及所述請求所定義的地址中的一個(gè), 將所述介入消息發(fā)送給所述多個(gè)處理核的所述第一子集。
10.一種在被布置在微處理器中的多個(gè)處理核之間控制一致流量的方法,該方法包括允許在所述多個(gè)處理核中被定義為具有一致性關(guān)系的第一組處理核之間的一致流量 的流動;以及禁止所述多個(gè)處理核中被定義為不具有一致性關(guān)系的第二組處理核之間的一致流量 的流動。
11.根據(jù)權(quán)利要求10所述的方法,還包括從所述多個(gè)處理核中的第一處理核接收第一請求;以及將介入消息發(fā)送給所述多個(gè)處理核的被定義為與所述多個(gè)處理核中的所述第一處理 核具有一致性關(guān)系的第一子集,所述第一子集包括所述多個(gè)處理核中的所述第一處理核。
12.根據(jù)權(quán)利要求11所述的方法,還包括如果所述第一請求是讀取請求,并且所述第一請求所標(biāo)識的數(shù)據(jù)存儲在與所述多個(gè)處 理核中被布置在所述第一子集中的第二處理核相關(guān)聯(lián)的緩沖存儲器中,則將所述數(shù)據(jù)從與 所述多個(gè)處理核中的所述第二處理核相關(guān)聯(lián)的所述緩沖存儲器傳送給所述多個(gè)處理核中 的所述第一處理核。
13.根據(jù)權(quán)利要求11所述的方法,還包括維持第一輸入/輸出設(shè)備與所述多個(gè)處理核的第二子集之間的一致性,所述輸入/輸 出設(shè)備經(jīng)由系統(tǒng)總線耦合到所述微處理器。
14.根據(jù)權(quán)利要求13所述的方法,還包括維持被布置在所述微處理器中的所述多個(gè)處理核中的所述第一處理核與所述多個(gè)處 理核中的所述第二處理核之間的緩存一致性;維持被布置在所述微處理器中的所述多個(gè)處理核中的第一處理核與所述多個(gè)處理核 中的所述第三處理核之間的緩存一致性;以及維持所述多個(gè)處理核中的所述第二處理核與所述多個(gè)處理核中的所述第三處理核之 間的緩存不一致性。
15.根據(jù)權(quán)利要求11所述的方法,還包括將單個(gè)緩存標(biāo)記陣列布置在所述多個(gè)處理核中的至少一個(gè)處理核中。
16.根據(jù)權(quán)利要求11所述的方法,還包括根據(jù)從由可編程寄存器、隨機(jī)存取存儲器和硬連線電路組成的組提供的數(shù)據(jù)來定義所 述一致性關(guān)系。
17.根據(jù)權(quán)利要求11所述的方法,還包括經(jīng)由系統(tǒng)總線將主存儲器耦合到所述微處理器;以及將所述主存儲器邏輯分區(qū)成多個(gè)區(qū)域,每個(gè)區(qū)域適合于存儲與多個(gè)一致性關(guān)系中一個(gè) 不同的一致性關(guān)系相關(guān)聯(lián)的一致數(shù)據(jù)。
18.根據(jù)權(quán)利要求11所述的方法,還包括根據(jù)與所述多個(gè)處理核中的所述第一處理核相關(guān)聯(lián)的標(biāo)識符以及所述請求所定義的 地址中的一個(gè),將所述介入消息發(fā)送給所述多個(gè)處理核的所述第一子集。
19.一種計(jì)算機(jī)可讀存儲介質(zhì),包括定義微處理器的邏輯塊的指令,所述微處理器包括 多個(gè)處理核,所述計(jì)算機(jī)可讀存儲介質(zhì)適合于由計(jì)算機(jī)所執(zhí)行的電子設(shè)計(jì)自動化應(yīng)用來使 用,其中,所述邏輯塊被配置成進(jìn)行操作,該操作包括允許在所述多個(gè)處理核中被定義為具有一致性關(guān)系的第一組處理核之間的一致流量 的流動;以及禁止所述多個(gè)處理核中被定義為不具有一致性關(guān)系的第二組處理核之間的一致流量 的流動。
20.根據(jù)權(quán)利要求19所述的計(jì)算機(jī)可讀存儲介質(zhì),其中,所述邏輯塊還適合于進(jìn)行操 作,該操作包括從所述多個(gè)處理核中的第一處理核接收第一請求;以及將介入消息發(fā)送給所述多個(gè)處理核的被定義為與所述多個(gè)處理核中的所述第一處理 核具有一致性關(guān)系的第一子集,所述第一子集包括所述多個(gè)處理核中的所述第一處理核。
21.根據(jù)權(quán)利要求20所述的計(jì)算機(jī)可讀存儲介質(zhì),其中,所述邏輯塊還適合于進(jìn)行操 作,該操作包括如果所述第一請求是讀取請求,并且所述第一請求所標(biāo)識的數(shù)據(jù)被存儲在與所述多個(gè) 處理核中被布置在所述第一子集中的第二處理核相關(guān)聯(lián)的緩沖存儲器中,則將所述數(shù)據(jù)從 與所述多個(gè)處理核中的所述第二處理核相關(guān)聯(lián)的所述緩沖存儲器傳送給所述多個(gè)處理核 中的所述第一處理核。
22.根據(jù)權(quán)利要求20所述的計(jì)算機(jī)可讀存儲介質(zhì),其中,所述邏輯塊還適合于進(jìn)行操 作,該操作包括維持第一輸入/輸出設(shè)備與所述多個(gè)處理核的第二子集之間的一致性,所述輸入/輸 出設(shè)備經(jīng)由系統(tǒng)總線耦合到所述微處理器。
23.根據(jù)權(quán)利要求19所述的計(jì)算機(jī)可讀存儲介質(zhì),其中,所述多個(gè)處理核中的至少一 個(gè)處理核包括單個(gè)緩存標(biāo)記陣列。
24.根據(jù)權(quán)利要求20所述的計(jì)算機(jī)可讀存儲介質(zhì),其中,所述邏輯塊還適合于進(jìn)行操 作,該操作包括將主存儲器邏輯分區(qū)成多個(gè)區(qū)域,每個(gè)區(qū)域適合于存儲與多個(gè)一致性關(guān)系中一個(gè)不同 的一致性關(guān)系相關(guān)聯(lián)的一致數(shù)據(jù)。
25.根據(jù)權(quán)利要求20所述的計(jì)算機(jī)可讀存儲介質(zhì),其中,所述邏輯塊還適合于進(jìn)行操 作,該操作包括根據(jù)與所述多個(gè)處理核中的所述第一處理核相關(guān)聯(lián)的標(biāo)識符以及所述請求所定義的 地址中的一個(gè),將所述介入消息發(fā)送給所述多個(gè)處理核的所述第一子集。
全文摘要
在被布置在微處理器中的多個(gè)處理核之間維持若干一致域。緩存一致性管理器定義一致性關(guān)系,以使得一致流量僅在被定義為具有一致性關(guān)系的處理核之間流動。定義處理核之間的一致性關(guān)系的數(shù)據(jù)可選地存儲在可編程寄存器中。針對一致請求的每個(gè)源,在可編程寄存器中識別該請求的處理核目標(biāo)。響應(yīng)于一致請求,將介入消息僅轉(zhuǎn)發(fā)給被定義成與請求核處于同一個(gè)一致域中的核。如果響應(yīng)于一致讀取請求出現(xiàn)緩存命中并且引起該命中的緩存行的一致性狀態(tài)滿足條件,則使得請求核可從該緩存行得到所請求的數(shù)據(jù)。
文檔編號G06F11/00GK101802790SQ200880108013
公開日2010年8月11日 申請日期2008年9月19日 優(yōu)先權(quán)日2007年9月21日
發(fā)明者瑞安·C·金特 申請人:美普思科技公司