亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

持久存儲(chǔ)器中數(shù)據(jù)的觀察的制作方法_4

文檔序號(hào):9620868閱讀:來源:國知局
拷 貝失效。另外,響應(yīng)于檢測到本地拷貝還未被持久存儲(chǔ)器130接收到以進(jìn)行存儲(chǔ),高速緩存 控制器可以只對(duì)生產(chǎn)者110中發(fā)起用于記錄A的存儲(chǔ)指令的線程允許對(duì)給定高速緩存中記 錄A的本地拷貝的寫訪問。
[0077] 序列3-5與前面對(duì)圖3所描述的相同。如前所述,在一些例子中,在生成中斷之 前,生產(chǎn)者110可以已經(jīng)向持久存儲(chǔ)器130發(fā)送了對(duì)IN指針122的存儲(chǔ)指令。但是,后續(xù) 的持久存儲(chǔ)器屏障指令可能還未發(fā)送。在其它例子中,用于IN指針122的、到持久存儲(chǔ)器 130的存儲(chǔ)指令可以在中斷生成之前還未被發(fā)送。在這任意一種情況下,中斷延遲使IN指 針122的本地拷貝持久化的過程。在其它情況下,中斷可以不發(fā)生,但是在使IN指針122 的本地更新后的拷貝持久化的過程中仍然可以存在延遲。
[0078] 此外,如果用于IN指針122的存儲(chǔ)指令被發(fā)送到持久存儲(chǔ)器130,則用于給定高速 緩存的高速緩存控制器可以使該給定高速緩存之下的任何高速緩存級(jí)中的IN指針122的 任何拷貝失效。此外,對(duì)應(yīng)的高速緩存控制器可以響應(yīng)于檢測到本地拷貝還未存儲(chǔ)在持久 存儲(chǔ)器130中而阻止對(duì)給定高速緩存中IN指針122的本地拷貝的任何讀訪問。高速緩存 控制器可以阻止到指示本地拷貝既臟又可被讀訪問的高速緩存相干狀態(tài)的過渡。更確切地 說,高速緩存控制器可以將關(guān)聯(lián)的相干狀態(tài)過渡到指示存儲(chǔ)IN指針122的高速緩存行既臟 又無法進(jìn)行讀訪問的狀態(tài)。這種相干狀態(tài)的例子是持久臟(PD)狀態(tài)。另外,響應(yīng)于檢測到 本地拷貝還未被發(fā)送到持久存儲(chǔ)器130進(jìn)行存儲(chǔ),高速緩存控制器可以只對(duì)生產(chǎn)者110中 發(fā)起對(duì)持久存儲(chǔ)器130的存儲(chǔ)指令的線程允許對(duì)給定高速緩存中IN指針122的本地拷貝 的寫訪問。
[0079] 在序列6中,消費(fèi)者112無法從生產(chǎn)者110加載(讀?。㊣N指針122的更新拷貝。 來自消費(fèi)者112的讀請求可以在與用于生產(chǎn)者110的給定高速緩存關(guān)聯(lián)的高速緩存控制器 中排隊(duì)。該讀請求可以保持在高速緩存控制器中排隊(duì),一直到高速緩存控制器接收到IN指 針122的本地拷貝存儲(chǔ)在持久存儲(chǔ)器130中的確認(rèn)。在序列7中,生產(chǎn)者110完成所發(fā)生 的中斷的處理。
[0080] 在序列8中,生產(chǎn)者110開始執(zhí)行,以便使IN指針122的本地更新拷貝持久化。在 一些例子中,生產(chǎn)者110可以執(zhí)行將對(duì)應(yīng)于IN指針122的修改數(shù)據(jù)發(fā)到持久存儲(chǔ)器130用 于存儲(chǔ)的存儲(chǔ)(寫)指令。高速緩存控制器、存儲(chǔ)器控制器或者這兩者可以包括根據(jù)存儲(chǔ) 指令的地址確定對(duì)應(yīng)于IN指針122的修改數(shù)據(jù)是要存儲(chǔ)在DRAM中還是持久存儲(chǔ)器130中 的邏輯。此外,后續(xù)的持久存儲(chǔ)器屏障指令可以被發(fā)送到持久存儲(chǔ)器130。在其它例子中, 生產(chǎn)者110可能已經(jīng)向持久存儲(chǔ)器130發(fā)送了存儲(chǔ)指令,該指令由于中斷處理而在一個(gè)或 多個(gè)隊(duì)列中被延遲。生產(chǎn)者110現(xiàn)在可以發(fā)送持久存儲(chǔ)器屏障指令,以確保到持久存儲(chǔ)器 130的存儲(chǔ)指令在完成該存儲(chǔ)指令之后的任何指令之前完成。
[0081] 在序列9中,電源故障、重新啟動(dòng)或系統(tǒng)復(fù)位在IN指針在持久存儲(chǔ)器130中被持 久化之前發(fā)生。存儲(chǔ)在易失性存儲(chǔ)器中的數(shù)據(jù)丟失。存儲(chǔ)在非易失性存儲(chǔ)器,諸如持久存 儲(chǔ)器130,中的數(shù)據(jù)保持被存儲(chǔ)。在序列10中,電力可以被恢復(fù)。作為替代,重新啟動(dòng)或復(fù) 位完成。由于在生產(chǎn)者110中對(duì)IN指針122的更新本地拷貝的讀訪問之前被阻塞,因此持 久存儲(chǔ)器130仍然存儲(chǔ)一致的數(shù)據(jù)。
[0082] 在序列11中,消費(fèi)112從持久存儲(chǔ)器130中讀取用于IN指針122和OUT指針124 當(dāng)中每一個(gè)的值。所讀取的值包括用于IN指針122和OUT指針124的初始值。類似地,生 產(chǎn)者110從持久存儲(chǔ)器130讀取用于IN指針122和OUT指針124當(dāng)中每一個(gè)的所存儲(chǔ)的 初始值。
[0083] 生產(chǎn)者110和消費(fèi)者112當(dāng)中每一個(gè)可以重新執(zhí)行對(duì)應(yīng)于程序代碼中與用于IN 指針122和OUT指針124的初始值關(guān)聯(lián)的位置的重新執(zhí)行指令。例如,在序列12中,生產(chǎn) 者110可以重新執(zhí)行包括更新和存儲(chǔ)隊(duì)列120的條目0中的記錄A的代碼,如先前所執(zhí)行 的。再次,為記錄A產(chǎn)生的數(shù)據(jù)可以具有到指示存儲(chǔ)所產(chǎn)生數(shù)據(jù)的高速緩存行既臟又無法 進(jìn)行讀訪問的狀態(tài)的關(guān)聯(lián)相干狀態(tài)過渡,直到接收到記錄A被存儲(chǔ)在持久存儲(chǔ)器130中的 確認(rèn)。這種相干狀態(tài)的例子是持久臟(PD)狀態(tài)。在序列13中,記錄A可以被存儲(chǔ)在持久 存儲(chǔ)器130中。完成的持久存儲(chǔ)操作的確認(rèn)可以被發(fā)送到生產(chǎn)者110。作為替代,確認(rèn)可以 被發(fā)送到與生產(chǎn)者110關(guān)聯(lián)的高速緩存控制器或存儲(chǔ)器控制器。在序列14中,生產(chǎn)者110 可以再次更新IN指針122的本地拷貝,如先前所執(zhí)行的。例如,IN指針122的本地拷貝可 以具有值〇并且被遞增至值1。
[0084] 在序列15中,生產(chǎn)者110開始執(zhí)行,以便使IN指針122的本地更新拷貝持久化。 例如,生產(chǎn)者110可以執(zhí)行到持久存儲(chǔ)器的持久存儲(chǔ)指令。用于IN指針122的修改數(shù)據(jù)可 以具有到指示存儲(chǔ)該修改數(shù)據(jù)的高速緩存行既臟又無法進(jìn)行讀訪問的狀態(tài)的關(guān)聯(lián)相干狀 態(tài)過渡。這種相干狀態(tài)的例子是持久臟(PD)狀態(tài)。
[0085] 在序列16中,IN指針122的更新拷貝可以被存儲(chǔ)在持久存儲(chǔ)器130中。已完成 的持久存儲(chǔ)的確認(rèn)可以被發(fā)送到生產(chǎn)者110。作為替代,確認(rèn)可以被發(fā)送到與生產(chǎn)者110關(guān) 聯(lián)的高速緩存控制器或存儲(chǔ)器控制器。接收到的確認(rèn)可能導(dǎo)致高速緩存控制器再次允許對(duì) 與生產(chǎn)者110關(guān)聯(lián)的給定高速緩存中IN指針122的本地拷貝的讀和寫訪問。例如,高速緩 存控制器可以將用于保持IN指針122的本地拷貝的高速緩存行的對(duì)應(yīng)高速緩存相干狀態(tài) 過渡到獨(dú)占(E)干凈狀態(tài)。
[0086] 在序列17中,消費(fèi)者112從生產(chǎn)者110讀取IN指針122的本地拷貝?,F(xiàn)在,消費(fèi) 者112具有值為1的IN指針122的本地拷貝,這是與存儲(chǔ)在持久存儲(chǔ)器130中的IN指針 相同的值。在序列18中,消費(fèi)者112讀取并處理記錄A的拷貝。在序列19中,消費(fèi)者112 可以更新OUT指針124的本地拷貝。例如,OUT指針124的本地拷貝可以具有0值并且被 遞增至值1。
[0087] 在序列20中,消費(fèi)者開始執(zhí)行,以便使OUT指針124的更新本地拷貝持久化。例 如,消費(fèi)者112可以執(zhí)行到持久存儲(chǔ)器130的持久存儲(chǔ)指令。在一些實(shí)施例中,OUT指針124 的本地拷貝存儲(chǔ)在與消費(fèi)者124關(guān)聯(lián)的給定高速緩存中。對(duì)應(yīng)的高速緩存控制器可以響應(yīng) 于檢測到還未接收到本地拷貝存儲(chǔ)在持久存儲(chǔ)器130中的確認(rèn)而阻止對(duì)該給定高速緩存 中本地拷貝的任何讀訪問。高速緩存控制器可以阻止過渡到指示本地拷貝既臟又可被讀訪 問的高速緩存相干狀態(tài)。
[0088] 此外,高速緩存控制器可以使該給定高速緩存之下的任何高速緩存級(jí)中的OUT指 針124的任何拷貝失效。另外,響應(yīng)于檢測到本地拷貝還未被發(fā)送到持久存儲(chǔ)器130進(jìn)行 存儲(chǔ),高速緩存控制器可以只對(duì)消費(fèi)者112中發(fā)起持久存儲(chǔ)的指令的線程允許對(duì)該給定高 速緩存中OUT指針124的本地拷貝的寫訪問。
[0089] 在序列21中,OUT指針124的更新拷貝可以被存儲(chǔ)在持久存儲(chǔ)器130中。已完成 的持久存儲(chǔ)的確認(rèn)可以被發(fā)送到消費(fèi)者112。作為替代,確認(rèn)可以被發(fā)送到與消費(fèi)者112關(guān) 聯(lián)的高速緩存控制器或存儲(chǔ)器控制器。接收到的確認(rèn)可能導(dǎo)致高速緩存控制器再次允許對(duì) 與消費(fèi)者112關(guān)聯(lián)的給定高速緩存中OUT指針124的本地拷貝的讀和寫訪問。例如,高速 緩存控制器可以將用于保持OUT指針124的本地拷貝的高速緩存行的對(duì)應(yīng)高速緩存相干狀 態(tài)過渡到獨(dú)占(E)狀態(tài)。
[0090] 現(xiàn)在參考圖5,示出了用于可靠地使用持久數(shù)據(jù)的方法300的一種實(shí)施例的一般 化流程圖。為了討論的目的,這個(gè)實(shí)施例中的步驟按順序示出。但是,一些步驟可以以與所 示不同的次序發(fā)生,一些步驟可以并發(fā)執(zhí)行,一些步驟可以與其它步驟組合,并且一些步驟 可以在另一種實(shí)施例中不存在。
[0091] 在方框302中,程序指令被處理。程序指令可以對(duì)應(yīng)于一個(gè)或多個(gè)軟件應(yīng)用。在 處理期間,系統(tǒng)內(nèi)的給定處理器可以訪問位于系統(tǒng)中管芯上高速緩存和管芯外存儲(chǔ)器中的 數(shù)據(jù)。一般而言,程序指令可以被取出、解碼、執(zhí)行并提交。一個(gè)或多個(gè)處理器可以在計(jì)算 系統(tǒng)中被用來處理程序指令。每個(gè)處理器可以執(zhí)行多個(gè)線程。這一個(gè)或多個(gè)處理器當(dāng)中的 每個(gè)線程可以是生成對(duì)持久數(shù)據(jù)的讀和寫訪問請求的請求者。
[0092] 在方框304中,第一請求者更新變量A的本地拷貝。變量A的更新本地拷貝可以 被存儲(chǔ)在與第一請求者關(guān)聯(lián)的給定高速緩存的高速緩存行中。在方框306中,第一請求者 可以請求使變量A持久化。例如,第一請求者可以執(zhí)行向持久存儲(chǔ)器發(fā)送對(duì)應(yīng)于變量A的 修改數(shù)據(jù)的存儲(chǔ)(寫)指令。高速緩存控制器、存儲(chǔ)器控制器或者這兩者可以包括為DRAM 和持久存儲(chǔ)器130當(dāng)中每一個(gè)確定兩個(gè)地址空間中的相應(yīng)地址空間的邏輯。因此已知被給 定存儲(chǔ)指令作為目標(biāo)的是哪個(gè)存儲(chǔ)器,DRAM還是持久存儲(chǔ)器。
[0093] 在方框308中,可以對(duì)第二請求者阻塞變量A的訪問。變量A的本地拷貝存儲(chǔ)在 與第一請求者關(guān)聯(lián)的給定高速緩存中。對(duì)應(yīng)的高速緩存控制器可以響應(yīng)于檢測到本地拷貝 還未被存儲(chǔ)在持久存儲(chǔ)器中而阻止對(duì)該給定高速緩存中變量A的本地拷貝的任何讀訪問。 例如,來自持久存儲(chǔ)器的確認(rèn)可能尚未被接收到。高速緩存控制器可以阻止過渡到指示本 地拷貝既臟又可被讀訪問的高速緩存相干狀態(tài)。更確切地說,高速緩存控制器可以將用于 變量A的本地拷貝的高速緩存相干狀態(tài)過渡到指示存儲(chǔ)修改數(shù)據(jù)的高速緩存行既臟又無 法進(jìn)行讀訪問的狀態(tài)。這種相干狀態(tài)的例子是持久臟(PD)狀態(tài)。高速緩存控制器可以只 對(duì)最初修改變量A的線程允許對(duì)該給定高速緩存中變量A的本地拷貝的寫訪問。
[0094] 如果第一請求者還未接收到變量A的持久存儲(chǔ)的確認(rèn)(條件方框310),則在方框 312中,不依賴于變量A的其它指令被處理。第一請求者和其它請求者都處理各自的獨(dú)立指 令,但是提交管線階段可以被停頓,以維持按順序退役(retirement)。
[0095] 給定高速緩存中變量A的本地拷貝可以仍然具有指示變量A臟但是不能進(jìn)行讀 訪問的關(guān)聯(lián)的相干狀態(tài)。但是,該相干狀態(tài)可以只對(duì)發(fā)起到持久存儲(chǔ)器的存儲(chǔ)指令的第一 請求者允許對(duì)給定高速緩存中變量A的寫訪問。例如,在一個(gè)或多個(gè)處理器中的第一處理 器中執(zhí)行的多個(gè)線程中的給定線程可以已經(jīng)發(fā)起對(duì)變量A的到持久存儲(chǔ)器的存儲(chǔ)指令。因 此,該給定線程具有對(duì)變量A的寫訪問,但是沒有其它線程或處理器具有寫訪問。對(duì)于給定 線程允許對(duì)給定高速緩存中變量A的寫訪問可以減少保持變量A的高速緩存行對(duì)持久存儲(chǔ) 器的寫訪問的總數(shù)。例如,高速緩存行可以存儲(chǔ)64字節(jié)。從給定線程到持久存儲(chǔ)器的原始 存儲(chǔ)指令和隨后的存儲(chǔ)指令可以修改4字節(jié)、8字節(jié)或者小于總共64字節(jié)的某個(gè)其它量。 從給定線程到持久存儲(chǔ)器的原始存儲(chǔ)指令和隨后的存儲(chǔ)指令可以修改64字節(jié)高速緩存行 中不重疊的數(shù)據(jù)。
[0096] 如果第一請求者已經(jīng)接收到變量A的持久存儲(chǔ)的確認(rèn)(條件方框310),或者保持 變量A的高速緩存行的持久存儲(chǔ)的確認(rèn),則在方框314中,給定高速緩存中變量A的本地拷 貝再次讓任何請求者可用,該本地拷貝現(xiàn)在匹配變量A的持久存儲(chǔ)值。例如,與變量A關(guān)聯(lián) 的相干狀態(tài)可以被過渡到獨(dú)占(E)相干狀態(tài)。
[0097] 現(xiàn)在參考圖6,示出了示例性節(jié)點(diǎn)400的一種實(shí)施例的一般化框圖。如圖示的實(shí)施 例中所示,節(jié)點(diǎn)400包括至少處理器核心402a-402d和持久存儲(chǔ)器440。節(jié)點(diǎn)400可以在 處理器核心402a-402d上執(zhí)行多個(gè)線程,其中線程可以執(zhí)行到持久存儲(chǔ)器的存儲(chǔ)指令,以 便在持久存儲(chǔ)器440中存儲(chǔ)數(shù)據(jù)。微處理器400還可以包括存儲(chǔ)器控制器410、接口邏輯 414和對(duì)應(yīng)于處理器核心402a-402d的一個(gè)或多個(gè)高速緩存存儲(chǔ)器子系統(tǒng)404a-
當(dāng)前第4頁1 2 3 4 5 6 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1