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

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

文檔序號(hào):9620868閱讀:來(lái)源:國(guó)知局
指令之后在指令的任何提交被允許之前執(zhí)行提交的確 認(rèn)。在各種實(shí)施例中,軟件編程器可以包括在對(duì)循環(huán)緩沖區(qū)中的記錄更新之后并且在對(duì)指 針的對(duì)應(yīng)更新之前在計(jì)算機(jī)程序中包括持久存儲(chǔ)器屏障指令。類(lèi)似地,軟件編程器可以包 括在對(duì)指針的更新之后并且在對(duì)循環(huán)緩沖區(qū)中的記錄的后續(xù)更新之前在計(jì)算機(jī)程序中包 括持久存儲(chǔ)器屏障指令。
[0034] 在序列2中,生產(chǎn)者110可以執(zhí)行使記錄A持久化的強(qiáng)制動(dòng)作(force),諸如執(zhí)行 持久存儲(chǔ)器屏障指令。在圖示的例子中,記錄A示為在序列2中被存儲(chǔ)在持久存儲(chǔ)器130 中。再次,用來(lái)使記錄A持久化的幾個(gè)硬件單元和步驟隨后描述。為便于說(shuō)明,這些單元和 步驟在這里沒(méi)有示出或描述。
[0035] 在序列3中,生產(chǎn)者110可以更新IN指針122的本地拷貝。在一些實(shí)施例中,IN 指針122的本地拷貝的更新可以響應(yīng)于接收到記錄A存儲(chǔ)在持久存儲(chǔ)器130的確認(rèn)而發(fā) 生。在一些實(shí)施例中,IN指針122的本地拷貝的更新可以是遞增操作。例如,IN指針122 的本地拷貝可以具有0值并且被遞增至1。算術(shù)運(yùn)算可以被用來(lái)遞增IN指針122的拷貝并 且更新處理器中的體系架構(gòu)寄存器。IN指針122的更新(遞增)拷貝可以利用存儲(chǔ)(寫(xiě)) 指令被發(fā)送到本地高速緩存。但是,IN指針122的更新(遞增)拷貝可能未被發(fā)送到持久 存儲(chǔ)器130,更不用說(shuō)存儲(chǔ)在持久存儲(chǔ)器130中。
[0036] 在序列4中,生產(chǎn)者110可以處理中斷。中斷處理可能會(huì)延遲使IN指針122的本 地更新拷貝持久化的處理。中斷延遲使IN指針122的本地拷貝持久化的處理。在其它情 況下,中斷可能不發(fā)生,但在使IN指針122的本地更新拷貝持久化的過(guò)程中仍然會(huì)存在延 遲。延遲會(huì)導(dǎo)致IN指針122的本地更新拷貝不能在消費(fèi)者112中的OUT指針124被持久 化之前被持久化。
[0037] 在序列5中,消費(fèi)112從生產(chǎn)者110讀取IN指針122的本地拷貝或高速緩存拷貝。 現(xiàn)在,在更新后的IN指針122被存儲(chǔ)在持久性存儲(chǔ)器130之前,消費(fèi)者112已經(jīng)具有值為 1的IN指針122的本地(高速緩存)拷貝。持久存儲(chǔ)器130仍包含用于IN指針122的初 始值0。
[0038] 在序列6中,消費(fèi)者112可以從生產(chǎn)者110或持久存儲(chǔ)器130讀取更新后的記錄 A。消費(fèi)者112存儲(chǔ)記錄A的本地拷貝或高速緩存拷貝。消費(fèi)者112處理記錄A的本地拷 貝或高速緩存拷貝。在序列7中,消費(fèi)者112可以更新OUT指針124的本地拷貝。在一些 實(shí)施例中,OUT指針124的本地拷貝的更新可以是遞增操作。例如,OUT指針124的本地拷 貝可以具有〇值并且被遞增至1。算術(shù)運(yùn)算可以被用來(lái)遞增OUT指針124的拷貝并且更新 處理器中的體系架構(gòu)寄存器。
[0039] 在序列8中,消費(fèi)者開(kāi)始執(zhí)行,以便使OUT指針124的更新后的本地拷貝持久化。 消費(fèi)者112可以執(zhí)行將對(duì)應(yīng)于OUT指針124的修改數(shù)據(jù)發(fā)送到持久存儲(chǔ)器130用于存儲(chǔ)的 存儲(chǔ)(寫(xiě))指令。OUT指針124的更新(遞增)拷貝可以由于存儲(chǔ)(寫(xiě))指令而被發(fā)送到 本地高速緩存。高速緩存控制器、存儲(chǔ)器控制器或者這兩者可以包括從存儲(chǔ)指令的地址確 定對(duì)應(yīng)于OUT指針124的修改數(shù)據(jù)是要被存儲(chǔ)在DRAM還是持久存儲(chǔ)器130的邏輯。生產(chǎn) 者可以執(zhí)行使OUT指針124持久化的強(qiáng)制動(dòng)作,諸如執(zhí)行持久存儲(chǔ)器屏障指令。在圖示的 例子中,OUT指針124被示為在序列8中存儲(chǔ)在持久存儲(chǔ)器130中。再次,用來(lái)使OUT指針 124持久化的幾個(gè)硬件單元和步驟隨后描述。為便于說(shuō)明,這些單元和步驟在這里沒(méi)有示出 或描述。
[0040] 對(duì)OUT指針124的完成的持久存儲(chǔ)操作的確認(rèn)可以被發(fā)送到消費(fèi)者112。作為替 代,確認(rèn)可以被發(fā)送到與消費(fèi)者112關(guān)聯(lián)的高速緩存控制器或存儲(chǔ)器控制器。OUT指針124 的更新值在IN指針122的更新值被存儲(chǔ)在持久存儲(chǔ)器130之前被存儲(chǔ)在持久存儲(chǔ)器130 中。生產(chǎn)者110仍然可以執(zhí)行中斷處理或者某個(gè)其它延遲仍然可以發(fā)生。因此,競(jìng)爭(zhēng)狀況 發(fā)生并且OUT指針124在持久存儲(chǔ)器130中的更新在IN指針122在持久存儲(chǔ)器130中的 更新之前完成?,F(xiàn)在,持久存儲(chǔ)器130包含不一致的數(shù)據(jù)。持久存儲(chǔ)器130包含用于IN指 針122的初始值0和用于OUT指針124的更新值1。根據(jù)存儲(chǔ)在持久存儲(chǔ)器130中的值,控 制邏輯會(huì)錯(cuò)誤地確定隊(duì)列120已滿(mǎn)。
[0041] 在序列9中,電源故障、重新啟動(dòng)或系統(tǒng)復(fù)位發(fā)生。存儲(chǔ)在易失性存儲(chǔ)器中的數(shù) 據(jù)丟失。再次,易失性存儲(chǔ)器的類(lèi)型可以包括一級(jí)或多級(jí)高速緩存和動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器 (DRAM)。存儲(chǔ)在非易失性存儲(chǔ)器,諸如持久存儲(chǔ)器130,中的數(shù)據(jù)保持被存儲(chǔ)。在序列10 中,電力可以被恢復(fù)。作為替代,重新啟動(dòng)或復(fù)位完成。在序列11中,消費(fèi)者112為IN指針 122和OUT指針124當(dāng)中每一個(gè)從持久存儲(chǔ)器130讀取值?;诎诔志么鎯?chǔ)器130中 的不一致的值,用于消費(fèi)者112的控制邏輯會(huì)錯(cuò)誤地確定隊(duì)列120滿(mǎn)。類(lèi)似地,生產(chǎn)者110 可以讀取包含在持久存儲(chǔ)器130中的不一致的數(shù)據(jù)并且錯(cuò)誤地確定隊(duì)列120滿(mǎn)。
[0042] 在電力恢復(fù)或重新引導(dǎo)系統(tǒng)之后,隊(duì)列120不被視為空,因?yàn)樗鼞?yīng)當(dāng)基于用于IN 指針122和OUT指針124的持久存儲(chǔ)值。更確切地說(shuō),如上所述,隊(duì)列120會(huì)被錯(cuò)誤地認(rèn)為 滿(mǎn)。當(dāng)隊(duì)列120存儲(chǔ)固定尺寸的記錄時(shí),隊(duì)列120包括當(dāng)系統(tǒng)完成重新啟動(dòng)或電力恢復(fù)時(shí) 已經(jīng)被處理過(guò)的舊記錄。當(dāng)隊(duì)列120存儲(chǔ)可變尺寸的記錄時(shí),OUT指針124會(huì)存儲(chǔ)指向舊 記錄中間的值并且值可能無(wú)效。
[0043] 當(dāng)隊(duì)列120真正滿(mǎn)時(shí),類(lèi)似的不一致存儲(chǔ)數(shù)據(jù)問(wèn)題會(huì)發(fā)生。用于IN指針122的更 新值可以被存儲(chǔ)在持久存儲(chǔ)器中用于OUT指針124的更新值之前,其中OUT指針124被用 來(lái)計(jì)算用于IN指針122的更新值??刂七壿嬰S后會(huì)錯(cuò)誤地確定隊(duì)列120為空。
[0044] 現(xiàn)在轉(zhuǎn)向圖2,示出了示出訪(fǎng)問(wèn)持久存儲(chǔ)器的另一種實(shí)施例的一般化框圖。前面 所述的電路和邏輯完全相同地進(jìn)行編號(hào)。示出了編號(hào)為1至14的一系列序列。編號(hào)的序 列1至14示出了當(dāng),盡管持久存儲(chǔ)器中存儲(chǔ)數(shù)據(jù)存在未計(jì)劃的延遲,一致的數(shù)據(jù)存儲(chǔ)仍然 在持久存儲(chǔ)器中維持的狀況。
[0045] 序列1至4與前面對(duì)圖1所描述的相同。但是,在序列1中,為記錄A產(chǎn)生的數(shù)據(jù) 可以具有到指示存儲(chǔ)所產(chǎn)生的數(shù)據(jù)的高速緩存行既臟又無(wú)法進(jìn)行讀訪(fǎng)問(wèn)的狀態(tài)的關(guān)聯(lián)的 相干狀態(tài)過(guò)渡。這種相干狀態(tài)的例子是持久臟(PD)狀態(tài)。在一些實(shí)施例中,記錄A的本地 拷貝存儲(chǔ)在與生產(chǎn)者110關(guān)聯(lián)的給定高速緩存中。對(duì)應(yīng)的高速緩存控制器可以響應(yīng)于檢測(cè) 到本地拷貝還沒(méi)有被存儲(chǔ)在持久存儲(chǔ)器130中而阻止對(duì)該給定高速緩存中記錄A的本地拷 貝的任何讀訪(fǎng)問(wèn)。再次,高速緩存控制器可以阻止到指示本地拷貝既臟又可被讀訪(fǎng)問(wèn)的高 速緩存相干狀態(tài)的過(guò)渡。
[0046] 用于對(duì)生產(chǎn)者110的給定高速緩存的高速緩存控制器可以使該給定高速緩存以 下的任何高速緩存級(jí)中的記錄A的任何拷貝失效。換句話(huà)說(shuō),用于對(duì)生產(chǎn)者110的給定高 速緩存的高速緩存控制器可以使生產(chǎn)者110與給定高速緩存級(jí)之間的任何高速緩存級(jí)中 的記錄A的任何拷貝失效。另外,響應(yīng)于檢測(cè)到本地拷貝還未被持久存儲(chǔ)器130接收進(jìn)行 存儲(chǔ),高速緩存控制器可以只對(duì)生產(chǎn)者110中發(fā)起對(duì)記錄A的存儲(chǔ)指令的線(xiàn)程允許對(duì)該給 定高速緩存中記錄A的本地拷貝的寫(xiě)訪(fǎng)問(wèn)。
[0047] 序列3-4與前面對(duì)圖1所描述的相同。如前所述,在一些實(shí)例中,在生成中斷之 前,生產(chǎn)者110可以已經(jīng)向持久存儲(chǔ)器130發(fā)送了對(duì)IN指針122的存儲(chǔ)指令。但是,后續(xù) 的持久存儲(chǔ)器屏障指令可能還沒(méi)有發(fā)送。在其它例子中,用于IN指針122的、到持久存儲(chǔ) 器130的存儲(chǔ)指令可以在中斷生成之前還未被發(fā)送。在這任意一種情況下,中斷延遲使IN 指針122的本地拷貝持久化的過(guò)程。在其它情況下,中斷可以不發(fā)生,但是在使IN指針122 的本地更新拷貝持久化的過(guò)程中仍然可以存在延遲。
[0048] 此外,如果用于IN指針122的存儲(chǔ)指令被發(fā)送到持久存儲(chǔ)器130,則用于給定高速 緩存的高速緩存控制器可以使該給定高速緩存之下的任何高速緩存級(jí)中的IN指針122的 任何拷貝失效。換句話(huà)說(shuō),用于給定高速緩存的高速緩存控制器可以使生產(chǎn)者110與給定 高速緩存級(jí)之間的任何高速緩存級(jí)中的IN指針122的任何拷貝失效。此外,對(duì)應(yīng)的高速緩 存控制器可以響應(yīng)于檢測(cè)到本地拷貝還未存儲(chǔ)在持久存儲(chǔ)器130中而阻止對(duì)給定高速緩 存中IN指針122的本地拷貝的任何讀訪(fǎng)問(wèn)。高速緩存控制器可以阻止到指示本地拷貝既 臟又可被讀訪(fǎng)問(wèn)的高速緩存相干狀態(tài)的過(guò)渡。更確切地說(shuō),高速緩存控制器可以將關(guān)聯(lián)的 相干狀態(tài)過(guò)渡到指示存儲(chǔ)IN指針122的高速緩存行既臟又無(wú)法進(jìn)行讀訪(fǎng)問(wèn)的狀態(tài)。這種 相干狀態(tài)的例子是持久臟(PD)狀態(tài)。另外,響應(yīng)于檢測(cè)到本地拷貝還未被發(fā)送到持久存儲(chǔ) 器130進(jìn)行存儲(chǔ),高速緩存控制器可以只對(duì)生產(chǎn)者110中發(fā)起對(duì)持久存儲(chǔ)器130的存儲(chǔ)指 令的線(xiàn)程允許對(duì)給定高速緩存中IN指針122的本地拷貝的寫(xiě)訪(fǎng)問(wèn)。
[0049] 在序列5中,消費(fèi)者112無(wú)法從生產(chǎn)者110加載(讀?。㊣N指針122的更新拷貝。 從消費(fèi)者112接收到的讀請(qǐng)求可以在與用于生產(chǎn)者110的給定高速緩存關(guān)聯(lián)的高速緩存控 制器中排隊(duì)。該讀請(qǐng)求可以保持在高速緩存控制器中排隊(duì),一直到高速緩存控制器接收到 IN指針122的本地拷貝存儲(chǔ)在持久存儲(chǔ)器130中的確認(rèn)。
[0050] 在序列6中,電源故障、重新啟動(dòng)或系統(tǒng)復(fù)位在IN指針在持久存儲(chǔ)器中被持久化 之前發(fā)生。存儲(chǔ)在易失性存儲(chǔ)器的數(shù)據(jù)丟失。存儲(chǔ)在非易失性存儲(chǔ)器,諸如持久存儲(chǔ)器130, 中的數(shù)據(jù)保持被存儲(chǔ)。在序列7中,電力可以被恢復(fù)。作為替代,重新啟動(dòng)或復(fù)位完成。由 于在生產(chǎn)者110中對(duì)IN指針122的更新后的本地拷貝的讀訪(fǎng)問(wèn)之前被阻塞,因此持久存儲(chǔ) 器130仍然存儲(chǔ)一致的數(shù)據(jù)。
[0051] 在序列8中,消費(fèi)112從持久存儲(chǔ)器130中讀取用于IN指針122和OUT指針124 當(dāng)中每一個(gè)的值。所讀取的值包括用于IN指針122和OUT指針124的初始值。類(lèi)似地,生 產(chǎn)者110從持久存儲(chǔ)器130讀取用于IN指針122和OUT指針124當(dāng)中每一個(gè)的所存儲(chǔ)的 初始值。
[0052] 生產(chǎn)者110和消費(fèi)者112當(dāng)中每一個(gè)可以重新執(zhí)行對(duì)應(yīng)于程序代碼中與用于IN 指針122和OUT指針124的初始值關(guān)聯(lián)的位置的重新執(zhí)行指令。例如,在序列9中,生產(chǎn)者 110可以重新執(zhí)行包括更新和存儲(chǔ)隊(duì)列120的條目0中的記錄A的代碼,如先前所執(zhí)行的。
[0053] 再次,為記錄A產(chǎn)生的數(shù)據(jù)可以具有到指示存儲(chǔ)所產(chǎn)生數(shù)據(jù)的高速緩存行既臟又 無(wú)法進(jìn)行讀訪(fǎng)問(wèn)的狀態(tài)的關(guān)聯(lián)的相干狀態(tài)過(guò)渡,直到接收到記錄A被存儲(chǔ)在持久存儲(chǔ)器 130中的確認(rèn)。這種相干狀態(tài)的例子是持久臟(PD)狀態(tài)。在序列9中,記錄A可以被存儲(chǔ) 在持久存儲(chǔ)器130中。完成的持久存儲(chǔ)操作的確認(rèn)可以被發(fā)送到生產(chǎn)者110。作為替代,確 認(rèn)可以被發(fā)送到與生產(chǎn)者110關(guān)聯(lián)的高速緩存控制器或存儲(chǔ)器控制器。生產(chǎn)者110可以再 次更新IN指針122的本地拷貝,如先前所執(zhí)行的。例如,IN指針122的本地拷貝可以具有 值〇并且被遞增至值1。
[0054] 在序列10中,生產(chǎn)者110開(kāi)始執(zhí)行,以便使IN指針122的本地更新拷貝持久化。 例如,生產(chǎn)者110可以執(zhí)行到持久存儲(chǔ)器的存儲(chǔ)指令。用于IN指針122的修改數(shù)據(jù)可以具 有到指示存儲(chǔ)該修改數(shù)據(jù)的高速緩存行既臟又無(wú)法進(jìn)行讀訪(fǎng)問(wèn)的狀態(tài)的關(guān)聯(lián)相干狀態(tài)過(guò) 渡。這種相干狀態(tài)的例子是持久臟(PD)狀態(tài)。
[0055] 繼續(xù)序列10,生產(chǎn)者還可以執(zhí)行使記錄A持久化的強(qiáng)制動(dòng)作,諸如執(zhí)行持久存儲(chǔ) 器屏障指令。在圖示的例子中,記錄A被示為在同一序列10中而不是在后續(xù)序列中存儲(chǔ)在 持久存儲(chǔ)器130中。再次,用來(lái)使記錄A持久化的幾個(gè)硬件單元
當(dāng)前第2頁(yè)1 2 3 4 5 6 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1