欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

允許i/o寫(xiě)操作管道化及多操作范圍的數(shù)據(jù)處理系統(tǒng)與方法

文檔序號(hào):6559742閱讀:175來(lái)源:國(guó)知局
專利名稱:允許i/o寫(xiě)操作管道化及多操作范圍的數(shù)據(jù)處理系統(tǒng)與方法
技術(shù)領(lǐng)域
本發(fā)明總體上涉及數(shù)據(jù)處理,尤其涉及高速緩沖存儲(chǔ)器一致的數(shù)據(jù)處理系統(tǒng)中的數(shù)據(jù)處理。
背景技術(shù)
傳統(tǒng)的對(duì)稱多處理器(SMP)計(jì)算機(jī)系統(tǒng),例如服務(wù)器計(jì)算機(jī)系統(tǒng),包括全都耦合到一個(gè)系統(tǒng)互連的多個(gè)處理單元,該系統(tǒng)互連典型地包括一個(gè)或多個(gè)地址、數(shù)據(jù)及控制總線。耦合到系統(tǒng)互連的是系統(tǒng)存儲(chǔ)器,該存儲(chǔ)器代表多處理器計(jì)算機(jī)系統(tǒng)中最底層的易失存儲(chǔ)器并通??梢杂伤刑幚韱卧M(jìn)行讀寫(xiě)訪問(wèn)。為了減少對(duì)駐留在系統(tǒng)存儲(chǔ)器中的指令和數(shù)據(jù)的訪問(wèn)等待時(shí)間,每個(gè)處理單元典型地還由各自的多級(jí)高速緩沖存儲(chǔ)器層次支持,其底層可以由一個(gè)或多個(gè)處理器內(nèi)核共享。
因?yàn)槎鄠€(gè)處理器內(nèi)核可以請(qǐng)求對(duì)相同的高速緩沖存儲(chǔ)器數(shù)據(jù)線進(jìn)行寫(xiě)訪問(wèn)并且因?yàn)樾薷暮蟮母咚倬彌_存儲(chǔ)器線不能立即與系統(tǒng)存儲(chǔ)器同步,因此多處理器計(jì)算機(jī)系統(tǒng)的高速緩沖存儲(chǔ)器層次典型地實(shí)現(xiàn)高速緩沖存儲(chǔ)器一致性協(xié)議來(lái)確保系統(tǒng)存儲(chǔ)器內(nèi)容在多個(gè)處理器內(nèi)核的“視圖”中至少最小級(jí)別的一致。特別地,高速緩沖存儲(chǔ)器一致性至少需要在處理單元訪問(wèn)存儲(chǔ)器塊的拷貝后并隨后訪問(wèn)該存儲(chǔ)器塊的更新拷貝后,處理單元不能再次訪問(wèn)該存儲(chǔ)器塊的舊拷貝。
高速緩沖存儲(chǔ)器一致性協(xié)議典型地定義關(guān)聯(lián)每個(gè)高速緩沖存儲(chǔ)器層次的高速緩沖存儲(chǔ)器線所存儲(chǔ)的一組高速緩沖存儲(chǔ)器狀態(tài),及用于在高速緩沖存儲(chǔ)器層次之間傳送高速緩沖存儲(chǔ)器狀態(tài)信息的一組一致性消息。在典型實(shí)現(xiàn)中,高速緩沖存儲(chǔ)器狀態(tài)信息采取眾所周知的MESI(修改、獨(dú)占、共享、無(wú)效)協(xié)議或其變體的形式,而一致性消息指示存儲(chǔ)器訪問(wèn)請(qǐng)求的請(qǐng)求者和/或接收者的高速緩沖存儲(chǔ)器層次中協(xié)議定義的一致性狀態(tài)變化。
迄今為止,高速緩沖存儲(chǔ)器一致性協(xié)議通常假設(shè)為了維護(hù)高速緩沖存儲(chǔ)器一致性,必須采用一致性消息的全局廣播。即,所有的一致性消息必須由SMP計(jì)算機(jī)系統(tǒng)中的所有高速緩沖存儲(chǔ)器層次接收。但是,本發(fā)明認(rèn)識(shí)到一致性消息全局廣播的需求對(duì)SMP計(jì)算機(jī)系統(tǒng)的可伸縮性造成顯著的障礙,特別是隨著系統(tǒng)規(guī)模增長(zhǎng)會(huì)消耗越來(lái)越多的系統(tǒng)互連帶寬量。

發(fā)明內(nèi)容
鑒于現(xiàn)有技術(shù)前面的及其它的缺點(diǎn),本發(fā)明提供了改進(jìn)的高速緩沖存儲(chǔ)器一致數(shù)據(jù)處理系統(tǒng)及高速緩沖存儲(chǔ)器一致數(shù)據(jù)處理系統(tǒng)中的數(shù)據(jù)處理方法。
在一種實(shí)施方式中,數(shù)據(jù)處理系統(tǒng)至少包括具有輸入/輸出(I/O)控制器的第一處理節(jié)點(diǎn)和包括用于存儲(chǔ)器的存儲(chǔ)器控制器的第二處理節(jié)點(diǎn)。存儲(chǔ)器控制器按次序從I/O控制器接收管道化的第一和第二DMA寫(xiě)操作,其中第一和第二DMA寫(xiě)操作的目標(biāo)分別在于第一和第二地址。響應(yīng)第二DMA寫(xiě)操作,存儲(chǔ)器控制器建立與第二地址關(guān)聯(lián)的域指示符的狀態(tài),以便指示包括第一處理節(jié)點(diǎn)的操作范圍。響應(yīng)存儲(chǔ)器控制器接收指定第二地址并具有不包括第一處理節(jié)點(diǎn)的范圍的數(shù)據(jù)訪問(wèn)請(qǐng)求,基于與第二地址關(guān)聯(lián)的域指示符的狀態(tài),存儲(chǔ)器控制器強(qiáng)制數(shù)據(jù)訪問(wèn)請(qǐng)求以包括第一處理節(jié)點(diǎn)的范圍重新發(fā)布。
本發(fā)明的所有目的、特征與優(yōu)點(diǎn)將在以下具體書(shū)面描述中變得顯而易見(jiàn)。


相信是本發(fā)明特征的新特征在所附權(quán)利要求中闡述。但是,本發(fā)明及其優(yōu)選的使用模式將通過(guò)聯(lián)系附圖閱讀參考以下說(shuō)明性實(shí)施方式的具體描述最好地理解,其中圖1是根據(jù)本發(fā)明的示例數(shù)據(jù)處理系統(tǒng)的高級(jí)方框圖;圖2是根據(jù)本發(fā)明的處理單元的更具體的方框圖;圖3是圖2所述L2高速緩沖存儲(chǔ)器陣列與目錄的更具體的方框圖;圖4是圖1數(shù)據(jù)處理系統(tǒng)的系統(tǒng)互連上示例事務(wù)的時(shí)空?qǐng)D;圖5說(shuō)明了根據(jù)本發(fā)明優(yōu)選實(shí)施方式的域指示符;圖6是根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中由處理器內(nèi)核提供讀操作服務(wù)的示例方法的高級(jí)邏輯流程圖;圖7A-7B一起構(gòu)成根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中提供處理器更新操作服務(wù)的示例方法的高級(jí)邏輯流程圖;圖8是根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行I/O寫(xiě)操作的示例方法的高級(jí)邏輯流程圖;圖9是根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行本地總線讀操作的示例方法的高級(jí)邏輯流程圖;圖10A-10B一起構(gòu)成根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行全局總線讀操作的示例方法的高級(jí)邏輯流程圖;圖11是根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行本地總線RWITM操作的示例方法的高級(jí)邏輯流程圖;圖12A-12B一起構(gòu)成根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行全局總線RWITM操作的示例方法的高級(jí)邏輯流程圖;圖13是根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行本地總線DClaim操作的示例方法的高級(jí)邏輯流程圖;圖14是根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行全局總線DClaim操作的示例方法的高級(jí)邏輯流程圖;圖15是根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行本地總線kill操作的示例方法的高級(jí)邏輯流程圖;圖16是根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行全局總線kill操作的示例方法的高級(jí)邏輯流程圖;
圖17是根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行本地總線寫(xiě)操作的示例方法的高級(jí)邏輯流程圖;圖18是根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行全局總線寫(xiě)操作的示例方法的高級(jí)邏輯流程圖;圖19是說(shuō)明根據(jù)本發(fā)明第一實(shí)施方式對(duì)由管道化DMA總線寫(xiě)操作所寫(xiě)的存儲(chǔ)器塊進(jìn)行保護(hù)的時(shí)空?qǐng)D;圖20是說(shuō)明根據(jù)本發(fā)明第二實(shí)施方式對(duì)由管道化DMA總線寫(xiě)操作所寫(xiě)的存儲(chǔ)器塊進(jìn)行保護(hù)的時(shí)空?qǐng)D。
具體實(shí)施例方式
I、示例數(shù)據(jù)處理系統(tǒng)現(xiàn)在參考附圖,尤其是參考圖1,說(shuō)明了根據(jù)本發(fā)明的高速緩沖存儲(chǔ)器一致對(duì)稱多處理器(SMP)數(shù)據(jù)處理系統(tǒng)的示例實(shí)施方式的高級(jí)方框圖。如所示出的,數(shù)據(jù)處理系統(tǒng)100包括多個(gè)用于處理數(shù)據(jù)和指令的處理節(jié)點(diǎn)102a、102b。處理節(jié)點(diǎn)102a、102b耦合到用于傳送地址、數(shù)據(jù)和控制信息的系統(tǒng)互連110。系統(tǒng)互連110可以實(shí)現(xiàn)為例如總線互連、開(kāi)關(guān)互連或混合互連。
在所述實(shí)施方式中,每個(gè)處理節(jié)點(diǎn)102實(shí)現(xiàn)為包含四個(gè)處理單元104a-104d的多芯片模塊(MCM),每個(gè)處理單元都優(yōu)選地實(shí)現(xiàn)為各自的集成電路。每個(gè)處理節(jié)點(diǎn)102中的處理單元104a-104d為了通信由本地互連114耦合,就象系統(tǒng)互連110,本地互連114可以實(shí)現(xiàn)為一個(gè)或多個(gè)總線和/或開(kāi)關(guān)。
耦合到每個(gè)本地互連114的設(shè)備不僅包括處理單元104,還包括一個(gè)或多個(gè)系統(tǒng)存儲(chǔ)器108a-108d。駐留在系統(tǒng)存儲(chǔ)器108中的數(shù)據(jù)和指令通常可以由數(shù)據(jù)處理系統(tǒng)100的任一處理節(jié)點(diǎn)102中的任一處理單元104訪問(wèn)并修改。在本發(fā)明的可選實(shí)施方式中,一個(gè)或多個(gè)系統(tǒng)存儲(chǔ)器108可以耦合到系統(tǒng)互連110而不是本地互連114。
本領(lǐng)域技術(shù)人員將理解SMP數(shù)據(jù)處理系統(tǒng)100可以包括許多附加的未說(shuō)明的組件,如互連橋、非易失存貯器、用于連接到網(wǎng)絡(luò)的端口或附屬設(shè)備等。因?yàn)檫@種附加組件對(duì)本發(fā)明的理解不是必需的,因此它們沒(méi)有在圖1中說(shuō)明或者在此作進(jìn)一步討論。但是,還應(yīng)當(dāng)理解由本發(fā)明提供的增強(qiáng)可以應(yīng)用到多種體系結(jié)構(gòu)的高速緩沖存儲(chǔ)器一致數(shù)據(jù)處理系統(tǒng),而且不以任何方式限定到圖1所說(shuō)明的通用化數(shù)據(jù)處理系統(tǒng)體系結(jié)構(gòu)。
現(xiàn)在參考圖2,描述了根據(jù)本發(fā)明的示例處理單元104的更具體方框圖。在所述實(shí)施方式中,每個(gè)處理單元104都包括兩個(gè)用于獨(dú)立地處理指令和數(shù)據(jù)的處理器內(nèi)核200a、200b。每個(gè)處理器內(nèi)核200都包括至少用于提取并排序要執(zhí)行指令的指令排序單元(1SU)208及一個(gè)或多個(gè)用于執(zhí)行指令的執(zhí)行單元224。由執(zhí)行單元224執(zhí)行的指令包括請(qǐng)求訪問(wèn)存儲(chǔ)器塊或使得產(chǎn)生訪問(wèn)存儲(chǔ)器塊的請(qǐng)求的指令。
每個(gè)處理器內(nèi)核200的操作由在其最低級(jí)具有共享系統(tǒng)存儲(chǔ)器108a-108d、在其上級(jí)具有一級(jí)或多級(jí)高速緩沖存儲(chǔ)器的多級(jí)易失存儲(chǔ)器層次支持。在所述實(shí)施方式中,每個(gè)處理單元104包括響應(yīng)從處理器內(nèi)核200a-200b接收到的請(qǐng)求和由本地互連114上窺探者(S)222窺探到的操作控制對(duì)其處理節(jié)點(diǎn)102中各系統(tǒng)存儲(chǔ)器108a-108d的讀寫(xiě)訪問(wèn)的集成存儲(chǔ)器控制器(IMC)206。
在該說(shuō)明性實(shí)施方式中,處理單元104的高速緩沖存儲(chǔ)器層次包括每個(gè)處理器內(nèi)核200中的寫(xiě)直達(dá)第一級(jí)(L1)高速緩沖存儲(chǔ)器226和由處理單元104的所有處理器內(nèi)核200a、200b共享的第二級(jí)(L2)高速緩沖存儲(chǔ)器230。L2高速緩沖存儲(chǔ)器230包括L2陣列和目錄234、主控者232和窺探者236。響應(yīng)從所關(guān)聯(lián)的處理器內(nèi)核200a-200b接收到的存儲(chǔ)器訪問(wèn)(及其它)請(qǐng)求,主控者232啟動(dòng)本地互連114和系統(tǒng)互連110上的事務(wù)并訪問(wèn)L2陣列和目錄234。窺探者236窺探本地互連114上的操作、提供適當(dāng)?shù)捻憫?yīng)并執(zhí)行操作所需的對(duì)L2陣列和目錄234的任何訪問(wèn)。
盡管所說(shuō)明的高速緩沖存儲(chǔ)器層次只包括兩級(jí)高速緩沖存儲(chǔ)器,但本領(lǐng)域技術(shù)人員將理解可選實(shí)施方式可以包括片內(nèi)或片外在線或備用高速緩沖存儲(chǔ)器的附加級(jí)別(L3、L4等),這些附加級(jí)別可以全部包括、部分包括或不包括上級(jí)高速緩沖存儲(chǔ)器內(nèi)容。
每個(gè)處理單元104還包括響應(yīng)邏輯210的實(shí)例,如以下進(jìn)一步討論的,響應(yīng)邏輯210實(shí)現(xiàn)維護(hù)數(shù)據(jù)處理系統(tǒng)100中高速緩沖存儲(chǔ)器一致性的分布式一致性發(fā)信號(hào)機(jī)制的一部分。此外,每個(gè)處理單元104包括轉(zhuǎn)發(fā)邏輯212的實(shí)例,用于選擇性地在其本地互連114和系統(tǒng)互連110之間轉(zhuǎn)發(fā)信息。最后,每個(gè)處理單元104包括集成的I/O(輸入/輸出)控制器214,I/O控制器214支持如I/O設(shè)備216的一個(gè)或多個(gè)I/O設(shè)備的附連。如以下進(jìn)一步描述的,I/O控制器214可以響應(yīng)I/O設(shè)備216的請(qǐng)求在本地互連114和/或系統(tǒng)互連110上發(fā)布操作。
現(xiàn)在參考圖3,說(shuō)明了L2陣列和目錄234的示例實(shí)施方式的更具體方框圖。如所說(shuō)明的,L2陣列和目錄234包括組關(guān)聯(lián)L2高速緩沖緩沖器陣列300和L2高速緩沖緩沖器陣列300內(nèi)容的L2高速緩沖緩沖器目錄302。就象在傳統(tǒng)的組關(guān)聯(lián)L2高速緩沖緩沖器中,利用系統(tǒng)存儲(chǔ)器(實(shí)際)地址中預(yù)定義的索引位,系統(tǒng)存儲(chǔ)器108中的存儲(chǔ)器位置映射到高速緩沖緩沖器陣列300中特定的一致性類。存儲(chǔ)在高速緩沖緩沖器陣列300中的特定高速緩沖存儲(chǔ)器線記錄在高速緩沖存儲(chǔ)器目錄302中,目錄302對(duì)高速緩沖存儲(chǔ)器陣列300中的每個(gè)高速緩沖存儲(chǔ)器線包括一個(gè)目錄輸入。如本領(lǐng)域技術(shù)人員可以理解的,高速緩沖存儲(chǔ)器目錄302中的每個(gè)目錄輸入包括至少利用對(duì)應(yīng)實(shí)際地址的標(biāo)志部分指定存儲(chǔ)在高速緩沖存儲(chǔ)器陣列300中的特定高速緩沖存儲(chǔ)器線的標(biāo)志域304、指示高速緩沖存儲(chǔ)器線的一致性狀態(tài)的狀態(tài)域306及指示關(guān)于同一一致性類中其它高速緩沖存儲(chǔ)器線的高速緩沖存儲(chǔ)器線替換次序的LRU(最近最少使用)域308。
II、示例操作現(xiàn)在參考圖4,描述了圖1數(shù)據(jù)處理系統(tǒng)100的本地或系統(tǒng)互連110、114上示例操作的時(shí)空?qǐng)D。當(dāng)L2高速緩沖存儲(chǔ)器230的主控者232(或其它主控者,如I/O控制器214)在本地互連114和/或系統(tǒng)互連110上發(fā)布請(qǐng)求402時(shí)操作開(kāi)始。請(qǐng)求402優(yōu)選地包括指示期望訪問(wèn)的類型的事務(wù)類型和指示要由該請(qǐng)求訪問(wèn)的資源的資源標(biāo)識(shí)符(例如,實(shí)際地址)。請(qǐng)求的通用類型優(yōu)選地包括在以下表I中所闡述的那些類型。
表I

請(qǐng)求402由L2高速緩沖存儲(chǔ)器230的窺探者236及存儲(chǔ)器控制器206的窺探者222(圖1)接收??偟膩?lái)說(shuō),對(duì)于有些異常,在與請(qǐng)求402的主控者232相同的L2高速緩沖存儲(chǔ)器230中的窺探者236不窺探請(qǐng)求402(即,通常不自窺探),因?yàn)橹挥性谡?qǐng)求402不能由處理單元402內(nèi)部提供服務(wù)時(shí)請(qǐng)求402才在本地互連114和/或系統(tǒng)互連110上發(fā)送。接收請(qǐng)求402的每個(gè)窺探者222、236提供各自的代表至少該窺探者對(duì)請(qǐng)求402的響應(yīng)的部分響應(yīng)406?;诶绺Q探者222是否對(duì)請(qǐng)求地址響應(yīng)及它是否具有對(duì)該請(qǐng)求提供服務(wù)的資源,存儲(chǔ)器控制器206中的窺探者222確定要提供的部分響應(yīng)406。L2高速緩沖存儲(chǔ)器230的窺探者236可以基于例如其L2高速緩沖存儲(chǔ)器目錄302的可用性、窺探者236中處理請(qǐng)求的窺探邏輯實(shí)例的可用性及與L2高速緩沖存儲(chǔ)器目錄302中請(qǐng)求地址關(guān)聯(lián)的一致性狀態(tài)來(lái)確定其部分響應(yīng)406。
窺探者222和236的部分響應(yīng)或者按階段或者全部立刻由響應(yīng)邏輯210的一個(gè)或多個(gè)實(shí)例邏輯組合,以確定對(duì)請(qǐng)求402的全系統(tǒng)組合響應(yīng)(CR)410。進(jìn)行以下討論的范圍約束,響應(yīng)邏輯210通過(guò)其本地互連114和/或系統(tǒng)互連110向主控者232和窺探者222、236提供指示對(duì)請(qǐng)求402的全系統(tǒng)響應(yīng)(例如,成功、失敗、重試等)的組合響應(yīng)410。如果CR 410指示請(qǐng)求402的成功,則CR 410可以指示例如用于所請(qǐng)求存儲(chǔ)器塊的數(shù)據(jù)源、其中所請(qǐng)求存儲(chǔ)器塊要由主控者232高速緩沖的高速緩沖存儲(chǔ)器狀態(tài)及是否需要使一個(gè)或多個(gè)L2高速緩沖存儲(chǔ)器230中所請(qǐng)求存儲(chǔ)器塊無(wú)效的“清除”操作。
響應(yīng)組合響應(yīng)410的接收,一個(gè)或多個(gè)主控者232和窺探者222、236典型地執(zhí)行一種或多種操作,以便為請(qǐng)求402提供服務(wù)。這些操作可以包括向主控者232提供數(shù)據(jù)、失效或更新一個(gè)或多個(gè)L2高速緩沖存儲(chǔ)器230中所高速緩沖數(shù)據(jù)的一致性狀態(tài)、執(zhí)行驅(qū)逐操作、將數(shù)據(jù)寫(xiě)回系統(tǒng)存儲(chǔ)器108等。如以下進(jìn)一步討論的,如果請(qǐng)求402需要,則所請(qǐng)求的或目標(biāo)存儲(chǔ)器塊可以在由響應(yīng)邏輯210產(chǎn)生組合響應(yīng)410之前發(fā)送到主控者232或者在之后從主控者232發(fā)送。
在以下描述中,窺探者222、236對(duì)請(qǐng)求的部分響應(yīng)及響應(yīng)該請(qǐng)求由窺探者執(zhí)行的操作和/或其組合響應(yīng)將參考關(guān)于由請(qǐng)求所指定的請(qǐng)求地址窺探者是在一致性最高點(diǎn)(HPC)、一致性最低點(diǎn)(LPC)或者都不是而進(jìn)行描述。LPC在此定義為充當(dāng)存儲(chǔ)器塊倉(cāng)庫(kù)的存儲(chǔ)器設(shè)備或I/O設(shè)備。在沒(méi)有用于存儲(chǔ)器塊的HPC的情況下,LPC保留存儲(chǔ)器塊的真正圖像并具有準(zhǔn)許或拒絕產(chǎn)生存儲(chǔ)器塊另外的高速緩沖拷貝的請(qǐng)求。對(duì)于圖1和2的數(shù)據(jù)處理系統(tǒng)實(shí)施方式中的典型請(qǐng)求,LPC將是用于保留所參照存儲(chǔ)器塊的系統(tǒng)存儲(chǔ)器108的存儲(chǔ)器控制器206。HPC在此定義為高速緩沖存儲(chǔ)器塊的真正圖像的唯一標(biāo)識(shí)設(shè)備(它可以也可以不與LPC上對(duì)應(yīng)的存儲(chǔ)器塊一致)并具有準(zhǔn)許或拒絕修改存儲(chǔ)器塊的請(qǐng)求。描述性地,HPC還可以響應(yīng)不修改存儲(chǔ)器塊的操作向請(qǐng)求者提供存儲(chǔ)器塊的拷貝。因此,對(duì)于圖1和2的數(shù)據(jù)處理系統(tǒng)實(shí)施方式中的典型請(qǐng)求,如果有的話,HPC將是L2高速緩沖存儲(chǔ)器230。盡管其它指示符也可以用于指示用于存儲(chǔ)器塊的HPC,但如以下參考表II進(jìn)一步描述的,如果有的話,本發(fā)明的優(yōu)選實(shí)施方式利用L2高速緩沖存儲(chǔ)器230的L2高速緩沖存儲(chǔ)器目錄302中選定的高速緩沖存儲(chǔ)器一致性狀態(tài)指示用于存儲(chǔ)器塊的HPC。
仍然參考圖4,如果有的話,請(qǐng)求402中所參照的用于存儲(chǔ)器塊的HPC,或者在沒(méi)有HPC的情況下是該存儲(chǔ)器塊的LPC,優(yōu)選地具有響應(yīng)保護(hù)窗口404a過(guò)程中的請(qǐng)求402保護(hù)存儲(chǔ)器塊所有權(quán)傳輸?shù)捻憫?yīng)性。在圖4所示的示例場(chǎng)景中,在從窺探者236確定其部分響應(yīng)406的時(shí)間延伸到窺探者236接收到組合響應(yīng)410的保護(hù)窗口404a過(guò)程中,是由請(qǐng)求402的請(qǐng)求地址指定的用于存儲(chǔ)器塊的HPC的窺探者236保護(hù)所請(qǐng)求存儲(chǔ)器塊的所有權(quán)向主控者232的傳輸。在保護(hù)窗口404a過(guò)程中,通過(guò)向指定防止其它主控者獲得所有權(quán)直到所有權(quán)成功傳輸?shù)街骺卣?32的相同請(qǐng)求地址的其它請(qǐng)求提供部分響應(yīng)406,窺探者236保護(hù)所有權(quán)的傳輸。同樣,在接收到組合響應(yīng)410之后,主控者232啟動(dòng)保護(hù)窗口404b來(lái)保護(hù)其請(qǐng)求402中所請(qǐng)求的存儲(chǔ)器塊的所有權(quán)。
因?yàn)楦Q探者222、236全部都具有用于處理上述CPU和I/O請(qǐng)求的有限資源,所以部分響應(yīng)及其對(duì)應(yīng)CR的幾種不同級(jí)別是可能的。例如,如果對(duì)所請(qǐng)求存儲(chǔ)器塊響應(yīng)的存儲(chǔ)器控制器206中的窺探者222具有可用于處理請(qǐng)求的隊(duì)列,則該窺探者222可以利用指示它能夠充當(dāng)該請(qǐng)求LPC的部分響應(yīng)來(lái)響應(yīng)。另一方面,如果窺探者沒(méi)有可用于處理請(qǐng)求的隊(duì)列,則該窺探者222可以利用指示它是存儲(chǔ)器塊的LPC但目前不能為該請(qǐng)求提供服務(wù)的部分響應(yīng)來(lái)響應(yīng)。
類似地,L2高速緩沖存儲(chǔ)器230中的窺探者236可能需要窺探邏輯的可用實(shí)例并為了處理請(qǐng)求而訪問(wèn)L2高速緩沖存儲(chǔ)器目錄302。缺少對(duì)這些資源中一個(gè)(或兩個(gè))的訪問(wèn)會(huì)導(dǎo)致通知由于缺少所需資源而不能為請(qǐng)求提供服務(wù)的部分響應(yīng)(及對(duì)應(yīng)CR)。
在下文中,如果需要,提供指示窺探者具有為請(qǐng)求提供服務(wù)所需的所有內(nèi)部資源的部分響應(yīng)的窺探者222、236被稱為“確認(rèn)”請(qǐng)求。對(duì)于窺探者236,確認(rèn)所窺探操作的部分響應(yīng)優(yōu)選地指示在該窺探者236的所請(qǐng)求或目標(biāo)存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)。提供指示窺探者236不具有為請(qǐng)求提供服務(wù)所需的所有內(nèi)部資源的部分響應(yīng)的窺探者236被稱為“可能隱藏的”。因?yàn)橛捎谌鄙俑Q探邏輯的可用實(shí)例或?qū)2高速緩沖存儲(chǔ)器目錄302的訪問(wèn)而使窺探者236不能以上面定義的意思“確認(rèn)”請(qǐng)求并且從其它主控者232和窺探者222、236的角度看具有未知的一致性狀態(tài),所以這種窺探者236是“可能隱藏的”。
III、數(shù)據(jù)遞送域傳統(tǒng)的基于廣播的數(shù)據(jù)處理系統(tǒng)通過(guò)廣播傳送處理高速緩沖存儲(chǔ)器一致性與數(shù)據(jù)遞送,在傳統(tǒng)系統(tǒng)中數(shù)據(jù)在系統(tǒng)互連上發(fā)送到該系統(tǒng)中的至少所有的存儲(chǔ)器控制器和高速緩沖存儲(chǔ)器層次。與可選體系結(jié)構(gòu)和類似規(guī)模的系統(tǒng)相比,基于廣播的系統(tǒng)有助于提供減少訪問(wèn)等待時(shí)間和更好的數(shù)據(jù)處理及共享存儲(chǔ)器塊的一致性管理。
隨著基于廣播的系統(tǒng)規(guī)模變大,系統(tǒng)互連上的流量加倍,這意味著由于需要更多的帶寬在系統(tǒng)互連上進(jìn)行傳送,因此系統(tǒng)成本隨系統(tǒng)規(guī)模急劇升高。即,具有m個(gè)處理器內(nèi)核且每個(gè)處理器內(nèi)核具有n個(gè)事務(wù)的平均流量的系統(tǒng)具有m×n的流量,這意味著基于廣播的系統(tǒng)中的流量不是相加而是成倍增加的。超過(guò)基本上更大的互連帶寬的需求,系統(tǒng)規(guī)模的增加具有增加一些訪問(wèn)等待時(shí)間的副作用。例如,在最壞的情況下,讀數(shù)據(jù)的訪問(wèn)等待數(shù)據(jù)受保留處于共享一致性狀態(tài)的所請(qǐng)求存儲(chǔ)器塊的最遠(yuǎn)的低級(jí)高速緩沖存儲(chǔ)器的組合響應(yīng)等待時(shí)間限制,所請(qǐng)求數(shù)據(jù)可以從該高速緩沖存儲(chǔ)器中找到源。
為了減少系統(tǒng)互連帶寬需求和訪問(wèn)等待時(shí)間同時(shí)還能保持基于廣播的系統(tǒng)的優(yōu)點(diǎn),本發(fā)明通過(guò)減小發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230與數(shù)據(jù)源之間的平均距離來(lái)減少數(shù)據(jù)訪問(wèn)等待時(shí)間。用于此的一種技術(shù)是減小發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230與數(shù)據(jù)源之間的平均距離,以允許分布在整個(gè)數(shù)據(jù)處理系統(tǒng)100中的多個(gè)L2高速緩沖存儲(chǔ)器230以允許這些高速緩沖存儲(chǔ)器利用高速緩沖存儲(chǔ)器到高速緩沖存儲(chǔ)器的干涉向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230提供存儲(chǔ)器塊的“專用”共享一致性狀態(tài)保留相同存儲(chǔ)庫(kù)塊的拷貝。
為了實(shí)現(xiàn)如數(shù)據(jù)處理系統(tǒng)100的SMP數(shù)據(jù)處理系統(tǒng)中用于共享存儲(chǔ)器塊的多個(gè)并發(fā)及分布式源,必須解決兩個(gè)問(wèn)題。首先,必須實(shí)現(xiàn)管理以上提到的“專用”共享一致性狀態(tài)的存儲(chǔ)器塊拷貝創(chuàng)建的某種規(guī)則。其次,如果有的話,必須有例如響應(yīng)總線讀操作或總線RWITM操作管理哪個(gè)窺探L2高速緩沖存儲(chǔ)器230向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230提供共享存儲(chǔ)器塊的規(guī)則。
根據(jù)本發(fā)明,這兩個(gè)問(wèn)題是通過(guò)數(shù)據(jù)源域的實(shí)現(xiàn)解決的。特別地,SMP數(shù)據(jù)處理系統(tǒng)中的每個(gè)域都允許同時(shí)只包括一個(gè)保留“專用”共享一致性狀態(tài)的特定存儲(chǔ)器塊的高速緩沖存儲(chǔ)器層次,其中域定義成包括一個(gè)或多個(gè)參與響應(yīng)數(shù)據(jù)請(qǐng)求的較低級(jí)別(例如,L2)高速緩沖存儲(chǔ)器。如果當(dāng)總線讀類型(例如,讀或RWITM)操作被相同域中發(fā)出請(qǐng)求的較低級(jí)別高速緩沖存儲(chǔ)器啟動(dòng)時(shí)存在,則該高速緩沖存儲(chǔ)器層次響應(yīng)向發(fā)出請(qǐng)求的較低級(jí)別高速緩沖存儲(chǔ)器找到所請(qǐng)求存儲(chǔ)器塊的源。在圖1的數(shù)據(jù)處理系統(tǒng)100中,盡管可以定義許多不同的域大小,但如果每個(gè)處理節(jié)點(diǎn)102(即,MCM)都被看作數(shù)據(jù)源域是方便的。這種“專用”共享狀態(tài)(即,Sr)的一個(gè)例子以下參考表II描述。
IV、一致性域盡管上述數(shù)據(jù)遞送域的實(shí)現(xiàn)改善了數(shù)據(jù)訪問(wèn)等待時(shí)間,但這種增強(qiáng)不能解決隨著系統(tǒng)規(guī)模增加流量m×n成倍。為了減小流量同時(shí)還維持基于廣播的一致性機(jī)制,本發(fā)明的優(yōu)選實(shí)施方式附加地實(shí)現(xiàn)了一致性域,該一致性域就象前面描述的數(shù)據(jù)遞送域一樣,可以方便地(但不一定要)以每個(gè)處理節(jié)點(diǎn)102構(gòu)成獨(dú)立的一致性域來(lái)實(shí)現(xiàn)。數(shù)據(jù)遞送域和一致性域可以但不需要是在時(shí)間上共同擴(kuò)張的,而且為了解釋,下文中數(shù)據(jù)處理系統(tǒng)100的示例操作將假設(shè)具有由處理節(jié)點(diǎn)102定義的邊界。
通過(guò)在請(qǐng)求可以由少于所有一致性域的參與者提供服務(wù)的情況下限制域內(nèi)系統(tǒng)互連110上的廣播傳送,一致性域的實(shí)現(xiàn)減小了系統(tǒng)流量。例如,如果處理節(jié)點(diǎn)102a的處理單元104a有要發(fā)布的總線讀操作,則處理單元104a可以選擇首先向其自己的一致性域中的所有參與者(例如,處理節(jié)點(diǎn)102a)而不向其它一致性域中的參與者(例如,處理節(jié)點(diǎn)102b)廣播該總線讀操作。只發(fā)送到與操作主控者相同的一致性域中的那些參與者的廣播操作在此被定義為“本地操作”。如果本地總線讀操作可以在處理單元104a的一致性域中提供服務(wù),則不執(zhí)行該總線讀操作的進(jìn)一步廣播。但是,如果對(duì)該本地總線讀操作的部分響應(yīng)和組合響應(yīng)指示該總線讀操作不能僅僅在處理單元102a的一致性域中提供服務(wù),則除了本地一致性域,廣播的范圍還可以延伸到包括一個(gè)或多個(gè)附加的一致性域。
在基本實(shí)現(xiàn)中,采用兩個(gè)廣播范圍只包括本地一致性域的“本地”范圍和包括SMP數(shù)據(jù)處理系統(tǒng)中所有其它一致性域的“全局”范圍。因此,發(fā)送到SMP數(shù)據(jù)處理系統(tǒng)中所有一致性域的操作在此定義為“全局操作”。重要的是,不管是采用本地操作還是更大范圍的操作(例如,全局操作)來(lái)為操作提供服務(wù),高速緩沖存儲(chǔ)器一致性都在SMP數(shù)據(jù)處理系統(tǒng)中的所有一致性域中維持。
在優(yōu)選實(shí)施方式中,操作的范圍由本地/全局指示符(信號(hào))在總線操作中指示,在一種實(shí)施方式中該指示符可以包括1位標(biāo)志。處理單元104中的轉(zhuǎn)發(fā)邏輯212優(yōu)選地基于操作中本地/全局指示符(信號(hào))的設(shè)置確定是否通過(guò)本地互連114在系統(tǒng)互連110上轉(zhuǎn)發(fā)接收到的操作。
V、域指示符為了限制不需要的本地操作的發(fā)布并由此減少操作等待時(shí)間并節(jié)約本地互連上的附加帶寬,本發(fā)明優(yōu)選地實(shí)現(xiàn)指示所關(guān)聯(lián)存儲(chǔ)器塊的拷貝是否在本地一致性域之外高速緩沖的每存儲(chǔ)器塊的域指示符。例如,圖5描述了根據(jù)本發(fā)明的域指示符的第一示例實(shí)現(xiàn)。如圖5所示,可以在動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)中實(shí)現(xiàn)的系統(tǒng)存儲(chǔ)器108存儲(chǔ)多個(gè)存儲(chǔ)器塊500。與每個(gè)存儲(chǔ)器塊500關(guān)聯(lián),系統(tǒng)存儲(chǔ)器108存儲(chǔ)用于如果有的話就校正存儲(chǔ)器塊500和域指示符504中錯(cuò)誤的關(guān)聯(lián)糾錯(cuò)碼(ECC)502。盡管在本發(fā)明的有些實(shí)施方式中,域指示符504可以識(shí)別特定的一致性域(即,指定一致性域或節(jié)點(diǎn)ID),但下文中假設(shè)域指示符504是如果所關(guān)聯(lián)存儲(chǔ)器塊500只在與充當(dāng)存儲(chǔ)器塊500的LPC的存儲(chǔ)器控制器206相同的一致性域中被高速緩沖就設(shè)置(例如,設(shè)置成‘1’來(lái)指示“本地”)的1位指示符。否則,域指示符504重置(例如,重置成‘0’來(lái)指示“全局”)。指示“本地”的域指示符504的設(shè)置可能含糊地實(shí)現(xiàn),其中錯(cuò)誤的“全局”設(shè)置將不會(huì)導(dǎo)致任何一致性錯(cuò)誤,但可能引起操作不需要的全局廣播。
重要的是,響應(yīng)操作找存儲(chǔ)器塊源的存儲(chǔ)器控制器206(及L2高速緩沖存儲(chǔ)器230)優(yōu)選地與所請(qǐng)求的存儲(chǔ)器塊一起發(fā)送關(guān)聯(lián)的域指示符504。
VI、示例一致性協(xié)議本發(fā)明優(yōu)選地實(shí)現(xiàn)設(shè)計(jì)成如上所述分級(jí)數(shù)據(jù)遞送和一致性域?qū)崿F(xiàn)的高速緩沖存儲(chǔ)器一致性協(xié)議。在優(yōu)選實(shí)施方式中,除了提供(1)高速緩沖存儲(chǔ)器是否是存儲(chǔ)器塊的HPC的指示,協(xié)議中的高速緩沖存儲(chǔ)器一致性狀態(tài)還指示(2)在該存儲(chǔ)器層次級(jí)別的高速緩沖存儲(chǔ)器中所高速緩沖的拷貝是否是唯一的(即,是唯一的全系統(tǒng)高速緩沖拷貝)、(3)高速緩沖存儲(chǔ)器是否及什么時(shí)候可以向請(qǐng)求的主控者提供用于存儲(chǔ)器塊的存儲(chǔ)器塊拷貝、(4)存儲(chǔ)器塊的高速緩沖圖像是否與LPC(系統(tǒng)存儲(chǔ)器)上對(duì)應(yīng)的存儲(chǔ)器塊一致性及(5)遠(yuǎn)端一致性域中的其它高速緩沖存儲(chǔ)器是否(有可能)保留具有匹配地址的高速緩沖存儲(chǔ)器輸入。這五個(gè)屬性可以例如在以下表II中概述的眾所周知的MESI(修改、獨(dú)占、共享、無(wú)效)協(xié)議的示例變體中表達(dá)。
表II

A、Ig狀態(tài)為了避免必須訪問(wèn)LPC來(lái)確定是否已知存儲(chǔ)器塊只要本地被高速緩沖,Ig(無(wú)效全局)一致性狀態(tài)用于維護(hù)沒(méi)有存儲(chǔ)器塊的拷貝在一致性域中維持高速緩沖的情況下的域指示。Ig狀態(tài)在此定義為指示(1)高速緩沖存儲(chǔ)器陣列中關(guān)聯(lián)存儲(chǔ)器塊無(wú)效、(2)高速緩沖存儲(chǔ)器目錄中地址標(biāo)志有效及(3)由該地址標(biāo)志識(shí)別的存儲(chǔ)器塊拷貝有可能在其它一致性域中被高速緩沖的高速緩沖存儲(chǔ)器一致性狀態(tài)。
響應(yīng)高速緩沖存儲(chǔ)器響應(yīng)獨(dú)占訪問(wèn)請(qǐng)求(例如,總線RWITM操作)向其它一致性域中的請(qǐng)求者提供所請(qǐng)求的存儲(chǔ)器塊,Ig狀態(tài)在低級(jí)高速緩沖存儲(chǔ)器中形成。在本發(fā)明的有些實(shí)施方式中,只在包含用于存儲(chǔ)器塊的LPC的一致性域中形成Ig狀態(tài)可能是優(yōu)選的。在這種實(shí)施方式中,必須實(shí)現(xiàn)某種機(jī)制(例如,LPC的部分響應(yīng)及后續(xù)的組合響應(yīng))來(lái)向找所請(qǐng)求存儲(chǔ)器塊的源的高速緩沖存儲(chǔ)器指示LPC是在其本地一致性域中。在不支持LPC本地的指示傳送的其它實(shí)施方式中,Ig狀態(tài)可以在響應(yīng)獨(dú)占訪問(wèn)請(qǐng)求高速緩沖存儲(chǔ)器將存儲(chǔ)器塊的源指向遠(yuǎn)端一致性節(jié)點(diǎn)的任何時(shí)候形成。
因?yàn)榘↖g狀態(tài)的高速緩沖存儲(chǔ)器目錄輸入攜帶可能有用的信息,因此至少在一些實(shí)現(xiàn)中期望比I狀態(tài)的輸入優(yōu)先保留Ig狀態(tài)的輸入(例如,通過(guò)修改用于選擇替換用犧牲品高速緩沖存儲(chǔ)器輸入的最近最少使用(LRU)算法)。由于Ig目錄輸入保留在高速緩沖存儲(chǔ)器中,因此,因?yàn)槠洫?dú)占訪問(wèn)請(qǐng)求使Ig狀態(tài)形成的高速緩沖存儲(chǔ)器可以釋放或?qū)懟仄浯鎯?chǔ)器塊的拷貝而不需要向處于Ig狀態(tài)的保留該存儲(chǔ)器塊地址標(biāo)志的高速緩沖存儲(chǔ)器通知,所以對(duì)于有些Ig輸入,有可能隨時(shí)間變成“過(guò)時(shí)的”。在這種情況下,不正確地指示全局操作應(yīng)當(dāng)代替本地操作發(fā)布的“過(guò)時(shí)”Ig狀態(tài)將不會(huì)造成任何一致性錯(cuò)誤,而是僅僅造成可以利用本地操作提供服務(wù)的有些操作作為全局操作發(fā)布。這種無(wú)效的發(fā)生將通過(guò)“過(guò)時(shí)”Ig高速緩沖存儲(chǔ)器輸入的最終替換在持續(xù)時(shí)間上進(jìn)行限制。
有幾種規(guī)則管理Ig高速緩沖存儲(chǔ)器輸入的選擇與替換。首先,如果高速緩沖存儲(chǔ)器選擇Ig輸入作為替換的犧牲品,則執(zhí)行該Ig輸入的驅(qū)逐(不象當(dāng)選擇I輸入時(shí)的情況)。其次,如果使存儲(chǔ)器塊裝載到高速緩沖存儲(chǔ)器中的請(qǐng)求偶然碰到同一高速緩沖存儲(chǔ)器中的Ig高速緩沖存儲(chǔ)器輸入,則高速緩沖存儲(chǔ)器將該Ig命中看作高速緩沖存儲(chǔ)器失敗并將該Ig輸入作為選定的犧牲品執(zhí)行驅(qū)逐操作。因此,高速緩沖存儲(chǔ)器避免在高速緩沖存儲(chǔ)器目錄中放置同一地址標(biāo)志的兩份拷貝。第三,Ig狀態(tài)的驅(qū)逐優(yōu)選地是作為本地操作執(zhí)行的,或者如果作為全局操作執(zhí)行則被驅(qū)逐地址的LPC忽略。如果允許Ig輸入在不在與存儲(chǔ)器塊的LPC相同的一致性域的高速緩沖存儲(chǔ)器中形成,則不需要對(duì)LPC中的域指示符作任何更新。第四,Ig狀態(tài)的驅(qū)逐優(yōu)選地是作為無(wú)數(shù)據(jù)的僅地址操作執(zhí)行的,其中域指示符寫(xiě)回到LPC(如果對(duì)執(zhí)行驅(qū)逐的高速緩沖存儲(chǔ)器是本地的)。
通過(guò)即使當(dāng)沒(méi)有存儲(chǔ)器塊的有效拷貝在一致性域中保持高速緩沖也能在一致性域中維護(hù)用于存儲(chǔ)器塊的高速緩沖的域指示符,根據(jù)本發(fā)明的Ig狀態(tài)的實(shí)現(xiàn)提高了傳送效率。因此,用于存儲(chǔ)器塊的HPC可以為來(lái)自遠(yuǎn)端一致性域的獨(dú)占訪問(wèn)請(qǐng)求(例如,總線RWITM操作)提供服務(wù),而不需要重試請(qǐng)求并向LPC執(zhí)行所請(qǐng)求存儲(chǔ)器塊的推。
B、Sr狀態(tài)在下述操作中,能夠確定以Sr一致性狀態(tài)保留共享的所請(qǐng)求存儲(chǔ)器塊的低級(jí)高速緩沖存儲(chǔ)器是否位于與發(fā)出請(qǐng)求的主控者相同的域中是有用的。在一種實(shí)施方式中,與發(fā)出請(qǐng)求的主控者相同的域中“本地”Sr窺探者的存在可以由以Sr一致性狀態(tài)保留所請(qǐng)求存儲(chǔ)器塊的低級(jí)高速緩沖存儲(chǔ)器的窺探者的響應(yīng)行為指示。例如,假設(shè)每個(gè)總線操作都包括指示該總線操作是否跨域邊界的范圍指示符(例如,主控者或單個(gè)本地/非本地位的明確域標(biāo)識(shí)符),則以Sr一致性狀態(tài)保留共享存儲(chǔ)器塊的低級(jí)高速緩沖存儲(chǔ)器可以只對(duì)相同數(shù)據(jù)源域中的主控者的請(qǐng)求提供以Sr狀態(tài)確認(rèn)請(qǐng)求的部分響應(yīng)并對(duì)所有其它請(qǐng)求提供指示S狀態(tài)的部分請(qǐng)求。在這種實(shí)施方式中,響應(yīng)行為可以如表III所示概述,其中符號(hào)(’)標(biāo)記用于指示可以不同于存儲(chǔ)器塊實(shí)際高速緩沖存儲(chǔ)器狀態(tài)的部分響應(yīng)。
表III

假設(shè)在表III中闡述的響應(yīng)行為,通過(guò)增加分布在SMP數(shù)據(jù)處理系統(tǒng)中的可以充當(dāng)數(shù)據(jù)源的存儲(chǔ)器塊的共享拷貝數(shù)量,用于共享數(shù)據(jù)的平均數(shù)據(jù)等待時(shí)間可以顯著減少。
VII、示例操作現(xiàn)在總體上參考圖6-18,給出幾個(gè)描述包括在為處理器內(nèi)核200、L2高速緩沖存儲(chǔ)器230和I/O控制器214的請(qǐng)求提供服務(wù)中所涉及的邏輯步驟的高級(jí)邏輯流程圖。特別地,圖6-8描述了請(qǐng)求主控者中的多種處理,而圖9-18說(shuō)明通過(guò)本地和系統(tǒng)互連114、110傳送并為請(qǐng)求提供服務(wù)中所涉及的操作。即使互連110、114不一定是總線互連,這種操作也在此被稱為“總線操作”(例如,總線讀操作、總線寫(xiě)操作等),以區(qū)別于高速緩沖存儲(chǔ)器或CPU(處理器)操作。作為邏輯流程圖,應(yīng)當(dāng)理解這些圖不是要傳遞操作的嚴(yán)格時(shí)間順序,還應(yīng)當(dāng)理解許多所說(shuō)明操作可以并發(fā)地或者以不同于所示次序執(zhí)行。
A、CPU和高速緩沖存儲(chǔ)器操作參考圖6,描述了根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中為處理器讀操作提供服務(wù)的示例方法的高級(jí)邏輯流程圖。如所示出的,處理在塊600開(kāi)始,它表示L2高速緩沖存儲(chǔ)器230中的主控者232從所關(guān)聯(lián)的處理器內(nèi)核200接收讀請(qǐng)求。響應(yīng)讀請(qǐng)求的接收,主控者232在塊602確定所請(qǐng)求的存儲(chǔ)器塊是否以M、Me、Tx(例如,T、Tn、Te或Ten)、Sr或S狀態(tài)中的任何一種保留在L2高速緩沖存儲(chǔ)器目錄302中。如果是,則如塊624所示出的,主控者232訪問(wèn)L2高速緩沖存儲(chǔ)器陣列300,以獲得所請(qǐng)求的存儲(chǔ)器塊并將所請(qǐng)求的存儲(chǔ)器塊提供給發(fā)出請(qǐng)求的處理器內(nèi)核200。其后,處理在塊626終止。
返回塊602,如果所請(qǐng)求的存儲(chǔ)器塊不以M、Me、Tx、S或Sr狀態(tài)中的任何一種保留在L2高速緩沖存儲(chǔ)器目錄302中,則還要在塊604確定是否需要現(xiàn)有高速緩沖存儲(chǔ)器線的驅(qū)逐來(lái)將所請(qǐng)求的存儲(chǔ)器塊放到L2高速緩沖存儲(chǔ)器230中。在一種實(shí)施方式中,如果被選為從發(fā)出請(qǐng)求的處理器的L2高速緩沖存儲(chǔ)器230驅(qū)逐的犧牲品的存儲(chǔ)器塊在L2目錄302中被標(biāo)記為M、T、Te、Tn或Ig一致性狀態(tài)中的任何一種,則在塊604及后續(xù)圖中類似的塊需要驅(qū)逐操作。如塊606所指示的,響應(yīng)在塊604確定需要驅(qū)逐,執(zhí)行高速緩沖存儲(chǔ)器驅(qū)逐操作。同時(shí),主控者232在塊610確定將總線讀操作作為本地操作還是作為全局操作發(fā)布。
在其中每個(gè)總線操作最初都作為本地操作發(fā)布并且僅作為本地操作發(fā)布一次的第一實(shí)施方式中,在塊610所述的確定(及后續(xù)圖中類似的確定)可以簡(jiǎn)單地表示主控者對(duì)總線讀操作先前是否已作為本地總線讀操作發(fā)布的確定。在其中本地總線操作可以重試的第二可選實(shí)施方式中,在塊610所述的確定可以表示主控者對(duì)總線讀操作先前是否發(fā)布超過(guò)閾值次數(shù)的確定。在第三可選實(shí)施方式中,在塊610所作出的確定可以基于主控者對(duì)本地操作是否有可能成功的預(yù)測(cè)(例如,是HPC或有可能在本地一致性域中找到HPC)。
響應(yīng)塊610發(fā)布全局總線讀操作而不是本地總線讀操作的確定,處理從塊610前進(jìn)到以下描述的塊620。另一方面,如果在塊610確定發(fā)布本地總線讀操作,則主控者232在其本地互連114上啟動(dòng)本地總線讀操作,如在塊612所說(shuō)明的及以下參考圖9所描述的。本地總線讀操作只在包含主控者232的本地一致性域(例如,處理節(jié)點(diǎn)102)中廣播。如果主控者232接收到指示“成功”的CR(塊614),則主控者232接收所請(qǐng)求的存儲(chǔ)器塊并向發(fā)出請(qǐng)求的處理器內(nèi)核200返回所請(qǐng)求的存儲(chǔ)器塊(或至少其一部分),如塊624所示。其后,處理在塊626結(jié)束。
返回塊614,如果用于本地總線讀操作的CR不指示“成功”,則主控者232在塊616確定該CR是否明確地指示該總線讀操作不能在本地一致性域中提供服務(wù),因此應(yīng)當(dāng)作為全局總線讀操作重新發(fā)布。如果是(例如,如果其它一致性域中的L2高速緩沖存儲(chǔ)器230以M狀態(tài)或Me狀態(tài)保留所請(qǐng)求的存儲(chǔ)器塊),則處理轉(zhuǎn)向以下描述的塊620。另一方面,如果CR不明確地指示該總線讀操作不能在本地一致性域中提供服務(wù),則處理從塊616返回塊610,塊610說(shuō)明主控者232再次確定是否發(fā)布本地總線讀操作。在這種情況下,主控者232可以在確定中采用由CR提供的任何附加信息。在塊610之后,處理轉(zhuǎn)向以下描述的塊612或者轉(zhuǎn)向塊620。
塊620描述以下參考圖10A-10B描述的主控者232發(fā)布全局總線讀操作。如果在塊622全局總線讀操作的CR不指示“成功”,則主控者232在塊620重復(fù)全局總線讀操作,直到接收到指示“成功”的CR。如果全局總線讀操作的CR指示“成功”,則主控者232在塊624接收所請(qǐng)求的存儲(chǔ)器塊并向發(fā)出請(qǐng)求的處理器內(nèi)核200返回所請(qǐng)求的存儲(chǔ)器塊(或至少其一部分)。其后,處理在塊626終止。
因此,假設(shè)處理與其相同一致性域中的數(shù)據(jù)、如圖6所示的CPU讀操作的操作的相似性可以頻繁地利用限定到發(fā)出請(qǐng)求的主控者的一致性域范圍的廣播傳送提供服務(wù)。因此,上文所述數(shù)據(jù)遞送域與一致性域的結(jié)合通過(guò)限定廣播傳送的范圍不僅改善了數(shù)據(jù)訪問(wèn)等待時(shí)間,還減少了系統(tǒng)互連(及其它本地互連)上的流量。
現(xiàn)在參考圖7A-7B,說(shuō)明了根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中為處理器更新操作提供服務(wù)的示例方法的高級(jí)邏輯流程圖。如所描述的,響應(yīng)L2高速緩沖存儲(chǔ)器230對(duì)相同處理單元104中所關(guān)聯(lián)的一個(gè)處理器內(nèi)核200的更新請(qǐng)求的接收,處理在塊700開(kāi)始。如塊702所示,響應(yīng)更新請(qǐng)求的接收,L2高速緩沖存儲(chǔ)器230的主控者232訪問(wèn)L2高速緩沖存儲(chǔ)器目錄302來(lái)確定由更新請(qǐng)求指定的請(qǐng)求地址所參照的存儲(chǔ)器塊是否以M狀態(tài)在L2高速緩沖存儲(chǔ)器230中高速緩沖。如果是,則如塊704所說(shuō)明的,主控者232利用由處理器內(nèi)核200提供的新數(shù)據(jù)更新L2高速緩沖存儲(chǔ)器230中的存儲(chǔ)器塊。其后,更新處理在塊706結(jié)束。
如塊710-712所示,如果L2高速緩沖存儲(chǔ)器目錄302代替指示L2高速緩沖存儲(chǔ)器230以Me狀態(tài)保留所指定的存儲(chǔ)器塊,則如塊704所示,除了更新存儲(chǔ)器塊,主控者232還將用于所請(qǐng)求存儲(chǔ)器塊的狀態(tài)域306更新成M狀態(tài)。其后,處理在塊706終止。
隨著頁(yè)面連接符A到圖7B,如果L2高速緩沖存儲(chǔ)器目錄302指示L2高速緩沖存儲(chǔ)器230以T或Te狀態(tài)中任意一種保留所請(qǐng)求的存儲(chǔ)器塊(塊720),這意味這L2高速緩沖存儲(chǔ)器230是用于所請(qǐng)求存儲(chǔ)器塊的HPC而且所請(qǐng)求的存儲(chǔ)器塊有可能在一個(gè)或多個(gè)其它L2高速緩沖存儲(chǔ)器230中保留,則主控者232必須獲得對(duì)所請(qǐng)求存儲(chǔ)器塊的獨(dú)占訪問(wèn),以便執(zhí)行對(duì)該存儲(chǔ)器塊的所請(qǐng)求的更新。主控者232通過(guò)其獲得對(duì)所請(qǐng)求存儲(chǔ)器塊的獨(dú)占訪問(wèn)的處理在塊722及后續(xù)塊中示出。
根據(jù)這種處理,如在塊722所描述的,主控者232將L2高速緩沖存儲(chǔ)器目錄302的關(guān)聯(lián)狀態(tài)域306中所請(qǐng)求存儲(chǔ)器塊的狀態(tài)更新成M狀態(tài)。這種升級(jí)是高速緩沖存儲(chǔ)器狀態(tài)允許不首先通知其它L2高速緩沖存儲(chǔ)器230,因?yàn)樽鳛镠PC,L2高速緩沖存儲(chǔ)器230具有授予其自己對(duì)所請(qǐng)求存儲(chǔ)器塊獨(dú)占訪問(wèn)的授權(quán)。如在塊724所說(shuō)明的,如果有的話,則L2高速緩沖存儲(chǔ)器230的窺探者236對(duì)在其自己本地互連114上窺探到的競(jìng)爭(zhēng)DClaim操作提供“降級(jí)”部分響應(yīng),通過(guò)本地互連114其它主控者尋找所請(qǐng)求存儲(chǔ)器塊的所有權(quán)。這些部分響應(yīng)指示其它請(qǐng)求者必須作為總線RWITM操作重新發(fā)布任何這種競(jìng)爭(zhēng)操作。此外,如塊726所述,主控者232在系統(tǒng)互連110上發(fā)布全局總線kill操作,以便使該存儲(chǔ)器塊的任何其它高速緩沖拷貝失效,如以下參考圖16所描述的。
主控者232接下來(lái)在塊790和728確定用于總線kill操作的CR是否指示總線kill操作成功地使所請(qǐng)求存儲(chǔ)器塊的所有其它高速緩沖拷貝失效或者是否需要附加的本地或全局“清除”(即,其它高速緩沖拷貝的失效)。如果CR指示不需要附加的清除,則處理通過(guò)頁(yè)面連接符C前進(jìn)到已經(jīng)描述過(guò)的圖7A的塊704。如果CR指示需要附加的清除,則主控者232附加地確定CR是否指示所請(qǐng)求存儲(chǔ)器塊的其它高速緩沖拷貝整個(gè)駐留在其本地一致性域中或是否至少所請(qǐng)求存儲(chǔ)器塊的一個(gè)拷貝在主控者232的本地一致性域之外高速緩沖(塊790和728)。如果CR指示所請(qǐng)求存儲(chǔ)器塊的每個(gè)剩余的高速緩沖拷貝都駐留在主控者232的本地一致性域中,則發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的窺探者236繼續(xù)降級(jí)活動(dòng)的總線DClaim操作(塊786),而發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的主控者232繼續(xù)發(fā)布限定到主控者232本地一致性域范圍的本地總線kill操作(塊788),直到使該存儲(chǔ)器塊的所有其它高速緩沖拷貝都失效。如果CR指示至少所請(qǐng)求存儲(chǔ)器塊的一個(gè)剩余的高速緩沖拷貝駐留在遠(yuǎn)端一致性域中,則處理返回已經(jīng)描述過(guò)的塊724。
現(xiàn)在參考?jí)K780,如果對(duì)L2高速緩沖存儲(chǔ)器目錄302的訪問(wèn)指示所請(qǐng)求的存儲(chǔ)器塊以Tn或Ten狀態(tài)中的一種保留,則主控者232知道發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230是用于所請(qǐng)求存儲(chǔ)器塊的HPC,而且所請(qǐng)求存儲(chǔ)器塊的任何其它高速緩沖拷貝都由高速緩沖存儲(chǔ)器保留在其本地一致性域中。因此,主控者232將L2高速緩沖存儲(chǔ)器目錄302的關(guān)聯(lián)狀態(tài)域306中所請(qǐng)求存儲(chǔ)器塊的狀態(tài)更新成M狀態(tài),如塊784所述。此外,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的窺探者236向在其本地互連114上窺探到的任何競(jìng)爭(zhēng)DClaim操作提供“降級(jí)”部分響應(yīng)(塊786),而發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的主控者232繼續(xù)發(fā)布限定到主控者232本地一致性域范圍的本地總線kill操作(塊788),直到使該存儲(chǔ)器塊的任何其它高速緩沖拷貝都失效。如果主控者232通過(guò)參考用于本地總線kill操作的CR確定不需要進(jìn)一步的本地清除(塊790),則處理通過(guò)塊728和頁(yè)面連接符C轉(zhuǎn)向已經(jīng)描述過(guò)的塊704。
現(xiàn)在參考圖7A的塊730,如果對(duì)L2高速緩沖存儲(chǔ)器目錄302的訪問(wèn)指示所請(qǐng)求的存儲(chǔ)器塊以Sr或S狀態(tài)保留,則發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230不是用于所請(qǐng)求存儲(chǔ)器塊的HPC,而且主控者232必須在更新該存儲(chǔ)器塊之前如果有的話就從HPC或者如果沒(méi)有HPC就從LPC獲得所請(qǐng)求存儲(chǔ)器塊的所有權(quán)。
因此,主控者232首先在塊731確定是否發(fā)布作為本地或全局操作的總線DClaim操作。如果主控者232確定發(fā)布全局總線DClaim操作,則處理前進(jìn)到以下描述的塊740。響應(yīng)在塊731確定作為本地操作發(fā)布總線DClaim操作,主控者232在塊732發(fā)布本地總線DClaim操作,如以下參考圖13更具體描述的。然后,主控者232等待本地總線DClaim操作的CR的接收,這由決定塊734、736和738的集合表示。如果CR指示“重試”(塊734),則處理返回已經(jīng)描述過(guò)的塊731。如果CR可選地明確指示總線DClaim操作不能利用本地一致性域提供服務(wù)(塊736),則處理前進(jìn)到以下描述的塊740。如果CR可選地指示“降級(jí)”,這意味著其它請(qǐng)求者已經(jīng)通過(guò)總線DClaim操作獲得了所請(qǐng)求存儲(chǔ)器塊的所有權(quán),則處理前進(jìn)到以下描述的塊748。如果CR可選地指示主控者232已經(jīng)基于本地總線DClaim操作被HPC授予了所請(qǐng)求存儲(chǔ)器塊的所有權(quán),則處理通過(guò)頁(yè)面連接符D轉(zhuǎn)向已經(jīng)描述過(guò)的圖7B的塊790及后續(xù)塊。
塊740描述主控者232發(fā)布全局總線DClaim操作,如以下參考圖14描述的。接下來(lái),主控者232在塊742-744確定用于全局總線DClaim操作的CR是否指示它成功、應(yīng)當(dāng)重試或“降級(jí)”到RWITM操作。如果CR指示總線DClaim操作應(yīng)當(dāng)重試(塊742),則主控者232在塊740重新發(fā)布全局總線DClaim操作并持續(xù)這么做,直到收到除“重試”之外的CR。響應(yīng)其它請(qǐng)求者成功地發(fā)布了目標(biāo)在于所請(qǐng)求存儲(chǔ)器塊的總線DClaim操作,如果接收到的CR指示全局總線DClaim操作已經(jīng)降級(jí),則處理前進(jìn)到以下描述的塊746。如果CR可選地指示主控者232已經(jīng)基于全局總線DClaim操作被HPC授予了所請(qǐng)求存儲(chǔ)器塊的所有權(quán),則處理通過(guò)頁(yè)面連接符D轉(zhuǎn)向已經(jīng)描述過(guò)的圖7B的塊790及后續(xù)塊。
塊746描述發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的主控者232確定是否發(fā)布作為本地或全局操作的總線RWITM操作。如果主控者232選擇發(fā)布全局總線RWITM操作,則處理轉(zhuǎn)向以下描述的塊754。但是,如果主控者232選擇發(fā)布本地總線RWITM操作,則處理前進(jìn)到塊748,它說(shuō)明了主控者232發(fā)布本地總線RWITM操作并等待關(guān)聯(lián)的CR。如塊750所指示的,如果CR指示“重試”,則處理返回塊746,它表示如果有的話,則主控者232利用在重試CR中提供的附加信息再次確定是否發(fā)布本地或全局RWITM操作。如果對(duì)在塊748發(fā)布的本地總線RWITM操作的CR不指示“重試”(塊750),而是指示總線RWITM操作成功地獲得了所請(qǐng)求存儲(chǔ)器塊的所有權(quán)(塊752),則處理通過(guò)頁(yè)面連接符D轉(zhuǎn)向已經(jīng)描述過(guò)的圖7B的塊790。如果主控者232在塊752確定對(duì)本地總線RWITM操作的CR指示操作不能在本地一致性域中提供服務(wù),則處理轉(zhuǎn)向塊754及后續(xù)塊。
塊754和756描述主控者232反復(fù)發(fā)布用于所請(qǐng)求存儲(chǔ)器塊的全局總線RWITM操作,如以下參考圖12A-12B所描述的,直到接收到除“重試”以外的CR。響應(yīng)主控者232接收到指示成功獲得所請(qǐng)求存儲(chǔ)器塊所有權(quán)的非重試CR(塊756),處理通過(guò)頁(yè)面連接符D轉(zhuǎn)向已經(jīng)描述過(guò)的圖7B的塊790及后續(xù)塊。
現(xiàn)在參考?jí)K760,如果在塊702、710、720、5502和730作出否定的確定,則L2高速緩沖存儲(chǔ)器230不保留所請(qǐng)求存儲(chǔ)器塊的有效拷貝。因此,如在塊760和770所指示的,如果需要,則L2高速緩沖存儲(chǔ)器230執(zhí)行高速緩沖存儲(chǔ)器驅(qū)逐操作,以便為所請(qǐng)求的存儲(chǔ)器塊分配高速緩沖存儲(chǔ)器線。其后,處理轉(zhuǎn)向以上描述過(guò)的塊746及后續(xù)塊。
現(xiàn)在參考圖8,描述了根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行I/O寫(xiě)操作的示例方法的高級(jí)邏輯流程圖。如所示出的,響應(yīng)處理單元104的I/O控制器214接收到附連I/O設(shè)備216的I/O寫(xiě)請(qǐng)求,處理在塊1000開(kāi)始。響應(yīng)I/O寫(xiě)請(qǐng)求的接收,I/O控制器214在塊1002確定是否發(fā)布全局或本地總線寫(xiě)操作,以獲得所請(qǐng)求的存儲(chǔ)器塊。
如果I/O控制器214選擇發(fā)布全局總線寫(xiě)操作,則處理轉(zhuǎn)向以下描述的塊1020。但是,如果I/O控制器214選擇發(fā)布本地總線寫(xiě)操作,則處理前進(jìn)到塊1004,它說(shuō)明I/O控制器214發(fā)布本地總線寫(xiě)操作,如以下參考圖17所描述的,然后等待關(guān)聯(lián)的CR。如在塊1006指示的,如果CR指示“重試本地”,這意味著如果重試,則本地總線寫(xiě)操作可以明確地在本地一致性域中提供服務(wù),則I/O控制器214在塊1004重新發(fā)布該本地總線寫(xiě)操作。如果I/O控制器214接收到提供更多意義不明確的信息的CR,例如,簡(jiǎn)單的“重試”(塊1008),則處理返回已經(jīng)描述過(guò)的塊1002??蛇x地,如果I/O控制器214接收到明確指示總線寫(xiě)操作不能在本地一致性域中提供服務(wù)的CR(塊1010),則處理前進(jìn)到以下描述的塊1020。最后,如果I/O控制器214接收到指示它被授予所請(qǐng)求存儲(chǔ)器塊所有權(quán)的CR,則處理從塊1004通過(guò)塊1006、1008和1010轉(zhuǎn)向塊1024及后續(xù)塊,它說(shuō)明如果需要,則I/O控制器214執(zhí)行如以下描述的清除操作。
現(xiàn)在參考?jí)K1020,I/O控制器214發(fā)布全局總線I/O寫(xiě)操作,如以下參考圖8所描述的。如在塊1022所指示的,I/O控制器21 4持續(xù)發(fā)布全局總線I/O寫(xiě)操作,直到接收到除“重試”以外的CR。如果用于在塊1020發(fā)布的全局總線I/O寫(xiě)操作的CR指示沒(méi)有其它的窺探者保留所請(qǐng)求存儲(chǔ)器塊的有效拷貝(塊1024和1040),則處理在塊1026以附連的I/O設(shè)備216能夠?qū)懙剿?qǐng)求的存儲(chǔ)器塊結(jié)束。但是,如果I/O控制器214在塊1024確定CR指示所請(qǐng)求存儲(chǔ)器塊的至少一個(gè)過(guò)時(shí)的高速緩沖拷貝留在其本地一致性域之外,則I/O控制器214通過(guò)如塊1030所示的降級(jí)其窺探的任何沖突DClaim操作來(lái)執(zhí)行全局“清除”,并如塊1032所述的發(fā)布全局總線kill操作,直到在塊1024接收到的CR指示沒(méi)有所請(qǐng)求存儲(chǔ)器塊的過(guò)時(shí)的高速緩沖拷貝留在其本地一致性域之外。
如果I/O控制器214在塊1040確定CR指示沒(méi)有所請(qǐng)求存儲(chǔ)器塊的過(guò)時(shí)的高速緩沖拷貝留在其本地一致性域之外但至少一個(gè)所請(qǐng)求存儲(chǔ)器塊的過(guò)時(shí)的高速緩沖拷貝留在其本地一致性域之中,則I/O控制器214通過(guò)如塊1042所示的降級(jí)其窺探的任何沖突DClaim操作來(lái)執(zhí)行本地“清除”,并如塊1044所述的發(fā)布本地總線kill操作,直到接收到的CR指示沒(méi)有所請(qǐng)求存儲(chǔ)器塊的過(guò)時(shí)的高速緩沖拷貝留在數(shù)據(jù)處理系統(tǒng)100之中(塊1024和1040)。一旦清除操作完成,處理就在塊1041結(jié)束。
如已經(jīng)描述過(guò)的,Tn和Ten一致性狀態(tài)的實(shí)現(xiàn)提供了可能共享的存儲(chǔ)器塊是否附加地只在本地一致性域中高速緩沖的指示。因此,當(dāng)與以Tn或Ten狀態(tài)中一種保留存儲(chǔ)器塊的高速緩沖存儲(chǔ)器相同的一致性域中的請(qǐng)求者發(fā)布用于存儲(chǔ)器塊的獨(dú)占訪問(wèn)操作(例如,總線DClaim、總線RWITM、總線DCBZ或總線寫(xiě)操作)時(shí),如總線kill操作的廣播操作的范圍可以有利地限制到本地一致性域,由此減少互連帶寬的使用。
B、互連操作現(xiàn)在參考圖9-18,將描述說(shuō)明性數(shù)據(jù)處理系統(tǒng)100中的示例本地和全局總線操作。首先參考圖9,描述了根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行本地總線讀操作的示例方法的高級(jí)邏輯流程圖。例如,在圖6的塊612,處理在塊1300以L2高速緩沖存儲(chǔ)器230在其本地互連114上發(fā)布本地總線讀操作開(kāi)始。響應(yīng)窺探本地總線讀操作,窺探者222、236可以提供給分布式響應(yīng)邏輯210的多種部分響應(yīng)在圖9中由決定塊1302、1310、1312、1314、1320、1330、1332、1340、1344、1346和1348的輸出表示。這些部分響應(yīng)又確定用于本地總線讀操作的CR。
如在決1302所示的,如果L2高速緩沖存儲(chǔ)器230的窺探者236以指示L2高速緩沖存儲(chǔ)器230以M或Me狀態(tài)保留所請(qǐng)求存儲(chǔ)器塊的部分響應(yīng)確認(rèn)本地總線讀操作,則處理從塊1302前進(jìn)到塊1304。塊1304指示響應(yīng)本地總線讀操作,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230和確認(rèn)L2高速緩沖存儲(chǔ)器230的操作。特別地,確認(rèn)L2高速緩沖存儲(chǔ)器230中的窺探者236將所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)從M更新成Tn或者從Me更新成Ten。此外,確認(rèn)L2高速緩沖存儲(chǔ)器230中的窺探者236可以在接收到CR之前啟動(dòng)所請(qǐng)求存儲(chǔ)器塊向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的發(fā)送(即,提供“早期”數(shù)據(jù))。一旦接收到,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230中的主控者232就將所請(qǐng)求存儲(chǔ)器塊以Sr狀態(tài)放置到L2高速緩沖存儲(chǔ)器陣列300中。如在塊1308所描述的,處理以分布式響應(yīng)邏輯210產(chǎn)生指示“成功”的CR結(jié)束。
另一方面,如果L2高速緩沖存儲(chǔ)器230的窺探者236以指示L2高速緩沖存儲(chǔ)器230以Tx狀態(tài)保留所請(qǐng)求存儲(chǔ)器塊的部分響應(yīng)確認(rèn)本地總線讀操作(塊1310),而Sr’窺探者236也確認(rèn)該總線讀操作(塊1312),則處理轉(zhuǎn)向塊1318。塊1318表示Sr’窺探者236將所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)更新成S并在接收到CR之前啟動(dòng)所請(qǐng)求存儲(chǔ)器塊向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的發(fā)送(即,提供“早期”數(shù)據(jù))。Tx窺探者236保持不變。一旦接收到所請(qǐng)求的存儲(chǔ)器塊,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230中的主控者232就將所請(qǐng)求存儲(chǔ)器塊以Sr狀態(tài)放置到L2高速緩沖存儲(chǔ)器230中。如在塊1308所描述的,處理以分布式響應(yīng)邏輯210產(chǎn)生指示“成功”的CR結(jié)束。
如果部分響應(yīng)的聯(lián)合體包括Tx窺探者236確認(rèn)本地總線讀操作(塊1310)、沒(méi)有Sr’窺探者236確認(rèn)該總線讀操作(塊1312)及有窺探者236提供指示Sr’窺探者236可能隱藏在本地?cái)?shù)據(jù)遞送域中的部分響應(yīng)(例如,重試類型)(塊1314),則處理轉(zhuǎn)向塊1316。塊1316表示確認(rèn)總線讀操作的Tx窺探者236在接收到CR之后啟動(dòng)所請(qǐng)求存儲(chǔ)器塊向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的發(fā)送(即,提供“晚期”數(shù)據(jù))并以Tx狀態(tài)保留所請(qǐng)求的存儲(chǔ)器塊。一旦接收到,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230中的主控者232就將所請(qǐng)求存儲(chǔ)器塊以S狀態(tài)放置到L2高速緩沖存儲(chǔ)器目錄300中(由于Sr’窺探者236可以隱藏,而且在用于所請(qǐng)求存儲(chǔ)器塊的每個(gè)數(shù)據(jù)遞送域中只允許有一個(gè)Sr’窺探者236)。如在塊1308所描述的,處理以分布式響應(yīng)邏輯210產(chǎn)生指示“成功”的CR結(jié)束。
如果部分響應(yīng)的聯(lián)合體包括T或Te窺探者236確認(rèn)本地總線讀操作(塊1310)、沒(méi)有Sr’窺探者236確認(rèn)該總線讀操作(塊1312)而且沒(méi)有窺探者236提供可能隱藏Sr’窺探者236的部分響應(yīng)(塊1314),則處理轉(zhuǎn)向塊1306。塊1306表示確認(rèn)總線讀操作的T或Te窺探者236在接收到CR之后啟動(dòng)所請(qǐng)求存儲(chǔ)器塊向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的發(fā)送(即,提供“晚期”數(shù)據(jù))并以T或Te狀態(tài)保留所請(qǐng)求存儲(chǔ)器塊。一旦接收到,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230中的主控者232就將所請(qǐng)求存儲(chǔ)器塊以Sr狀態(tài)放置到L2高速緩沖存儲(chǔ)器陣列300中(由于對(duì)于所請(qǐng)求的存儲(chǔ)器塊,在本地?cái)?shù)據(jù)遞送域中不存在其它的Sr’窺探者236)。如在塊1308所描述的,處理以分布式響應(yīng)邏輯210產(chǎn)生指示“成功”的CR結(jié)束。
現(xiàn)在參考?jí)K1320,如果沒(méi)有M、Me或Tx窺探者236確認(rèn)本地總線讀操作,但有Sr’窺探者236確認(rèn)該本地總線讀操作,則該本地總線讀操作根據(jù)塊1322提供服務(wù)。特別地,確認(rèn)總線讀操作的Sr’窺探者236在接收到CR之前啟動(dòng)所請(qǐng)求存儲(chǔ)器塊向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的發(fā)送并將L2高速緩沖存儲(chǔ)器目錄302中所請(qǐng)求存儲(chǔ)器塊的狀態(tài)更新成S狀態(tài)。發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230中的主控者232將所請(qǐng)求存儲(chǔ)器塊以Sr狀態(tài)放置到其自己的L2高速緩沖存儲(chǔ)器陣列300中。如在塊1308所描述的,處理以分布式響應(yīng)邏輯210產(chǎn)生指示“成功”的CR結(jié)束。
現(xiàn)在參考?jí)K1324,如果沒(méi)有M、Me、Tx或Sr’窺探者236確認(rèn)本地總線讀操作,但有L2高速緩沖存儲(chǔ)器230提供確認(rèn)該本地總線讀操作的部分響應(yīng),指示該L2高速緩沖存儲(chǔ)器230以Ig狀態(tài)保留所請(qǐng)求存儲(chǔ)器塊的地址標(biāo)志。如果沒(méi)有M、Me、Tx或Sr’窺探者236可能被不完整的部分響應(yīng)隱藏(塊1332),則如塊3164所描述的,分布式響應(yīng)邏輯210提供“去全局”CR。另一方面,如果Ig窺探者236確認(rèn)本地總線讀操作且部分響應(yīng)的聯(lián)合體指示M、Me、Tx或Sr’窺探者236有可能隱藏,則如塊1342所描述的,響應(yīng)邏輯210產(chǎn)生“重試”CR。
現(xiàn)在轉(zhuǎn)向塊1330,如果沒(méi)有M、Me、Tx、Sr’或Ig窺探者236確認(rèn)本地總線讀操作,而且如果沒(méi)有窺探者222提供指示它對(duì)所請(qǐng)求存儲(chǔ)器塊響應(yīng)(即,LPC)的部分響應(yīng),則處理轉(zhuǎn)向已經(jīng)描述過(guò)的塊1332。但是,如果沒(méi)有M、Me、Tx、Sr’或Ig窺探者236確認(rèn)本地總線讀操作,而且如果有窺探者222提供指示它對(duì)所請(qǐng)求存儲(chǔ)器塊響應(yīng)(即,LPC)的部分響應(yīng),則處理前進(jìn)到塊1340。
現(xiàn)在參考?jí)K1340,如果窺探者222提供指示它對(duì)所請(qǐng)求存儲(chǔ)器塊響應(yīng)(即,LPC)的部分響應(yīng)但不確認(rèn)本地總線讀操作,則如在塊1342所描述的,響應(yīng)邏輯210產(chǎn)生指示“重試”的CR。但是,如果窺探者222確認(rèn)本地總線讀操作,則處理前進(jìn)到塊1344。如由決定塊1344指示的,如果存儲(chǔ)器控制器窺探者222確認(rèn)總線讀操作且L2高速緩沖存儲(chǔ)器窺探者236提供指示它可以M、Me、Tx或Ig狀態(tài)中的一種保留所請(qǐng)求存儲(chǔ)器塊的部分響應(yīng)但不能確認(rèn)本地總線讀操作,則響應(yīng)邏輯210還在塊1342產(chǎn)生“重試”CR。在這些情況的每一種中,因?yàn)槿绻鳛楸镜夭僮髦匦掳l(fā)布,則總線讀操作能夠不憑借全局廣播就提供服務(wù),所以響應(yīng)邏輯210產(chǎn)生“重試”CR。
現(xiàn)在參考?jí)K1346,如果沒(méi)有M、Me、Tx或Ig窺探者236確認(rèn)本地總線讀操作,沒(méi)有M、Me、Tx或Ig窺探者236可能隱藏,且存儲(chǔ)器控制器窺探者222確認(rèn)該本地總線讀操作,則確認(rèn)該本地總線讀操作的窺探者222響應(yīng)CR向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230提供所請(qǐng)求的存儲(chǔ)器塊和關(guān)聯(lián)的域指示符504,如在塊1350、1352和1354中每一個(gè)所描述的。如在塊1350、1352和1354所示的,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的主控者232根據(jù)CR和域指示符504的狀態(tài)處理所請(qǐng)求的存儲(chǔ)器塊。特別地,如果主控者232在塊1360確定域指示符3004重置成“全局”,這意味著所請(qǐng)求存儲(chǔ)器塊修改后的拷貝可以在本地域之外高速緩沖,則發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的主控者232丟棄所請(qǐng)求的存儲(chǔ)器塊,關(guān)于所請(qǐng)求的存儲(chǔ)器塊保持在I狀態(tài)。此外,根據(jù)“全局”域指示符504,主控者232將CR解釋為指示“去全局”(塊1364),這意味著主控者232將作為全局總線讀操作重新發(fā)布該總線讀操作。
另一方面,如果域指示符504設(shè)置成指示“本地”(塊1360),則發(fā)出請(qǐng)求的高速緩沖存儲(chǔ)器230的主控者232將CR解釋為指示“成功”(塊1308)并將所請(qǐng)求的存儲(chǔ)器塊和域指示符504都放到其自己的L2高速緩沖存儲(chǔ)器陣列300中。主控者232還將與所請(qǐng)求存儲(chǔ)器塊關(guān)聯(lián)的狀態(tài)域設(shè)置成由CR指示的狀態(tài)。特別地,如果部分響應(yīng)及由此CR指示Sr’窺探者236可以隱藏(塊1346),則發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230以S狀態(tài)保留所請(qǐng)求的存儲(chǔ)器塊,因?yàn)樵谌魏斡蛑卸贾辉试S存儲(chǔ)器塊的一個(gè)Sr拷貝??蛇x地,如果部分響應(yīng)和CR指示沒(méi)有Sr’窺探者236可以隱藏,但S’窺探者236可以隱藏,則發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230以Sr狀態(tài)保留所請(qǐng)求的存儲(chǔ)器塊(塊1352)。最后,如果Sr’或S’窺探者236都不可能隱藏(塊1348),則發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230以M狀態(tài)保留所請(qǐng)求的存儲(chǔ)器塊(塊1354),因?yàn)楸WC發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230是唯一一個(gè)全系統(tǒng)保留所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器。
現(xiàn)在參考圖10A-10B,描述了根據(jù)本發(fā)明在實(shí)現(xiàn)Tn和Ten一致性狀態(tài)的數(shù)據(jù)處理系統(tǒng)中執(zhí)行全局總線讀操作的示例方法的高級(jí)邏輯流程圖。例如,在圖6的塊620,處理在塊1400以L2高速緩沖存儲(chǔ)器230在其本地互連114上發(fā)布全局總線讀操作開(kāi)始。響應(yīng)窺探全局總線讀操作,窺探者222、236可以提供給分布式響應(yīng)邏輯210的多種部分響應(yīng)在圖10A中由決定塊1402、1410、1412、1414、1420、1430、1440、1442、1444和1446的輸出表示。這些部分響應(yīng)又確定用于全局總線讀操作的CR。
如在塊1402所示的,如果L2高速緩沖存儲(chǔ)器230的窺探者236以指示L2高速緩沖存儲(chǔ)器230以M或Me狀態(tài)保留所請(qǐng)求存儲(chǔ)器塊的部分響應(yīng)確認(rèn)全局總線讀操作,則處理從塊1402通過(guò)頁(yè)面連接符J前進(jìn)到圖10B的塊1480。塊1480表示M或Me窺探者236依賴于M或Me窺探者236是否與由全局總線讀操作中范圍指示符指示的發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230是本地的(即,在相同的一致性域中)來(lái)不同地更新其高速緩沖存儲(chǔ)器狀態(tài)。在任一情況下,確認(rèn)L2高速緩沖存儲(chǔ)器230中的窺探者236可以在接收到CR之前啟動(dòng)所請(qǐng)求存儲(chǔ)器塊向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的發(fā)送(即,提供“早期”數(shù)據(jù)),而且一旦接收到,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230中的主控者232就將所請(qǐng)求的存儲(chǔ)器塊以Sr狀態(tài)其L2放置到高速緩沖存儲(chǔ)器陣列300中(塊1481和1482)。但是,如果窺探者236對(duì)發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230不是本地的,則確認(rèn)L2高速緩沖存儲(chǔ)器230中的窺探者236將所請(qǐng)求存儲(chǔ)器塊的狀態(tài)從M更新成T或者從Me更新成Te(塊1481),而如果窺探者236是本地的,則將請(qǐng)求存儲(chǔ)器塊的狀態(tài)從M更新成Tn或者從Me更新成Ten(塊1482)。然后,如在塊1408所描述的,處理通過(guò)頁(yè)面連接符N返回圖10A并以分布式響應(yīng)邏輯210產(chǎn)生指示“成功”的CR結(jié)束。
如果L2高速緩沖存儲(chǔ)器230的窺探者236以指示L2高速緩沖存儲(chǔ)器230以T、Tn、Te或Ten狀態(tài)(在塊1410中總的標(biāo)記為Tx)中的任何一種保留所請(qǐng)求存儲(chǔ)器塊的部分響應(yīng)確認(rèn)全局總線讀操作且Sr’窺探者236也確認(rèn)該總線讀操作(塊1412),則處理通過(guò)頁(yè)面連接符M轉(zhuǎn)向塊1492。塊1492指示確認(rèn)Tx窺探者236依賴于全局總線讀操作的范圍指示符是否指示窺探者236在發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的一致性域中來(lái)不同地更新所請(qǐng)求存儲(chǔ)器塊的狀態(tài)。在任一情況下,Sr’窺探者236都將所請(qǐng)求存儲(chǔ)器塊的狀態(tài)更新成S并在接收到CR之前啟動(dòng)所請(qǐng)求存儲(chǔ)器塊向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的發(fā)送(塊1494和1495)。一旦接收到,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230中的主控者232就將所請(qǐng)求的存儲(chǔ)器塊以Sr狀態(tài)放置到L2高速緩沖存儲(chǔ)器陣列300中(塊1494和1495)。此外,如果需要,則如果窺探者236對(duì)發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230不是本地的,則Tx窺探者236將所請(qǐng)求存儲(chǔ)器塊的狀態(tài)從Tn更新成T或者從Ten更新成Te(塊1494),但如果窺探者236對(duì)發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230是本地的,則保持所請(qǐng)求存儲(chǔ)器塊的狀態(tài)不變(塊1495)。然后處理通過(guò)頁(yè)面連接符N返回圖10A并且如在塊1408所描述的,以分布式響應(yīng)邏輯210產(chǎn)生指示“成功”的CR結(jié)束。
如果部分響應(yīng)的聯(lián)合體包括Tx窺探者236確認(rèn)全局總線讀操作(塊1410)、沒(méi)有Sr’窺探者236確認(rèn)總線讀操作(塊1412)但有窺探者236提供指示Sr’窺探者可以存在于本地?cái)?shù)據(jù)遞送域中的部分響應(yīng)(例如,重試類型)但不確認(rèn)該全局總線讀操作,則處理通過(guò)頁(yè)面連接符L轉(zhuǎn)向圖10B的塊1488。塊1488指示確認(rèn)Tx窺探者236依賴于全局總線讀操作的范圍指示符是否指示窺探者236在發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的一致性域中來(lái)不同地更新所請(qǐng)求存儲(chǔ)器塊的狀態(tài)。在任一情況下,確認(rèn)全局總線讀操作的Tx窺探者236都在接收到CR之后啟動(dòng)所請(qǐng)求存儲(chǔ)器塊向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的發(fā)送(塊1489和1490)。一旦接收到,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230中的主控者232就將所請(qǐng)求的存儲(chǔ)器塊以S狀態(tài)放置到L2高速緩沖存儲(chǔ)器陣列300中(由于Sr’窺探者236可以隱藏在發(fā)出請(qǐng)求的高速緩沖存儲(chǔ)器230的本地域中,而且在用于所請(qǐng)求存儲(chǔ)器塊的每個(gè)域中只允許一個(gè)Sr’窺探者236)。此外,如果需要,如果窺探者236對(duì)發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230不是本地的,則Tx窺探者236將所請(qǐng)求存儲(chǔ)器塊的狀態(tài)從Tn更新成T或者從Ten更新成Te(塊1489),但如果窺探者236對(duì)發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230是本地的,則保持所請(qǐng)求存儲(chǔ)器塊的狀態(tài)不變(塊1490)。然后處理通過(guò)頁(yè)面連接符N返回圖10A并且如在塊1408所描述的,以分布式響應(yīng)邏輯210產(chǎn)生指示“成功”的CR結(jié)束。
如果部分響應(yīng)的聯(lián)合體包括Tx窺探者236確認(rèn)全局總線讀操作、沒(méi)有Sr’窺探者236確認(rèn)總線讀操作且沒(méi)有窺探者236提供可以隱藏Sr’窺探者236的部分響應(yīng),則處理通過(guò)頁(yè)面連接符K轉(zhuǎn)向圖10B的塊1484。塊1484指示確認(rèn)Tx窺探者236依賴于全局總線讀操作的范圍指示符是否指示窺探者236在發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的一致性域中來(lái)不同地更新所請(qǐng)求存儲(chǔ)器塊的狀態(tài)。在任一情況下,確認(rèn)該全局總線讀操作的Tx窺探者236都在接收到CR之后啟動(dòng)所請(qǐng)求存儲(chǔ)器塊向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的發(fā)送(即,提供“晚期”數(shù)據(jù)),而發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230中的主控者232將所請(qǐng)求的存儲(chǔ)器塊以Sr狀態(tài)放置到L2高速緩沖存儲(chǔ)器陣列300中(由于對(duì)于所請(qǐng)求的存儲(chǔ)器塊,在本地域中不存在其它的Sr’窺探者236)。此外,如果需要,如果窺探者236對(duì)發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230不是本地的,則Tx窺探者236將所請(qǐng)求存儲(chǔ)器塊的狀態(tài)從Tn更新成T或者從Ten更新成Te(塊1485),但如果窺探者236對(duì)發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230是本地的,則保持所請(qǐng)求存儲(chǔ)器塊的狀態(tài)不變(塊1486)。然后處理通過(guò)頁(yè)面連接符N返回圖10A并且如在塊1408所描述的,以分布式響應(yīng)邏輯210產(chǎn)生指示“成功”的CR結(jié)束。
現(xiàn)在參考?jí)K1420,如果沒(méi)有M、Me或者Tx窺探者236確認(rèn)全局總線讀操作,但有Sr’窺探者236確認(rèn)該全局總線讀操作,則該全局總線讀操作根據(jù)塊1422提供服務(wù)。特別地,確認(rèn)全局總線讀操作的Sr’窺探者236在接收到CR之前啟動(dòng)所請(qǐng)求存儲(chǔ)器塊向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的發(fā)送并將其L2高速緩沖存儲(chǔ)器目錄302中的所請(qǐng)求存儲(chǔ)器塊更新成S狀態(tài)。發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230將所請(qǐng)求的存儲(chǔ)器塊以Sr狀態(tài)放置到L2高速緩沖存儲(chǔ)器陣列300中。如在塊1408所描述的,處理以分布式響應(yīng)邏輯210產(chǎn)生指示“成功”的CR結(jié)束。
現(xiàn)在轉(zhuǎn)到塊1430,如果沒(méi)有M、Me、Tx或Sr’窺探者236確認(rèn)全局總線讀操作,而且如果沒(méi)有窺探者222提供指示它對(duì)所請(qǐng)求存儲(chǔ)器塊響應(yīng)(即,LPC)的部分響應(yīng),則因?yàn)槊總€(gè)存儲(chǔ)器塊都需要有LPC,所以發(fā)生如塊1432所示的中斷處理的錯(cuò)誤。
現(xiàn)在參考?jí)K1440,如果窺探者222提供指示它對(duì)所請(qǐng)求存儲(chǔ)器塊響應(yīng)(即,LPC)的部分響應(yīng)但不確認(rèn)全局總線讀操作,則如塊1450所描述的,響應(yīng)邏輯210產(chǎn)生指示“重試”的CR。如由決定塊1442所指示的,如果存儲(chǔ)器控制器窺探者222確認(rèn)全局總線讀操作且L2高速緩沖存儲(chǔ)器窺探者236提供指示它可以M、Me或Tx狀態(tài)中的一種保留所請(qǐng)求存儲(chǔ)器塊的部分響應(yīng)但不確認(rèn)全局總線讀操作,則響應(yīng)邏輯210在塊1450產(chǎn)生“重試”CR。在這些情況中的每一種,因?yàn)榭赡苄枰赡茈[藏的一個(gè)窺探者236將所請(qǐng)求的存儲(chǔ)器塊的源指向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230,因此響應(yīng)邏輯210都產(chǎn)生“重試”CR,以便使操作重新發(fā)布。
現(xiàn)在參考?jí)K1444,如果沒(méi)有M、Me、Tx或Sr’窺探者236確認(rèn)總線讀操作,沒(méi)有M、Me或Tx窺探者236可能隱藏,且存儲(chǔ)器控制器窺探者222確認(rèn)該全局總線讀操作,則確認(rèn)全局總線讀操作的窺探者222響應(yīng)CR向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230提供所請(qǐng)求的存儲(chǔ)器塊和關(guān)聯(lián)的域指示符504,如在塊1452和1454中每一個(gè)所描述的。如在塊1444、1446、1452、1454和1456所示,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的主控者232根據(jù)編譯進(jìn)在塊1408所表示的“成功”CR的部分響應(yīng)處理所請(qǐng)求的存儲(chǔ)器塊。特別地,如果CR指示沒(méi)有Sr’或S’窺探者236可能隱藏,則發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230保留Me狀態(tài)的所請(qǐng)求存儲(chǔ)器塊(塊1456);如果沒(méi)有Sr’窺探者236可能隱藏但S’窺探者236可能隱藏,則發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230保留Sr狀態(tài)的所請(qǐng)求存儲(chǔ)器塊;而如果Sr’窺探者236可能隱藏,則發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230保留S狀態(tài)的所請(qǐng)求存儲(chǔ)器塊。
響應(yīng)CR,是用于所請(qǐng)求存儲(chǔ)器塊的LPC的存儲(chǔ)器控制器窺探者222確定是否更新所請(qǐng)求存儲(chǔ)器塊的域指示符,如在塊1460、1462、1470、1472和1474所說(shuō)明的。如果CR指示用于所請(qǐng)求存儲(chǔ)器塊的新高速緩沖存儲(chǔ)器狀態(tài)是Me,則LPC窺探者222例如通過(guò)參照全局總線讀操作中的范圍指示符確定它是否在與發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230相同的域中(塊1460),及域指示符504指示本地還是全局(塊1460和1472)。如果LPC在與發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230相同的域中(塊1460),則如果它重置成“全局”,則LPC窺探者222將域指示符504設(shè)置成“本地”(塊1462和1464)。如果LPC不在與發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230相同的域中(塊1460),則如果它設(shè)置成“本地”,則LPC窺探者222將域指示符504重置成“全局”(塊1472和1474)。
如果CR指示用于所請(qǐng)求存儲(chǔ)器塊的新高速緩沖存儲(chǔ)器狀態(tài)是S或Sr,則LPC窺探者222類似地確定它是否在與發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230相同的域中(塊1470),及域指示符504指示本地還是全局(塊1472)。如果LPC在與發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230相同的域中(塊1470),則不需要更新域指示符504。但是,如果LPC不在與發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230相同的域中(塊1470),則如果它設(shè)置成“本地”,則LPC窺探者222將域指示符504重置成“全局”(塊1472和1474)。因此,響應(yīng)CR的接收,如果需要,則LPC窺探者222更新域指示符504。
現(xiàn)在參考圖11,描述根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行本地總線RWITM操作的示例方法的高級(jí)邏輯流程圖。例如以圖7A塊748的L2高速緩沖存儲(chǔ)器230的主控者232在其本地互連114上發(fā)布本地總線RWITM操作,處理在塊1500開(kāi)始。窺探者222、236可以提供給分布式響應(yīng)邏輯210的多種部分響應(yīng)在圖11中由決定塊1502、1510、1512、1520、1524、1530、1534、1540和1544的輸出表示。這些部分響應(yīng)又確定用于本地總線RWITM操作的CR。
如塊1502所示,如果窺探者236以指示包含該窺探者236的L2高速緩沖存儲(chǔ)器230以M或Me狀態(tài)中的任何一種保留所請(qǐng)求存儲(chǔ)器塊的部分響應(yīng)確認(rèn)本地總線RWITM操作,則處理從塊1502前進(jìn)到塊1504。塊1504指示發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230和響應(yīng)本地總線RWITM操作的確認(rèn)L2高速緩沖存儲(chǔ)器230的操作。特別地,確認(rèn)L2高速緩沖存儲(chǔ)器230中的窺探者236將所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)從M或Me狀態(tài)更新成I狀態(tài),而且可以在接收到CR之前啟動(dòng)所請(qǐng)求存儲(chǔ)器塊向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的發(fā)送(即,提供“早期”收據(jù))。一旦接收到,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230中的主控者232就將所請(qǐng)求的存儲(chǔ)器塊以M狀態(tài)放置到其L2高速緩沖存儲(chǔ)器陣列300中。如在塊1506所描述的,處理以分布式響應(yīng)邏輯210產(chǎn)生指示“成功”的CR結(jié)束。
參考?jí)K1510,如果窺探者236以指示包含該窺探者236的L2高速緩沖存儲(chǔ)器230以T、Tn、Te或Ten狀態(tài)(在圖11中總的標(biāo)記為Tx)中任何一種保留所請(qǐng)求存儲(chǔ)器塊的部分響應(yīng)確認(rèn)本地總線RWITM操作且沒(méi)有Sr’窺探者236確認(rèn)該本地總線RWITM操作(塊1512),則處理轉(zhuǎn)向塊1514。塊1514表示確認(rèn)本地總線RWITM操作的Tx窺探者236響應(yīng)從響應(yīng)邏輯210接收到CR而啟動(dòng)所請(qǐng)求存儲(chǔ)器塊向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的發(fā)送。響應(yīng)接收到所請(qǐng)求的存儲(chǔ)器塊,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230以M狀態(tài)保留所請(qǐng)求的存儲(chǔ)器塊。所有有效的確認(rèn)窺探者236(即,非Ig窺探者236)都將其各自用于所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)更新成I。
如果部分響應(yīng)的聯(lián)合體包括都確認(rèn)了本地總線RWITM操作的Tx窺探者236和Sr’窺探者236(塊1510和1512),則處理轉(zhuǎn)向塊1516。塊1516表示確認(rèn)本地總線RWITM操作的Sr’窺探者236在接收到響應(yīng)邏輯210提供的CR之前啟動(dòng)所請(qǐng)求存儲(chǔ)器塊向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的發(fā)送。響應(yīng)接收到所請(qǐng)求的存儲(chǔ)器塊,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230以M狀態(tài)保留所請(qǐng)求的存儲(chǔ)器塊。所有的確認(rèn)窺探者236(即,非Ig窺探者236)都將其各自用于所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)更新成I。
如塊1517所示,在由塊1514和1516所表示的任一情況下,響應(yīng)邏輯210都依賴Tx確認(rèn)窺探者236是否以T/Te狀態(tài)或Tn/Ten狀態(tài)中的一種保留所請(qǐng)求存儲(chǔ)器塊產(chǎn)生CR。如果Tx窺探者236是T或Te,則響應(yīng)邏輯210產(chǎn)生指示“清除”的CR,如塊1518所示。但是,如果Tx窺探者236是Tn或Ten,則響應(yīng)邏輯210通過(guò)產(chǎn)生指示“本地清除”的CR有利地將清除操作的范圍限制到本地域,如塊1556所示。因?yàn)門n或Ten一致性狀態(tài)的存在保證沒(méi)有遠(yuǎn)端高速緩沖存儲(chǔ)器保留所請(qǐng)求的存儲(chǔ)器塊,所以允許清除操作的有限范圍,這意味著一致性可以不需要本地總線RWITM操作或伴隨的總線kill操作的更廣泛廣播就能維持。
如果沒(méi)有M、Me或Tx窺探者236(即,HPC)確認(rèn)本地總線RWITM操作以表示它能夠仲裁數(shù)據(jù)傳輸,則本地總線RWITM操作不能由L2高速緩沖存儲(chǔ)器窺探者236不通過(guò)重試就提供服務(wù)。因此,如果Sr’窺探者236確認(rèn)本地總線RWITM操作并向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230提供早期數(shù)據(jù),如在塊1520所示,則發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的主控者232丟棄由Sr’窺探者236提供的數(shù)據(jù),如在塊1522所描述的。
塊1524表示依賴于L2高速緩沖存儲(chǔ)器230的窺探者236是否提供確認(rèn)本地總線RWITM操作并指示L2高速緩沖存儲(chǔ)器230以Ig狀態(tài)保留所請(qǐng)求存儲(chǔ)器塊的地址標(biāo)志的部分響應(yīng)處理本地總線RWITM操作中的不同。如果能提供,則任何有效的確認(rèn)窺探者236(即,非Ig窺探者236)都使相關(guān)的高速緩沖存儲(chǔ)器輸入失效(塊1532)。如果沒(méi)有M、Me或Tx窺探者236可能被不完整的部分響應(yīng)隱藏(塊1534),則分布式響應(yīng)邏輯210提供“去全局”的CR,如塊1536所描述的。另一方面,如果Ig窺探者236確認(rèn)本地總線RWITM操作且部分響應(yīng)的聯(lián)合體指示M、Me或Tx窺探者236可能隱藏,則響應(yīng)邏輯210產(chǎn)生“重試”的CR,如塊1538所描述的。因此,Ig窺探者236對(duì)本地總線RWITM操作的確認(rèn)將導(dǎo)致如果沒(méi)有HPC可能隱藏在本地一致性域中則使操作作為全局操作重新發(fā)布。
如果在塊1524Ig窺探者236不確認(rèn)本地總線RWITM操作,則該本地總線RWITM操作根據(jù)塊1530和后續(xù)塊處理。特別地,如果沒(méi)有存儲(chǔ)器控制器窺探者222提供指示它對(duì)所請(qǐng)求存儲(chǔ)器塊響應(yīng)(即,LPC)的部分響應(yīng)(塊1530),則每個(gè)有效的確認(rèn)窺探者236都使其各自L2高速緩沖存儲(chǔ)器目錄302中的所請(qǐng)求存儲(chǔ)器塊失效(塊1532)。由響應(yīng)邏輯210產(chǎn)生的CR依賴于是否有任一部分響應(yīng)指示M、Me或Tx窺探者236可能隱藏(塊1534)。即,如果沒(méi)有M、Me或Tx窺探者236可能隱藏,則響應(yīng)邏輯210在塊1536產(chǎn)生“去全局”CR來(lái)通知主控者232本地總線RWITM操作必須作為全局RWITM操作重新發(fā)布。另一方面,如果用于所請(qǐng)求存儲(chǔ)器塊的M、Me或Tx窺探者236(即,HPC)可能隱藏,則響應(yīng)邏輯210產(chǎn)生指示“重試”的CR,如塊1538所描述的,因?yàn)槿绻卦嚕僮骶涂梢员镜靥峁┓?wù)。
類似地,如果沒(méi)有M、Me或Tx窺探者236確認(rèn)本地總線RWITM操作但有窺探者222提供指示它是LPC的部分響應(yīng)但不確認(rèn)該本地總線RWITM操作,則有效的確認(rèn)窺探者236使它們各自的所請(qǐng)求存儲(chǔ)器塊的拷貝失效(塊1542),且響應(yīng)邏輯210對(duì)該本地總線RWITM操作提供“重試”CR(塊1538)?!爸卦嚒盋R還在塊1538產(chǎn)生,且如果沒(méi)有M、Me或Tx窺探者236確認(rèn)本地總線RWITM操作(塊1502、1510)、有窺探者222確認(rèn)該本地總線RWITM操作(塊1540)且M、Me、Tx或Ig窺探者236可能隱藏(塊1544),則窺探者236使它們各自的所請(qǐng)求存儲(chǔ)器塊的拷貝失效(塊1542)。
如在塊1546所示,如果沒(méi)有M、Me或Tx窺探者236確認(rèn)本地總線RWITM操作或可能隱藏且LPC窺探者222確認(rèn)該本地總線RWITM操作,則每個(gè)有效的確認(rèn)窺探者236(即,非Ig窺探者236)使它們各自的所請(qǐng)求存儲(chǔ)器塊的拷貝失效。此外,LPC窺探者222響應(yīng)從響應(yīng)邏輯210接收到CR而向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230提供所請(qǐng)求的存儲(chǔ)器塊和關(guān)聯(lián)的域指示符504。發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的主控者232根據(jù)域指示符504處理數(shù)據(jù)。特別地,如果域指示符504重置成“全局”,這意味著可能存在使從LPC窺探者222接收的數(shù)據(jù)過(guò)時(shí)的遠(yuǎn)端高速緩沖拷貝,則主控者232丟棄從LPC窺探者222接收的數(shù)據(jù),關(guān)于所請(qǐng)求的存儲(chǔ)器塊維持無(wú)效的一致性狀態(tài)(塊1552),并將由響應(yīng)邏輯210提供的CR解釋為“去全局”(塊1536)。另一方面,如果域指示符504設(shè)置成“本地”,這意味著沒(méi)有所請(qǐng)求存儲(chǔ)器塊的遠(yuǎn)端高速緩沖拷貝復(fù)制從LPC窺探者222接收的可能過(guò)時(shí)的數(shù)據(jù),則主控者232將所請(qǐng)求的存儲(chǔ)器塊和域指示符504放置到其L2高速緩沖存儲(chǔ)器陣列300中并將關(guān)聯(lián)的狀態(tài)域306設(shè)置成M(塊1546)。如果部分響應(yīng)及由此CR指示S’或Sr’窺探者236有可能隱藏(塊1554),則CR指示本地“清除”(塊1556),這意味著如果有的話,則發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230必須通過(guò)一個(gè)或多個(gè)本地總線kill操作使所請(qǐng)求存儲(chǔ)器塊的其它有效的本地高速緩沖拷貝失效。如果沒(méi)有這種S’或Sr’窺探者236可能被不完整的部分響應(yīng)隱藏,則CR指示“成功”,如塊1506所描述的。
還應(yīng)當(dāng)理解,在有些實(shí)施方式中,本地總線RWITM操作的主控者可以在從LPC接收到域指示符3004(塊1550)之前推測(cè)地執(zhí)行如塊1556所示的本地清除。以這種方式,與從LPC的數(shù)據(jù)遞送關(guān)聯(lián)的等待時(shí)間可以被本地清除操作中所涉及的一個(gè)或多個(gè)本地總線kill操作屏蔽。
現(xiàn)在參考圖12A-12B,說(shuō)明根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行全局總線RWITM操作的示例方法的高級(jí)邏輯流程圖。如所示出的,例如,在圖7A的塊754,響應(yīng)發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的主控者232發(fā)布全局總線RWITM操作,處理在塊1600開(kāi)始。如塊1602所示,如果窺探者236以指示包含該窺探者236的L2高速緩沖存儲(chǔ)器230以M或Me狀態(tài)保留所請(qǐng)求存儲(chǔ)器塊的部分響應(yīng)確認(rèn)全局總線RWITM操作,則M或Me窺探者236向以M狀態(tài)保留所請(qǐng)求存儲(chǔ)器塊的發(fā)出請(qǐng)求的主控者232提供早期數(shù)據(jù)(塊1604或塊1606)。如塊1607所示,響應(yīng)邏輯210產(chǎn)生指示“成功”的CR。此外,依賴于它是否對(duì)發(fā)出請(qǐng)求的主控者232是本地的(即,在相同的一致性域中)(塊1603),M或Me窺探者236將其高速緩沖存儲(chǔ)器狀態(tài)更新成I或Ig。如果例如通過(guò)參照總線操作中的范圍指示符M或Me窺探者236確定它屬于與發(fā)出請(qǐng)求的主控者232相同的一致性域,則M或Me窺探者236將其用于所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)更新成I(塊1606)。另一方面,如果M或Me窺探者236確定它不屬于與發(fā)出請(qǐng)求的主控者232相同的一致性域,則M或Me窺探者236將其用于所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)更新成Ig,以便在其一致性域中維護(hù)用于所請(qǐng)求存儲(chǔ)器塊的高速緩沖域指示符(塊1604)。因此,響應(yīng)全局總線RWITM操作,不需要重試推來(lái)更新LPC系統(tǒng)存儲(chǔ)器108中的域指示符504。
現(xiàn)在轉(zhuǎn)向塊1610,如果窺探者236以指示包含該窺探者236的L2高速緩沖存儲(chǔ)器230以Tn或Ten狀態(tài)中任何一種保留所請(qǐng)求存儲(chǔ)器塊的部分響應(yīng)確認(rèn)全局總線RWITM操作,則處理轉(zhuǎn)向塊1612,它表示Tn或Ten窺探者236確定它對(duì)于發(fā)出請(qǐng)求的主控者232是否是本地的。如果是,則全局總線RWITM操作根據(jù)以下描述的塊1614及后續(xù)塊處理。但是,如果確認(rèn)全局總線RWITM操作的Tn或Ten窺探者236確定它對(duì)于發(fā)出請(qǐng)求的主控者232不是本地的,則依賴于是否有Sr’窺探者236也確認(rèn)該全局總線RWITM操作,全局總線RWITM操作根據(jù)塊1618或塊1620處理。
如塊1618所示,如果Sr’窺探者236確認(rèn)全局總線RWITM操作,則該Sr’窺探者236向發(fā)出請(qǐng)求的主控者232提供早期數(shù)據(jù),而確認(rèn)全局總線RWITM操作的Tn或Ten窺探者236將其用于包含所請(qǐng)求存儲(chǔ)器塊的輸入的高速緩沖存儲(chǔ)器狀態(tài)更新成Ig。響應(yīng)接收到所請(qǐng)求的存儲(chǔ)器塊,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230以M狀態(tài)保留所請(qǐng)求的存儲(chǔ)器塊。此外,除Tn或Ten窺探者236之外的任何有效的確認(rèn)窺探者236(即,非Ig窺探者236)將其各自用于所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)更新成I??蛇x地,如塊1620所述,如果Sr’窺探者236不確認(rèn)全局總線RWITM操作,則Tn或Ten窺探者236響應(yīng)CR的接收提供晚期數(shù)據(jù)。響應(yīng)接收到所請(qǐng)求的存儲(chǔ)器塊,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230以M狀態(tài)保留所請(qǐng)求的存儲(chǔ)器塊。此外,Tn或Ten窺探者236將其高速緩沖存儲(chǔ)器狀態(tài)更新成Ig,而任何其它有效的確認(rèn)窺探者236(即,非Ig窺探者236)將其各自用于所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)更新成I。因此,如果遠(yuǎn)端Tn或Ten窺探者236確認(rèn)全局總線RWITM操作,則確認(rèn)Tn或Ten窺探者236輸入Ig狀態(tài),以便在其一致性域中維護(hù)用于所請(qǐng)求存儲(chǔ)器塊的高速緩沖域指示符。因此,響應(yīng)全局總線RWITM操作,不需要重試推來(lái)更新LPC系統(tǒng)存儲(chǔ)器108中的域指示符504。
在由塊1618和1620所表示的任一情況下,響應(yīng)邏輯210依賴S’或Sr’窺探者236是否有可能隱藏并因此不能夠響應(yīng)窺探全局總線RWITM操作而使其所請(qǐng)求存儲(chǔ)器塊的拷貝失效來(lái)產(chǎn)生CR。如果響應(yīng)邏輯210在塊1626基于對(duì)全局總線RWITM操作的部分響應(yīng)確定S’或Sr’窺探者236有可能隱藏,則響應(yīng)邏輯210產(chǎn)生指示“清除”的CR,如塊1628所示??蛇x地,如果響應(yīng)邏輯210確定沒(méi)有S’或Sr’窺探者236可能隱藏,則響應(yīng)邏輯210產(chǎn)生指示“成功”的CR,如塊1607所描述的。
返回塊1612,如果對(duì)發(fā)出請(qǐng)求的主控者232是本地的Tn或Ten窺探者236確認(rèn)全局總線RWITM操作,則依賴于Sr’窺探者236是否也確認(rèn)該全局總線RWITM操作,該全局總線RWITM操作根據(jù)塊1624或塊1622提供服務(wù)。
如塊1624所示,如果Sr’窺探者236確認(rèn)該全局總線RWITM操作,則Sr’窺探者236向發(fā)出請(qǐng)求的主控者232提供早期數(shù)據(jù),而且確認(rèn)該全局總線RWITM操作的每個(gè)有效的窺探者236將其各自用于包含所請(qǐng)求存儲(chǔ)器塊的輸入的高速緩沖存儲(chǔ)器狀態(tài)更新成I。響應(yīng)接收到所請(qǐng)求的存儲(chǔ)器塊,發(fā)出請(qǐng)求的高速緩沖存儲(chǔ)器230以M狀態(tài)保留所請(qǐng)求的存儲(chǔ)器塊??蛇x地,如塊1622所述,如果Sr’窺探者236不確認(rèn)該全局總線RWITM操作,則Tn或Ten窺探者236響應(yīng)CR的接收提供晚期數(shù)據(jù)。響應(yīng)接收到所請(qǐng)求的存儲(chǔ)器塊,發(fā)出請(qǐng)求的高速緩沖存儲(chǔ)器230以M狀態(tài)保留所請(qǐng)求的存儲(chǔ)器塊。此外,每個(gè)有效的確認(rèn)窺探者236(即,非Ig窺探者236)都將其各自用于所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)更新成I。
在由塊1624和1622表示的任一情況下,響應(yīng)邏輯210都基于S’或Sr’窺探者236是否可能隱藏并因此不能響應(yīng)窺探全局總線RWITM操作而使其所請(qǐng)求存儲(chǔ)器塊的拷貝失效來(lái)產(chǎn)生CR。如果響應(yīng)邏輯210在塊1625基于對(duì)全局總線RWITM操作的部分響應(yīng)確定S’或Sr’窺探者236有可能隱藏,則響應(yīng)邏輯210產(chǎn)生指示“本地清除”的CR,如塊1632所示。因此,確保一致性所需的總線kill操作的范圍被有利地限定到包含發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230及(以前)Tn或Ten窺探者236的本地一致性域。可選地,如果響應(yīng)邏輯210確定沒(méi)有S’或Sr’窺探者236可能隱藏,則響應(yīng)邏輯210產(chǎn)生指示“成功”的CR,如塊1607所描述的。
隨著頁(yè)面連接符0到達(dá)圖12B的塊1630,如果T或Te窺探者236確認(rèn)全局總線RWITM操作,則處理轉(zhuǎn)向塊1632,它表示T或Te窺探者236確定其對(duì)于發(fā)出請(qǐng)求的主控者232是否是本地的。如果是,則全局總線RWITM操作根據(jù)以下具體描述的塊1638及后續(xù)塊處理。但是,如果確認(rèn)全局總線RWITM操作的T或Te窺探者236確定其對(duì)于發(fā)出請(qǐng)求的主控者232不是本地的,則依賴于是否有Sr’窺探者236確認(rèn)該全局總線RWITM操作,該全局總線RWITM操作根據(jù)塊1636或塊1635提供服務(wù)。
如在塊1635所示,如果Sr’窺探者236確認(rèn)該全局總線RWITM操作,則該Sr’窺探者236向發(fā)出請(qǐng)求的主控者232提供早期數(shù)據(jù),而確認(rèn)該全局總線RWITM操作的T或Te窺探者236將包含所請(qǐng)求存儲(chǔ)器塊的輸入的高速緩沖存儲(chǔ)器狀態(tài)更新成Ig。響應(yīng)接收到所請(qǐng)求的存儲(chǔ)器塊,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230以M狀態(tài)保留所請(qǐng)求的存儲(chǔ)器塊。此外,除T或Te窺探者236之外的任何有效的確認(rèn)窺探者236都將其各自用于所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)更新成I??蛇x地,如在塊1636所描述的,如果Sr’窺探者236不確認(rèn)該全局總線RWITM操作,則T或Te窺探者236響應(yīng)CR的接收提供晚期數(shù)據(jù)。響應(yīng)接收到所請(qǐng)求的存儲(chǔ)器塊,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230以M狀態(tài)保留所請(qǐng)求的存儲(chǔ)器塊。此外,T或Te窺探者236將其高速緩沖存儲(chǔ)器狀態(tài)更新成Ig,而任何其它有效的確認(rèn)窺探者236都將其各自用于所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)更新成I。因此,如果遠(yuǎn)端T或Te窺探者236確認(rèn)該全局總線RWITM操作,則確認(rèn)T或Te窺探者236輸入Ig狀態(tài),以便在其一致性域中維護(hù)用于所請(qǐng)求存儲(chǔ)器塊的高速緩沖域指示符。因此,響應(yīng)全局總線RWITM操作,不需要重試推來(lái)更新LPC系統(tǒng)存儲(chǔ)器108中的域指示符504。
在由塊1635和1636表示的任一情況下,響應(yīng)邏輯210都基于S’或Sr’窺探者236是否可能隱藏并因此不能響應(yīng)窺探全局總線RWITM操作而使其所請(qǐng)求存儲(chǔ)器塊的拷貝失效來(lái)產(chǎn)生CR。如果響應(yīng)邏輯210在塊1644基于對(duì)總線RWITM操作的部分響應(yīng)確定S’或Sr’窺探者236有可能隱藏,則響應(yīng)邏輯210產(chǎn)生指示“清除”的CR,如塊1626所示??蛇x地,如果響應(yīng)邏輯210確定沒(méi)有S’或Sr’窺探者236可能隱藏,則響應(yīng)邏輯210產(chǎn)生指示“成功”的CR,如塊1607所描述的。
返回塊1632和1638,如果T或Te窺探者236在塊3412確定它對(duì)于發(fā)出請(qǐng)求的主控者232是本地的,則依賴于是否有Sr’窺探者236也確認(rèn)該全局總線RWITM操作,全局總線RWITM操作根據(jù)塊1640或塊1642提供服務(wù)。即,如塊1640所示,如果沒(méi)有Sr’窺探者236確認(rèn)該全局總線RWITM操作(塊1638),則確認(rèn)該全局總線RWITM操作的T或Te窺探者236響應(yīng)接收到CR而啟動(dòng)所請(qǐng)求存儲(chǔ)器塊向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的發(fā)送(即,提供“晚期”數(shù)據(jù))。響應(yīng)接收到所請(qǐng)求的存儲(chǔ)器塊,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230以M狀態(tài)保留所請(qǐng)求存儲(chǔ)器塊。此外,所有有效的確認(rèn)窺探者236都將其各自用于所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)更新成I。可選地,如在塊1642所描述的,如果Sr’窺探者236確認(rèn)該全局總線RWITM操作(塊1638),則該Sr’窺探者236在接收到CR之前啟動(dòng)所請(qǐng)求存儲(chǔ)器塊向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230的發(fā)送(即,提供“早期”數(shù)據(jù))。響應(yīng)接收到所請(qǐng)求的存儲(chǔ)器塊,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230以M狀態(tài)保留所請(qǐng)求的存儲(chǔ)器塊。此外,所有有效的確認(rèn)窺探者236都將其各自用于所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)更新成I。在塊1640或塊1642之后,處理轉(zhuǎn)向已經(jīng)描述過(guò)的塊1644。
現(xiàn)在參考?jí)K1650,如果沒(méi)有M、Me或Tx窺探者236確認(rèn)全局總線RWITM操作,而且如果沒(méi)有窺探者222提供指示它對(duì)所請(qǐng)求存儲(chǔ)器塊響應(yīng)(即,LPC)的部分響應(yīng),則如在決1652所描述的,發(fā)生造成處理中斷的錯(cuò)誤。另一方面,如果沒(méi)有M、Me或Tx窺探者236確認(rèn)全局總線RWITM操作,但有窺探者222提供指示它對(duì)所請(qǐng)求存儲(chǔ)器塊響應(yīng)(即,LPC)的部分響應(yīng)但不確認(rèn)該總線RWITM操作(塊1660),則每個(gè)有效的確認(rèn)窺探者236(即,非Ig窺探者236)都使其各自L2高速緩沖存儲(chǔ)器目錄302中的所請(qǐng)求存儲(chǔ)器塊失效(塊1672),而響應(yīng)邏輯210產(chǎn)生指示“重試”的CR,如在塊1674所描述的。此外,如果有的話,則由確認(rèn)該全局總線RWITM操作的Sr’窺探者236提供的數(shù)據(jù)被主控者232丟棄(塊1668和1670)。如由決定塊1662所指示的,如果存儲(chǔ)器控制器窺探者222確認(rèn)該全局總線RWITM操作(塊1660)且L2高速緩沖存儲(chǔ)器窺探者236提供指示它可以M、Me或Tx中任一種狀態(tài)保留所請(qǐng)求存儲(chǔ)器塊的部分響應(yīng)但不能確認(rèn)該全局總線RWITM操作(塊1662),則確認(rèn)窺探者236類似地在塊1672使其各自的所請(qǐng)求存儲(chǔ)器塊拷貝失效,而響應(yīng)邏輯210在塊1674產(chǎn)生“重試”CR。
現(xiàn)在參考?jí)K1664,如果沒(méi)有M、Me或Tx窺探者236確認(rèn)全局總線RWITM操作或有可能隱藏,但有窺探者222確認(rèn)該全局總線RWITM操作,且有Sr’窺探者236確認(rèn)該全局總線RWITM操作,則該全局總線RWITM操作根據(jù)以上描述過(guò)的塊1642及后續(xù)塊提供服務(wù)。假設(shè)除沒(méi)有Sr’窺探者236確認(rèn)該全局總線RWITM操作之外的這些相同條件,則該全局總線RWITM操作根據(jù)塊1666提供服務(wù)。特別地,響應(yīng)CR,LPC窺探者222向發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230提供所請(qǐng)求的存儲(chǔ)器塊,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230獲得M狀態(tài)的所請(qǐng)求存儲(chǔ)器塊,而如果有的話,則所有有效的確認(rèn)窺探者236都使其各自的所請(qǐng)求存儲(chǔ)器塊拷貝無(wú)效。
塊1666之后,處理轉(zhuǎn)向塊1680-1686,它們共同表示LPC窺探者222基于LPC窺探者222對(duì)于發(fā)出請(qǐng)求的主控者232是否是本地的(塊1680)及域指示符的當(dāng)前狀態(tài)(塊1682和1684)確定是否更新用于所請(qǐng)求存儲(chǔ)器塊的域指示符504。如果LPC窺探者222對(duì)于發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230是本地的且系統(tǒng)存儲(chǔ)器108中的域指示符504被設(shè)置成指示“本地”,則不需要更新,而且處理通過(guò)頁(yè)面連接符P轉(zhuǎn)向已經(jīng)描述過(guò)的圖12A的塊1625。另一方面,如果LPC窺探者222對(duì)于發(fā)出請(qǐng)求的主控者232是本地的且域指示符504被重置成指示“全局”或者如果LPC窺探者222對(duì)于發(fā)出請(qǐng)求的主控者232不是本地的且域指示符504被重置成指示“本地”,則LPC窺探者222在塊1686改變域指示符504的狀態(tài)。
如果部分響應(yīng)指示S’或Sr’窺探者236有可能隱藏(塊1644),則發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230在塊1628接收“清除”CR,指示它必須使所請(qǐng)求存儲(chǔ)器塊的任何其它有效的高速緩沖拷貝失效。如果沒(méi)有S’或Sr’窺探者236可能被不完整的部分響應(yīng)隱藏,則如在塊1607所描述的,響應(yīng)邏輯210產(chǎn)生“成功”CR。
現(xiàn)在參考圖13,說(shuō)明根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行本地總線DClaim操作的示例方法的高級(jí)邏輯流程圖。如所示出的,例如,在圖7A的塊732,處理在塊1700以主控者232在其本地互連114上發(fā)布本地總線DClaim操作開(kāi)始。響應(yīng)本地總線DClaim操作,窺探者236可以提供給分布式響應(yīng)邏輯210的多種部分響應(yīng)在圖13中由決定塊1702、1710、1720、1740和1744的輸出表示。這些部分響應(yīng)又確定響應(yīng)邏輯210對(duì)本地總線DClaim操作產(chǎn)生什么CR。
如在塊1702所示,如果任何窺探者236發(fā)布將本地總線DClaim操作降級(jí)成總線RWITM操作的部分響應(yīng),例如在圖7A的塊748和754所說(shuō)明的,則保留有效狀態(tài)的所請(qǐng)求存儲(chǔ)器塊的每個(gè)其它確認(rèn)窺探者236都使其各自的所請(qǐng)求存儲(chǔ)器塊拷貝失效,如在塊1703所示的。響應(yīng)本地總線DClaim操作和部分響應(yīng),如在塊1704所示的,分布式響應(yīng)邏輯210產(chǎn)生指示“降級(jí)”的CR。響應(yīng)這種CR,本地總線DClaim操作的主控者232接下來(lái)必須嘗試?yán)帽镜乜偩€RWITM操作獲得所請(qǐng)求存儲(chǔ)器塊的所有權(quán),如在圖7A的塊748所描述的。
如在塊1710所示的,如果窺探者236以指示包含該窺探者236的L2高速緩沖存儲(chǔ)器230以T或Te狀態(tài)中任意一種保留所請(qǐng)求存儲(chǔ)器塊的部分響應(yīng)確認(rèn)該本地總線DClaim操作,則處理轉(zhuǎn)向塊1712。因?yàn)轫憫?yīng)總線DClaim操作,不需要數(shù)據(jù)傳輸,因此塊1712指示發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230中的主控者232將L2高速緩沖存儲(chǔ)器目錄302中所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)更新成M狀態(tài)。所有有效的確認(rèn)窺探者236都將其各自的用于所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)更新成I。如在塊1718所示的,分布式響應(yīng)邏輯210產(chǎn)生指示“清除”的CR,這意味著發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230必須發(fā)布一個(gè)或多個(gè)總線kill操作,以便如果有的話,則使保留在本地一致性域之外的所請(qǐng)求存儲(chǔ)器塊拷貝失效。
如在塊1740所說(shuō)明的,如果Tn或Ten窺探者236確認(rèn)本地總線DClaim操作,則處理轉(zhuǎn)向塊1742。因?yàn)轫憫?yīng)總線DClaim操作,不需要數(shù)據(jù)傳輸,因此塊1742指示發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230中的主控者232將L2高速緩沖存儲(chǔ)器目錄302中所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)更新成M狀態(tài)。所有有效的確認(rèn)窺探者236都將其各自的用于所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)更新成I。如在塊1744所示的,分布式響應(yīng)邏輯210產(chǎn)生依賴于由響應(yīng)邏輯210接收到的部分響應(yīng)是否指示Sr’或S’窺探者236可能隱藏的CR。如果不是,則因?yàn)門n或Ten一致性狀態(tài)的存在保證沒(méi)有本地一致性域之外的L2高速緩沖存儲(chǔ)器230保留所請(qǐng)求存儲(chǔ)器塊的拷貝,所以如在塊1746所示的,分布式響應(yīng)邏輯210產(chǎn)生指示“成功”的響應(yīng)。如果部分響應(yīng)指示Sr’或S’窺探者236可能隱藏,則如在塊1748所示的,響應(yīng)邏輯210產(chǎn)生指示“本地清除”的CR。因?yàn)門n或Ten一致性狀態(tài)再次保證沒(méi)有本地一致性域之外的L2高速緩沖存儲(chǔ)器230保留所請(qǐng)求存儲(chǔ)器塊的有效拷貝,所以只需要本地清除操作。
現(xiàn)在轉(zhuǎn)向塊1720,如果沒(méi)有窺探者降級(jí)本地總線DClaim操作(塊1702),沒(méi)有Tx窺探者236確認(rèn)該本地總線DClaim操作(塊1710和1740),但有窺探者236提供指示它可以Tx狀態(tài)保留所請(qǐng)求存儲(chǔ)器塊的部分響應(yīng)但不能確認(rèn)該本地總線DClaim操作,則每個(gè)有效的確認(rèn)窺探者236都將其各自的用于所請(qǐng)求存儲(chǔ)器塊的一致性狀態(tài)更新成I狀態(tài)(塊1721)。此外,如在決1722所描述的,響應(yīng)邏輯210產(chǎn)生指示“重試”的CR。響應(yīng)該“重試”CR,發(fā)出請(qǐng)求的主控者232可以作為本地或全局操作重新發(fā)布該總線DClaim操作,如以上參考圖7A的塊736所解釋的。但是,如果沒(méi)有窺探者降級(jí)本地總線DClaim操作(塊1702),沒(méi)有Tx窺探者236確認(rèn)該本地總線DClaim操作或可能隱藏(塊1702、1710、1740和1720),則如在塊1732所示的,響應(yīng)邏輯210提供“去全局”CR,而且如果有的話,則所有具有所請(qǐng)求存儲(chǔ)器塊有效拷貝的確認(rèn)窺探者都使其各自的所請(qǐng)求存儲(chǔ)器塊拷貝失效,如在塊1730所示。響應(yīng)“去全局”CR,主控者232作為全局操作重新發(fā)布該總線DClaim操作,如在圖7A的塊740所描述的。
現(xiàn)在參考圖14,描述根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行全局總線DClaim操作的示例方法的高級(jí)邏輯流程圖。例如,在圖7A的塊740,處理在塊1800以L2高速緩沖存儲(chǔ)器230的主控者232在系統(tǒng)互連110上發(fā)布全局總線DClaim操作開(kāi)始。響應(yīng)全局總線DClaim操作,窺探者222、236可以提供給分布式響應(yīng)邏輯210的多種部分響應(yīng)在圖14中由決定塊1802、1810、1818、1830、1840、1842和1819的輸出表示。這些部分響應(yīng)又確定響應(yīng)邏輯210對(duì)全局總線DClaim操作產(chǎn)生什么CR。
如在塊1802所示,如果任何窺探者236發(fā)布將全局總線DClaim操作降級(jí)成總線RWITM操作的部分響應(yīng),則除降級(jí)窺探者236之外的每個(gè)有效確認(rèn)窺探者236(即,非Ig窺探者236)都使其各自的所請(qǐng)求存儲(chǔ)器塊拷貝失效,如在塊1803所示的。此外,如在塊1804所示的,分布式響應(yīng)邏輯210產(chǎn)生指示“降級(jí)”的CR。響應(yīng)這種CR,全局總線DClaim操作的主控者232接下來(lái)必須嘗試?yán)每偩€RWITM操作獲得所請(qǐng)求存儲(chǔ)器塊的所有權(quán),如在圖7A的塊748和754所描述的。
如在塊1810所示,如果Tx(例如,T、Te、Tn或Ten)窺探者236確認(rèn)全局總線DClaim操作,則處理轉(zhuǎn)向塊1812。塊1812描述Tx窺探者236確定它對(duì)于發(fā)出請(qǐng)求的主控者232是否是本地的。如果不是,則Tx窺探者236將其相關(guān)輸入的狀態(tài)更新成Ig,以便如塊1814所示維護(hù)用于所請(qǐng)求存儲(chǔ)器塊的高速緩沖域指示符。此外,發(fā)出請(qǐng)求的主控者232將其所請(qǐng)求存儲(chǔ)器塊拷貝的一致性狀態(tài)更新成M,而且除Tx窺探者236之外的每個(gè)有效確認(rèn)窺探者236都將其所請(qǐng)求存儲(chǔ)器塊的一致性狀態(tài)更新成I(塊1814)。
返回塊1812,如果Tx窺探者236確定它對(duì)于發(fā)出請(qǐng)求的主控者232是本地的,則全局總線DClaim操作根據(jù)塊1816處理。特別地,發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230中的主控者232將其所請(qǐng)求存儲(chǔ)器塊拷貝的狀態(tài)更新成M狀態(tài),而所有有效的確認(rèn)窺探者236都將其各自的所請(qǐng)求存儲(chǔ)器塊的高速緩沖存儲(chǔ)器狀態(tài)更新成I。
如在塊1818和1822所示的,如果部分響應(yīng)指示沒(méi)有S’或Sr’窺探者236可能隱藏,則處理以響應(yīng)邏輯210產(chǎn)生指示“成功”的CR結(jié)束(塊1822)。另一方面,如果在塊1818確定至少一個(gè)指示存在可能隱藏的S’或Sr’窺探者236的部分響應(yīng)響應(yīng)全局總線DClaim操作而給出,則將需要某種類型的清除操作。如果確認(rèn)Tx窺探者236在與發(fā)出請(qǐng)求的主控者232相同的一致性域中,而且在操作之前是處于Te和Ten狀態(tài)中的一種,則分布式響應(yīng)邏輯210產(chǎn)生指示“本地清除”的CR(塊1824),這意味著發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230必須發(fā)布一個(gè)或多個(gè)本地總線kill操作,以便使任何這種隱藏的S’或Sr’窺探者236中的所請(qǐng)求存儲(chǔ)器塊失效。如果確認(rèn)Tx窺探者236不在與發(fā)出請(qǐng)求的主控者232相同的一致性域中,或者在操作之前確認(rèn)Tx窺探者236處于Te或Ten一致性狀態(tài)中的一種,則需要全局清除,而且分布式響應(yīng)邏輯210產(chǎn)生指示“清除”的CR(塊1820)。因此,Tn或Ten一致性狀態(tài)的存在可以再次用于限定總線kill操作的范圍。
現(xiàn)在轉(zhuǎn)到塊1830,如果沒(méi)有Tx窺探者236確認(rèn)全局總線DClaim操作,而且如果沒(méi)有窺探者222提供指示它對(duì)所請(qǐng)求存儲(chǔ)器塊響應(yīng)(即,LPC)的部分響應(yīng),則如在塊1832所描述的,發(fā)生造成處理中斷的錯(cuò)誤。另一方面,如果沒(méi)有Tx窺探者236確認(rèn)全局總線DClaim操作,但有窺探者222提供指示它對(duì)所請(qǐng)求存儲(chǔ)器塊響應(yīng)(即,LPC)的部分響應(yīng)但不確認(rèn)該全局總線DClaim操作(塊1840),則每個(gè)有效的確認(rèn)窺探者236都使其各自的所請(qǐng)求存儲(chǔ)器塊拷貝失效(塊1843),而響應(yīng)邏輯210產(chǎn)生指示“重試”的CR,如在塊1844所描述的。如由決定塊1842所指示的,如果存儲(chǔ)器控制器窺探者222確認(rèn)該總線DClaim操作(塊1840)且Tx窺探者236可能隱藏(塊1842),則每個(gè)有效的確認(rèn)窺探者236還在塊1843使其各自的所請(qǐng)求存儲(chǔ)器塊拷貝失效,而響應(yīng)邏輯210類似地在塊1844產(chǎn)生“重試”CR。
如在塊1842所描述的,如果沒(méi)有Tx窺探者236確認(rèn)全局總線DClaim操作或可能隱藏,但有窺探者222確認(rèn)該全局總線DClaim操作,則該全局總線DClaim操作根據(jù)以上描述過(guò)的塊1816提供服務(wù)。
現(xiàn)在參考圖15,說(shuō)明根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行本地總線kill操作的示例方法的高級(jí)邏輯流程圖。本地總線kill操作的范圍限定到一個(gè)一致性域是通過(guò)由Tn和Ten一致性狀態(tài)提供的附加信息,即在該一致性域之外沒(méi)有存儲(chǔ)器塊的共享拷貝駐留,啟用的。
如所描述的,例如,在圖7B的塊788或圖8的塊1044,處理在塊1900以L2高速緩沖存儲(chǔ)器230的主控者232在其本地互連114上發(fā)布本地總線kill操作開(kāi)始。響應(yīng)本地總線kill操作,窺探者222、236可以提供給分布式響應(yīng)邏輯210的多種部分響應(yīng)在圖15中由決定塊1902和1906的輸出表示。這些部分響應(yīng)又確定響應(yīng)邏輯210對(duì)本地總線kill操作產(chǎn)生什么CR。
特別地,如在塊1902和1904所描述的,處于M、Me、Tx、Sr’或S’狀態(tài)中任意一種的確認(rèn)總線kill操作的任何窺探者236都響應(yīng)接收到CR而使其所請(qǐng)求存儲(chǔ)器塊拷貝失效,而無(wú)需任何數(shù)據(jù)發(fā)送。如果有的話,則確認(rèn)Ig窺探者236保留在Ig狀態(tài)。如在塊1906、1908和1910進(jìn)一步示出的,如果任何窺探者236提供不確認(rèn)本地總線kill操作的部分響應(yīng)而產(chǎn)生指示“成功”的CR,則響應(yīng)邏輯210產(chǎn)生指示“本地清除”的CR。
現(xiàn)在參考圖16,說(shuō)明根據(jù)本發(fā)明執(zhí)行全局總線kill操作的示例方法的高級(jí)邏輯流程圖。如所描述的,例如,在圖6的塊626或圖7的塊726,處理在塊2000以L2高速緩沖存儲(chǔ)器230的主控者232在系統(tǒng)互連110上發(fā)布總線kill操作開(kāi)始。響應(yīng)全局總線kill操作,窺探者222、236可以提供給分布式響應(yīng)邏輯210的多種部分響應(yīng)在圖16中由決定塊2002和2006的輸出表示。這些部分響應(yīng)又確定響應(yīng)邏輯210對(duì)本地總線kill操作產(chǎn)生什么CR。
特別地,如在塊2002和2004所描述的,處于M、Me、Tx、Sr’或S’狀態(tài)中任意一種的確認(rèn)總線kill操作的任何有效窺探者236都響應(yīng)接收到CR而使其所請(qǐng)求存儲(chǔ)器塊拷貝失效,而無(wú)需任何數(shù)據(jù)發(fā)送。如果有的話,則確認(rèn)Ig窺探者236保留在Ig狀態(tài)。如在塊2006、2008和2010進(jìn)一步示出的,如果任何窺探者236提供不確認(rèn)總線kill操作的部分響應(yīng)而產(chǎn)生指示“成功”的CR,則響應(yīng)邏輯210產(chǎn)生指示“清除”的CR。
現(xiàn)在參考圖17,說(shuō)明根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行本地總線寫(xiě)操作的示例方法的高級(jí)邏輯流程圖。例如,在圖8的塊1004,處理在塊2500以I/O控制器214在本地互連114上發(fā)布本地總線寫(xiě)操作開(kāi)始。窺探者222、236可以提供給分布式響應(yīng)邏輯210的多種部分響應(yīng)在圖17中由決定塊2502、2510、2512、2520、2522和2530的輸出表示。這些部分響應(yīng)又確定用于本地總線寫(xiě)操作的CR。
如果沒(méi)有窺探者222提供指示它對(duì)目標(biāo)存儲(chǔ)器塊響應(yīng)(即,LPC)的部分響應(yīng)(塊2502),則如塊2504所示出的,每個(gè)有效的確認(rèn)窺探者236使其各自的目標(biāo)存儲(chǔ)器塊拷貝失效,而且如在塊2506所說(shuō)明的,響應(yīng)邏輯210提供“去全局”CR,因?yàn)長(zhǎng)PC是總線寫(xiě)操作中的必需參與者。如在塊2510所描述的,如果窺探者222提供指示它對(duì)所請(qǐng)求存儲(chǔ)器塊響應(yīng)(即,LPC)的部分響應(yīng)但不確認(rèn)該本地總線寫(xiě)操作(塊2512)并且有M或Me窺探者236確認(rèn)該本地總線寫(xiě)操作(塊2510),則該M或Me窺探者236使其所請(qǐng)求存儲(chǔ)器塊的拷貝失效(塊2254)。此外,如在塊2518所描述的,因?yàn)長(zhǎng)PC必需可用于接收目標(biāo)存儲(chǔ)器塊,所以響應(yīng)邏輯210產(chǎn)生指示“重試本地”的CR。
如果存儲(chǔ)器控制器窺探者222指示它是用于目標(biāo)存儲(chǔ)器塊的LPC、沒(méi)有M、Me或Tx窺探者236確認(rèn)本地總線寫(xiě)操作且部分響應(yīng)指示M、Me或Tx窺探者236可能隱藏(塊2530),則響應(yīng)邏輯210類似地在塊2534產(chǎn)生“重試”CR,而且每個(gè)有效的確認(rèn)窺探者236都使其各自的所請(qǐng)求存儲(chǔ)器塊拷貝失效(塊2532)。在這種情況下,如果有的話,則每個(gè)確認(rèn)窺探者236都使其目標(biāo)存儲(chǔ)器塊的拷貝失效,而且響應(yīng)邏輯210產(chǎn)生“重試”CR,使得只有當(dāng)沒(méi)有所請(qǐng)求存儲(chǔ)器塊的HPC拷貝保留在系統(tǒng)中時(shí)本地總線寫(xiě)操作才成功。
再次參考?jí)K2512,假設(shè)M或Me窺探者236確認(rèn)本地總線寫(xiě)操作且有窺探者222作為L(zhǎng)PC確認(rèn)該本地總線寫(xiě)操作,則發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230向LPC窺探者222發(fā)送所請(qǐng)求的存儲(chǔ)器塊,而且如果有的話,則有效的確認(rèn)窺探者236使其各自的所請(qǐng)求存儲(chǔ)器塊拷貝失效(塊2514)。此外,LPC窺探者222將與目標(biāo)存儲(chǔ)器塊關(guān)聯(lián)的域指示符504設(shè)置成“本地”。處理在塊2516以分布式響應(yīng)邏輯210產(chǎn)生指示“成功”的CR結(jié)束。
如在塊2520及后續(xù)塊所描述的,如果窺探者222提供指示它是用于目標(biāo)存儲(chǔ)器塊的LPC的部分響應(yīng)(塊2502)但不能確認(rèn)本地總線寫(xiě)操作(塊2522),沒(méi)有M或Me窺探者236確認(rèn)該本地總線寫(xiě)操作(塊2510),但有Tx窺探者236確認(rèn)該本地總線寫(xiě)操作,則分布式響應(yīng)邏輯210產(chǎn)生指示“重試本地”的CR(塊2518),以強(qiáng)制操作本地重新發(fā)布,而確認(rèn)該本地總線寫(xiě)操作的有效窺探者236使其各自的所請(qǐng)求存儲(chǔ)器塊拷貝失效(塊2524)。假設(shè)除LPC窺探者222確認(rèn)本地總線寫(xiě)操作之外的相同的部分響應(yīng)(塊2522),發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230向LPC窺探者222發(fā)送所請(qǐng)求的存儲(chǔ)器塊,而確認(rèn)本地總線寫(xiě)操作的每個(gè)有效窺探者236都使其各自的所請(qǐng)求存儲(chǔ)器塊拷貝失效(塊2526)。此外,LPC窺探者222將與目標(biāo)存儲(chǔ)器塊關(guān)聯(lián)的域指示符504設(shè)置成“本地”。
響應(yīng)本地總線寫(xiě)操作和確認(rèn)本地總線寫(xiě)操作的Tx窺探者236與LPC窺探者222的部分響應(yīng),如果在失效之前Tx窺探者236以Tn和Ten狀態(tài)中的一種保留目標(biāo)存儲(chǔ)器塊,則分布式響應(yīng)邏輯210產(chǎn)生指示“本地清除”的CR(塊2540和2542),否則產(chǎn)生指示“清除”的CR(塊2528)。應(yīng)當(dāng)指出,Tn或Ten一致性狀態(tài)的存在使清除操作過(guò)程中總線kill操作的范圍被限定到本地一致性域。
現(xiàn)在參考圖18,描述根據(jù)本發(fā)明在數(shù)據(jù)處理系統(tǒng)中執(zhí)行全局總線寫(xiě)操作的示例方法的高級(jí)邏輯流程圖。如所示出的,例如,在圖8的塊1020,處理在塊2600以I/O控制器214在系統(tǒng)互連110上發(fā)布全局總線寫(xiě)操作開(kāi)始。窺探者222、236可以提供給分布式響應(yīng)邏輯210的多種部分響應(yīng)在圖18中由決定塊2610、2620、2624、2626和2641的輸出表示。這些部分響應(yīng)又確定用于本地總線寫(xiě)操作的CR。
如在塊2610所描述的,如果沒(méi)有窺探者222提供指示它對(duì)所請(qǐng)求存儲(chǔ)器塊響應(yīng)(即,LPC)的部分響應(yīng),則如在塊2612所描述的,發(fā)生造成處理中斷的錯(cuò)誤。但是,如果有窺探者222提供指示它對(duì)所請(qǐng)求存儲(chǔ)器塊響應(yīng)(即,LPC)的部分響應(yīng)但不確認(rèn)該全局總線寫(xiě)操作(塊2620),別每個(gè)有效的確認(rèn)窺探者236都使其各自的所請(qǐng)求存儲(chǔ)器塊拷貝失效(塊2621),而因?yàn)長(zhǎng)PC必需可用于接收所請(qǐng)求的存儲(chǔ)器塊,所以響應(yīng)邏輯210產(chǎn)生指示“重試”的CR(塊2622)。如果存儲(chǔ)器控制器窺探者222確認(rèn)全局總線寫(xiě)操作但部分響應(yīng)指示M、Me或Tx窺探者236可能隱藏(塊2624、2621和2622),則響應(yīng)邏輯210類似地產(chǎn)生“重試”CR,而每個(gè)有效的確認(rèn)窺探者236使其各自的所請(qǐng)求存儲(chǔ)器塊拷貝失效。在這種情況下,產(chǎn)生“重試”CR,使得只有當(dāng)沒(méi)有所請(qǐng)求存儲(chǔ)器塊的HPC拷貝保留在系統(tǒng)中時(shí)全局總線寫(xiě)操作才成功。
再次參考?jí)K2624,假設(shè)窺探者222作為L(zhǎng)PC確認(rèn)全局總線寫(xiě)操作而且沒(méi)有產(chǎn)生指示M、Me或Tx窺探者236可能隱藏的部分響應(yīng),則發(fā)出請(qǐng)求的L2高速緩沖存儲(chǔ)器230向LPC窺探者222發(fā)送所請(qǐng)求的存儲(chǔ)器塊,而且如果有的話,則確認(rèn)該總線寫(xiě)操作的有效窺探者236使其各自的所請(qǐng)求存儲(chǔ)器塊拷貝失效(塊2628或塊2640)。如由塊2626和2630所表示的,如果部分響應(yīng)指示沒(méi)有S’或Sr’窺探者236可能隱藏,則處理以分布式響應(yīng)邏輯210產(chǎn)生指示“成功”的CR結(jié)束。此外,LPC窺探者222將與所請(qǐng)求存儲(chǔ)器塊關(guān)聯(lián)的域指示符504設(shè)置成“本地”(塊2628)。另一方面,如果響應(yīng)全局總線寫(xiě)操作給出至少一個(gè)指示可能隱藏的S’或Sr’窺探者236存在的部分響應(yīng)(塊2626),則分布式響應(yīng)邏輯210產(chǎn)生指示需要清除操作的CR。特別地,如果在失效之前Tx窺探者236以Tn和Ten狀態(tài)中的一種保留目標(biāo)存儲(chǔ)器塊且LPC窺探者222和Tx窺探者236都在發(fā)出請(qǐng)求的I/O控制器214的本地一致性域中(塊2641),則分布式需要邏輯210產(chǎn)生指示“本地清除”的CR(塊2644)。否則,分布式響應(yīng)邏輯210產(chǎn)生指示“清除”的CR(塊2642)。
VIII、DMA寫(xiě)管道化優(yōu)選的數(shù)據(jù)一致性模型需要使由特定DMA主控者(例如,I/O控制器214)通過(guò)直接存儲(chǔ)器訪問(wèn)(DMA)存儲(chǔ)到系統(tǒng)存儲(chǔ)器108中的數(shù)據(jù)可以用于向系統(tǒng)存儲(chǔ)器108傳輸DMA數(shù)據(jù)的總線寫(xiě)操作發(fā)布的次序用于訪問(wèn)。因此,應(yīng)當(dāng)使由時(shí)間靠后DMA寫(xiě)操作存儲(chǔ)到系統(tǒng)存儲(chǔ)器108中的數(shù)據(jù)不早于由最近完成的相同DMA主控者先前發(fā)布的DMA寫(xiě)操作寫(xiě)入系統(tǒng)存儲(chǔ)器108的數(shù)據(jù)用于讀訪問(wèn)。
滿足這種數(shù)據(jù)一致性模型的簡(jiǎn)單方法是嚴(yán)格排序DMA寫(xiě)操作,使得如果有的話,則DMA主控者在前面的DMA寫(xiě)操作成功完成之前不能發(fā)布下一DMA寫(xiě)操作。但是,隨著數(shù)據(jù)處理系統(tǒng)變得越來(lái)越大和DMA訪問(wèn)等待時(shí)間的增加,DMA寫(xiě)操作的嚴(yán)格序列化會(huì)嚴(yán)重限制DMA設(shè)備能夠?qū)崿F(xiàn)的吞吐量。因此,期望能夠管道化DMA寫(xiě)操作,即,重疊DMA寫(xiě)操作,使得附加等待時(shí)間的影響被屏蔽。
為了在管道化DMA寫(xiě)操作存在的情況下遵照優(yōu)選的數(shù)據(jù)一致性模型,必需采用某種技術(shù)來(lái)保護(hù)時(shí)間靠后DMA寫(xiě)操作的數(shù)據(jù)不被訪問(wèn),直到來(lái)自相同DMA主控者的所有時(shí)間靠前的DMA寫(xiě)操作都已經(jīng)完成。在本發(fā)明的優(yōu)選實(shí)施方式中,這種保護(hù)是通過(guò)域指示符504的適當(dāng)設(shè)置及DMA主控者(例如,IOC 214)和1MC 206的保護(hù)窗口404a的實(shí)現(xiàn)提供的。
現(xiàn)在參考圖19,描述根據(jù)本發(fā)明第一實(shí)施方式在支持多操作范圍(例如,本地和全局)的示例數(shù)據(jù)處理系統(tǒng)100中用于管道化DMA寫(xiě)操作的方法的時(shí)空?qǐng)D。在圖19所示的示例環(huán)境中,數(shù)據(jù)處理系統(tǒng)100包括至少兩個(gè)標(biāo)記為N1和N2的處理節(jié)點(diǎn)102。處理節(jié)點(diǎn)N1 102包括IOC 214,而處理節(jié)點(diǎn)N2 102包括至少一個(gè)處理單元104和具有關(guān)聯(lián)的系統(tǒng)存儲(chǔ)器108的IMC 206。為了避免使本發(fā)明模糊,有些操作的完整范圍、有些部分響應(yīng)及所有操作的數(shù)據(jù)使用期都從圖19忽略掉了。
在示例操作場(chǎng)景中,如處理節(jié)點(diǎn)N1 102中的IOC 214的DMA主控者發(fā)布目標(biāo)在于實(shí)際地址A和B的一連串管道化的總線寫(xiě)操作2700a、2700b,其中地址A和B分配給系統(tǒng)存儲(chǔ)器108中由處理節(jié)點(diǎn)N2 102中的IMC 206控制的存儲(chǔ)器位置。特別地,應(yīng)當(dāng)注意,處理節(jié)點(diǎn)N1 102中的IOC 214在接收到總線寫(xiě)操作2700a成功的指示(例如,接收到成功、清除或本地清除的組合響應(yīng)(CR))之前發(fā)布目標(biāo)在于實(shí)際地址B的總線寫(xiě)操作2700b。在圖19所示的操作場(chǎng)景中,因?yàn)槿鄙偬幚砜偩€寫(xiě)操作2700a的可用隊(duì)列輸入,所以處理節(jié)點(diǎn)N2 102中的IMC 206提供重試部分響應(yīng)2702,而響應(yīng)邏輯210相應(yīng)地提供用于總線寫(xiě)操作2700a的重試組合響應(yīng)2704。當(dāng)然,在其它操作場(chǎng)景中,如總線寫(xiě)操作2700a的總線寫(xiě)操作可以因?yàn)槠渌蚪邮罩卦嚱M合響應(yīng),例如因?yàn)槭怯糜谀繕?biāo)存儲(chǔ)器塊的HPC的L2高速緩沖存儲(chǔ)器230的窺探者236提供重試部分響應(yīng)或者因?yàn)榕c先前讀操作的地址沖突。
因?yàn)镈MA總線寫(xiě)操作在圖19所示的操作場(chǎng)景中被管道化,因此有可能在前面的總線寫(xiě)操作2700a成功之前后續(xù)的總線寫(xiě)操作2000b成功(例如,接收到成功、清除或本地清除CR)。例如,在這種操作場(chǎng)景中,IMC窺探者206(及其它窺探者)模糊或明確地提供確認(rèn)部分響應(yīng)2708,而響應(yīng)邏輯210向處理節(jié)點(diǎn)N1 102中的IOC 214和處理節(jié)點(diǎn)N2 102中的IMC 206提供成功CR 2710。為了確保處理節(jié)點(diǎn)N1 102中的IOC 214能夠加強(qiáng)其中只有來(lái)自相同源的先前發(fā)布的DMA寫(xiě)操作成功完成后DMA數(shù)據(jù)才可用于讀訪問(wèn)的優(yōu)選一致性模型,處理節(jié)點(diǎn)N2 102中的IMC 206響應(yīng)成功CR 2710將與在地址B的目標(biāo)存儲(chǔ)器塊關(guān)聯(lián)的域指示符504重置成指示“全局”,如在標(biāo)號(hào)2712所示出的。因此,基于域指示符504的狀態(tài),任何目標(biāo)在于地址B的后續(xù)本地讀類型操作,例如處理節(jié)點(diǎn)N2 102的處理單元104的本地總線讀操作2720,模糊或明確地給出由處理節(jié)點(diǎn)N2 102的IMC 206的重試部分響應(yīng)2722。重試部分響應(yīng)2722使響應(yīng)邏輯210產(chǎn)生重試CR 2724,這強(qiáng)制處理節(jié)點(diǎn)N2 102的處理單元104作為由包括處理節(jié)點(diǎn)N1 102的IOC 214在內(nèi)的所有處理節(jié)點(diǎn)102的窺探者觀察的全局總線讀操作2726重新發(fā)布其讀請(qǐng)求。
如在重試部分響應(yīng)2730和重試組合響應(yīng)2732所指示的,IOC 214保護(hù)地址B的目標(biāo)存儲(chǔ)器塊不被讀訪問(wèn),直到先前發(fā)布的目標(biāo)在于地址A的總線寫(xiě)操作(作為總線寫(xiě)操作2734重新發(fā)布)成功完成,如由IMC 206的確認(rèn)部分響應(yīng)2738和響應(yīng)邏輯210的成功組合響應(yīng)2736所指示的。響應(yīng)成功組合響應(yīng)2738,處理節(jié)點(diǎn)N2 102的IMC 206將與地址A的存儲(chǔ)器塊關(guān)聯(lián)的域指示符504重置成指示“全局”,如在標(biāo)號(hào)2740所示出的。以這種方式,IOC 214在必要的時(shí)候可以保護(hù)地址A的目標(biāo)存儲(chǔ)器塊不被讀操作,直到其先前的所有DMA總線寫(xiě)操作都成功完成。
一旦所有先前發(fā)布的DMA寫(xiě)操作都成功完成,處理節(jié)點(diǎn)N1 102的IOC 214就不再繼續(xù)它對(duì)與地址B關(guān)聯(lián)的存儲(chǔ)器塊的保護(hù),而對(duì)存儲(chǔ)器塊的后續(xù)總線讀操作,如全局總線讀操作2742,將繼續(xù),如由確認(rèn)部分響應(yīng)2744和成功組合響應(yīng)2746所指示的。
如從圖19可以理解的,圖19所示的管道化DMA寫(xiě)操作的示例方法需要重新設(shè)置是DMA寫(xiě)操作目標(biāo)的每個(gè)存儲(chǔ)器塊的域指示符504,以確保IOC 214可以保護(hù)將破壞優(yōu)選數(shù)據(jù)一致性性模型的對(duì)DMA收據(jù)的讀訪問(wèn)。因此,需要全局總線讀操作來(lái)成功地讀DMA數(shù)據(jù)。盡管這種需求保護(hù)優(yōu)選一致性性模型不被破壞,但它過(guò)寬,因?yàn)樵谙惹鞍l(fā)布的DMA總線寫(xiě)操作在對(duì)DMA數(shù)據(jù)的讀訪問(wèn)之前全部完成的情況下,不再需要對(duì)DMA數(shù)據(jù)的進(jìn)一步保護(hù),而且域指示符可以重置成指示“本地”。因此,圖20描述了管道化DMA寫(xiě)操作的增強(qiáng)方法,其中包含DMA數(shù)據(jù)的存儲(chǔ)器塊的域指示符在DMA寫(xiě)操作的數(shù)據(jù)相設(shè)置或重置,使得如果可能地話,給較早的DMA寫(xiě)操作在域指示符狀態(tài)建立之前完成的機(jī)會(huì)。
現(xiàn)在參考圖20,描述說(shuō)明根據(jù)本發(fā)明第二實(shí)施方式在支持多操作范圍(例如,本地和全局)的示例數(shù)據(jù)處理系統(tǒng)100中用于管道化DMA寫(xiě)操作的方法的時(shí)空?qǐng)D。在圖20所示的示例環(huán)境中,數(shù)據(jù)處理系統(tǒng)100同樣包括至少兩個(gè)標(biāo)記為N1和N2的處理節(jié)點(diǎn)102。處理節(jié)點(diǎn)N1102包括IOC 214,而處理節(jié)點(diǎn)N2 102包括至少一個(gè)處理單元104和具有關(guān)聯(lián)系統(tǒng)存儲(chǔ)器108的IMC 206。
在圖20所示的示例操作場(chǎng)景中,如處理節(jié)點(diǎn)N1 102中IOC 214的DMA主控者發(fā)布一連串目標(biāo)在于實(shí)際地址A和B的管道化總線寫(xiě)操作2800a、2800b,其中地址A和B分配給系統(tǒng)存儲(chǔ)器108中由處理節(jié)點(diǎn)N2 102的IMC 206控制的存儲(chǔ)器位置。同樣應(yīng)當(dāng)指出,處理節(jié)點(diǎn)N1 102中的IOC 214在接收到總線寫(xiě)操作2800a成功的指示(例如,接收到成功、清除或本地清除組合響應(yīng)(CR))之前發(fā)布目標(biāo)在于實(shí)際地址B的總線寫(xiě)操作2800b。在圖20所示的示例操作場(chǎng)景中,處理節(jié)點(diǎn)N2 102的IMC 206提供重試部分響應(yīng)2802(例如,因?yàn)樗鄙偬幚砜偩€寫(xiě)操作2800a的可用隊(duì)列輸入),處理節(jié)點(diǎn)N2 102的處理單元104提供確認(rèn)部分響應(yīng)2802b,而響應(yīng)邏輯210相應(yīng)地提供用于總線寫(xiě)操作2800a的重試組合響應(yīng)2804。
因?yàn)樵趫D20所示的操作場(chǎng)景中DMA總線寫(xiě)操作被管道化,因此對(duì)于后續(xù)的寫(xiě)操作2800b,有可能在先前的總線寫(xiě)操作2800a成功之前成功(例如,接收到成功、清除或本地清除CR)。例如,在這種操作場(chǎng)景中,IMC窺探者206(及其它窺探者)模糊或明確地提供確認(rèn)部分響應(yīng)2808a、2808b,而響應(yīng)邏輯210向處理節(jié)點(diǎn)N1 102中的IOC 214(及向處理節(jié)點(diǎn)N2 102中的IMC 206)提供成功CR 2810。不像其中處理節(jié)點(diǎn)N2 102中的IMC 206響應(yīng)成功CR將與DMA總線寫(xiě)操作的每個(gè)目標(biāo)存儲(chǔ)器塊關(guān)聯(lián)的域指示符504設(shè)置成指示“全局”的圖19的第一實(shí)施方式,IMC 206等待建立域指示符504的適當(dāng)狀態(tài),直到從帶DMA數(shù)據(jù)的IOC 214接收到適當(dāng)狀態(tài)的指示。因此,在加強(qiáng)用于DMA數(shù)據(jù)的總線讀操作的全局范圍之前,對(duì)先前發(fā)布的DMA總線寫(xiě)操作給予額外的時(shí)間。
例如,如圖20所示,在發(fā)送與DMA總線寫(xiě)操作2800b關(guān)聯(lián)的數(shù)據(jù)使用期2822之前,IOC 214可以重新發(fā)布目標(biāo)在于存儲(chǔ)器地址A的DMA總線寫(xiě)操作2812。在這個(gè)例子中,例如,基于IMC 206提供確認(rèn)部分響應(yīng)2814和處理單元104提供可能隱藏的部分響應(yīng)2818,依靠IOC 214接收來(lái)自響應(yīng)邏輯210的對(duì)DMA總線寫(xiě)操作2812的清除組合響應(yīng)2816,同樣是目標(biāo)在于實(shí)際地址A的DMA總線操作2812在發(fā)送數(shù)據(jù)使用期2822之前成功。(如以上參考圖8指出的,響應(yīng)清除組合響應(yīng),IOC 214發(fā)布一個(gè)或多個(gè)總線kill操作2820,以便使與地址A關(guān)聯(lián)的存儲(chǔ)器塊的任何剩余高速緩沖拷貝失效。)假設(shè)其每個(gè)先前的DMA寫(xiě)操作都已經(jīng)成功而且所有與其關(guān)聯(lián)的kill操作(例如,總線kill操作2820)都接收到成功CR(例如,基于確認(rèn)部分響應(yīng)2819和2821產(chǎn)生的成功CR 2823),IOC 214向帶用于DMA總線寫(xiě)操作2800a的數(shù)據(jù)使用期的IMC 206發(fā)送所關(guān)聯(lián)域指示符504應(yīng)當(dāng)重置成指示“本地”的指示。響應(yīng)接收到數(shù)據(jù)使用期2822,IMC 206相應(yīng)地存儲(chǔ)地址B的DMA數(shù)據(jù)并將所關(guān)聯(lián)的域指示符504重置成指示“本地”(標(biāo)號(hào)2824)。當(dāng)然,如果IOC 214已經(jīng)在接收到成功CR 2823之前的任何時(shí)候發(fā)送了數(shù)據(jù)使用期2822,則IOC 214將帶數(shù)據(jù)提供所關(guān)聯(lián)域指示符應(yīng)當(dāng)設(shè)置成指示“全局”的指示,而IMC 206將相應(yīng)地將與地址B關(guān)聯(lián)的域指示符504設(shè)置成指示“全局”。
其后,當(dāng)處理節(jié)點(diǎn)N2 102的IMC 206接收到目標(biāo)在于地址B的本地讀類型操作時(shí)(例如,處理節(jié)點(diǎn)N2 102的處理單元104的本地總線讀操作2830),IMC 206可以基于域指示符504的重置狀態(tài)提供確認(rèn)部分響應(yīng)2832。對(duì)此進(jìn)行響應(yīng),響應(yīng)邏輯210產(chǎn)生成功組合響應(yīng)2834,這意味著目標(biāo)在于DMA數(shù)據(jù)的本地總線讀操作2830可以不用將廣播范圍擴(kuò)大到包括IOC 214就能提供服務(wù),同時(shí)在管道化DMA寫(xiě)操作存在的情況下仍然能觀察到優(yōu)選一致性模型。假設(shè)所有先前發(fā)布的DMA總線寫(xiě)操作都已經(jīng)成功,則與DMA總線寫(xiě)操作2812關(guān)聯(lián)的數(shù)據(jù)使用期2836類似地指示IMC 206應(yīng)當(dāng)將存儲(chǔ)器地址A的域指示符504重置成指示“本地”,如標(biāo)號(hào)2838所示的。
如已經(jīng)描述過(guò)的,本發(fā)明提供了用于處理DMA寫(xiě)操作的改進(jìn)的方法與系統(tǒng)。根據(jù)本發(fā)明,如I/O控制器的DMA主控者啟動(dòng)管道化DMA寫(xiě)操作的序列并保護(hù)DMA數(shù)據(jù)在所有先前的DMA寫(xiě)操作成功之前不接受將使與DMA寫(xiě)操作關(guān)聯(lián)的DMA數(shù)據(jù)被訪問(wèn)的任何讀類型訪問(wèn)。為了保護(hù)DMA數(shù)據(jù),DMA主控者強(qiáng)加一個(gè)保護(hù)窗口,其中DMA主控者在DMA寫(xiě)操作啟動(dòng)之后立刻重試目標(biāo)在于所關(guān)聯(lián)DMA數(shù)據(jù)的讀類型訪問(wèn),直到如果有的話,該DMA寫(xiě)操作和所有舊的DMA寫(xiě)操作都關(guān)于LPC(例如,存儲(chǔ)器控制器)和HPC成功。通過(guò)確保在保護(hù)窗口中使所有相關(guān)讀類型操作都對(duì)DMA主控者可見(jiàn),由存儲(chǔ)器控制器維護(hù)的域指示符幫助強(qiáng)加該保護(hù)窗口。如上面所指出的,在至少有些實(shí)施方式中,這種可見(jiàn)性不是對(duì)所有目標(biāo)在于DMA數(shù)據(jù)的讀類型操作都需要的。如果來(lái)自相同源的關(guān)聯(lián)DMA寫(xiě)操作和所有更早的DMA寫(xiě)操作都已經(jīng)成功并且,如果有的話,用于所有這種DMA寫(xiě)操作的所有kill操作都接收到成功組合響應(yīng),則用于DMA數(shù)據(jù)的域指示符可以重置成指示不包括DMA主控者的范圍(例如,“本地”范圍)。
盡管本發(fā)明已經(jīng)如參考優(yōu)選實(shí)施方式所述具體地示出,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解在不背離本發(fā)明主旨與范圍的情況下可以對(duì)其進(jìn)行形式與細(xì)節(jié)的各種改變。
權(quán)利要求
1.一種在至少包括具有輸入/輸出(I/O)控制器的第一處理節(jié)點(diǎn)和包括用于存儲(chǔ)器的存儲(chǔ)器控制器的第二處理節(jié)點(diǎn)的數(shù)據(jù)處理系統(tǒng)中的數(shù)據(jù)處理方法,所述方法包括所述存儲(chǔ)器控制器按次序從所述I/O控制器接收管道化的第一和第二DMA寫(xiě)操作,其中所述第一和第二DMA寫(xiě)操作目標(biāo)分別在于第一和第二地址;響應(yīng)所述第二DMA寫(xiě)操作,所述存儲(chǔ)器控制器建立與所述第二地址關(guān)聯(lián)的域指示符的狀態(tài),以便指示包括所述第一處理節(jié)點(diǎn)的操作范圍;及響應(yīng)所述存儲(chǔ)器控制器接收到指定所述第二地址并具有不包括所述第一處理節(jié)點(diǎn)的范圍的數(shù)據(jù)訪問(wèn)請(qǐng)求,基于與所述第二地址關(guān)聯(lián)的所述域指示符的所述狀態(tài),所述存儲(chǔ)器控制器強(qiáng)制所述數(shù)據(jù)訪問(wèn)請(qǐng)求以包括所述第一處理節(jié)點(diǎn)的范圍重新發(fā)布。
2.如權(quán)利要求1所述的方法,還包括在所述第一DMA寫(xiě)操作之前所述第二DMA寫(xiě)操作成功。
3.如權(quán)利要求1所述的方法,還包括所述存儲(chǔ)器控制器從所述第二處理節(jié)點(diǎn)中的處理單元接收所述數(shù)據(jù)訪問(wèn)請(qǐng)求。
4.如權(quán)利要求1所述的方法,還包括所述I/O控制器保護(hù)與所述第二地址關(guān)聯(lián)的存儲(chǔ)器塊不被所述數(shù)據(jù)訪問(wèn)請(qǐng)求訪問(wèn),直到所述第一DMA寫(xiě)操作成功。
5.如權(quán)利要求1所述的方法,其中所述建立包括根據(jù)從所述I/O控制器接收到的狀態(tài)指示建立所述狀態(tài)。
6.如權(quán)利要求5所述的方法,還包括所述存儲(chǔ)器控制器接收帶所述第二DMA寫(xiě)操作的數(shù)據(jù)使用期的所述狀態(tài)指示。
7.如權(quán)利要求5所述的方法,其中其中所述狀態(tài)包括至少第一和第二狀態(tài)中的第一狀態(tài);所述建立包括只有當(dāng)所述狀態(tài)指示指示所述第一DMA寫(xiě)操作還未成功時(shí)才在所述第一狀態(tài)中建立所述域指示符;及所述方法還包括響應(yīng)接收到指示所述第一DMA寫(xiě)操作已經(jīng)成功的狀態(tài)指示,存儲(chǔ)器控制器在所述第二狀態(tài)中建立所述域指示符,以便指示不包括所述第一處理節(jié)點(diǎn)的操作范圍。
8.一種數(shù)據(jù)處理系統(tǒng),包括互連;第一處理節(jié)點(diǎn),耦合到所述互連并包括輸入/輸出(I/O)控制器;第二處理節(jié)點(diǎn),耦合到所述互連并包括用于存儲(chǔ)器的存儲(chǔ)器控制器,其中所述存儲(chǔ)器控制器按次序從所述I/O控制器接收管道化的第一和第二DMA寫(xiě)操作,所述第一和第二DMA寫(xiě)操作目標(biāo)分別在于所述存儲(chǔ)器中的第一和第二地址,其中響應(yīng)所述第二DMA寫(xiě)操作,所述存儲(chǔ)器控制器建立與所述第二地址關(guān)聯(lián)的域指示符的狀態(tài),以便指示包括所述第一處理節(jié)點(diǎn)的操作范圍,而且其中響應(yīng)所述存儲(chǔ)器控制器接收到指定所述第二地址并具有不包括所述第一處理節(jié)點(diǎn)的范圍的數(shù)據(jù)訪問(wèn)請(qǐng)求,基于與所述第二地址關(guān)聯(lián)的所述域指示符的所述狀態(tài),所述存儲(chǔ)器控制器強(qiáng)制所述數(shù)據(jù)訪問(wèn)請(qǐng)求以包括所述第一處理節(jié)點(diǎn)的范圍重新發(fā)布。
9.如權(quán)利要求8所述的數(shù)據(jù)處理系統(tǒng),還包括在所述第二處理節(jié)點(diǎn)中發(fā)布所述數(shù)據(jù)訪問(wèn)請(qǐng)求的處理單元。
10.如權(quán)利要求8所述的數(shù)據(jù)處理系統(tǒng),其中所述I/O控制器保護(hù)與所述第二地址關(guān)聯(lián)的存儲(chǔ)器中的存儲(chǔ)器塊不被所述數(shù)據(jù)訪問(wèn)請(qǐng)求訪問(wèn),直到所述第一DMA寫(xiě)操作成功。
11.如權(quán)利要求8所述的數(shù)據(jù)處理系統(tǒng),其中所述存儲(chǔ)器控制器根據(jù)從所述I/O控制器接收到的狀態(tài)指示建立所述狀態(tài)。
12.如權(quán)利要求11所述的數(shù)據(jù)處理系統(tǒng),其中所述存儲(chǔ)器控制器接收帶所述第二DMA寫(xiě)操作的數(shù)據(jù)使用期的所述狀態(tài)指示。
13.如權(quán)利要求11所述的數(shù)據(jù)處理系統(tǒng),其中其中所述狀態(tài)包括至少第一和第二狀態(tài)中的第一狀態(tài);所述存儲(chǔ)器控制器只有當(dāng)所述狀態(tài)指示指示所述第一DMA寫(xiě)操作還未成功時(shí)才在所述第一狀態(tài)中建立所述域指示符;及響應(yīng)接收到指示所述第一DMA寫(xiě)操作已經(jīng)成功的狀態(tài)指示,所述存儲(chǔ)器控制器在所述第二狀態(tài)中建立所述域指示符,以便指示不包括所述第一處理節(jié)點(diǎn)的操作范圍。
14.一種用于存儲(chǔ)器的存儲(chǔ)器控制器,包括用于按次序從I/O控制器接收管道化的第一和第二DMA寫(xiě)操作的裝置,所述第一和第二DMA寫(xiě)操作目標(biāo)分別在于存儲(chǔ)器中的第一和第二地址;用于響應(yīng)所述第二DMA寫(xiě)操作,建立與所述第二地址關(guān)聯(lián)的域指示符的狀態(tài)以便指示包括所述第一處理節(jié)點(diǎn)的操作范圍的裝置;及用于響應(yīng)所述存儲(chǔ)器控制器接收到指定所述第二地址并具有不包括所述第一處理節(jié)點(diǎn)的范圍的數(shù)據(jù)訪問(wèn)請(qǐng)求,基于與所述第二地址關(guān)聯(lián)的所述域指示符的所述狀態(tài),強(qiáng)制所述數(shù)據(jù)訪問(wèn)請(qǐng)求以包括所述第一處理節(jié)點(diǎn)的范圍重新發(fā)布的裝置。
15.如權(quán)利要求14所述的存儲(chǔ)器控制器,還包括用于從所述第二處理節(jié)點(diǎn)中的處理單元接收所述數(shù)據(jù)訪問(wèn)請(qǐng)求的裝置。
16.如權(quán)利要求14所述的存儲(chǔ)器控制器,其中所述存儲(chǔ)器控制器根據(jù)從I/O控制器接收到的狀態(tài)指示建立所述狀態(tài)。
17.如權(quán)利要求16所述的存儲(chǔ)器控制器,其中所述存儲(chǔ)器控制器接收帶所述第二DMA寫(xiě)操作的數(shù)據(jù)使用期的所述狀態(tài)指示。
18.如權(quán)利要求14所述的存儲(chǔ)器控制器,其中其中所述狀態(tài)包括至少第一和第二狀態(tài)中的第一狀態(tài);所述存儲(chǔ)器控制器只有當(dāng)所述狀態(tài)指示指示所述第一DMA寫(xiě)操作還未成功時(shí)才在所述第一狀態(tài)中建立所述域指示符;及響應(yīng)接收到指示所述第一DMA寫(xiě)操作已經(jīng)成功的狀態(tài)指示,所述存儲(chǔ)器控制器在所述第二狀態(tài)中建立所述域指示符,以便指示不包括所述第一處理節(jié)點(diǎn)的操作范圍。
全文摘要
一種數(shù)據(jù)處理系統(tǒng),至少包括具有輸入/輸出(I/O)控制器的第一處理節(jié)點(diǎn)和包括用于存儲(chǔ)器的存儲(chǔ)器控制器的第二處理節(jié)點(diǎn)。存儲(chǔ)器控制器按次序從I/O控制器接收管道化的第一和第二DMA寫(xiě)操作,其中第一和第二DMA寫(xiě)操作目標(biāo)分別在于第一和第二地址。響應(yīng)第二DMA寫(xiě)操作,存儲(chǔ)器控制器建立與第二地址關(guān)聯(lián)的域指示符狀態(tài),以便指示包括第一處理節(jié)點(diǎn)的操作范圍。響應(yīng)存儲(chǔ)器控制器接收到指定第二地址并具有不包括第一處理節(jié)點(diǎn)的范圍的數(shù)據(jù)訪問(wèn)請(qǐng)求,基于與第二地址關(guān)聯(lián)的域指示符的狀態(tài),存儲(chǔ)器控制器強(qiáng)制所述數(shù)據(jù)訪問(wèn)請(qǐng)求以包括第一處理節(jié)點(diǎn)的范圍重新發(fā)布。
文檔編號(hào)G06F13/28GK1932787SQ20061009461
公開(kāi)日2007年3月21日 申請(qǐng)日期2006年6月21日 優(yōu)先權(quán)日2005年9月15日
發(fā)明者小詹姆斯·S.·菲爾德斯, 蓋伊·L.·古德里, 威廉·J.·斯達(dá)克, 小喬治·W.·達(dá)里, 杰弗里·A.·斯圖切利 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
五华县| 紫云| 南汇区| 镇雄县| 齐齐哈尔市| 康平县| 临泉县| 镇原县| 舟山市| 河津市| 磐安县| 福州市| 英山县| 陇川县| 阿图什市| 包头市| 二手房| 宁安市| 鹿泉市| 台南市| 苏尼特左旗| 万安县| 时尚| 中牟县| 卫辉市| 苗栗市| 秀山| 利辛县| 湖南省| 册亨县| 香港| 宝山区| 侯马市| 鹿泉市| 武威市| 白朗县| 闻喜县| 大石桥市| 林周县| 中阳县| 南部县|