背景技術(shù):
::諸如動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器設(shè)備之類(lèi)的易失性存儲(chǔ)器設(shè)備由于其快速訪問(wèn)時(shí)間而可以用于形成計(jì)算機(jī)系統(tǒng)的工作存儲(chǔ)器。計(jì)算機(jī)系統(tǒng)可以將數(shù)據(jù)存儲(chǔ)在具有較慢訪問(wèn)時(shí)間的非易失性大容量存儲(chǔ)設(shè)備中,非易失性大容量存儲(chǔ)設(shè)備諸如基于磁性介質(zhì)的存儲(chǔ)設(shè)備或基于光學(xué)介質(zhì)的存儲(chǔ)設(shè)備。一些計(jì)算機(jī)系統(tǒng)還可以實(shí)現(xiàn)提供快速訪問(wèn)時(shí)間并在計(jì)算機(jī)系統(tǒng)斷電時(shí)保存數(shù)據(jù)的非易失性存儲(chǔ)器設(shè)備。這樣的非易失性存儲(chǔ)器設(shè)備可以用于形成計(jì)算機(jī)系統(tǒng)的工作持久存儲(chǔ)器。附圖說(shuō)明下面將參考以下附圖描述各種示例。圖1是示出具有用于版本化和合并持久存儲(chǔ)器中的數(shù)據(jù)的版本控制器的示例系統(tǒng)的框圖。圖2是示出具有用于版本化和合并持久存儲(chǔ)器中的數(shù)據(jù)的版本控制器的示例系統(tǒng)的框圖。圖3是示出具有用于版本化和合并持久存儲(chǔ)器中的數(shù)據(jù)的版本控制器的示例系統(tǒng)的框圖。圖4a圖示了根據(jù)示例實(shí)現(xiàn)的向前合并操作。圖4b圖示了根據(jù)示例實(shí)現(xiàn)的向后合并操作。圖5是用于版本化和合并持久存儲(chǔ)器中的數(shù)據(jù)的示例方法的流程圖。圖6是用于對(duì)事務(wù)提交命令進(jìn)行響應(yīng)的示例方法的流程圖。圖7是用于版本化和合并持久存儲(chǔ)器中的數(shù)據(jù)的示例方法的流程圖。圖8是示出編碼有用于版本化和合并持久存儲(chǔ)器中的數(shù)據(jù)的示例指令的非暫時(shí)性機(jī)器可讀介質(zhì)的框圖。圖9是示出編碼有用于對(duì)事務(wù)提交命令進(jìn)行響應(yīng)的示例指令的非暫時(shí)性機(jī)器可讀介質(zhì)的框圖。具體實(shí)施方式計(jì)算機(jī)系統(tǒng)可以包含由諸如閃速存儲(chǔ)器設(shè)備、相變存儲(chǔ)器設(shè)備、自旋轉(zhuǎn)矩存儲(chǔ)器設(shè)備、電阻隨機(jī)訪問(wèn)存儲(chǔ)器設(shè)備(也稱(chēng)為憶阻器存儲(chǔ)器設(shè)備)等之類(lèi)的非易失性存儲(chǔ)器設(shè)備形成的工作持久存儲(chǔ)器。這樣的持久存儲(chǔ)器可以具有與易失性存儲(chǔ)器相當(dāng)?shù)目焖僭L問(wèn)速度,并且還可以具有在計(jì)算機(jī)系統(tǒng)斷電之后保留數(shù)據(jù)的能力。此外,持久存儲(chǔ)器可以在系統(tǒng)架構(gòu)中實(shí)現(xiàn),該系統(tǒng)架構(gòu)在處理器上的存儲(chǔ)器控制器與持久存儲(chǔ)器上的介質(zhì)控制器之間劃分存儲(chǔ)器控制功能,該處理器和該持久存儲(chǔ)器通過(guò)存儲(chǔ)器結(jié)構(gòu)連接。例如,處理器的存儲(chǔ)器控制器可以包括高速緩存一致性功能和其他處理器特定的存儲(chǔ)器功能,而持久存儲(chǔ)器的介質(zhì)控制器可以包括特定于持久存儲(chǔ)器設(shè)備的功能。由于持久存儲(chǔ)器保留數(shù)據(jù)的能力,計(jì)算機(jī)系統(tǒng)可以包括版本化和事務(wù)能力。例如,在計(jì)算機(jī)系統(tǒng)的處理器上執(zhí)行的應(yīng)用可以確定數(shù)據(jù)的多個(gè)版本應(yīng)當(dāng)維持一段時(shí)間。版本中的一個(gè)可以表示數(shù)據(jù)的初始狀態(tài),并且另一個(gè)版本可以累積對(duì)數(shù)據(jù)的改變以用于原子事務(wù)。然而,在版本化期間執(zhí)行的一些數(shù)據(jù)操作(諸如數(shù)據(jù)復(fù)制和版本合并/替換)可能會(huì)增加處理器和/或存儲(chǔ)器開(kāi)銷(xiāo),并可能降低計(jì)算機(jī)系統(tǒng)性能。此外,版本化的一些實(shí)現(xiàn)可以通過(guò)執(zhí)行整個(gè)數(shù)據(jù)頁(yè)面的寫(xiě)入時(shí)復(fù)制而表現(xiàn)出開(kāi)銷(xiāo)。本申請(qǐng)的技術(shù)可以涉及在一些示例中耦合到處理器和持久存儲(chǔ)器的版本控制器。版本控制器可以接收尋址到圖像頁(yè)面的高速緩存行的應(yīng)用數(shù)據(jù),可以將接收到的應(yīng)用數(shù)據(jù)寫(xiě)入到與圖像頁(yè)面的所尋址的高速緩存行對(duì)應(yīng)的復(fù)制頁(yè)面的高速緩存行,可以追蹤應(yīng)用數(shù)據(jù)被寫(xiě)入到的復(fù)制頁(yè)面的高速緩存行,并且可以取決于合并方向策略通過(guò)將圖像頁(yè)面向前合并到復(fù)制頁(yè)面中或者將復(fù)制頁(yè)面向后合并到圖像頁(yè)面中來(lái)生成最終頁(yè)面。更具體地,技術(shù)的一些方面可以涉及基于應(yīng)用數(shù)據(jù)被寫(xiě)入到的復(fù)制頁(yè)面的高速緩存行的數(shù)量的合并方向策略。因此,本申請(qǐng)的技術(shù)可以有用于將數(shù)據(jù)版本化操作(諸如數(shù)據(jù)復(fù)制和版本合并/替換)從處理器卸載到版本控制器。此外,本申請(qǐng)的技術(shù)可以有用于減少數(shù)據(jù)版本化中所涉及的數(shù)據(jù)移動(dòng)的量?,F(xiàn)在參考附圖,圖1是示出示例版本控制器100(其也可以稱(chēng)為控制器100)的框圖。如本文將描述的,版本控制器100可以包括存儲(chǔ)器周期調(diào)度器102、版本控制模塊104和合并模塊106,并且版本控制器100可以有用于版本化和合并持久存儲(chǔ)器112中的數(shù)據(jù)。該數(shù)據(jù)可以與在處理器108上執(zhí)行的應(yīng)用110的原子事務(wù)的寫(xiě)入請(qǐng)求相關(guān)。術(shù)語(yǔ)“原子的”、“原子地”、“原子性”或類(lèi)似的術(shù)語(yǔ)可以指其中所有操作發(fā)生或者沒(méi)有操作發(fā)生的事務(wù)。例如,原子更新事務(wù)可以是其中執(zhí)行構(gòu)成事務(wù)的所有更新或者不執(zhí)行任何更新的事務(wù)。在一些實(shí)現(xiàn)中,處理器108可以是單核處理器、多核處理器、專(zhuān)用集成電路、現(xiàn)場(chǎng)可編程門(mén)陣列和/或適于從連接到處理器108的機(jī)器可讀介質(zhì)檢索和/或執(zhí)行機(jī)器可執(zhí)行指令的其他硬件設(shè)備。機(jī)器可執(zhí)行指令可以包括例如當(dāng)由處理器108執(zhí)行時(shí)形成應(yīng)用110的指令集。在一些實(shí)現(xiàn)中,持久存儲(chǔ)器112可以由非易失性存儲(chǔ)器設(shè)備形成,非易失性存儲(chǔ)器設(shè)備諸如閃速存儲(chǔ)器設(shè)備、相變存儲(chǔ)器設(shè)備、自旋轉(zhuǎn)矩存儲(chǔ)器設(shè)備、電阻隨機(jī)訪問(wèn)存儲(chǔ)器設(shè)備(也稱(chēng)為憶阻器存儲(chǔ)器設(shè)備)等。持久存儲(chǔ)器112可以通信地耦合到處理器108。版本控制器100還可以通信地耦合到處理器108和持久存儲(chǔ)器112兩者。版本控制器100可以包括存儲(chǔ)器周期調(diào)度器102、版本控制模塊104和合并模塊106,它們中的每個(gè)可以是編碼在設(shè)備的機(jī)器可讀介質(zhì)上并可由設(shè)備的處理器執(zhí)行的指令集,并且附加地或替代地,可以包括包含用于實(shí)現(xiàn)下面描述的功能的電子電路的硬件設(shè)備。此外,還可以理解,在一些實(shí)現(xiàn)中,本文描述的存儲(chǔ)器周期調(diào)度器102、版本控制模塊104和合并模塊106的功能中的一些可以直接歸于版本控制器100。版本控制模塊104可以在接收到用于對(duì)圖像頁(yè)面114進(jìn)行版本化以用于在通信地耦合到版本控制器100的處理器108上執(zhí)行的應(yīng)用110的原子事務(wù)的復(fù)制命令時(shí),在通信地耦合到版本控制器100的持久存儲(chǔ)器112中分配復(fù)制頁(yè)面。存儲(chǔ)器周期調(diào)度器102可以從應(yīng)用110接收尋址到圖像頁(yè)面114的高速緩存行的應(yīng)用數(shù)據(jù)。存儲(chǔ)器周期調(diào)度器102可以將接收到的應(yīng)用數(shù)據(jù)寫(xiě)入到與圖像頁(yè)面114的所尋址的高速緩存行對(duì)應(yīng)的復(fù)制頁(yè)面116的高速緩存行。在一些實(shí)現(xiàn)中,版本控制模塊104可以在版本控制結(jié)構(gòu)120中追蹤應(yīng)用數(shù)據(jù)被寫(xiě)入到的復(fù)制頁(yè)面116的高速緩存行。版本控制模塊104可以從應(yīng)用110接收事務(wù)提交命令。合并模塊106可以響應(yīng)于由版本控制模塊104接收到的事務(wù)提交命令是替換命令,而取決于合并方向策略通過(guò)將圖像頁(yè)面114向前合并到復(fù)制頁(yè)面116中或?qū)?fù)制頁(yè)面116向后合并到圖像頁(yè)面114中來(lái)生成最終頁(yè)面。在一些實(shí)現(xiàn)中,版本控制器100、處理器108和持久存儲(chǔ)器112可以包括在計(jì)算系統(tǒng)150的一部分中或形成計(jì)算系統(tǒng)150的一部分,所述計(jì)算系統(tǒng)150諸如服務(wù)器、工作站、臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算設(shè)備、移動(dòng)設(shè)備等。圖2是示出示例版本控制器200(其也可以被稱(chēng)為控制器200)的框圖。如本文將描述的,版本控制器200可以包括存儲(chǔ)器周期調(diào)度器202、版本控制模塊204和合并模塊206,并且版本控制器200可以有用于版本化和合并持久存儲(chǔ)器212中的數(shù)據(jù)。該數(shù)據(jù)可以與在處理器208上執(zhí)行的應(yīng)用210的原子事務(wù)的寫(xiě)入請(qǐng)求相關(guān)。在一些實(shí)現(xiàn)中,處理器208可以是單核處理器、多核處理器、專(zhuān)用集成電路、現(xiàn)場(chǎng)可編程門(mén)陣列和/或適于從連接到處理器208的機(jī)器可讀介質(zhì)檢索和/或執(zhí)行機(jī)器可執(zhí)行指令的其他硬件設(shè)備。機(jī)器可執(zhí)行指令可以包括例如當(dāng)由處理器208執(zhí)行時(shí)形成至少一個(gè)應(yīng)用210的指令集。在一些實(shí)現(xiàn)中,可以在處理器208上形成多個(gè)應(yīng)用210,包括操作系統(tǒng)。處理器208還可以包括集成存儲(chǔ)器控制器209,所述集成存儲(chǔ)器控制器209用于管理去往和來(lái)自存儲(chǔ)器(諸如持久存儲(chǔ)器212)的數(shù)據(jù)的流動(dòng)(盡管在一些實(shí)現(xiàn)中,存儲(chǔ)器控制器209可以與處理器208分離,但是通信地耦合到處理器208)。在一些實(shí)現(xiàn)中,持久存儲(chǔ)器212可以由非易失性存儲(chǔ)器設(shè)備形成,非易失性存儲(chǔ)器設(shè)備諸如閃速存儲(chǔ)器設(shè)備、相變存儲(chǔ)器設(shè)備、自旋轉(zhuǎn)矩存儲(chǔ)器設(shè)備、電阻隨機(jī)訪問(wèn)存儲(chǔ)器設(shè)備(也稱(chēng)為憶阻器存儲(chǔ)器設(shè)備)等。持久存儲(chǔ)器212可以通信地耦合到處理器208,并且更具體地,耦合到處理器208的存儲(chǔ)器控制器209。版本控制器200還可以通信地耦合到處理器208和持久存儲(chǔ)器212兩者。例如,在一些實(shí)現(xiàn)中,版本控制器200、處理器208和持久存儲(chǔ)器212可以通過(guò)插槽間(inter-socket)存儲(chǔ)器結(jié)構(gòu)通信地耦合。在一些實(shí)現(xiàn)中,版本控制器200、處理器208和持久存儲(chǔ)器212可以被包括在計(jì)算系統(tǒng)250的一部分中或形成計(jì)算系統(tǒng)250的一部分,所述計(jì)算系統(tǒng)250諸如服務(wù)器、工作站、臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算設(shè)備、移動(dòng)設(shè)備等。除了版本控制器200、處理器208和持久存儲(chǔ)器212之外,在一些實(shí)現(xiàn)中,計(jì)算系統(tǒng)150還可以包括易失性存儲(chǔ)器(例如,動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器、靜態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器等)、存儲(chǔ)設(shè)備(例如,基于磁性的存儲(chǔ)設(shè)備、基于光學(xué)的存儲(chǔ)設(shè)備、或其他物理存儲(chǔ)設(shè)備)、以及任何有線或無(wú)線網(wǎng)絡(luò)接口。在一些實(shí)現(xiàn)中,如圖3中所描繪的,示例系統(tǒng)250的持久存儲(chǔ)器212可以由多個(gè)持久存儲(chǔ)器設(shè)備213-1至213-n(例如,多個(gè)雙列直插存儲(chǔ)器模塊)形成,并且每個(gè)存儲(chǔ)器設(shè)備213-1至213-n可以包括相應(yīng)的介質(zhì)控制器240-1至240-n。在一些實(shí)現(xiàn)中,如圖3中所圖示的,示例系統(tǒng)250的處理器208可以在多個(gè)處理器208-1至208-n之中。處理器208-1至208-n中的每個(gè)可以包括相應(yīng)的存儲(chǔ)器控制器209-1至209-n。持久存儲(chǔ)器設(shè)備213-1至213-n、多個(gè)處理器208-1至208-n、以及版本控制器200中的每個(gè)可以通過(guò)插槽間存儲(chǔ)器結(jié)構(gòu)通信地耦合,使得處理器和版本控制器200中的任何一個(gè)可以訪問(wèn)持久存儲(chǔ)器設(shè)備中的任何一個(gè)或與持久存儲(chǔ)器設(shè)備中的任何一個(gè)進(jìn)行通信。通過(guò)上述布置,虛擬控制器200可以在處理器208和持久存儲(chǔ)器212之間作為獨(dú)立的中間設(shè)備對(duì)數(shù)據(jù)執(zhí)行版本化。再次參考圖2,版本控制器200可以包括存儲(chǔ)器周期調(diào)度器202、版本控制模塊204和合并模塊206,它們中的每個(gè)可以是包括用于實(shí)現(xiàn)下面描述的功能的電子電路的硬件設(shè)備,并且附加地或替代地,可以是編碼在設(shè)備(例如,系統(tǒng)250)的機(jī)器可讀介質(zhì)上并可由設(shè)備的處理器執(zhí)行的指令集。此外,還可以理解,在一些實(shí)現(xiàn)中,本文描述的存儲(chǔ)器周期調(diào)度器202、版本控制模塊204和合并模塊206的功能中的一些可以直接歸于版本控制器200。版本控制器200并且特別是版本控制模塊204可以從應(yīng)用210接收用于對(duì)圖像頁(yè)面214進(jìn)行版本化以用于應(yīng)用210的原子事務(wù)的復(fù)制命令。例如,圖像頁(yè)面214可以是由多個(gè)高速緩存行(本文中也稱(chēng)為原始高速緩存行)構(gòu)成并存儲(chǔ)在持久存儲(chǔ)器212中的數(shù)據(jù)的頁(yè)面,并且應(yīng)用208將請(qǐng)求圖像頁(yè)面214的原始數(shù)據(jù)(即原始高速緩存行)中的至少一些的修改,作為原子事務(wù)的一部分。應(yīng)用210可以發(fā)布復(fù)制命令,因?yàn)槠浯_定應(yīng)當(dāng)在一段時(shí)間內(nèi)為事務(wù)維持多個(gè)版本的數(shù)據(jù)(例如,原始數(shù)據(jù)和經(jīng)修改的數(shù)據(jù))。按每個(gè)復(fù)制命令由應(yīng)用210版本化的圖像頁(yè)面214也可以被稱(chēng)為版本化的圖像頁(yè)面。在接收到復(fù)制命令時(shí),版本控制模塊204可以在持久存儲(chǔ)器212中分配復(fù)制頁(yè)面216,所述持久存儲(chǔ)器212通信地耦合到版本控制器200。在一些實(shí)現(xiàn)中,應(yīng)用210可以分配復(fù)制頁(yè)面216并將復(fù)制頁(yè)面216的物理存儲(chǔ)器地址與復(fù)制命令一起提供給版本控制器200(例如,版本控制模塊204),而不是版本控制模塊204分配復(fù)制頁(yè)面216。在一些實(shí)現(xiàn)中,所分配的復(fù)制頁(yè)面216不包含對(duì)應(yīng)用210有意義的任何有效數(shù)據(jù)。例如,為了分配復(fù)制頁(yè)面216,版本控制模塊204可以預(yù)留等同于根據(jù)復(fù)制命令要版本化的圖像頁(yè)面214的大小的持久存儲(chǔ)器212的量,并且在一些實(shí)現(xiàn)中,不將任何數(shù)據(jù)寫(xiě)入到復(fù)制頁(yè)面216。可以由版本控制模塊204或應(yīng)用210從持久存儲(chǔ)器212中的空閑頁(yè)面218的隊(duì)列分配復(fù)制頁(yè)面216。在一些實(shí)現(xiàn)中,如果隊(duì)列沒(méi)有足夠的要從其分配復(fù)制頁(yè)面216的空閑頁(yè)面,則應(yīng)用210可以將附加的空閑頁(yè)面借給空閑頁(yè)面的隊(duì)列。當(dāng)版本控制模塊204解除分配圖像頁(yè)面或復(fù)制頁(yè)面時(shí)(例如,當(dāng)頁(yè)面不再需要用于操作時(shí)),也可以由版本控制模塊204將附加的空閑頁(yè)面添加到空閑頁(yè)面隊(duì)列218,如將在下面描述的。如果由應(yīng)用210借出解除分配的頁(yè)面,則應(yīng)用210可以追蹤借出的頁(yè)面的使用,并且在借出的頁(yè)面解除分配到空閑頁(yè)面隊(duì)列218時(shí)恢復(fù)或回收再利用借出的頁(yè)面以用于應(yīng)用210的其他目的。在一些實(shí)現(xiàn)中,版本控制模塊204還在接收到復(fù)制命令時(shí)創(chuàng)建版本控制結(jié)構(gòu)220。版本控制結(jié)構(gòu)220可以被存儲(chǔ)在可由版本控制器200訪問(wèn)的系統(tǒng)250的持久存儲(chǔ)器中,諸如持久存儲(chǔ)器212。版本控制結(jié)構(gòu)220可以描述對(duì)應(yīng)的復(fù)制頁(yè)面216,并且還可以包括表1中所示的字段中的至少一些,其將在本文進(jìn)一步描述。如表1中所示,版本控制結(jié)構(gòu)206的一些實(shí)現(xiàn)可以包括高速緩存行有效字段,它可以追蹤復(fù)制頁(yè)面216的各個(gè)高速緩存行是否有效。例如,高速緩存行有效字段可以包括用于復(fù)制頁(yè)面216的每個(gè)高速緩存行的單個(gè)位,以追蹤對(duì)應(yīng)的高速緩存行是有效還是無(wú)效。當(dāng)由版本控制模塊204最初分配復(fù)制頁(yè)面216時(shí),可以設(shè)置或初始化高速緩存行有效字段以指示復(fù)制頁(yè)面216的所有高速緩存行是無(wú)效的。高速緩存行有效字段被更新以指示當(dāng)來(lái)自應(yīng)用210的數(shù)據(jù)被寫(xiě)入到該高速緩存行時(shí)復(fù)制頁(yè)面216的特定高速緩存行是有效的,如下面將描述的。因此,對(duì)于應(yīng)用210的特定復(fù)制命令和事務(wù),版本控制器200可以使用圖像頁(yè)面214、復(fù)制頁(yè)面216和版本控制結(jié)構(gòu)220的對(duì)應(yīng)集合來(lái)執(zhí)行版本化。在分配復(fù)制頁(yè)面216和版本控制結(jié)構(gòu)220之后,版本控制模塊206可以將版本控制結(jié)構(gòu)200的頁(yè)面狀態(tài)字段設(shè)置為初始狀態(tài)。在一些實(shí)現(xiàn)中,事務(wù)可以涉及多個(gè)圖像頁(yè)面,例如,其中由事務(wù)所操縱的數(shù)據(jù)跨越多個(gè)圖像頁(yè)面(僅作為一個(gè)示例,每個(gè)圖像頁(yè)面的大小可以是四千字節(jié))。在這樣的情況下,版本控制模塊204可以分配多個(gè)復(fù)制頁(yè)面(例如,與多個(gè)圖像頁(yè)面中的每個(gè)對(duì)應(yīng)的復(fù)制頁(yè)面),并且可以原子地創(chuàng)建用于多個(gè)復(fù)制頁(yè)面中的每個(gè)的版本控制結(jié)構(gòu)220。用于每個(gè)復(fù)制頁(yè)面的版本控制結(jié)構(gòu)可以指相同的事務(wù)id,并且可以(例如,使用表1中描述的下一頁(yè)、上一頁(yè)和主復(fù)制頁(yè)面字段)在雙向鏈接的復(fù)制頁(yè)面列表中鏈接與相同事務(wù)相關(guān)的多個(gè)復(fù)制頁(yè)面。因此,應(yīng)當(dāng)理解,本文中呈現(xiàn)的技術(shù)可以在多個(gè)對(duì)應(yīng)的圖像頁(yè)面、復(fù)制頁(yè)面和版本控制結(jié)構(gòu)上執(zhí)行。在一些實(shí)現(xiàn)中,版本控制器200(例如,響應(yīng)于多個(gè)復(fù)制命令,不管是來(lái)自相同的應(yīng)用210還是來(lái)自不同的應(yīng)用)可以并發(fā)地處理不同的事務(wù),并且因此,版本控制器200可以管理對(duì)應(yīng)的圖像頁(yè)面、復(fù)制頁(yè)面和版本控制結(jié)構(gòu)的多個(gè)集合。在一些實(shí)現(xiàn)中,除了版本控制結(jié)構(gòu)220之外,版本控制模塊204也可以創(chuàng)建和維持各種輔助結(jié)構(gòu)222。輔助結(jié)構(gòu)222可以存儲(chǔ)在系統(tǒng)250的易失性存儲(chǔ)器或持久存儲(chǔ)器中。例如,版本控制模塊204可以在輔助結(jié)構(gòu)222中維持空閑頁(yè)面列表,該空閑頁(yè)面列表追蹤在空閑頁(yè)面隊(duì)列218中的空閑頁(yè)面在持久存儲(chǔ)器212中的位置。版本控制模塊204還可以在輔助結(jié)構(gòu)222中維持事務(wù)索引,該事務(wù)索引追蹤與特定事務(wù)相關(guān)聯(lián)的復(fù)制頁(yè)面的物理存儲(chǔ)器地址(或追蹤主復(fù)制頁(yè)面,其中多個(gè)復(fù)制頁(yè)面在事務(wù)中涉及)。版本控制模塊204還可以在輔助結(jié)構(gòu)222中維持頁(yè)面索引,該頁(yè)面索引包括對(duì)應(yīng)的圖像頁(yè)面地址和復(fù)制頁(yè)面地址,并且將圖像頁(yè)面和復(fù)制頁(yè)面這兩者與對(duì)應(yīng)的版本控制結(jié)構(gòu)220相關(guān)。至少部分地由于前述輔助結(jié)構(gòu)222中的一些,版本控制器200可以向處理器208虛擬化在版本化操作中涉及的頁(yè)面。在一些實(shí)現(xiàn)中,應(yīng)用210可以修改處理器208的頁(yè)表,使得參與事務(wù)的應(yīng)用210(及其過(guò)程)可以除了圖像頁(yè)面214之外或代替圖像頁(yè)面214還引用復(fù)制頁(yè)面216。直到至少在版本控制器200以如下所述的方式從應(yīng)用210接收到事務(wù)提交命令之后。通過(guò)僅向應(yīng)用210提供對(duì)復(fù)制頁(yè)面216的訪問(wèn),版本控制器200可以提供隔離性質(zhì),使得應(yīng)用210的事務(wù)不會(huì)影響在處理器208上執(zhí)行和/或利用持久存儲(chǔ)器212的并發(fā)事務(wù)。版本控制器200可以從應(yīng)用210接收寫(xiě)入請(qǐng)求(例如,處理器208的存儲(chǔ)指令)和尋址到持久存儲(chǔ)器212中的頁(yè)面的高速緩存行的應(yīng)用數(shù)據(jù)。更具體地,在一些實(shí)現(xiàn)中,存儲(chǔ)器周期調(diào)度器202接收應(yīng)用數(shù)據(jù),并且版本控制模塊204接收寫(xiě)入請(qǐng)求。在一些實(shí)現(xiàn)中,當(dāng)接收到應(yīng)用數(shù)據(jù)時(shí),版本控制模塊204將版本控制結(jié)構(gòu)220的頁(yè)面狀態(tài)字段設(shè)置為活動(dòng)(如果先前未設(shè)置為“活動(dòng)”的話(huà))。版本控制器200(更具體地,存儲(chǔ)器周期調(diào)度器202)可以例如通過(guò)檢查在輔助結(jié)構(gòu)222中是否引用高速緩存行地址,諸如上述的頁(yè)面索引,來(lái)確定接收到的寫(xiě)入請(qǐng)求和應(yīng)用數(shù)據(jù)是否被尋址到由版本控制器200版本化的事務(wù)中涉及的圖像頁(yè)面(版本化圖像頁(yè)面)。如果寫(xiě)入請(qǐng)求和應(yīng)用數(shù)據(jù)未被尋址到版本化圖像頁(yè)面(例如,而是尋址到非版本化圖像頁(yè)面215),則存儲(chǔ)器周期調(diào)度器202可以將寫(xiě)入請(qǐng)求和應(yīng)用數(shù)據(jù)在不由版本控制器200進(jìn)一步處理的情況下傳遞到持久存儲(chǔ)器212。另一方面,如果寫(xiě)入請(qǐng)求和應(yīng)用數(shù)據(jù)被尋址到由控制器版本化的事務(wù)中涉及的圖像頁(yè)面(例如,版本化圖像頁(yè)面214),則存儲(chǔ)器周期調(diào)度器202(例如,從頁(yè)面索引)標(biāo)識(shí)對(duì)應(yīng)的版本控制結(jié)構(gòu)220和復(fù)制頁(yè)面216。在已經(jīng)標(biāo)識(shí)了與尋址到版本化圖像頁(yè)面214的寫(xiě)入請(qǐng)求和應(yīng)用數(shù)據(jù)對(duì)應(yīng)的版本控制結(jié)構(gòu)220和復(fù)制頁(yè)面216的情況下,存儲(chǔ)器周期調(diào)度器202可以(例如,通過(guò)執(zhí)行具有存儲(chǔ)器參考操作數(shù)的存儲(chǔ)指令或其他指令)而將接收到的應(yīng)用數(shù)據(jù)寫(xiě)入到與圖像頁(yè)面214的所尋址的高速緩存行對(duì)應(yīng)的復(fù)制頁(yè)面的高速緩存行216。也就是說(shuō),版本控制器200更新或修改充當(dāng)圖像頁(yè)面214的新版本的復(fù)制頁(yè)面216,而不是更新或修改原始圖像頁(yè)面214。在一些實(shí)現(xiàn)中,存儲(chǔ)器周期調(diào)度器202針對(duì)未使用的存儲(chǔ)器周期調(diào)度寫(xiě)入。在一些實(shí)現(xiàn)中,存儲(chǔ)器周期調(diào)度器202可以在標(biāo)識(shí)了與所尋址的版本化圖像頁(yè)面214對(duì)應(yīng)的版本控制結(jié)構(gòu)208和復(fù)制頁(yè)面216之后立即(例如,在下一可能的周期,而不具有有意的或編程的延遲)寫(xiě)入應(yīng)用數(shù)據(jù)。在存儲(chǔ)器周期調(diào)度器202將應(yīng)用數(shù)據(jù)寫(xiě)入到復(fù)制頁(yè)面216之后,版本控制模塊204可以在版本控制結(jié)構(gòu)220中追蹤應(yīng)用數(shù)據(jù)被寫(xiě)入到的復(fù)制頁(yè)面216的高速緩存行。例如,版本控制模塊204可以通過(guò)在版本控制結(jié)構(gòu)220的高速緩存行有效字段中設(shè)置與寫(xiě)入的高速緩存行對(duì)應(yīng)的位以指示復(fù)制頁(yè)面216中的高速緩存行現(xiàn)在有效來(lái)追蹤寫(xiě)入的復(fù)制頁(yè)面高速緩存行。僅作為一個(gè)圖示,在圖4a中,尋址到圖像頁(yè)面214的高速緩存行224-2的應(yīng)用數(shù)據(jù)已經(jīng)被寫(xiě)入到復(fù)制頁(yè)面216的對(duì)應(yīng)的高速緩存行226-2,并且因此,(版本控制結(jié)構(gòu)220的)高速緩存行有效字段221-a的對(duì)應(yīng)位被設(shè)置為指示該高速緩存行226-2的有效性(例如,在該示例中為“1”的值)。另一方面,在圖4a中,應(yīng)用數(shù)據(jù)尚未分別寫(xiě)入到對(duì)應(yīng)的高速緩存行226-1和226-3,并且根據(jù)復(fù)制頁(yè)面216的原始分配,與那些高速緩存行226-1和226-3對(duì)應(yīng)的高速緩存行有效字段221-a的位保持設(shè)置為無(wú)效(例如,在該示例中為“0”的值)。在一些實(shí)現(xiàn)中,存儲(chǔ)器周期調(diào)度器202可以響應(yīng)于來(lái)自應(yīng)用210的與特定原子事務(wù)相關(guān)的多個(gè)寫(xiě)入請(qǐng)求而將多個(gè)高速緩存行寫(xiě)入到復(fù)制頁(yè)面216,并且版本控制模塊204可以追蹤應(yīng)用數(shù)據(jù)被寫(xiě)入到的復(fù)制頁(yè)面216的高速緩存行中的每個(gè)。在一些實(shí)現(xiàn)中,存儲(chǔ)器周期調(diào)度器202可以改寫(xiě)應(yīng)用數(shù)據(jù)先前已經(jīng)根據(jù)較新的寫(xiě)入請(qǐng)求而被寫(xiě)入到的復(fù)制頁(yè)面216的高速緩存行。存儲(chǔ)器周期調(diào)度器202可以以上述方式繼續(xù)向復(fù)制頁(yè)面216寫(xiě)入(或改寫(xiě))尋址到版本化圖像頁(yè)面214的應(yīng)用數(shù)據(jù),直到版本控制模塊204從應(yīng)用210接收到事務(wù)提交命令。在描述版本控制器200如何處理事務(wù)提交命令之前,將首先描述版本控制器200的各種預(yù)先提交功能。在一些實(shí)現(xiàn)中,由版本控制器200(即,版本控制模塊204)接收的復(fù)制命令可以包括向前合并提示。向前合并提示指示在版本控制模塊204接收到事務(wù)提交命令之后,合并模塊206將執(zhí)行把圖像頁(yè)面214向前合并到復(fù)制頁(yè)面216中(以下述的方式)。在一些實(shí)現(xiàn)中,版本控制模塊204響應(yīng)于向前合并提示將版本控制結(jié)構(gòu)220的頁(yè)面狀態(tài)字段設(shè)置為在向前合并的情況下活動(dòng)。如果復(fù)制命令包括向前合并提示,則在接收到事務(wù)提交命令之前并且在未使用的存儲(chǔ)器周期期間,存儲(chǔ)器周期調(diào)度器202可以將圖像頁(yè)面214的對(duì)應(yīng)高速緩存行復(fù)制到?jīng)]有應(yīng)用數(shù)據(jù)被寫(xiě)入的復(fù)制頁(yè)面216的高速緩存行。換句話(huà)說(shuō),存儲(chǔ)器周期調(diào)度器202可以基于版本控制結(jié)構(gòu)220的高速緩存行有效字段來(lái)確定復(fù)制頁(yè)面216的哪些高速緩存行是無(wú)效的,并且將圖像頁(yè)面214的對(duì)應(yīng)高速緩存行(即,原始高速緩存行)向前復(fù)制到復(fù)制頁(yè)面216的那些無(wú)效高速緩存行。版本控制模塊204可以將高速緩存行有效字段的位設(shè)置為有效,因?yàn)閺?fù)制頁(yè)面216的對(duì)應(yīng)高速緩存行由于向前合并提示而被向前復(fù)制。在一些實(shí)現(xiàn)中,存儲(chǔ)器周期調(diào)度器202可以監(jiān)視和調(diào)度未使用的存儲(chǔ)器周期以執(zhí)行向前復(fù)制,以避免在高速緩存行被寫(xiě)入(諸如從應(yīng)用210接收和尋址到版本化圖像頁(yè)面214的那些高速緩存行)的同時(shí)復(fù)制高速緩存行。通過(guò)在事務(wù)提交命令之前并且根據(jù)向前合并提示將來(lái)自圖像頁(yè)面214的復(fù)制高速緩存行向前復(fù)制到復(fù)制頁(yè)面216,版本控制器200可以通過(guò)使完整或接近完整版本的最終頁(yè)面在接收到事務(wù)提交命令時(shí)提交來(lái)加速圖像頁(yè)面214的版本化。在一些實(shí)現(xiàn)中,版本控制器200可以從處理器208接收訪問(wèn)圖像頁(yè)面214的數(shù)據(jù)的請(qǐng)求,而不是如上所述的寫(xiě)入請(qǐng)求。存儲(chǔ)器周期調(diào)度器202可以確定由處理器208并且更具體地由應(yīng)用210以及由與事務(wù)不相關(guān)聯(lián)的其他應(yīng)用對(duì)圖像頁(yè)面214的訪問(wèn)是應(yīng)被引導(dǎo)到圖像頁(yè)面214還是復(fù)制頁(yè)面216。例如,處理器208或在處理器208上執(zhí)行的應(yīng)用可以發(fā)送尋址到圖像頁(yè)面214的讀取請(qǐng)求(例如,加載指令)。存儲(chǔ)器周期調(diào)度器202可以(例如,通過(guò)直接地或經(jīng)由版本控制模塊204檢查版本控制結(jié)構(gòu)220)確定讀取地址是否指代與復(fù)制頁(yè)面216的高速緩存行對(duì)應(yīng)的圖像頁(yè)面214的高速緩存行,所述復(fù)制頁(yè)面216的高速緩存行根據(jù)版本控制結(jié)構(gòu)220(是有效的。如果讀取地址的高速緩存行對(duì)應(yīng)于復(fù)制頁(yè)面216的有效高速緩存行,則存儲(chǔ)器周期調(diào)度器202將讀取請(qǐng)求重新尋址到復(fù)制頁(yè)面216的對(duì)應(yīng)高速緩存行。否則,存儲(chǔ)器周期調(diào)度器202可以將原始讀取請(qǐng)求傳遞到圖像頁(yè)面214。在一些實(shí)現(xiàn)中,應(yīng)用210可以向版本控制器200沖刷(flush)尋址到圖像頁(yè)面214的修改的高速緩存行(例如,處理器208的高速緩存中的剩余數(shù)據(jù)),以準(zhǔn)備發(fā)送事務(wù)提交命令。版本控制器200可以以與上述類(lèi)似的方式處理沖刷的高速緩存行,所述方式即通過(guò)將尋址到圖像頁(yè)面214的高速緩存行的剩余應(yīng)用數(shù)據(jù)寫(xiě)入到復(fù)制頁(yè)面216的對(duì)應(yīng)高速緩存行并因此更新版本控制結(jié)構(gòu)220(例如,高速緩存行有效字段)。版本控制模塊204可以從應(yīng)用210接收事務(wù)提交命令,諸如替換命令、分離命令、組合命令或刪除命令。前述命令在本文中也可以被稱(chēng)為替換型命令、分離型命令、組合型命令或刪除型命令?,F(xiàn)在將繼而描述版本控制器200對(duì)前述事務(wù)提交命令中的每個(gè)的響應(yīng)。響應(yīng)于作為替換命令的事務(wù)提交命令,合并模塊206可以取決于合并方向策略通過(guò)將圖像頁(yè)面214向前合并(例如,230)到復(fù)制頁(yè)面216中或者將復(fù)制頁(yè)面216向后合并(例如,232)到圖像頁(yè)面214中來(lái)生成最終頁(yè)面。在一些實(shí)現(xiàn)中,存儲(chǔ)器周期調(diào)度器202可以調(diào)度未使用的存儲(chǔ)器周期以使合并模塊206執(zhí)行向前合并230或向后合并232以生成最終頁(yè)面。合并方向策略可以包括在合并模塊206中,并且下面將描述合并方向策略的各種實(shí)現(xiàn)。在描述合并方向策略的實(shí)現(xiàn)之前,將首先描述向前合并230和向后合并232。如果合并方向策略指示應(yīng)當(dāng)執(zhí)行向前合并230,則版本控制模塊204可以將版本控制結(jié)構(gòu)220的頁(yè)面狀態(tài)字段設(shè)置為提交(這可以指示復(fù)制頁(yè)面216將被維持為最終頁(yè)面并且圖像頁(yè)面214被視為將被解除分配的棄用頁(yè)面)。合并模塊206可以基于版本控制結(jié)構(gòu)220的高速緩存行有效字段來(lái)確定復(fù)制頁(yè)面216的哪些高速緩存行是無(wú)效的,并且可以控制或指令存儲(chǔ)器周期調(diào)度器202調(diào)度未使用的存儲(chǔ)器周期以將圖像頁(yè)面214的對(duì)應(yīng)原始高速緩存行向前復(fù)制到復(fù)制頁(yè)面216的那些無(wú)效高速緩存行。隨著圖像頁(yè)面214的高速緩存行被復(fù)制到復(fù)制頁(yè)面216的對(duì)應(yīng)高速緩存行,通過(guò)將高速緩存行有效字段的每個(gè)對(duì)應(yīng)位設(shè)置為有效,版本控制模塊204可以更新版本控制結(jié)構(gòu)220,并且在高速緩存行有效字段的所有位被設(shè)置為有效之后,向前復(fù)制230可以被視為完成。版本控制模塊204可以將最終頁(yè)面(即復(fù)制頁(yè)面216)的物理存儲(chǔ)器地址提供給應(yīng)用210(或更一般地,提供給處理器208)。例如,物理存儲(chǔ)器地址可以從版本控制結(jié)構(gòu)220的復(fù)制頁(yè)面物理存儲(chǔ)器地址字段提供。然后,處理器208可以更新其頁(yè)表,使得最初映射到圖像頁(yè)面214的物理存儲(chǔ)器地址的任何虛擬地址將被替代地映射到復(fù)制頁(yè)面216(作為最后頁(yè)面)的物理存儲(chǔ)器地址以供將來(lái)讀取和寫(xiě)入請(qǐng)求。如果合并方向策略規(guī)定應(yīng)當(dāng)執(zhí)行向后合并232,則版本控制模塊204可以將版本控制結(jié)構(gòu)220的頁(yè)面狀態(tài)字段設(shè)置為棄用(這表明圖像頁(yè)面214將被維持為最終頁(yè)面,并且復(fù)制頁(yè)面216將被解除分配)。合并模塊206可以基于版本控制結(jié)構(gòu)220的高速緩存行有效字段來(lái)確定復(fù)制頁(yè)面216的哪些高速緩存行是有效的,并且可以控制或指令存儲(chǔ)器周期調(diào)度器202來(lái)調(diào)度未使用的存儲(chǔ)器周期以將復(fù)制頁(yè)面216的那些有效高速緩存行向后復(fù)制到圖像頁(yè)面214的對(duì)應(yīng)高速緩存行。隨著復(fù)制頁(yè)面216的高速緩存行被復(fù)制到圖像頁(yè)面214的對(duì)應(yīng)高速緩存行,通過(guò)將高速緩存行有效字段的每個(gè)對(duì)應(yīng)位設(shè)置為無(wú)效(因?yàn)槟莻€(gè)該高速緩存行被復(fù)制),版本控制模塊204可以更新版本控制結(jié)構(gòu)220。版本控制模塊204可以將最終頁(yè)面(即,圖像頁(yè)面214)的物理存儲(chǔ)器地址提供給應(yīng)用210(或處理器208),并且在一些實(shí)現(xiàn)中,可能不需要更新處理器208的頁(yè)表。例如,物理存儲(chǔ)器地址可以從版本控制結(jié)構(gòu)220的圖像頁(yè)面物理存儲(chǔ)器地址字段提供。在一些實(shí)現(xiàn)中,版本控制模塊204可以在將頁(yè)面狀態(tài)字段設(shè)置為提交以用于向前合并230或設(shè)置為棄用以用于向后合并232之后,但是在向前合并230或向后合并232完成之前并且在高速緩存行有效字段的所有位分別被設(shè)置為有效或無(wú)效之前,將最終頁(yè)面的物理存儲(chǔ)器地址提供給處理器208,包括在其上執(zhí)行的任何應(yīng)用或過(guò)程。在這樣的實(shí)現(xiàn)中,處理器208可以通過(guò)版本控制器200在版本控制結(jié)構(gòu)220中追蹤每個(gè)有效高速緩存行在正在進(jìn)行的向前或向后合并期間在何處來(lái)高效地訪問(wèn)最終頁(yè)面(即使最終頁(yè)面尚未完全生成,并且有效高速緩存行分散在圖像頁(yè)面214和復(fù)制頁(yè)面216之間)。在其他實(shí)現(xiàn)中,版本控制器模塊204可以在向前合并230或向后合并232完成之后提供最終頁(yè)面的物理存儲(chǔ)器地址。為了說(shuō)明,圖4a描繪了通過(guò)(例如,根據(jù)高速緩存行有效字段221-a)將圖像頁(yè)面214的對(duì)應(yīng)原始高速緩存行224-1、224-3和224-n復(fù)制到復(fù)制頁(yè)面216的無(wú)效高速緩存行226-1、226-3和226-n的向前合并。在所描繪的向前合并完成之后,高速緩存行有效字段的所有位應(yīng)被設(shè)置為有效(例如,在圖4a中,高速緩存行有效字段221-b的所有位都被設(shè)置為“1”)。圖4b描繪了通過(guò)(例如,根據(jù)高速緩存行有效字段221-a)將復(fù)制頁(yè)面216的有效高速緩存行226-2復(fù)制到圖像頁(yè)面214的高速緩存行224-2的向后合并。在所描繪的向后合并完成之后,高速緩存行有效字段221的所有位應(yīng)被設(shè)置為無(wú)效(例如,在圖4b中,高速緩存行有效字段221-b的所有位都被設(shè)置為“0”)?,F(xiàn)在將描述可以支配是執(zhí)行向前合并230還是向后合并232的合并方向策略的示例實(shí)現(xiàn)。在一些實(shí)現(xiàn)中,合并方向策略可以基于應(yīng)用數(shù)據(jù)被寫(xiě)入到的復(fù)制頁(yè)面216的高速緩存行的數(shù)量。例如,合并模塊206可以確定有效的(版本控制結(jié)構(gòu)220的)高速緩存行有效字段的位的百分比,并且合并方向可以取決于該百分比是否滿(mǎn)足或超過(guò)閾值。更具體地,在一些示例中,如果復(fù)制頁(yè)面216中的有效高速緩存行的百分比為50%或更大,則合并方向可以是向前合并230,并且如果復(fù)制頁(yè)面216中的有效高速緩存行的百分比小于50%,則合并方向可以是向后合并232。應(yīng)當(dāng)理解,可以修改百分比閾值,例如,以?xún)?yōu)化版本提交過(guò)程的效率。其他基于數(shù)量的量度也可以在其他實(shí)現(xiàn)中以類(lèi)似的方式使用,諸如有效高速緩存行的計(jì)數(shù)。因?yàn)楹喜⒎较虿呗曰趶?fù)制頁(yè)面216中的有效高速緩存行的數(shù)量,所以版本控制器200可以朝向與最終頁(yè)面最類(lèi)似的頁(yè)面復(fù)制高速緩存行,因而潛在地最小化用于創(chuàng)建最終頁(yè)面的高速緩存行復(fù)制操作的數(shù)量。在一些實(shí)現(xiàn)中,合并方向策略可以基于引用圖像頁(yè)面214的處理器208的虛擬地址的數(shù)量。例如,在執(zhí)行向前合并230之后(即,當(dāng)頁(yè)面狀態(tài)被設(shè)置為提交時(shí)),其中虛擬存儲(chǔ)器地址被映射到圖像頁(yè)面214的物理存儲(chǔ)器地址的處理器208的頁(yè)表中的每個(gè)實(shí)例被重新映射到復(fù)制頁(yè)面216的物理存儲(chǔ)器地址,如上所述。隨著這樣的虛擬存儲(chǔ)器地址的數(shù)目增加,由處理器208執(zhí)行的重新映射的數(shù)目也可以增加。因此,與將大量或許多虛擬存儲(chǔ)器地址重新映射到復(fù)制頁(yè)面216的物理存儲(chǔ)器地址相比,執(zhí)行向后合并可以被視為是更高效的。應(yīng)當(dāng)理解,處理器208的虛擬地址的數(shù)量可以被選擇例如以?xún)?yōu)化版本提交過(guò)程的效率。在一些實(shí)現(xiàn)中,版本控制模塊204可以移除系統(tǒng)250中的對(duì)棄用頁(yè)面的引用。棄用頁(yè)面可以是未被合并成形成最終頁(yè)面的圖像頁(yè)面214或復(fù)制頁(yè)面216中的任何一個(gè),或者換句話(huà)說(shuō),棄用頁(yè)面可以是向前合并230中的圖像頁(yè)面214,并且可以是向后合并232中的復(fù)制頁(yè)面216。版本控制模塊204可以移除例如處理器208的頁(yè)表中的對(duì)棄用頁(yè)面的引用。在一些實(shí)現(xiàn)中,版本控制模塊204可以在版本控制結(jié)構(gòu)220中將頁(yè)面狀態(tài)字段設(shè)置為“提交”或“棄用”之后移除對(duì)棄用頁(yè)面的引用。在一些實(shí)現(xiàn)中,版本控制模塊204還可以例如通過(guò)將棄用頁(yè)面釋放(例如,使之可用)到空閑頁(yè)面隊(duì)列218并且更新輔助結(jié)構(gòu)222中的空閑頁(yè)面列表或者通過(guò)將棄用頁(yè)面釋放到應(yīng)用210或處理器208來(lái)解除分配棄用頁(yè)面。在一些實(shí)現(xiàn)中,版本控制模塊204還可以解除分配版本控制結(jié)構(gòu)220。在一些實(shí)現(xiàn)中,在解除分配棄用頁(yè)面和/或版本控制結(jié)構(gòu)220之前,版本控制模塊204等待直到例如按照由來(lái)自處理器208或應(yīng)用210的釋放命令所指示的那樣移除對(duì)系統(tǒng)250中(例如,處理器208中)的棄用頁(yè)面的引用。在一些實(shí)現(xiàn)中,由版本控制模塊204從應(yīng)用210接收的事務(wù)提交命令可以是刪除命令。例如,當(dāng)應(yīng)用210的事務(wù)被中止時(shí),應(yīng)用210可以發(fā)布刪除命令。響應(yīng)于刪除命令,版本控制模塊204可以解除分配版本控制結(jié)構(gòu)220和復(fù)制頁(yè)面216。通過(guò)對(duì)刪除命令的響應(yīng),僅原始的未修改的圖像頁(yè)面214可以保留。在一些實(shí)現(xiàn)中,由版本控制模塊204從應(yīng)用210接收的事務(wù)提交命令可以是分離命令。響應(yīng)于作為分離命令的事務(wù)提交命令,版本控制模塊204可以將版本控制結(jié)構(gòu)220的頁(yè)面狀態(tài)字段設(shè)置為分離,并且合并模塊206可以針對(duì)沒(méi)有應(yīng)用數(shù)據(jù)被寫(xiě)入到的復(fù)制頁(yè)面216的高速緩存行(即,版本控制結(jié)構(gòu)220的高速緩存行有效字段的對(duì)應(yīng)位被設(shè)置為無(wú)效)而將來(lái)自圖像頁(yè)面214的原始高速緩存行復(fù)制到復(fù)制頁(yè)面216。換句話(huà)說(shuō),合并模塊206可以執(zhí)行向前合并230。在一些實(shí)現(xiàn)中,如果版本控制器200接收尋址到圖像頁(yè)面214的高速緩存行的新的應(yīng)用數(shù)據(jù),并且復(fù)制頁(yè)面216的對(duì)應(yīng)高速緩存行是無(wú)效的,則存儲(chǔ)器周期調(diào)度器202可以在將圖像頁(yè)面214的高速緩存行寫(xiě)入到復(fù)制頁(yè)面216的無(wú)效高速緩存行之后,將新的應(yīng)用數(shù)據(jù)調(diào)度寫(xiě)入到圖像頁(yè)面214。分離命令的上述數(shù)據(jù)復(fù)制和寫(xiě)入過(guò)程可以以上述的方式按照由存儲(chǔ)器周期調(diào)度器202調(diào)度的那樣在未使用的存儲(chǔ)器周期期間執(zhí)行。此外,可以以上述的方式使用向前合并提示來(lái)執(zhí)行上述數(shù)據(jù)復(fù)制和寫(xiě)入過(guò)程。版本控制器200可以將分離復(fù)制頁(yè)面216的物理存儲(chǔ)器地址和圖像頁(yè)面214的物理存儲(chǔ)器地址這兩者提供給處理器208(并且更具體地,提供給應(yīng)用210),并且可以刪除版本控制結(jié)構(gòu)220。通過(guò)對(duì)分離命令的響應(yīng),處理器208可以保留對(duì)圖像頁(yè)面214中的原始數(shù)據(jù)和復(fù)制頁(yè)面216中的事務(wù)修改數(shù)據(jù)這兩者的訪問(wèn)。在一些實(shí)現(xiàn)中,由版本控制模塊204從應(yīng)用210接收的事務(wù)提交命令可以是組合命令。響應(yīng)于作為組合命令的事務(wù)提交命令,版本控制器200可以原子地組合或添加來(lái)自第一事務(wù)的復(fù)制頁(yè)面和來(lái)自第二事務(wù)的另一復(fù)制頁(yè)面。此外,在其中事務(wù)涉及多個(gè)復(fù)制頁(yè)面的情況下,版本控制器200可以將來(lái)自第一事務(wù)的第一組復(fù)制頁(yè)面組合或添加到來(lái)自第二事務(wù)的第二組復(fù)制頁(yè)面。版本控制器200可以通過(guò)例如修改要組合的復(fù)制頁(yè)面的版本控制結(jié)構(gòu)的鏈接列表字段(諸如主組合頁(yè)面和下一組合頁(yè)面字段)來(lái)組合復(fù)制頁(yè)面。例如,可以修改用于第一組復(fù)制頁(yè)面的鏈接列表字段以并入第二組復(fù)制頁(yè)面,和/或反之亦然。第一事務(wù)和第二事務(wù)兩者都可以是應(yīng)用210的事務(wù)。當(dāng)?shù)谝皇聞?wù)的(多個(gè))復(fù)制頁(yè)面和第二事務(wù)的(多個(gè))復(fù)制頁(yè)面正在組合時(shí),合并模塊206可以通過(guò)確定(第一事務(wù)的)復(fù)制頁(yè)面和(第二事務(wù)的)另一個(gè)復(fù)制頁(yè)面是否是同一圖像頁(yè)面的兩個(gè)版本來(lái)確定是否存在任何潛在組合沖突。例如,合并模塊206可以檢查用于第一事務(wù)的復(fù)制頁(yè)面的版本控制結(jié)構(gòu)的一個(gè)或多個(gè)字段(諸如,圖像頁(yè)面物理字段)是否匹配于用于第二事務(wù)的復(fù)制頁(yè)面的對(duì)應(yīng)字段。如果復(fù)制頁(yè)面和另一個(gè)復(fù)制頁(yè)面是同一圖像頁(yè)面的兩個(gè)版本,則合并模塊206可以確定是否存在沖突,沖突是數(shù)據(jù)被寫(xiě)入到復(fù)制頁(yè)面和另一個(gè)復(fù)制頁(yè)面這兩者的對(duì)應(yīng)高速緩存行的情況。例如,合并模塊206可以檢查用于復(fù)制頁(yè)面和另一個(gè)復(fù)制頁(yè)面兩者的版本控制結(jié)構(gòu),并且如果復(fù)制頁(yè)面和另一個(gè)復(fù)制頁(yè)面的任何對(duì)應(yīng)高速緩存行有效位兩者都被設(shè)置為有效,則沖突可以由合并模塊206視為存在。因?yàn)閮蓚€(gè)對(duì)應(yīng)的高速緩存行都是有效的,所以版本控制器200和應(yīng)用210都不可能能夠確定復(fù)制頁(yè)面或另一個(gè)復(fù)制頁(yè)面中的哪一個(gè)包含期望的(例如,最新的)應(yīng)用數(shù)據(jù)。如果不存在沖突,則合并模塊206可以將復(fù)制頁(yè)面216和另一個(gè)復(fù)制頁(yè)面組合或鏈接。如果存在沖突,則版本控制器200可以向處理器208和/或應(yīng)用210發(fā)送錯(cuò)誤消息,這繼而可以中止第一事務(wù)和第二事務(wù)兩者。在第一事務(wù)的復(fù)制頁(yè)面和第二事務(wù)的復(fù)制頁(yè)面被組合之后,版本控制器200可以將組合的頁(yè)面的物理存儲(chǔ)器地址發(fā)送到處理器208和/或應(yīng)用210。圖5是用于版本化和合并持久存儲(chǔ)器中的數(shù)據(jù)的示例方法500的流程圖。方法500可以在下面被描述為由諸如圖1的系統(tǒng)150的系統(tǒng)運(yùn)行或執(zhí)行。也可以使用各種其他合適的系統(tǒng),諸如例如圖2的系統(tǒng)250。方法500可以以存儲(chǔ)在至少一個(gè)機(jī)器可讀存儲(chǔ)介質(zhì)上并由系統(tǒng)150的至少一個(gè)處理器或控制器執(zhí)行的可執(zhí)行指令的形式和/或以電子電路的形式來(lái)實(shí)現(xiàn)。在本公開(kāi)的一些實(shí)現(xiàn)中,方法500的一個(gè)或多個(gè)塊可以基本上并發(fā)地或以與圖5中所示的不同次序執(zhí)行。在本公開(kāi)的一些實(shí)現(xiàn)中,方法500可以包括比圖5中所示的更多或更少的塊。在一些實(shí)現(xiàn)中,方法500的一個(gè)或多個(gè)塊可以在某些時(shí)間是進(jìn)行中的和/或可以重復(fù)。方法500可以在塊502處開(kāi)始并繼續(xù)到塊504,在塊504中在從系統(tǒng)150的處理器(例如,108)上執(zhí)行的應(yīng)用(例如,110)接收到版本化圖像頁(yè)面(例如,114)以用于原子事務(wù)的復(fù)制命令時(shí),系統(tǒng)150可以例如通過(guò)版本控制器100(更具體地,通過(guò)版本控制模塊104)在持久存儲(chǔ)器(例如,112)中分配復(fù)制頁(yè)面(例如,116)。在一些實(shí)現(xiàn)中,復(fù)制命令是對(duì)多個(gè)圖像頁(yè)面進(jìn)行版本化,并且作為響應(yīng),版本控制模塊104可以分配多個(gè)對(duì)應(yīng)的復(fù)制頁(yè)面。在塊506處,系統(tǒng)150可以在版本控制器100(更具體地,在存儲(chǔ)器周期調(diào)度器102處)接收尋址到圖像頁(yè)面114的高速緩存行的應(yīng)用數(shù)據(jù)。在塊508處,系統(tǒng)150可以通過(guò)版本控制器100(更具體地,通過(guò)存儲(chǔ)器周期調(diào)度器102)將接收到(即,在塊506處接收到的)的應(yīng)用數(shù)據(jù)寫(xiě)入到與圖像頁(yè)面114的所尋址的高速緩存行對(duì)應(yīng)的復(fù)制頁(yè)面116的高速緩存行。在塊510處,系統(tǒng)150可以在版本控制結(jié)構(gòu)(例如,120)中追蹤在塊508處應(yīng)用數(shù)據(jù)被寫(xiě)入到的復(fù)制頁(yè)面116的高速緩存行。更具體地,在一些實(shí)現(xiàn)中,版本控制器100(或更具體地,版本控制模塊104)在版本控制結(jié)構(gòu)120中執(zhí)行追蹤,并且版本控制結(jié)構(gòu)可以存儲(chǔ)在版本控制器100中(例如,機(jī)載機(jī)器可讀介質(zhì)、高速緩存或儲(chǔ)存器)、持久存儲(chǔ)器112或系統(tǒng)150的另一個(gè)存儲(chǔ)器或儲(chǔ)存器。版本控制結(jié)構(gòu)120可以例如類(lèi)似于上面關(guān)于圖2描述的版本控制結(jié)構(gòu)220。在一些實(shí)現(xiàn)中,應(yīng)用110在一段時(shí)間內(nèi)(例如,在處理器108的多個(gè)連續(xù)和/或非連續(xù)周期內(nèi))發(fā)送尋址到圖像頁(yè)面114的應(yīng)用數(shù)據(jù),并且版本控制器100可以針對(duì)所接收的每個(gè)應(yīng)用數(shù)據(jù)重復(fù)塊506、508和510。在塊512處,系統(tǒng)150可以在版本控制器100處(更具體地,在版本控制模塊104處)接收事務(wù)提交命令。在一些實(shí)現(xiàn)中,事務(wù)提交命令可以由應(yīng)用110發(fā)送。如果在塊512處接收的事務(wù)提交命令是替換命令,則在塊514處,版本控制器100(更具體地,合并模塊106)可以取決于合并方向策略通過(guò)將圖像頁(yè)面114向前合并到復(fù)制頁(yè)面116中或者將復(fù)制頁(yè)面116向后合并到圖像頁(yè)面114中來(lái)生成最終頁(yè)面。換句話(huà)說(shuō),通過(guò)執(zhí)行塊514,復(fù)制頁(yè)面116經(jīng)由向前合并成為最終頁(yè)面,或者圖像頁(yè)面114經(jīng)由向后合并成為最終頁(yè)面。在一些實(shí)現(xiàn)中,版本控制模塊104可以在版本控制結(jié)構(gòu)120中追蹤向前合并或向后合并(視情況而定)的進(jìn)展。例如,在向前合并的情況下,版本控制結(jié)構(gòu)120可以指示復(fù)制頁(yè)面116的高速緩存行是否處于最終狀態(tài),即,復(fù)制頁(yè)面116的高速緩存行是否先前在塊508處被寫(xiě)入有應(yīng)用數(shù)據(jù)或者先前在塊514處經(jīng)由向前合并被復(fù)制有圖像頁(yè)面114的對(duì)應(yīng)高速緩存行。類(lèi)似地,在向后合并的情況下,版本控制結(jié)構(gòu)120可以指示圖像頁(yè)面114的高速緩存行是否處于最終狀態(tài),即,數(shù)據(jù)是否在塊512處經(jīng)由向后合并從復(fù)制頁(yè)面116的對(duì)應(yīng)高速緩存行被復(fù)制到圖像頁(yè)面114的高速緩存行(如果復(fù)制頁(yè)面116的該高速緩存行先前在塊508處被寫(xiě)入有應(yīng)用數(shù)據(jù)的話(huà))。在一些實(shí)現(xiàn)中,合并方向策略514可以基于應(yīng)用數(shù)據(jù)由塊508被寫(xiě)入到的復(fù)制頁(yè)面116的高速緩存行的數(shù)量(例如,百分比、計(jì)數(shù)等)或者映射到圖像頁(yè)面114的虛擬地址的數(shù)量。在塊514之后,方法500可以在塊516處結(jié)束。圖6是用于版本化和合并持久存儲(chǔ)器中的數(shù)據(jù)的示例方法600的流程圖。方法600可以在下面被描述為由諸如圖2的系統(tǒng)250的系統(tǒng)運(yùn)行或執(zhí)行。也可以使用各種其他合適的系統(tǒng),諸如例如圖1的系統(tǒng)150。方法600可以以存儲(chǔ)在至少一個(gè)機(jī)器可讀存儲(chǔ)介質(zhì)上并由系統(tǒng)250的至少一個(gè)處理器或控制器執(zhí)行的可執(zhí)行指令的形式和/或以電子電路的形式來(lái)實(shí)現(xiàn)。在本公開(kāi)的一些實(shí)現(xiàn)中,方法600的一個(gè)或多個(gè)塊可以基本上并發(fā)地或者以與圖6中所示的不同次序執(zhí)行。在本公開(kāi)的一些實(shí)現(xiàn)中,方法600可以包括比圖6中所示的更多或更少的塊。在一些實(shí)現(xiàn)中,方法600的一個(gè)或多個(gè)塊可以在某些時(shí)間是進(jìn)行中的和/或可以重復(fù)。方法600可以在塊602處開(kāi)始并繼續(xù)到塊604,在塊604中版本控制器200(更具體地,版本控制模塊,例如,204)可以從應(yīng)用210接收事務(wù)提交命令。塊604可以在許多方面與方法500的塊512類(lèi)似,并且在一些實(shí)現(xiàn)中,可以在方法500的塊512之后執(zhí)行方法600。例如,在塊604處接收到事務(wù)提交命令之前,版本控制器200可以已經(jīng)在持久存儲(chǔ)器(例如,212)中分配復(fù)制頁(yè)面(例如,216),可以已經(jīng)接收尋址到圖像頁(yè)面(例如,214)的高速緩存行的應(yīng)用數(shù)據(jù),可以已經(jīng)將接收到的應(yīng)用數(shù)據(jù)寫(xiě)入到與圖像頁(yè)面214的所尋址的高速緩存行對(duì)應(yīng)的復(fù)制頁(yè)面216的高速緩存行,并且可以已經(jīng)在版本控制結(jié)構(gòu)(例如,220)中追蹤應(yīng)用數(shù)據(jù)被寫(xiě)入到的復(fù)制頁(yè)面216的高速緩存行。在塊604處接收的事務(wù)提交命令可以是例如組合命令、分離命令或替換命令。在塊606處,如果事務(wù)提交命令是組合命令(在塊606處為“是”),則控制轉(zhuǎn)到將在下面描述的塊612。如果事務(wù)提交命令不是組合命令(在塊606處為“否”)而是分離命令(在塊608處為“是”),則控制轉(zhuǎn)到將在下面描述的塊618。如果事務(wù)提交命令不是組合命令(在塊606處為“否”)或分離命令(在塊608處為“否”)而是替換命令(在塊610處為“是”),則控制轉(zhuǎn)到塊622。塊622可以在許多方面類(lèi)似于方法500的塊514,并且系統(tǒng)250可以通過(guò)版本控制器200(更具體地,合并模塊206)基于合并方向策略通過(guò)將圖像頁(yè)面214合并到復(fù)制頁(yè)面216中(向前合并,例如230)或?qū)?fù)制頁(yè)面216合并到圖像頁(yè)面214中(向后合并,例如232)來(lái)生成最終頁(yè)面。如果事務(wù)提交命令既不是組合命令(在塊606處為“否”)、分離命令(在塊608處為“否”)也不是替換命令(在塊610處為“否”),則方法600可以在塊624處結(jié)束。在一些實(shí)現(xiàn)中,方法600可以包括用于處理其他事務(wù)提交命令-諸如刪除命令(如上面關(guān)于版本控制器200描述的)的功能。此外,應(yīng)當(dāng)理解,在一些實(shí)現(xiàn)中,塊606、608和610可以以其任何組合或作為單個(gè)塊執(zhí)行。如果事務(wù)提交命令是組合命令(在塊606處為“是”),則版本控制器200可以將來(lái)自第一事務(wù)的第一組復(fù)制頁(yè)面原子地組合或添加到來(lái)自第二事務(wù)的第二組復(fù)制頁(yè)面。在一些實(shí)現(xiàn)中,例如,可以通過(guò)在先執(zhí)行圖5的方法500來(lái)創(chuàng)建來(lái)自第一事務(wù)和第二事務(wù)兩者的復(fù)制頁(yè)面。當(dāng)?shù)谝唤M復(fù)制頁(yè)面和第二組復(fù)制頁(yè)面被組合時(shí),版本控制器200(更具體地,合并模塊206)可以執(zhí)行塊612以確定(例如,第一事務(wù)的)復(fù)制頁(yè)面和(例如,第二事務(wù)的)另一個(gè)復(fù)制頁(yè)面是否是同一圖像頁(yè)面的兩個(gè)版本。在塊614處,版本控制器200(更具體地,合并模塊206)可以確定是否存在沖突,沖突是數(shù)據(jù)被寫(xiě)入到(例如,第一事務(wù)的)復(fù)制頁(yè)面和(例如,第二事務(wù)的)另一個(gè)復(fù)制頁(yè)面兩者的對(duì)應(yīng)高速緩存行的情況。在塊616處,如果不存在沖突(如在塊614處所確定的),則版本控制器200(更具體地,合并模塊206)可以通過(guò)例如修改與復(fù)制頁(yè)面對(duì)應(yīng)的版本控制結(jié)構(gòu)的鏈接列表字段以并入和另一個(gè)復(fù)制頁(yè)面和/或反之亦然而將復(fù)制頁(yè)面和另一個(gè)復(fù)制頁(yè)面組合或鏈接。如果事務(wù)提交命令是分離命令(在塊606處為“是”),則控制可以轉(zhuǎn)到618,在618中版本控制器200(更具體地,合并模塊206)可以針對(duì)沒(méi)有應(yīng)用數(shù)據(jù)被寫(xiě)入到的復(fù)制頁(yè)面216的高速緩存行(根據(jù)版本控制結(jié)構(gòu)220)而將來(lái)自圖像頁(yè)面214的高速緩存行復(fù)制到復(fù)制頁(yè)面216。在塊620處,版本控制器200(更具體地,版本控制模塊204)可以刪除版本控制結(jié)構(gòu)220。版本控制器200可以將圖像頁(yè)面214和復(fù)制頁(yè)面216兩者的物理存儲(chǔ)器地址提供給處理器208和/或應(yīng)用210,使得兩個(gè)版本均可用于將來(lái)的事務(wù)。方法200可以例如,在塊610、616、620、622之后)最終繼續(xù)到塊624(,在塊624中方法200可以結(jié)束。圖7是用于版本化和合并持久存儲(chǔ)器中的數(shù)據(jù)的示例方法700的流程圖。方法700可以在下面被描述為由諸如圖2的系統(tǒng)250的系統(tǒng)運(yùn)行或執(zhí)行。也可以使用各種其他合適的系統(tǒng),諸如例如圖1的系統(tǒng)150。方法700可以以存儲(chǔ)在至少一個(gè)機(jī)器可讀存儲(chǔ)介質(zhì)上并由系統(tǒng)250的至少一個(gè)處理器或控制器執(zhí)行的可執(zhí)行指令的形式和/或以電子電路的形式來(lái)實(shí)現(xiàn)。在本公開(kāi)的一些實(shí)現(xiàn)中,方法700的一個(gè)或多個(gè)塊可以基本上并發(fā)地或以與圖7中所示的不同次序執(zhí)行。在本公開(kāi)的一些實(shí)現(xiàn)中,方法700可以包括比圖7中所示的更多或更少的塊。在一些實(shí)現(xiàn)中,方法700的一個(gè)或多個(gè)塊可以在某些時(shí)間是進(jìn)行中的和/或可以重復(fù)。方法700可以在塊702處開(kāi)始并繼續(xù)到塊704,在塊704中系統(tǒng)250可以從在處理器(例如,208)上執(zhí)行的應(yīng)用(例如,210)將附加的空閑頁(yè)面接收到持久存儲(chǔ)器(例如,212)中的空閑頁(yè)面隊(duì)列(例如,218)中。在塊706處,版本控制器200(更具體地,版本控制模塊,例如204)可以響應(yīng)于從應(yīng)用210接收到版本化圖像頁(yè)面(例如,214)以用于應(yīng)用210的原子事務(wù)的復(fù)制命令而從空閑頁(yè)面隊(duì)列218分配復(fù)制頁(yè)面(例如,216)。在塊708處,版本控制器200可以接收尋址到圖像頁(yè)面214的高速緩存行的應(yīng)用數(shù)據(jù),可以將應(yīng)用數(shù)據(jù)寫(xiě)入到與圖像頁(yè)面214的所尋址的高速緩存行對(duì)應(yīng)的復(fù)制頁(yè)面216的高速緩存行,并且可以(例如,通過(guò)將版本控制結(jié)構(gòu)220的高速緩存行有效字段的對(duì)應(yīng)位設(shè)置為有效)來(lái)在版本控制結(jié)構(gòu)(例如,220)中追蹤數(shù)據(jù)被寫(xiě)入到的復(fù)制頁(yè)面216的高速緩存行。在一些實(shí)現(xiàn)中,塊708可以在許多方面總體上類(lèi)似于方法500的塊506、508和510。在塊710處,如果復(fù)制命令包括向前合并提示,則控制轉(zhuǎn)到塊712,并且版本控制器200(具體地,存儲(chǔ)器周期調(diào)度器202)可以在接收到事務(wù)提交命令(如下面關(guān)于塊714描述的)之前并且在未使用的存儲(chǔ)器周期期間,將圖像頁(yè)面214的對(duì)應(yīng)高速緩存行復(fù)制到?jīng)]有應(yīng)用數(shù)據(jù)被寫(xiě)入到的復(fù)制頁(yè)面216的高速緩存行。如果復(fù)制命令不包括向前合并提示,則版本控制器200在接收到事務(wù)提交命令之前不將圖像頁(yè)面214的高速緩存行復(fù)制到復(fù)制頁(yè)面216。在塊714處,版本控制器200(更具體地,版本控制模塊204)可以從應(yīng)用210接收事務(wù)提交命令。結(jié)合事務(wù)提交命令,應(yīng)用210還可以向版本控制器200沖刷(例如,來(lái)自于處理器208的高速緩存的)經(jīng)修改的高速緩存行,并且作為響應(yīng),版本控制器200可以接收沖刷的高速緩存行并以與上面關(guān)于塊708描述的類(lèi)似的方式寫(xiě)入每個(gè)高速緩存行。應(yīng)用210可以例如在由版本控制器200接收到事務(wù)提交命令之前、與接收到事務(wù)提交命令并發(fā)地、或者在接收到事務(wù)提交命令之后,沖刷高速緩存行(并且版本控制器200可以接收沖刷的高速緩存行)。在塊718處,版本控制器200(即,合并模塊206)可以以類(lèi)似于方法500的塊514的方式基于合并方向策略通過(guò)將圖像頁(yè)面214合并到復(fù)制頁(yè)面216中(向前合并230)或者將復(fù)制頁(yè)面216合并到圖像頁(yè)面214中(向后合并232)來(lái)生成最終頁(yè)面。此外,在塊718處,版本控制器200(更具體地,版本控制模塊104)可以在版本控制結(jié)構(gòu)220中追蹤向前合并230或向后合并232(視具體情況而定)的進(jìn)展。例如,版本控制模塊104可以使用版本控制結(jié)構(gòu)220的高速緩存行有效字段來(lái)在每個(gè)高速緩存行基礎(chǔ)上追蹤合并進(jìn)展。特別地,高速緩存行有效字段可以指示高速緩存行是已經(jīng)通過(guò)向前合并230或向后合并232復(fù)制(并且因此被視為處于最終狀態(tài)),還是需要在向前合并230或向后合并232下復(fù)制(并且因此被視為尚未處于最終狀態(tài))。在塊718期間,當(dāng)版本控制器200正在合并圖像頁(yè)面214和復(fù)制頁(yè)面216以生成最終頁(yè)面時(shí),版本控制器200可以控制對(duì)持久存儲(chǔ)器212的訪問(wèn),使得處理器208(包括在處理器208上執(zhí)行的任何應(yīng)用或過(guò)程,諸如應(yīng)用210)可以在嘗試訪問(wèn)圖像頁(yè)面214或復(fù)制頁(yè)面216時(shí)有效地訪問(wèn)最終頁(yè)面。在一些實(shí)現(xiàn)中,可以理解,因?yàn)榘姹究刂破?00在版本控制結(jié)構(gòu)220中追蹤哪些高速緩存行相對(duì)于向前或向后合并(視情況而定)處于最終狀態(tài),所以處理器208可以訪問(wèn)(讀取或?qū)懭耄┳罱K頁(yè)面中的數(shù)據(jù),如同最終頁(yè)面完成了一樣,即使版本控制器200還處于生成最終頁(yè)面的過(guò)程中并且有效高速緩存行可能分散或散布在圖像頁(yè)面214和復(fù)制頁(yè)面216之間也是如此。在塊718期間,版本控制器200可以從處理器208接收數(shù)據(jù)訪問(wèn)請(qǐng)求(讀取或?qū)懭耄?,所述?shù)據(jù)訪問(wèn)請(qǐng)求尋址到最終頁(yè)面,并且更具體地尋址到未達(dá)到其最終狀態(tài)的圖像頁(yè)面214或復(fù)制頁(yè)面216的高速緩存行,諸如例如針對(duì)向前合并230還要從圖像頁(yè)面214復(fù)制的復(fù)制頁(yè)面216的高速緩存行、或根據(jù)向后合并232還要從復(fù)制頁(yè)面216復(fù)制的圖像頁(yè)面214的高速緩存行。這樣的數(shù)據(jù)訪問(wèn)請(qǐng)求可以潛在地與在塊718處正在進(jìn)行的合并沖突(正在進(jìn)行的合并活動(dòng)(包括在塊218期間要復(fù)制的高速緩存行的物理存儲(chǔ)器地址)可以在高速緩存行中在飛行中表(in-flighttable)中追蹤)。例如,如果數(shù)據(jù)訪問(wèn)請(qǐng)求是在該高速緩存行達(dá)到其最終狀態(tài)之前將新數(shù)據(jù)寫(xiě)入到最終頁(yè)面的高速緩存行,則最終頁(yè)面的高速緩存行中的該新數(shù)據(jù)可能最終通過(guò)塊218的向前或向后合并錯(cuò)誤地改寫(xiě)。為了減輕這樣的沖突,版本控制器200的存儲(chǔ)器周期調(diào)度器200可以通過(guò)以下沖突避免動(dòng)作中的至少一個(gè)來(lái)管理數(shù)據(jù)訪問(wèn)。在一些實(shí)現(xiàn)中,如果高速緩存行有效字段的對(duì)應(yīng)位無(wú)效,則版本控制器200可以將數(shù)據(jù)訪問(wèn)請(qǐng)求(特別是對(duì)于讀取請(qǐng)求)尋址到圖像頁(yè)面214的高速緩存行,并且如果對(duì)應(yīng)的高速緩存行有效字段有效,則可以將請(qǐng)求尋址到復(fù)制頁(yè)面216。在一些實(shí)現(xiàn)中,版本控制器200(更具體地,存儲(chǔ)器周期調(diào)度器202)可以通過(guò)例如將數(shù)據(jù)訪問(wèn)請(qǐng)求調(diào)度成在對(duì)應(yīng)的高速緩存行已經(jīng)按照向前合并230或向后合并232被復(fù)制并因此達(dá)到其最終狀態(tài)之后發(fā)生來(lái)管理由于數(shù)據(jù)訪問(wèn)請(qǐng)求(即,讀取或?qū)懭胝?qǐng)求)引起的調(diào)度沖突。在塊720處,版本控制器200(即,版本控制模塊204)可以向應(yīng)用210(和/或在一些實(shí)現(xiàn)中向處理器208)提供最終頁(yè)面的物理存儲(chǔ)器地址。在塊722處,版本控制器200(更具體地,版本控制模塊204)可以移除處理器208中(或更一般地,系統(tǒng)250中)的對(duì)棄用頁(yè)面的引用,或者可以使得對(duì)棄用頁(yè)面的引用從處理器208移除,棄用頁(yè)面是在塊718中未被合并成的圖像頁(yè)面214或復(fù)制頁(yè)面216中的任何一個(gè)。換句話(huà)說(shuō),如果在塊718中執(zhí)行向前合并以形成最終頁(yè)面,則圖像頁(yè)面214可以被視為棄用頁(yè)面,并且如果在塊718中執(zhí)行向后合并,則復(fù)制頁(yè)面214可以被視為棄用頁(yè)面。例如,處理器208中對(duì)棄用頁(yè)面的引用可以在頁(yè)表中或者在應(yīng)用或過(guò)程(諸如應(yīng)用210)中。在一些實(shí)現(xiàn)中,處理器208響應(yīng)于來(lái)自版本控制器200的指令或請(qǐng)求而移除對(duì)棄用頁(yè)面的引用。在塊724處,版本控制器200(更具體地,版本控制模塊204)可以解除分配棄用頁(yè)面。在一些實(shí)現(xiàn)中,版本控制器200可以在執(zhí)行塊724以解除分配棄用頁(yè)面之前等待直到塊722完成(并且移除處理器208中對(duì)棄用頁(yè)面的引用)。例如,版本控制器200可以等待和接收來(lái)自處理器208的釋放命令,該釋放命令發(fā)信號(hào)通知或指示對(duì)棄用頁(yè)面的引用已經(jīng)被移除,并且塊722已經(jīng)完成。在塊726處,版本控制器200(更具體地,版本控制模塊204)可以解除分配版本控制結(jié)構(gòu)220。在一些實(shí)現(xiàn)中,版本控制器200可以在執(zhí)行塊726之前等待直到塊722完成。例如,版本控制器200可以在執(zhí)行塊726之前等待和接收來(lái)自處理器208的釋放命令(它可以是上面在塊724處描述的相同的釋放命令)。更具體地,在塊722完成并且版本控制器200從處理器208接收到釋放命令之后,例如,版本控制器200可以同時(shí)或順序地執(zhí)行塊724和塊726(例如,通過(guò)在塊726之前開(kāi)始?jí)K724或者通過(guò)在塊724之前開(kāi)始?jí)K726)。在塊726之后,方法200可以在塊728處結(jié)束。圖8是圖示根據(jù)示例實(shí)現(xiàn)的系統(tǒng)800的框圖,系統(tǒng)800包括編碼有版本化和合并持久存儲(chǔ)器中的數(shù)據(jù)的指令的機(jī)器可讀介質(zhì)。在一些示例實(shí)現(xiàn)中,系統(tǒng)800可以是或形成計(jì)算設(shè)備的一部分,所述計(jì)算設(shè)備諸如服務(wù)器、工作站、臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算設(shè)備、移動(dòng)設(shè)備等。在一些實(shí)現(xiàn)中,系統(tǒng)800是基于處理器的系統(tǒng),并且可以包括耦合到機(jī)器可讀介質(zhì)804的處理器802。處理器802可以包括單核處理器、多核處理器、專(zhuān)用集成電路、現(xiàn)場(chǎng)可編程門(mén)陣列和/或適于從機(jī)器可讀介質(zhì)804檢索和/或執(zhí)行指令(例如,指令806、808、810、812、814)以執(zhí)行本文所討論的各種功能的其他硬件設(shè)備。此外或替代地,處理器802可以包括用于執(zhí)行本文描述的功能(包括指令806、808、810、812和/或814的功能)的電子電路。關(guān)于在圖8中表示為框的可執(zhí)行指令,應(yīng)當(dāng)理解,在替代實(shí)現(xiàn)中,包括在一個(gè)框內(nèi)的可執(zhí)行指令和/或電子電路的部分或全部可以被包括在圖中所示的不同框中或未示出的不同框中。機(jī)器可讀介質(zhì)804可以是適于存儲(chǔ)可執(zhí)行指令的任何介質(zhì),諸如隨機(jī)訪問(wèn)存儲(chǔ)器(ram)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、閃速存儲(chǔ)器、硬盤(pán)驅(qū)動(dòng)器、光盤(pán)等。在一些示例實(shí)現(xiàn)中,機(jī)器可讀介質(zhì)804可以是有形的非暫時(shí)性介質(zhì),其中術(shù)語(yǔ)“非暫時(shí)性”不包括暫時(shí)性的傳播信號(hào)。機(jī)器可讀介質(zhì)804可以被設(shè)置在系統(tǒng)800內(nèi),如圖8中所示,在這種情況下,可執(zhí)行指令可以被視為“安裝”在系統(tǒng)800上。替代地,機(jī)器可讀介質(zhì)804可以是例如便攜式(例如外部)存儲(chǔ)介質(zhì),所述便攜式(例如外部)存儲(chǔ)介質(zhì)允許系統(tǒng)800遠(yuǎn)程執(zhí)行指令或從存儲(chǔ)介質(zhì)下載指令。在該情況下,可執(zhí)行指令可以是“安裝包”的一部分。如下文進(jìn)一步描述的,機(jī)器可讀介質(zhì)804可以被編碼有一組可執(zhí)行指令806、808、810、812、814。指令806當(dāng)由處理器802執(zhí)行時(shí),可以在從在基于處理器的系統(tǒng)800上執(zhí)行的應(yīng)用接收到版本化圖像頁(yè)面以用于原子事務(wù)的復(fù)制命令時(shí)在持久存儲(chǔ)器中分配復(fù)制頁(yè)面。指令808當(dāng)由處理器802執(zhí)行時(shí)可以接收尋址到圖像頁(yè)面的高速緩存行的應(yīng)用數(shù)據(jù)。例如,應(yīng)用數(shù)據(jù)可以從在處理器802上執(zhí)行(或者更一般地,在基于處理器的系統(tǒng)800上執(zhí)行)的應(yīng)用或過(guò)程接收。指令810當(dāng)由處理器802執(zhí)行時(shí)可以將接收到(例如,通過(guò)指令808接收到的)的應(yīng)用數(shù)據(jù)寫(xiě)入到與圖像頁(yè)面的所尋址的高速緩存行對(duì)應(yīng)的復(fù)制頁(yè)面的高速緩存行。指令812當(dāng)由處理器802執(zhí)行時(shí)可以在版本控制結(jié)構(gòu)中追蹤應(yīng)用數(shù)據(jù)被寫(xiě)入(例如,通過(guò)指令810寫(xiě)入)到的復(fù)制頁(yè)面的高速緩存行。指令814當(dāng)由處理器802執(zhí)行時(shí)可以響應(yīng)于接收到替換型事務(wù)提交命令,而取決于合并方向策略通過(guò)將圖像頁(yè)面向前合并到復(fù)制頁(yè)面中或者將復(fù)制頁(yè)面向后合并到圖像頁(yè)面中來(lái)生成最終頁(yè)面。在一些實(shí)現(xiàn)中,可以從發(fā)送復(fù)制命令和/或應(yīng)用數(shù)據(jù)的處理器802(或基于處理器的系統(tǒng)800)上執(zhí)行的應(yīng)用或過(guò)程接收事務(wù)提交命令。在一些實(shí)現(xiàn)中,合并方向策略基于應(yīng)用數(shù)據(jù)被寫(xiě)入到的復(fù)制頁(yè)面的高速緩存行的數(shù)量或者被映射到圖像頁(yè)面的基于處理器的系統(tǒng)800的頁(yè)表(或更具體地,處理器802的頁(yè)表)中的虛擬地址的數(shù)量。圖9是圖示根據(jù)示例實(shí)現(xiàn)的系統(tǒng)900的框圖,系統(tǒng)900包括編碼有版本化和合并持久存儲(chǔ)器中的數(shù)據(jù)的指令的機(jī)器可讀介質(zhì)。在一些示例實(shí)現(xiàn)中,系統(tǒng)900可以是或形成計(jì)算設(shè)備的一部分,所述計(jì)算設(shè)備諸如服務(wù)器、工作站、臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算設(shè)備、移動(dòng)設(shè)備等。在一些實(shí)現(xiàn)中,系統(tǒng)900是基于處理器的系統(tǒng),并且可以包括耦合到機(jī)器可讀介質(zhì)904的處理器902。處理器902可以包括單核處理器、多核處理器、專(zhuān)用集成電路、現(xiàn)場(chǎng)可編程門(mén)陣列和/或適于從機(jī)器可讀介質(zhì)904檢索和/或執(zhí)行指令(例如,指令906、908)以執(zhí)行本文討論的各種功能的其他硬件設(shè)備。此外或替代地,處理器902可以包括用于執(zhí)行本文描述的功能(包括指令906、908的功能)的電子電路。關(guān)于在圖9中表示為框的可執(zhí)行指令,應(yīng)當(dāng)理解,在替代實(shí)現(xiàn)中,包括在一個(gè)框內(nèi)的可執(zhí)行指令和/或電子電路的部分或全部可以被包括在圖中所示的不同框中或未示出的不同框中。機(jī)器可讀介質(zhì)904可以是適于存儲(chǔ)可執(zhí)行指令的任何介質(zhì),諸如隨機(jī)訪問(wèn)存儲(chǔ)器(ram)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、閃速存儲(chǔ)器、硬盤(pán)驅(qū)動(dòng)器、光盤(pán)等。在一些示例實(shí)現(xiàn)中,機(jī)器可讀介質(zhì)904可以是有形的非暫時(shí)性介質(zhì),其中術(shù)語(yǔ)“非暫時(shí)性”不包括暫時(shí)性的傳播信號(hào)。機(jī)器可讀介質(zhì)904可以被設(shè)置在系統(tǒng)900內(nèi),如圖9中所示,在這種情況下,可執(zhí)行指令可以被視為“安裝”在系統(tǒng)900上。替代地,機(jī)器可讀介質(zhì)904可以是例如便攜式(例如外部)存儲(chǔ)介質(zhì),所述便攜式(例如外部)存儲(chǔ)介質(zhì)允許系統(tǒng)900遠(yuǎn)程執(zhí)行指令或從存儲(chǔ)介質(zhì)下載指令。在該情況下,可執(zhí)行指令可以是“安裝包”的一部分。如下文進(jìn)一步描述的,機(jī)器可讀介質(zhì)904可以被編碼有一組可執(zhí)行指令906、908。指令906當(dāng)由處理器902執(zhí)行時(shí)可以對(duì)接收到分離型事務(wù)提交命令做出響應(yīng),并針對(duì)沒(méi)有應(yīng)用數(shù)據(jù)被寫(xiě)入到的復(fù)制頁(yè)面的高速緩存行將高速緩存行從圖像頁(yè)面復(fù)制到復(fù)制頁(yè)面,并且刪除版本控制結(jié)構(gòu)。在一些實(shí)現(xiàn)中,指令906可以向應(yīng)用提供復(fù)制頁(yè)面的和圖像頁(yè)面的物理存儲(chǔ)器地址。指令908當(dāng)由處理器902執(zhí)行時(shí)可以對(duì)接收到組合型事務(wù)提交命令做出響應(yīng),確定復(fù)制頁(yè)面和另一個(gè)復(fù)制頁(yè)面是否是同一圖像頁(yè)面的兩個(gè)版本,確定是否存在沖突,沖突是數(shù)據(jù)被寫(xiě)入到復(fù)制頁(yè)面和另一個(gè)復(fù)制頁(yè)面這兩者的對(duì)應(yīng)高速緩存行的情況,并且如果不存在沖突,則將復(fù)制頁(yè)面和另一個(gè)復(fù)制頁(yè)面鏈接或組合。在一些實(shí)現(xiàn)中,可以從在處理器902上執(zhí)行(或者更一般地,在基于處理器的系統(tǒng)900上執(zhí)行)的應(yīng)用或過(guò)程接收分離型或組合型事務(wù)命令。鑒于上述描述,可以理解,用于版本化持久存儲(chǔ)器上的數(shù)據(jù)的操作(諸如數(shù)據(jù)復(fù)制和版本合并/替換)可以從計(jì)算系統(tǒng)的處理器卸載到版本控制器,并且還可以以使數(shù)據(jù)復(fù)制和數(shù)據(jù)移動(dòng)最小化的高效方式執(zhí)行。此外,通過(guò)取決于合并方向策略在向前或向后方向上合并版本化數(shù)據(jù),可以在事務(wù)版本管理期間使數(shù)據(jù)復(fù)制最小化。在前面的描述中,闡述了許多細(xì)節(jié)以提供對(duì)本文公開(kāi)的主題的理解。然而,實(shí)現(xiàn)可以在沒(méi)有這些細(xì)節(jié)中的一些或全部的情況下實(shí)施。其他實(shí)現(xiàn)可以包括從以上討論的細(xì)節(jié)的修改和變化。意圖的是以下權(quán)利要求涵蓋這些修改和變化。當(dāng)前第1頁(yè)12當(dāng)前第1頁(yè)12