本說明書涉及用于在存儲(chǔ)器內(nèi)異步地執(zhí)行復(fù)制操作的技術(shù)。
背景技術(shù):
在軟件應(yīng)用執(zhí)行期間,處理器可能需要頻繁地在存儲(chǔ)器內(nèi)復(fù)制或者移動(dòng)數(shù)據(jù)。例如,網(wǎng)絡(luò)堆棧可以在存儲(chǔ)器內(nèi)將數(shù)據(jù)從在第一位置處的用戶緩沖區(qū)移動(dòng)到在可通過網(wǎng)絡(luò)接口訪問的第二位置處的網(wǎng)絡(luò)緩沖區(qū)以便發(fā)送該數(shù)據(jù)。軟件應(yīng)用還可以執(zhí)行在存儲(chǔ)器內(nèi)將數(shù)據(jù)顯式地從一個(gè)位置復(fù)制到另一個(gè)位置。當(dāng)復(fù)制大量數(shù)據(jù)時(shí),如果在等待復(fù)制操作完成的同時(shí)處理器的執(zhí)行阻塞,則可能會(huì)發(fā)生處理延遲。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)的主題大體上涉及計(jì)算機(jī)存儲(chǔ)器,并且具體地涉及用于在存儲(chǔ)器內(nèi)異步地執(zhí)行復(fù)制操作的技術(shù)。
通常,可以將在本說明書中描述的主題的一個(gè)創(chuàng)新方面體現(xiàn)在以下方法中,該方法包括:在通過處理器執(zhí)行軟件應(yīng)用期間,通過與處理器分離的復(fù)制處理器接收對(duì)異步數(shù)據(jù)復(fù)制操作的請(qǐng)求以在能夠由復(fù)制處理器訪問的存儲(chǔ)器內(nèi)復(fù)制數(shù)據(jù),其中,該請(qǐng)求是從復(fù)制管理器接收的,所述復(fù)制管理器能夠由在管理軟件應(yīng)用的執(zhí)行的操作系統(tǒng)的用戶空間中的軟件應(yīng)用訪問;響應(yīng)于該請(qǐng)求,通過復(fù)制處理器發(fā)起異步數(shù)據(jù)復(fù)制操作;通過處理器繼續(xù)執(zhí)行軟件應(yīng)用;通過復(fù)制處理器確定異步數(shù)據(jù)操作系統(tǒng)已經(jīng)完成;響應(yīng)于確定異步復(fù)制操作已經(jīng)完成,通過復(fù)制處理器選擇性地通知軟件應(yīng)用異步復(fù)制操作已經(jīng)完成。
該方面的其它實(shí)施例包括:配置為執(zhí)行所述方法的動(dòng)作的、編碼在計(jì)算機(jī)存儲(chǔ)裝置上的對(duì)應(yīng)系統(tǒng)、設(shè)備、和計(jì)算機(jī)程序。
可以實(shí)施本說明書中描述的主題的具體實(shí)施例,以便實(shí)現(xiàn)一個(gè)或者多個(gè)下面的優(yōu)點(diǎn)。所描述的技術(shù)可以使用虛擬(或者內(nèi)核地址)作為具有可能會(huì)跨頁面邊界的任意對(duì)齊和任意長度的參數(shù)。所述技術(shù)可以通過允許中央處理單元(cpu)將可以由處理器完成的其它工作與復(fù)制操作重疊來異步地實(shí)現(xiàn)復(fù)制,并且,如果處理器正在從事復(fù)制操作,則其無法異步地實(shí)現(xiàn)復(fù)制。所述技術(shù)可以允許復(fù)制完成的同步通知或者異步通知。進(jìn)一步地,對(duì)是否應(yīng)該將源地址或者目的地地址及其范圍的內(nèi)容帶入高速緩存中進(jìn)行控制。通過在不涉及操作系統(tǒng)內(nèi)核的情況下使用虛擬地址來允許軟件應(yīng)用發(fā)起異步復(fù)制操作,可以減少在復(fù)制操作期間在用戶空間與內(nèi)核空間之間的模式切換次數(shù),這會(huì)使性能得到提高。另外,這些控制將允許更為有效地利用高速緩存,產(chǎn)生性能的改進(jìn)。
在下面的附圖和描述中陳述了本說明書描述的主題的一個(gè)或者多個(gè)實(shí)施例的細(xì)節(jié)。本主題的其它特征、方面、和優(yōu)點(diǎn)將通過描述、附圖、和權(quán)利要求書而變得顯而易見。
附圖說明
圖1是系統(tǒng)的框圖,在該系統(tǒng)中可以實(shí)施異步復(fù)制過程。
圖2是用于提供異步復(fù)制操作的示例過程的流程圖。
圖3描繪了用于異步復(fù)制操作的示例過程。
圖4是可以用于實(shí)施本文件描述的系統(tǒng)和方法的計(jì)算裝置的框圖。
在各個(gè)附圖中,類似的附圖標(biāo)記和名稱指示類似的元件。
具體實(shí)施方式
本公開涉及提供用于異步存儲(chǔ)器復(fù)制和高速緩存管理的技術(shù)。
很多現(xiàn)代的處理器在高時(shí)鐘速度下運(yùn)行,這意味著在處理中即使是輕微延遲都會(huì)導(dǎo)致大量的周期丟失和性能下降。例如,能夠每秒執(zhí)行100億個(gè)指令的處理器可以在等待阻塞操作完成所花費(fèi)的1納秒內(nèi)執(zhí)行10個(gè)指令。在許多情況下,與處理器的速度相比,存儲(chǔ)器復(fù)制操作可以是相對(duì)緩慢的操作。在復(fù)制操作期間,如果處理器正在從事于用于復(fù)制的負(fù)載存儲(chǔ)操作,則處理器無法執(zhí)行其它工作。在大量數(shù)據(jù)復(fù)制的情況下,在處理器等待復(fù)制完成時(shí)可能會(huì)浪費(fèi)潛在有用的處理器周期。如果這種復(fù)制操作是頻繁的,則處理器的效率會(huì)受到百分之幾甚或更多的阻礙。
而且,在許多情況下,復(fù)制數(shù)據(jù)使數(shù)據(jù)進(jìn)入到高速緩存中。如果不再相對(duì)頻繁地重復(fù)使用數(shù)據(jù)或者根本不再使用數(shù)據(jù),則使數(shù)據(jù)進(jìn)入到高速緩存中會(huì)污染高速緩存內(nèi)的工作集并且妨礙其它有可能更有用的數(shù)據(jù)被高速緩存或者從高速緩存中移除。
本公開涉及用于數(shù)據(jù)的異步復(fù)制的技術(shù)。一種示例技術(shù)包括使用與中央處理單元(cpu)分離的復(fù)制處理器來獨(dú)立于cpu異步地復(fù)制數(shù)據(jù)。當(dāng)復(fù)制處理器執(zhí)行異步復(fù)制時(shí),cpu可以執(zhí)行其它操作。復(fù)制處理器的異步復(fù)制操作可以通過可從用戶空間訪問的異步復(fù)制管理器(acm)來控制。復(fù)制處理器可以能夠?qū)⑻摂M地址當(dāng)作參數(shù),從而可以在這些復(fù)制操作期間減少或者消除對(duì)從用戶空間到內(nèi)核空間或者從內(nèi)核空間到用戶空間的昂貴模式切換的需求。復(fù)制處理器可以通知異步復(fù)制管理器復(fù)制已經(jīng)完成,或者異步復(fù)制管理器可以輪詢復(fù)制處理器以確定復(fù)制何時(shí)已經(jīng)完成。異步復(fù)制管理器還可以包括高速緩存管理。例如,可以通過異步復(fù)制管理器來設(shè)置高速緩存標(biāo)記以確定復(fù)制處理器是否對(duì)數(shù)據(jù)進(jìn)行了高速緩存??梢栽诓粚?duì)操作系統(tǒng)存儲(chǔ)器訪問操作進(jìn)行顯著改變的情況下實(shí)施所描述的異步復(fù)制技術(shù)。
圖1是系統(tǒng)100的框圖,在該系統(tǒng)100中可以實(shí)施異步復(fù)制過程。如圖所示,系統(tǒng)100包括耦合至高速緩存112和存儲(chǔ)器120的處理器102。操作系統(tǒng)110在處理器102上執(zhí)行并且與處理器102交互。操作系統(tǒng)110管理一個(gè)或者多個(gè)用戶應(yīng)用108和異步復(fù)制管理器(acm)106。異步復(fù)制管理器106也耦合至復(fù)制處理器104。復(fù)制處理器104也耦合至存儲(chǔ)器120和高速緩存112。
系統(tǒng)100包括處理器102。在一些實(shí)施方式中,處理器102可以是包括在計(jì)算機(jī)系統(tǒng)中的通用中央處理單元(cpu)。處理器102也可以是專用處理器或者嵌入式處理器、或者用于特定系統(tǒng)或者子系統(tǒng)的專用控制器。雖然在圖1a至1b中示出了單個(gè)處理器102,但是在一些實(shí)施方式中,可以包括兩個(gè)或者更多個(gè)處理器102。在一些實(shí)施方式中,處理器102可以是x86兼容處理器,或者還可以是另一種類型的處理器。
在一些實(shí)施方式中,處理器102可以包括一個(gè)或者多個(gè)處理器核心(未示出),每一個(gè)處理器核心都能夠執(zhí)行一個(gè)或者多個(gè)執(zhí)行線程。處理器核心可以彼此同時(shí)地執(zhí)行這些線程。在一些實(shí)施方式中,處理器102、處理器核心、或者這兩種部件都可以包括用于對(duì)數(shù)據(jù)進(jìn)行高速緩存的集成存儲(chǔ)裝置。處理器102或者處理器核心還可以包括微代碼,該微代碼包括限定部件的行為的指令。
該系統(tǒng)包括配置為在存儲(chǔ)器120內(nèi)執(zhí)行數(shù)據(jù)復(fù)制操作的復(fù)制處理器104。該復(fù)制處理器104可以并入處理器102中(例如,作為與處理器核心分離的部件)。在一些實(shí)施方式中,復(fù)制處理器104集成在與處理器102相同的封裝中,或者是包括處理器102的“芯片上系統(tǒng)”的一部分。復(fù)制處理器104還可以是與處理器102分離的硬件部件或者耦合至處理器102的分離的模塊。可以將復(fù)制處理器104實(shí)施為集成輸入/輸出裝置的一部分或者實(shí)施為直接存儲(chǔ)器存取(dma)系統(tǒng)的一部分。
系統(tǒng)100還包括一個(gè)存儲(chǔ)器120或者多個(gè)存儲(chǔ)器120。存儲(chǔ)器120可以包括任何類型的存儲(chǔ)器或者數(shù)據(jù)庫模塊,并且可以采取易失性存儲(chǔ)器和/或非易失性存儲(chǔ)器的形式,包括但不限于,磁性介質(zhì)、光學(xué)介質(zhì)、隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、或者任何其它合適的本地或者遠(yuǎn)程存儲(chǔ)器部件。存儲(chǔ)器120還可以包括集成到處理器102、處理器核心、或者在系統(tǒng)100內(nèi)的其它部件中的高速緩存存儲(chǔ)器。
系統(tǒng)100還包括操作系統(tǒng)110。在操作中,操作系統(tǒng)110在處理器102上執(zhí)行,并且指導(dǎo)處理器102執(zhí)行一個(gè)或者多個(gè)用戶應(yīng)用108。操作系統(tǒng)140可以是在處理器102上執(zhí)行的商業(yè)操作系統(tǒng)或者開放源代碼操作系統(tǒng)。
由處理器102執(zhí)行的軟件應(yīng)用108可以引起異步復(fù)制操作。軟件應(yīng)用108可以與異步復(fù)制管理器106接口連接以執(zhí)行并且協(xié)調(diào)異步復(fù)制。例如,應(yīng)用108可以調(diào)用在異步復(fù)制管理器106中限定的函數(shù)以發(fā)起異步復(fù)制。作為響應(yīng),異步復(fù)制管理器106可以請(qǐng)求復(fù)制處理器104在存儲(chǔ)器120中執(zhí)行數(shù)據(jù)復(fù)制。在一些情況下,可以從用于異步復(fù)制操作的應(yīng)用108顯式地調(diào)用異步復(fù)制管理器106,或者可以響應(yīng)于對(duì)用于復(fù)制存儲(chǔ)器的標(biāo)準(zhǔn)操作系統(tǒng)例程(例如,memcpy)的調(diào)用而調(diào)用異步復(fù)制管理器106。在這種情況下,memcpy的實(shí)施方式可以包括確定是否應(yīng)該異步地執(zhí)行特定復(fù)制操作的指令,并且,如果應(yīng)該異步地執(zhí)行特定復(fù)制操作,則發(fā)起異步復(fù)制。這種實(shí)施方式可以在不對(duì)軟件應(yīng)用108進(jìn)行改變的情況下實(shí)現(xiàn)對(duì)本技術(shù)的利用。
當(dāng)復(fù)制處理器104與處理器102分離時(shí),處理器102能夠在異步復(fù)制操作期間自由地繼續(xù)執(zhí)行。例如,處理器102可以在復(fù)制操作期間繼續(xù)執(zhí)行應(yīng)用108、另一種應(yīng)用、或者其它操作。處理器102可以繼續(xù)執(zhí)行軟件應(yīng)用108的其它指令,這些指令不取決于復(fù)制操作的結(jié)果。在另一示例中,處理器102可以對(duì)另一種軟件應(yīng)用執(zhí)行上下文切換并且在執(zhí)行異步復(fù)制操作的同時(shí)執(zhí)行該應(yīng)用。而且,當(dāng)可經(jīng)由異步復(fù)制管理器106從用戶空間訪問復(fù)制處理器104時(shí),在執(zhí)行復(fù)制操作時(shí)任何上下文切換都可能是不必要的。具體地,可能不需要處理器102對(duì)操作系統(tǒng)110執(zhí)行模式切換以便發(fā)起異步復(fù)制操作,從而引起性能的改進(jìn)。在一些情況下,如果資源被占用,則可以將復(fù)制操作默認(rèn)設(shè)置成標(biāo)準(zhǔn)同步負(fù)載存儲(chǔ)技術(shù)。例如,如果復(fù)制處理器104不可用于執(zhí)行異步復(fù)制操作,則操作系統(tǒng)110可以使用處理器102執(zhí)行標(biāo)準(zhǔn)復(fù)制操作。
異步復(fù)制管理器106還可以確保存儲(chǔ)器在異步復(fù)制操作期間仍然受到保護(hù)。例如,在異步復(fù)制操作之前或者期間,異步復(fù)制管理器106可以保護(hù)在存儲(chǔ)器120中的位置,所述位置與在存儲(chǔ)器120內(nèi)的從其復(fù)制數(shù)據(jù)的源地址和在存儲(chǔ)器120內(nèi)的用于接收數(shù)據(jù)的目的地地址對(duì)應(yīng)。在復(fù)制操作完成之后,異步復(fù)制管理器106可以對(duì)存儲(chǔ)器位置撤銷保護(hù)以便允許訪問。
在一些情況下,異步復(fù)制管理器106可以在不“固定(pinning)”與位置相關(guān)聯(lián)的存儲(chǔ)器頁面的情況下保護(hù)在存儲(chǔ)器120中的位置。固定存儲(chǔ)器頁面涉及對(duì)頁面進(jìn)行標(biāo)記,從而使得頁面不會(huì)被交換到在存儲(chǔ)器120外的物理存儲(chǔ)器位置,諸如,例如,第二存儲(chǔ)位置(例如,硬盤驅(qū)動(dòng)器)。在不固定存儲(chǔ)器頁面的實(shí)施方式中,異步復(fù)制管理器106可以保護(hù)與物理位置對(duì)應(yīng)的虛擬存儲(chǔ)器頁面。
在復(fù)制操作已經(jīng)完成之后,異步復(fù)制管理器106然后可以對(duì)在存儲(chǔ)器120中的位置撤銷保護(hù)。在一些情況下,異步復(fù)制管理器106可以使用轉(zhuǎn)換后備緩沖區(qū)(tlb)來促進(jìn)異步復(fù)制操作。異步復(fù)制管理器106可以保持tlb與任何內(nèi)核重映射活動(dòng)同步以維持一致的頁面表。在一些情況下,在發(fā)生頁面錯(cuò)誤時(shí),異步復(fù)制管理器106可以生成精確的中斷。該精確的中斷可以包括信息,諸如,當(dāng)前正在復(fù)制并且無法寫入的存儲(chǔ)器位置的指示。可以實(shí)施軟件應(yīng)用108以處理這種指示,諸如,通過在允許復(fù)制操作完成的特定時(shí)間量之后重試復(fù)制操作。在一些實(shí)施方式中,如果遇到頁面錯(cuò)誤,則可以通過常規(guī)負(fù)載/存儲(chǔ)復(fù)制機(jī)制來重試該操作。
在一些實(shí)施方式中,異步復(fù)制管理器106對(duì)復(fù)制處理器104的請(qǐng)求可以包括通知指示,該通知指示用于指示要如何處理異步復(fù)制操作完成的通知。通知指示可以,例如,向復(fù)制處理器104指示異步復(fù)制管理器106將進(jìn)行輪詢直到設(shè)置完成標(biāo)記為止。例如,復(fù)制處理器104可以在異步復(fù)制操作完成時(shí)將完成文字或者完成位寫入特定存儲(chǔ)器位置,并且異步復(fù)制管理器106可以輪詢?cè)摯鎯?chǔ)器位置以確定復(fù)制操作的狀態(tài)。通知指示可以,例如,向復(fù)制處理器104指示復(fù)制處理器104應(yīng)該在異步復(fù)制操作完成時(shí)向異步復(fù)制管理器106傳遞中斷。異步復(fù)制管理器106本身可以處理該中斷或者允許中斷處理程序來處理該中斷。
在一些實(shí)施方式中,異步復(fù)制管理器106可以提供用于異步地復(fù)制大量數(shù)據(jù)的技術(shù)。例如,異步復(fù)制管理器106可以限制一次復(fù)制的字節(jié)的數(shù)目。例如,可以將每一次復(fù)制的字節(jié)限制在一定數(shù)目內(nèi),諸如,512字節(jié)、64千字節(jié)、或者另一數(shù)目的字節(jié)。在一些情況下,可以將待復(fù)制的大量數(shù)據(jù)分為更小的部分。例如,可以在復(fù)制之前,將1gb的數(shù)據(jù)分為64kb部分。按照這種方式,其它復(fù)制操作不必在開始之前等待整個(gè)大數(shù)據(jù)文件被復(fù)制,而可以交錯(cuò)在復(fù)制劃分后的更小數(shù)據(jù)部分的操作內(nèi)。在一些情況下,異步復(fù)制管理器106可以在大量數(shù)據(jù)的復(fù)制期間切換,從而使得可以復(fù)制更小量的數(shù)據(jù)。例如,可以使大量數(shù)據(jù)復(fù)制操作暫停,從而使得,更小的數(shù)據(jù)復(fù)制操作不必等待大數(shù)據(jù)復(fù)制操作完成。例如,在大數(shù)據(jù)復(fù)制操作期間,異步復(fù)制管理器106可以保存信息,諸如,源地址、目的地地址、總字節(jié)數(shù)目、當(dāng)前存儲(chǔ)器位置、或者其它信息。在復(fù)制更小的數(shù)據(jù)之后,異步復(fù)制管理器106可以基于保存的信息來繼續(xù)大數(shù)據(jù)復(fù)制。在一些情況下,在處理器102上執(zhí)行的線程可以分別具有專用異步復(fù)制管理器106,并且在一些情況下,多個(gè)線程可以共享單個(gè)異步復(fù)制管理器106。在一些實(shí)施方式中,系統(tǒng)100可以包括多個(gè)復(fù)制管理器,從而允許將大復(fù)制操作并行成多個(gè)更小的復(fù)制操作。
在一些實(shí)施方式中,異步復(fù)制管理器106提供高速緩存控制。在一些情況下,應(yīng)用108可以用信號(hào)通知異步復(fù)制管理器106以確定高速緩存行為。例如,應(yīng)用108可以調(diào)用異步復(fù)制管理器106函數(shù),包括指示是否對(duì)數(shù)據(jù)(源或者目的)進(jìn)行高速緩存的高速緩存標(biāo)記。在一些實(shí)施方式中,異步復(fù)制管理器106可以確定是否對(duì)待復(fù)制的數(shù)據(jù)進(jìn)行高速緩存。例如,異步復(fù)制管理器106可以分析軟件應(yīng)用(例如,通過檢查待在當(dāng)前應(yīng)用上下文中執(zhí)行的未來指令或者過去執(zhí)行歷史)并且預(yù)測將來是否有可能使用復(fù)制的數(shù)據(jù)。如果將來有可能會(huì)使用該數(shù)據(jù),則異步復(fù)制管理器106可以確保對(duì)該數(shù)據(jù)進(jìn)行高速緩存,并且如果將來不可能會(huì)使用該數(shù)據(jù),則異步復(fù)制管理器106可以確保不對(duì)該數(shù)據(jù)進(jìn)行高速緩存。例如,異步復(fù)制管理器106可以在發(fā)送至復(fù)制處理器104的復(fù)制請(qǐng)求中包括高速緩存標(biāo)記值。例如,在網(wǎng)絡(luò)上下文中,在網(wǎng)絡(luò)緩沖區(qū)或者nicdma中的目的地?cái)?shù)據(jù)很少被重復(fù)使用,并且因此可以得益于不應(yīng)該對(duì)目的地?cái)?shù)據(jù)進(jìn)行高速緩存的信號(hào)。
圖2是用于提供異步復(fù)制操作的示例過程200的流程圖。過程200包括在應(yīng)用108、異步復(fù)制管理器(異步復(fù)制管理器)106、復(fù)制處理器104、和用于異步地復(fù)制數(shù)據(jù)的存儲(chǔ)器120之間的交互。在210中,應(yīng)用108將復(fù)制操作請(qǐng)求發(fā)送至異步復(fù)制管理器106。例如,應(yīng)用108可以在執(zhí)行期間調(diào)用在異步復(fù)制管理器106內(nèi)的一個(gè)或者多個(gè)函數(shù)并且提供關(guān)于所請(qǐng)求的復(fù)制操作的信息(諸如,源地址、目的地地址、用于復(fù)制的字節(jié)、是否應(yīng)該對(duì)數(shù)據(jù)進(jìn)行高速緩存的指示、在完成時(shí)的通知方法等)。
在215中,異步復(fù)制管理器106準(zhǔn)備復(fù)制操作。例如,異步復(fù)制管理器106可以分析所請(qǐng)求的操作,并且在請(qǐng)求該操作之前執(zhí)行各種任務(wù)。在一些情況下,異步復(fù)制管理器106可以在請(qǐng)求復(fù)制操作之前保護(hù)合適的存儲(chǔ)器位置(例如,用于該復(fù)制的源和目的地)。異步復(fù)制管理器106還可以分析所請(qǐng)求的復(fù)制操作,并且確定是否如限定一樣請(qǐng)求該操作或者將該操作分成多個(gè)復(fù)制操作,諸如,例如,在大復(fù)制操作的情況下。如上所述,異步復(fù)制管理器106還可以對(duì)虛擬存儲(chǔ)器部件(例如,頁面表、tlb等)執(zhí)行任何準(zhǔn)備以允許其在復(fù)制操作期間維持這些結(jié)構(gòu)的同步。異步復(fù)制管理器106還可以將從軟件應(yīng)用108發(fā)送的任何虛擬存儲(chǔ)器地址(例如,源地址和目的地地址)轉(zhuǎn)換成在存儲(chǔ)器內(nèi)的物理地存儲(chǔ)器地址。
在220中,異步復(fù)制管理器106將復(fù)制操作請(qǐng)求發(fā)送至復(fù)制處理器104。復(fù)制操作請(qǐng)求包括關(guān)于所請(qǐng)求的復(fù)制操作的信息(例如,源地址、目的地地址、用于復(fù)制的字節(jié)、是否應(yīng)該對(duì)數(shù)據(jù)進(jìn)行高速緩存的指示等)。在一些情況下,復(fù)制處理器104可以分析該請(qǐng)求以確定其目前是否可以執(zhí)行復(fù)制操作。如果不能執(zhí)行,諸如,如果另一復(fù)制操作正在進(jìn)行中,則復(fù)制處理器104可以將該請(qǐng)求排隊(duì)稍后執(zhí)行,或者可以向異步復(fù)制管理器106指示目前不能執(zhí)行該請(qǐng)求。在一些情況下,異步復(fù)制管理器106可以基于針對(duì)該操作的指示的優(yōu)先級(jí)來將復(fù)制操作排隊(duì),從而使得先于較低優(yōu)先級(jí)操作執(zhí)行較高優(yōu)先級(jí)的操作。
在225中,復(fù)制處理器104與存儲(chǔ)器120交互以執(zhí)行復(fù)制操作。在225中的復(fù)制操作期間,應(yīng)用108繼續(xù)在cpu上執(zhí)行,如205中所示。在235中,復(fù)制處理器104確定復(fù)制操作已經(jīng)完成。在240中,復(fù)制處理器104向異步復(fù)制管理器106指示所請(qǐng)求的復(fù)制操作已經(jīng)完成??梢允褂蒙鲜龈鞣N技術(shù)來傳送該指示。
在245中,異步復(fù)制管理器106在復(fù)制完成時(shí)結(jié)束復(fù)制操作。異步復(fù)制管理器106例如可以對(duì)任何之前保護(hù)的數(shù)據(jù)撤銷保護(hù)。在250中,異步復(fù)制管理器106向應(yīng)用108報(bào)告復(fù)制操作完成。在應(yīng)用108已經(jīng)指示不需要指示完成(例如,通過在初始函數(shù)調(diào)用中傳送這種指示)的情況下,可以省略該步驟。
圖3描繪了用于異步復(fù)制操作的示例過程300。例如,可以通過圖1中所示的系統(tǒng)100來實(shí)施過程300。在305中,通過復(fù)制處理器接收對(duì)異步復(fù)制操作的請(qǐng)求??梢栽谕ㄟ^與復(fù)制處理器分離的處理器執(zhí)行軟件應(yīng)用期間從該軟件應(yīng)用接收該請(qǐng)求。還可以從可由在管理軟件應(yīng)用的執(zhí)行的操作系統(tǒng)的用戶空間中的軟件應(yīng)用訪問的復(fù)制管理器接收請(qǐng)求。在一些情況下,可以在處理器不執(zhí)行模式切換的情況下生成該請(qǐng)求。
在310中,響應(yīng)于該請(qǐng)求通過復(fù)制處理器發(fā)起異步數(shù)據(jù)復(fù)制操作。在一些情況下,發(fā)起異步數(shù)據(jù)復(fù)制操作通過第一處理器來執(zhí)行,并且包括,第一處理器指令與第一處理器不同的第二處理器來執(zhí)行異步數(shù)據(jù)復(fù)制操作。例如,第一處理器可以是cpu并且該第一處理器指令第二處理器(復(fù)制處理器)執(zhí)行異步復(fù)制操作。在315中,通過處理器繼續(xù)執(zhí)行軟件應(yīng)用。軟件應(yīng)用的執(zhí)行可以在過程300中的所有步驟中連續(xù)地發(fā)生。
在320中,確定異步復(fù)制操作已經(jīng)完成。在325中,響應(yīng)于確定異步復(fù)制操作已經(jīng)完成,復(fù)制處理器選擇性地通知軟件應(yīng)用異步復(fù)制操作已經(jīng)完成。例如,復(fù)制處理器可以確定操作已經(jīng)完成并且將中斷發(fā)送至異步復(fù)制管理器,該異步復(fù)制管理器可以與軟件應(yīng)用交互。作為另一示例,復(fù)制處理器可以確定操作已經(jīng)完成并且設(shè)置異步復(fù)制管理器輪詢或者檢查的完成標(biāo)記。
圖4是可以用于實(shí)施該文件描述的系統(tǒng)和方法的計(jì)算裝置400和450(作為客戶端或者作為服務(wù)器或者多個(gè)服務(wù)器)的框圖。計(jì)算裝置400旨在表示各種形式的數(shù)字計(jì)算機(jī),諸如,膝上型計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、工作站、個(gè)人數(shù)字助理、服務(wù)器、刀片式服務(wù)器、大型計(jì)算機(jī)、和其它適合的計(jì)算機(jī)。計(jì)算裝置450旨在表示各種形式的移動(dòng)裝置,諸如,個(gè)人數(shù)字助理、蜂窩電話、智能手機(jī)、和其它類似的計(jì)算裝置。另外,計(jì)算裝置400或者450可以包括通用串行總線(usb)閃速驅(qū)動(dòng)。usb閃速驅(qū)動(dòng)可以存儲(chǔ)操作系統(tǒng)和其它應(yīng)用。usb閃存驅(qū)動(dòng)可以包括輸入/輸出部件,諸如,無線發(fā)射器或者可以插入到另一計(jì)算裝置的usb端口的usb連接器。本文所示的部件、它們的連接和關(guān)系、以及它們的功能僅僅旨在作為示例,并且不旨在限制本文件中描述的和/或要求的實(shí)施方式。
計(jì)算裝置400包括:處理器402、存儲(chǔ)器404、存儲(chǔ)裝置406、連接至存儲(chǔ)器404和高速擴(kuò)展端口410的高速接口408,和連接至低速總線414和存儲(chǔ)裝置406的低速接口412。每個(gè)部件402、404、406、408、410和412利用不同的總線互相連接,并且可以安裝在公共主板上或者根據(jù)需要以其它的方式安裝。處理器402可以對(duì)在計(jì)算裝置400內(nèi)的指令進(jìn)行處理,包括存儲(chǔ)在存儲(chǔ)器404中或者存儲(chǔ)裝置406上以用于在外部輸入/輸出裝置(諸如,耦合至高速接口408的顯示器416)上顯示gui的圖形信息的指令。在其它實(shí)施方式中,若需要,可以將多個(gè)處理器和/或多條總線與多個(gè)存儲(chǔ)器和多種存儲(chǔ)器一起使用。同樣,可以連接多個(gè)計(jì)算裝置400,每個(gè)裝置提供部分操作(例如,作為服務(wù)器庫、一組刀片式服務(wù)器、或者多處理器系統(tǒng))。
存儲(chǔ)器404存儲(chǔ)在計(jì)算裝置400內(nèi)的信息。在一種實(shí)施方式中,存儲(chǔ)器404是一個(gè)或者多個(gè)易失性存儲(chǔ)器單元。在另一實(shí)施方式中,存儲(chǔ)器404是一個(gè)或者多個(gè)非易失性存儲(chǔ)器單元。存儲(chǔ)器404還可以是另一種形式的計(jì)算機(jī)可讀介質(zhì),諸如,磁盤或者光盤。
存儲(chǔ)裝置406能夠?yàn)橛?jì)算裝置400提供海量存儲(chǔ)裝置。在一種實(shí)施方式中,存儲(chǔ)裝置406可以是或者可以包括計(jì)算機(jī)可讀介質(zhì),諸如,軟盤裝置、硬盤裝置、光盤裝置、或者磁帶裝置、閃速存儲(chǔ)器或者其它類似的固態(tài)存儲(chǔ)器裝置,或者裝置的陣列(包括存儲(chǔ)區(qū)域網(wǎng)絡(luò)或者其它配置的裝置)。計(jì)算機(jī)程序產(chǎn)品可以有形地體現(xiàn)為信息載體。計(jì)算機(jī)程序產(chǎn)品還可以包含指令,該指令在執(zhí)行時(shí)執(zhí)行一種或者多種方法,諸如,上文描述的那些方法。信息載體是計(jì)算機(jī)可讀介質(zhì)或者機(jī)器可讀介質(zhì),諸如,存儲(chǔ)器404、存儲(chǔ)裝置406、或者在處理器402上的存儲(chǔ)器。
高速控制器408管理計(jì)算裝置400的帶寬密集型操作,而低速控制器412管理較低的帶寬密集型操作。這種功能分配僅僅是示例性的。在一種實(shí)施方式中,高速控制器408耦合至存儲(chǔ)器404、顯示器416(例如,通過圖形處理器或者加速度計(jì))、和高速擴(kuò)展端口410,該高速擴(kuò)展端口410可以接受各種擴(kuò)展卡(未示出)。在實(shí)施方式中,低速控制器412耦合至存儲(chǔ)裝置406和低速擴(kuò)展端口414。低速擴(kuò)展端口414可以包括各種通信端口(例如,usb、藍(lán)牙、以太網(wǎng)、和無線以太網(wǎng)),可以耦合至一個(gè)或者多個(gè)輸入/輸出裝置,諸如鍵盤、指示裝置、掃描器、或者組網(wǎng)裝置(諸如交換機(jī)或者路由器),例如通過網(wǎng)絡(luò)適配器。
如圖所示,可以利用多種不同形式來實(shí)施計(jì)算裝置400。例如,計(jì)算裝置400可以實(shí)施為標(biāo)準(zhǔn)服務(wù)器420,或者多次在一組這樣的服務(wù)器中實(shí)施。還可以將計(jì)算裝置400實(shí)施為機(jī)架式服務(wù)器424。另外,計(jì)算裝置400可以實(shí)施在個(gè)人計(jì)算機(jī)(諸如,膝上型計(jì)算機(jī)422)中。替選地,來自計(jì)算裝置400的部件可以與移動(dòng)裝置(未示出)(諸如,裝置450)中的其它部件結(jié)合。每個(gè)這種裝置可以包含計(jì)算裝置400和450中的一個(gè)或多個(gè),并且整個(gè)系統(tǒng)可以由彼此通信的多個(gè)計(jì)算裝置400和450組成。
除了其它部件之外,計(jì)算裝置450還包括處理器452、存儲(chǔ)器464、輸入/輸出裝置(諸如,顯示器454)、通信接口466和收發(fā)器468。裝置450還可以設(shè)置有用于提供附加存儲(chǔ)的存儲(chǔ)裝置,諸如微型硬盤或者其它裝置。部件450、452、564、454、566和568中的每一個(gè)使用各種總線互相連接,并且一些部件可以安裝在公共的主板上或者根據(jù)需要以其它方式安裝。
處理器452可以執(zhí)行在計(jì)算裝置450內(nèi)的指令,包括存儲(chǔ)在存儲(chǔ)器464中的指令??梢詫⑻幚砥鲗?shí)施為包括分離的且多個(gè)模擬和數(shù)字處理器的芯片的芯片集。另外,處理器可以使用任何數(shù)目的架構(gòu)來實(shí)施。例如,處理器410可以是cisc(復(fù)雜指令集計(jì)算機(jī))處理器、risc(精簡指令集計(jì)算機(jī))處理器、或者misc(最小指令集計(jì)算機(jī))處理器。處理器可以提供,例如,對(duì)裝置450的其它部件的協(xié)調(diào),諸如,用戶界面的控制、由裝置450運(yùn)行的應(yīng)用、和通過裝置450進(jìn)行的無線通信。
處理器452可以通過耦合至顯示器454的控制接口458和顯示器接口456來與用戶通信。顯示器454可以是,例如,tft(薄膜晶體管液晶顯示屏)顯示器或者oled(有機(jī)發(fā)光二極管)顯示器、或者其它合適的顯示技術(shù)。顯示接口456可以包括合適的用于驅(qū)動(dòng)顯示器454向用戶呈現(xiàn)圖形和其它信息的電路系統(tǒng)??刂平涌?58可以接收來自用戶的命令并且對(duì)命令進(jìn)行轉(zhuǎn)換以提交至處理器452。另外,外部接口462可以提供與處理器452的通信,以便使裝置450能夠與其它裝置進(jìn)行近區(qū)域通信。在一些實(shí)施方式中,外部接口462可以提供例如有線通信,或者在一些實(shí)施方式中可以提供無線通信,并且還可以使用多個(gè)接口。
存儲(chǔ)器464存儲(chǔ)在計(jì)算裝置450內(nèi)的信息??梢詫⒋鎯?chǔ)器464實(shí)施為以下中的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)或媒體、一個(gè)或者多個(gè)易失性存儲(chǔ)器單元、或者一個(gè)或者多個(gè)非易失性存儲(chǔ)器單元。還可以提供擴(kuò)展存儲(chǔ)器444并且通過擴(kuò)展接口442將擴(kuò)展存儲(chǔ)器444連接至裝置450,該擴(kuò)展接口442可以包括,例如,simm(單列直插存儲(chǔ)器模塊)卡接口。這種擴(kuò)展存儲(chǔ)器444可以為裝置450提供附加存儲(chǔ)空間,或者還可以存儲(chǔ)裝置450的應(yīng)用或者其它信息。具體地,擴(kuò)展存儲(chǔ)器444可以包括用于執(zhí)行或者補(bǔ)充上文描述的過程的指令,并且還可以包括安全信息。因此,例如,可以將擴(kuò)展存儲(chǔ)器444提供為裝置450的安全模塊,并且可以用允許安全使用裝置450的指令來對(duì)其進(jìn)行編程。另外,可以經(jīng)由simm卡與附加信息(諸如,將識(shí)別信息通過不可侵入的方式放在simm卡上)一起來提供安全應(yīng)用。
存儲(chǔ)器可以包括,例如,閃速存儲(chǔ)器和/或nvram存儲(chǔ)器,如下文所描述的。在一種實(shí)施方式中,計(jì)算機(jī)程序產(chǎn)品有形地體現(xiàn)為信息載體。計(jì)算機(jī)程序產(chǎn)品包含指令,該指令在執(zhí)行時(shí)執(zhí)行一種或者多種方法,諸如,上文所描述的那些方法。信息載體是計(jì)算機(jī)可讀介質(zhì)或者機(jī)器可讀介質(zhì),諸如,存儲(chǔ)器464、擴(kuò)展存儲(chǔ)器444、或者在處理器452上的存儲(chǔ)器,可以通過例如收發(fā)器468或者外部接口462來接收該信息載體。
裝置450可以通過通信接口466無線地通信,若需要,該通信接口466可以包括數(shù)字信號(hào)處理電路系統(tǒng)。通信接口466可以提供在各種模式或者協(xié)議下的通信,諸如,gsm語音通話、sms、ems、或者mms短信發(fā)送、cdma、tdma、wcdma、cdma2000、或者gprs等。這種通信可以例如通過無線電頻率收發(fā)器468發(fā)生。另外,短程通信可以使用諸如藍(lán)牙、wifi、或者其它這種收發(fā)器(未示出)發(fā)生。另外,gps(全球定位系統(tǒng))接收器模塊440可以將附加的與導(dǎo)航或者位置有關(guān)的無線數(shù)據(jù)提供至裝置450,若合適,該無線數(shù)據(jù)可以供在裝置450上運(yùn)行的應(yīng)用使用。
裝置450還可以使用音頻編解碼器460進(jìn)行可聽地通信,該音頻編解碼器460可以接收來自用戶的口頭信息并且將口頭信息轉(zhuǎn)換為可用的數(shù)字信息。音頻編解碼器460還可以以其他方式為用戶生成可聽見的聲音,諸如,通過揚(yáng)聲器,例如,在裝置450的聽筒中的揚(yáng)聲器。這種聲音可以包括來自語音通話的聲音,可以包括錄制的聲音(例如,語音消息、音樂文件等),并且還可以包括通過在裝置450上運(yùn)行的應(yīng)用生成的聲音。
如圖所示,可以將計(jì)算裝置450實(shí)施成多種不同的形式。例如,可以將計(jì)算裝置450實(shí)施為蜂窩電話480,也可以將計(jì)算裝置450實(shí)施為智能手機(jī)482、個(gè)人數(shù)字助理、或者其它類似的移動(dòng)設(shè)備的一部分。
在各種實(shí)施方式中,如果在先的操作不成功(例如,如果不執(zhí)行該確定),則不執(zhí)行“響應(yīng)于”或者“由于”另一操作(例如,確定或者識(shí)別)而執(zhí)行的操作?!白詣?dòng)地”執(zhí)行的操作是在沒有用戶介入(例如,介入用戶輸入)的情況下執(zhí)行的操作。本文中用條件語言描述的特征可以描述可選的實(shí)施方式。在一些示例中,從第一裝置“傳輸”到第二裝置包括:第一裝置將數(shù)據(jù)放入傳輸鏈路以供第二裝置接收,但是可以不包括接收數(shù)據(jù)的第二裝置。相反,從第一裝置“接收”可以包括從傳輸鏈路接收數(shù)據(jù),但是可以不包括傳輸數(shù)據(jù)的第一裝置。
通過計(jì)算系統(tǒng)進(jìn)行“確定”可以包括:計(jì)算系統(tǒng)請(qǐng)求另一裝置執(zhí)行該確定并且將結(jié)果提供至計(jì)算系統(tǒng)。
可以在數(shù)字電子電路系統(tǒng)中、或者在計(jì)算機(jī)軟件、固件、或者硬件中(包括本說明書所公開的結(jié)構(gòu)及其結(jié)構(gòu)等效物)、或者它們中的一個(gè)或者多個(gè)的組合中實(shí)施本說明書中描述的主題的實(shí)施例和操作。
術(shù)語“數(shù)據(jù)處理設(shè)備”包含用于處理數(shù)據(jù)的所有種類的設(shè)備、裝置、和機(jī)器,包括:例如,可編程處理器、計(jì)算機(jī)、芯片上系統(tǒng)、或者前述中的多種或者組合。設(shè)備可以包括專用邏輯電路系統(tǒng),例如,fpga(現(xiàn)場可編程門陣列)或者asic(專用集成電路)。除了硬件之外,設(shè)備還可以包括為探討中的計(jì)算機(jī)程序創(chuàng)建執(zhí)行環(huán)境的代碼,例如,構(gòu)成處理器固件、操作系統(tǒng)、跨平臺(tái)運(yùn)行時(shí)環(huán)境、虛擬機(jī)、或者它們中的一個(gè)或者多個(gè)的組合的代碼。
可以用任何形式的編程語言(包括編譯語言或者解釋語言、陳述性語言或者程序語言)來編寫計(jì)算機(jī)程序(也稱為程序、軟件、軟件應(yīng)用、腳本或者代碼),并且可以按照任何形式(包括作為獨(dú)立式程序或者模塊、部件、子例程、對(duì)象、或者適合用于計(jì)算環(huán)境的其它單元)來部署計(jì)算機(jī)程序。計(jì)算機(jī)程序可以但并非必須與文件系統(tǒng)中的文件對(duì)應(yīng)??梢詫⒊绦虼鎯?chǔ)在保持其它程序或者數(shù)據(jù)(例如,存儲(chǔ)在標(biāo)記語言文檔中的一個(gè)或者多個(gè)腳本)的文件的一部分中,或者存儲(chǔ)在專用于所討論中的程序的單個(gè)文件中,或者存儲(chǔ)在多個(gè)協(xié)作文件(例如,存儲(chǔ)一個(gè)或者多個(gè)模塊、子程序、或者部分代碼的文件)中??梢詫⒂?jì)算機(jī)程序部署為在一個(gè)計(jì)算機(jī)上執(zhí)行或者在位于一個(gè)站點(diǎn)處或者分布在多個(gè)站點(diǎn)中并且通過通信網(wǎng)絡(luò)互相連接的多個(gè)計(jì)算機(jī)上執(zhí)行。
可以通過一個(gè)或者多個(gè)可編程處理器來進(jìn)行本說明書中所描述的過程和邏輯流程,該一個(gè)或者多個(gè)可編程處理器執(zhí)行一個(gè)或者多個(gè)計(jì)算機(jī)程序以通過操作輸入數(shù)據(jù)并且生成輸出來進(jìn)行動(dòng)作。也可以通過專用邏輯電路系統(tǒng)(例如,fpga(現(xiàn)場可編程門陣列)或者asic(專用集成電路))來執(zhí)行過程和邏輯流程,并且也可以將設(shè)備實(shí)施為專用邏輯電路系統(tǒng)。
適合執(zhí)行計(jì)算機(jī)程序的處理器包括例如,通用微處理器、專用微處理器、以及任何種類的數(shù)字計(jì)算機(jī)的任何一個(gè)或者多個(gè)處理器。一般而言,處理器將接收來自只讀存儲(chǔ)器或者隨機(jī)存取存儲(chǔ)器或者兩者的指令和數(shù)據(jù)。計(jì)算機(jī)的必要元件是用于根據(jù)指令執(zhí)行動(dòng)作的處理器、和用于存儲(chǔ)指令和數(shù)據(jù)的一個(gè)或者多個(gè)存儲(chǔ)器裝置。一般而言,計(jì)算機(jī)還將包括用于存儲(chǔ)數(shù)據(jù)的一個(gè)或者多個(gè)海量存儲(chǔ)裝置(例如,磁盤、磁光盤、或者光盤),或者計(jì)算機(jī)可以操作地耦合以接收來自該海量存儲(chǔ)裝置的數(shù)據(jù)或者將數(shù)據(jù)傳輸至該海量存儲(chǔ)裝置或者進(jìn)行兩者。然而,計(jì)算機(jī)無需具有這種裝置。此外,計(jì)算機(jī)可以嵌入在另一裝置中,例如,移動(dòng)電話、個(gè)人數(shù)字助理(pda)、移動(dòng)音頻或者視頻播放器、游戲控制臺(tái)、全球定位系統(tǒng)(gps)接收器、或者便攜式存儲(chǔ)裝置(例如,通用串行總線(usb)閃存驅(qū)動(dòng)),僅舉幾例。適合于存儲(chǔ)計(jì)算機(jī)程序指令和數(shù)據(jù)的裝置包括所有形式的非易失性存儲(chǔ)器、介質(zhì)和存儲(chǔ)器裝置,包括例如,半導(dǎo)體存儲(chǔ)器裝置(例如,eprom、eeprom、和閃速存儲(chǔ)器裝置);磁盤(例如,內(nèi)部硬盤或者可移動(dòng)盤);磁光盤、和光盤。處理器和存儲(chǔ)器可以由專用邏輯電路系統(tǒng)補(bǔ)充或者可以并入該專用邏輯電路系統(tǒng)中。
雖然本說明書包含了許多具體實(shí)施細(xì)節(jié),但是不應(yīng)該將這些細(xì)節(jié)視為對(duì)任何發(fā)明或者可能被要求的內(nèi)容的范圍的限制,而是作為針對(duì)特定發(fā)明的特定實(shí)施例的特征的描述。在本說明書中在單獨(dú)實(shí)施例的場境下描述的某些特征還可以組合地實(shí)施在單個(gè)實(shí)施例中。相反,在單個(gè)實(shí)施例的場境中描述的各種特征也可以分立地或者按照任何合適的子組合實(shí)施在多個(gè)實(shí)施例中。此外,雖然上文可能將特征描述為以某些組合來起作用并且最初甚至同樣地對(duì)該特征進(jìn)行了要求,但是在一些情況下可以從組合中刪除來自所要求的組合的一個(gè)或者多個(gè)特征。并且所要求的組合可以指向子組合或者子組合的變化。
同樣,雖然在附圖中按照特定順序示出了操作,但是不應(yīng)該將其理解為需要按照所示的特定順序或者按照相繼的順序來進(jìn)行這種操作,或者需要進(jìn)行所有圖示的操作以實(shí)現(xiàn)期望的結(jié)果。在某些情況下,多任務(wù)處理和并行處理可以是有利的。此外,不應(yīng)該將在上述實(shí)施例中的各種系統(tǒng)部件的分離理解為在所有實(shí)施例中需要這種分離,并且應(yīng)該理解,所描述的程序部件和系統(tǒng)通??梢砸黄鸺稍趩蝹€(gè)軟件產(chǎn)品中或者封裝到多個(gè)軟件產(chǎn)品中。
由此,已經(jīng)描述了本主題的具體實(shí)施例。其它實(shí)施例在以下權(quán)利要求書的范圍內(nèi)。在某些情況下,在權(quán)利要求書中敘述的動(dòng)作可以按照不同的順序來進(jìn)行并且仍然可以實(shí)現(xiàn)期望的結(jié)果。另外,在附圖中描繪的過程不一定需要所示的特定順序或者相繼順序,以實(shí)現(xiàn)期望的結(jié)果。在某些實(shí)施方式中,多任務(wù)處理和并行處理可以是有利的。