數據同步方法和裝置的製作方法
2023-04-28 20:03:11 5
專利名稱:數據同步方法和裝置的製作方法
技術領域:
本發明實施例涉及數據處理領域,並且更具體地,涉及數據同步方法和裝置。
背景技術:
內存系統的一致性問題是多處理機系統中的關鍵技術,特別在高端伺服器競爭領域,高效的內存一致性協議與實現是決定高端伺服器性能的幾個最為關鍵因素之一。在諸如銀行、證券、政府或企業的關鍵服務領域,高端伺服器更是必然的選擇。通過高速互聯晶片、高效互聯拓撲結構以及可擴展的協議支持,硬體實現的內存一致性多處理機系統基本佔據了整個伺服器市場。然而,硬體實現的高性能也伴隨著高昂的價格。軟體實現的內存一致性多處理機系統受限於通信延遲以及一致性模型的制約,很難實現高效的內存一致性的多處理機系統。可以通過虛擬化層把多個處理機系統虛擬化成為一個大的SMP(Symmetrical Multi-Processing,對稱多處理)系統提供給作業系統,軟體實現了內存一致性的多處理機系統。上述方案使用基於寫無效操作的內存一致性策略和相關的接口,利用異常、中斷等來陷入虛擬機監控器(VMM,Virtual Machine Monitor)。然而,該方案不支持並發多寫協議。在一些場景下,並發多寫協議能夠比寫無效協議減少50%左右的CPU (Central Processing Unit,中央處理器)佔用率。因此,支持並發多寫的內存一致性協議虛擬非一致性內存訪問系統的效率會更高。但是,數據的並發多寫會引起各個節點間相應的數據不同步的問題。
發明內容
本發明實施例提供一種數據同步方法和裝置,能夠解決支持並發多寫的內存一致性協議所帶來的同步問題。一方面,提供了一種數據同步方法,包括代碼掃描單元掃描代碼以捕獲同步指令;代碼掃描單元將所捕獲的同步指令替換為陷入指令;在代碼運行至陷入指令時,分布式共享內存DSM單元獲取代碼執行權,其中DSM單元實現並發多寫協議,在執行所述同步指令時實現單寫協議。另一方面,提供了一種數據同步裝置,包括代碼掃描單元,用於掃描代碼以捕獲同步指令,將所捕獲的同步指令替換為陷入指令;分布式共享內存DSM單元,用於在代碼運行至陷入指令時,獲取代碼執行權,其中DSM單元實現並發多寫協議,在執行同步指令時實現單寫協議。另一方面,提供了一種數據處理系統,包括作業系統和在作業系統之下運行的上述數據同步裝置。本發明實施例在代碼執行前進行預掃描,將可能影響數據同步的同步指令替換為陷入指令,使得在代碼運行至所述陷入指令時,代碼執行權陷入至實現並發多寫協議的DSM 單元,而DSM單元在執行同步指令時實現單寫協議,從而能夠支持並發多寫協議,並且解決了並發多寫協議帶來的同步問題。
為了更清楚地說明本發明實施例的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖1是本發明實施例提供的數據同步裝置的框圖。圖2是本發明實施例提供的數據同步方法的流程圖。圖3是本發明實施例提供的數據同步過程的一個例子的示意性流程圖。圖4是本發明實施例提供的數據同步過程的示意架構圖。圖5是本發明實施例提供的數據同步系統的示意架構圖。圖6是本發明一個實施例的數據處理系統的框圖。
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。應理解,本發明的技術方案可以應用於多處理機系統。本發明實施例將以Intel x86 CPU (Central Processing Unit,中央處理單元)架構為例進行說明,但本發明實施例並不限於Intel x86架構,還可以包含其它支持TS0(Total Store Ordering,全存儲排序) 同步模型的CPU架構。另外,本發明的方案還可以應用於虛擬化應用。在分布式內存一致性系統下,代碼中會包含內存一致性模型要求的同步指令,例如,原子操作和內存屏障等敏感指令。當分布式內存一致性系統支持並發多寫的內存一致性協議時,這些同步指令會給數據同步帶來問題,例如數據不同步等等問題。根據本發明實施例的同步指令並不限於上述特定術語,例如,同步指令還可以包括會影響數據同步的其他形式的指令,例如加鎖前綴指令(由一系列原子操作組成)等。圖1是本發明一個實施例提供的數據同步裝置的框圖。數據同步裝置100包括代碼掃描單元110和DSM(Distributed Shared Memory,分布式共享內存)單元120。代碼掃描單元110掃描代碼以捕獲同步指令,並將所捕獲的同步指令替換為陷入 (trap)指令。可選地,作為一個實施例,代碼掃描單元110可以頁面(page)為單位進行代碼掃描。所掃描的代碼可以是將在作業系統或應用程式上執行的任何代碼。代碼掃描單元110 的掃描操作可以在新的程序或虛擬機裝載後、轉入程序或虛擬機上下文執行前觸發,也可以由其他組件調用觸發,例如由DSM單元120調用代碼掃描單元110進行掃描操作。DSM單元120在代碼運行至所述陷入指令時,獲取代碼執行權,其中DSM單元實現並發多寫協議,但在執行同步指令時實現單寫協議。本發明實施例在代碼執行前進行預掃描,將可能影響數據同步的同步指令替換為陷入指令,使得在代碼運行至所述陷入指令時,代碼執行權陷入至實現並發多寫協議的DSM 單元,而DSM單元在執行同步指令時實現單寫協議,從而能夠支持並發多寫協議,並且解決了並發多寫協議帶來的同步問題。可選地,根據本發明的另一實施例,代碼掃描單元110還掃描代碼以捕獲流程改變指令,例如跳轉jmp、調用call和調用返回ret等指令,並將上述流程改變指令替換為上述陷入指令。這些流程改變指令會使代碼執行至其他頁面的對應代碼,假如該對應代碼也是同步指令,則可能也會影響數據同步。因此本發明實施例可以將流程改變指令替換為陷入指令,由DSM單元120實現間接跳轉,防止由此帶來的同步問題。例如,DSM單元120在執行上述流程改變指令時,判斷流程改變指向的目標頁面是否為已掃描的頁面。在該流程改變指向的目標頁面為已掃描的頁面時,將執行流程改變至該已掃描的頁面中的對應代碼並執行該對應代碼,在該流程改變指向的目標頁面為未掃描的頁面時,調用代碼掃描單元110對該未掃描的頁面執行該掃描代碼以捕獲同步指令並將所捕獲的同步指令替換為陷入指令。可選地,根據本發明的一個實施例,如果上述同步指令為內存屏障指令,則DSM單元120可以等待所有數據更新操作完成之後,返回代碼執行權。可選地,根據本發明的一個實施例,如果上述同步指令為原子操作指令,則DSM單元120可以向其他節點發送廣播通知,以使得其他節點將對應的數據設為只讀,禁止對該對應的數據進行同步操作,並在執行完該原子操作指令之後將更新數據廣播給其他節點, 以使得其他節點更新對應的數據,允許對該對應的數據進行同步操作。進一步,根據本發明的另一實施例,除了陷入指令之外,DSM單元120還在代碼執行的過程中產生缺頁異常(page fault)時,獲取代碼執行權。例如,如果缺頁異常由讀操作引起,則DSM單元120生成上述讀操作所針對的數據的副本,並使得其他節點上對應的副本設為只讀。如果缺頁異常由寫操作引起,則當上述寫操作所針對的頁面不存在時,DSM單元120申請高速緩存並將數據寫入該高速緩存中;當上述寫操作所針對的頁面存在時,DSM單元120更新數據並將更新的數據以及更新的全局時間廣播給其他節點,以便其他節點根據該全局時間更新對應的數據。可選地,數據同步裝置100可以在作業系統或應用程式之下運行,這樣無需對作業系統或應用程式進行修改,具有較好的通用性。或者,數據同步裝置100也可以被包括在作業系統中。在此情況下,作業系統需要修改內存屏障和原子操作等同步指令的原始碼實現,用DSM單元提供的接口來代替,但是這種修改比較小,容易實現。可選地,根據本發明的一個實施例,上述並發多寫協議為寫更新(write update) 協議。本發明實施例通過軟體掃描的方式在代碼執行前對同步指令進行捕獲,並基於內存一致性協議處理同步指令陷入請求,從而支持多讀多寫協議。例如,在基於同步模型的多處理機系統中,通過軟體方法(通過缺頁異常和陷入指令)捕獲對共享數據的更新操作,並對更新操作進行廣播,通知其他處理器更新其對應的高速緩衝存儲器(Cache)。對於陷入指
6令捕獲,可以同步所有更新操作,等待更新操作結束。從而能夠支持並發多寫協議,並且解決了並發多寫協議帶來的同步問題。上面描述了根據本發明實施例的數據同步裝置,下面結合圖2描述根據本發明實施例的數據同步方法。圖2是本發明一個實施例提供的數據同步方法的示意性流程圖。圖2的方法可以由圖1的數據同步裝置100執行。210,掃描代碼以捕獲同步指令。例如,可以由數據同步裝置100的代碼掃描單元110執行步驟210。如上所述, 代碼掃描單元110可以在新的程序或虛擬機裝載之後、或者轉入程序或虛擬機上下文執行之前、或者程序跳轉到未掃描的代碼頁時,對代碼進行掃描,以識別原子操作、內存屏障 (Memory Barrier)等同步指令。220,將所捕獲的同步指令替換為陷入指令。例如,當代碼掃描單元110掃描到原子操作和/或內存屏障指令等同步指令時,用陷入指令替換同步指令。在本發明實施例中,用陷入指令替換同步指令也包括在同步指令之前加入陷入指令的情況。230,在代碼運行至該陷入指令時,分布式共享內存DSM單元獲取代碼執行權,其中該DSM單元實現並發多寫協議,在執行同步指令時實現單寫協議。在作業系統或應用程式執行代碼時,當代碼運行至陷入指令時,代碼執行權會陷入至DSM單元,即DSM單元從作業系統或應用程式獲得代碼執行權並執行所替換的同步指令。例如,在由於內存屏障指令而陷入DSM單元的情況下,DSM單元可以檢查本節點是否存在等待遠程更新響應的請求,如果存在,則等待其結束;如果不存在,則跳轉到內存屏障指令的下一條指令進行處理。如果是由於原子寫操作而陷入到DSM單元,則DSM單元發送遠程寫更新到遠程節點,然後等待其返回後才繼續執行。本發明實施例在代碼執行前進行預掃描,將可能影響數據同步的同步指令替換為陷入指令,使得在代碼運行至陷入指令時,代碼執行權陷入至實現並發多寫協議的DSM單元,而DSM單元在執行同步指令時實現單寫協議,從而能夠支持並發多寫協議,並且解決了並發多寫協議帶來的同步問題。可選地,根據本發明的另一實施例,還可以掃描代碼以捕獲流程改變指令,並將上述流程改變指令替換為上述陷入指令。例如,代碼中還可能包括跳轉、調用、調用返回等改變程序指令流程的流程改變指令,這些指令所指向的目標頁面也可能存在原子操作和內存屏障等同步指令。為了避免由於跳轉到或調用新的頁面而引起的同步問題,可以將上述流程改變指令也替換為陷入指令,使得在執行到該陷入指令時可以陷入到DSM單元進行間接跳轉,在需要的情況下調用代碼掃描單元對流程改變的目標頁面進行掃描。具體地,DSM單元在執行流程改變指令時,判斷流程改變指向的目標頁面是否為已掃描的頁面。在流程改變指向的目標頁面為已掃描的頁面時,將執行流程改變至已掃描的頁面中的對應代碼並執行該對應代碼。在流程改變指向的目標頁面為未掃描的頁面時,對該未掃描的頁面執行步驟210和220的過程,並在掃描之後繼續執行該頁面上的對應代碼。可選地,根據本發明的一個實施例,如果同步指令為內存屏障指令,則在230中,DSM單元等待所有數據更新操作完成之後,返回代碼執行權。可選地,根據本發明的另一實施例,如果同步指令為原子操作指令,則在230中, 向其他節點發送廣播通知,以使得其他節點將對應的數據設為只讀,禁止對對應的數據進行同步操作;在執行完原子操作指令之後將更新數據廣播給其他節點,以使得其他節點更新對應的數據,並允許對該對應的數據進行同步操作。進一步,根據本發明的另一實施例,還可以在代碼執行的過程中產生缺頁異常時, DSM單元獲取代碼執行權。如果缺頁異常由讀操作引起,則DSM單元生成讀操作所針對的數據的副本,並使得其他節點上對應的副本設為只讀。如果缺頁異常由寫操作引起,則當寫操作所針對的頁面不存在時,DSM單元申請高速緩存並將數據寫入該高速緩存中,當寫操作所針對的頁面存在時,DSM單元更新數據並將更新的數據以及更新的全局時間廣播給其他節點,以便其他節點根據全局時間更新對應的數據。可選地,根據本發明的一個實施例,上述並發多寫協議為寫更新協議。下面結合具體例子,更加詳細地描述本發明的實施例。圖3是本發明實施例的數據同步過程的一個例子的示意性流程圖。首先進行代碼預掃描。代碼預掃描的過程包括下面的步驟301至306。301,掃描代碼。例如,上述代碼掃描單元可以在新的程序或虛擬機裝載之後、或者轉入程序或虛擬機上下文執行之前、或者程序跳轉到未掃描的代碼頁時,對代碼進行掃描, 以識別原子操作、內存屏障等同步指令和/或流程改變指令。根據本發明的一個實施例,掃描的粒度可以為體系機構下物理頁框大小。302,確定代碼中是否有同步指令和/或流程改變指令。如果有,則執行步驟303, 否則執行步驟305。303,在確定代碼中有同步指令和/或流程改變指令時,用陷入指令替換同步指令和/或流程改變指令。304,確定是否掃描完整個頁面。如果是,則執行步驟305,否則,返回重新執行步驟 301。305,當掃描完整個頁面時,標記該頁面已掃描。這裡還可以判斷該頁的髒位 (dirty bit)是否置位,如果是,則表示該頁數據已經被修改,此頁為臨時代碼頁,需要重新掃描該頁面,因此也返回重新執行步驟301。306,結束掃描。在執行步驟301至306的代碼預掃描過程之後,可以執行下面的步驟307至311, 以執行代碼並在遇到陷入指令時進行陷入操作。307,執行代碼。例如,系統可以以物理頁為單位執行代碼。308,系統是否發現有缺頁異常(page fault)或代碼中是否有陷入指令。如果有缺頁異常或代碼中有陷入指令,則執行步驟309,否則,返回步驟307。例如,基於TSO同步模型使用寫更新協議,通常有兩種類型陷入在遇到缺頁異常時陷入和在遇到陷入指令時陷入。例如在上述執行代碼的過程中,如果遇到陷入指令,則陷入DSM單元進行處理,否則繼續執行代碼。另外,如果系統發現有缺頁異常,也會陷入到DSM單元進行處理。309,代碼執行權陷入DSM單元。例如,當系統檢測到缺頁異常時陷入或者在執行代碼時遇到陷入指令時,作業系統或應用程式可以將代碼執行權移交給DSM單元,即陷入至DSM單元,由DSM單元執行相關代碼。310,如果DSM單元執行的相關代碼為流程改變指令且目標頁面未掃描,則執行步驟301-306,調用代碼掃描單元對目標頁面進行代碼預掃描。否則,執行步驟311。具體地,在陷入DSM單元後,如果DSM單元在執行代碼過程中遇到流程改變指令 (例如,jmp,Call,ret等改變程序指令流程的指令),可以調用掃描系統服務程序來進行間接跳轉,該服務程序根據執行時的動態地址信息判定該跳轉所指向的頁面是否為一個已掃描過的頁面,如果是則直接跳轉到對應的代碼執行,否則發起新一輪掃描。311,DSM單元執行相關代碼,如同步指令或流程改變的目標頁面(已掃描)的對應指令。DSM單元實現並發多寫協議,在執行同步指令時實現單寫協議。在缺頁異常情況下,若為讀操作,則把遠端內存數據的一個副本拷貝到本地,所有副本都改成只讀。若為寫操作,若數據所在的頁不存在,則申請一個cache,用該數據初始化;若存在該頁,則更新該頁的相應數據,然後攜帶一個修改數據段的全局時間和內容廣播給其他節點,把執行權返回給作業系統。其他節點收到寫更新數據後,比較全局時間,若全局時間比該節點上相應數據最近更新的全局時間晚,則更新該節點上的相應數據,否則不更新。其他節點可以返回更新確認。在同步指令的情況下,若同步指令為內存屏障指令,則等待所有並發多寫操作完成後,再把執行權返回給作業系統。若為原子操作等同步指令,則廣播通知到每個節點,把其他節點對應的該數據設為只讀,禁止對該數據進行同步操作。此後DSM單元執行原子操作等同步指令,執行完成後將更新數據廣播到其他節點。其他節點收到該信息後,更新數據,並允許對該數據進行同步操作。這樣,在執行同步指令時實現了單寫協議,避免了數據不同步的問題。312,DSM單元返回執行權給作業系統或應用程式。例如,DSM單元執行完陷入指令所替換的代碼之後或者在處理完缺頁異常之後,將代碼執行權移交給作業系統或應用程式。另外,DSM單元在將執行權返回給作業系統或應用程式前,可以判斷其指令入口點 (x86下為eip或rip)的值所在的頁面是否已被掃描,如果沒有被掃描,則調用代碼掃描單元執行上述代碼預掃描過程(步驟301-306)。還可以判斷該頁的髒位(dirty bit)是否置位,如果是,則表示頁數據已經被修改,則此頁為臨時代碼頁,DSM單元調用代碼掃描單元重新執行代碼預掃描過程,對該頁面重新進行掃描。上面描述了根據本發明實施例的數據同步裝置和數據同步方法,下面結合圖4和圖5描述根據本發明實施例的數據同步系統。圖4是本發明一個實施例提供的數據同步系統的示意性架構圖。數據同步系統可包括多個節點。雖然圖4中僅僅例示了第一節點A和第二節點B,但本發明實施例不限於此,本發明的數據同步系統可以包括更多個節點。如圖4所示,第一節點A和第二節點B共同使用作業系統430。作業系統430包括第一節點A上的可執行代碼440A以及第二節點B上的可執行代碼440B。此外,如圖4的虛框所示,第一節點A包括由代碼掃描單元410A和DSM單元420A組成的數據同步裝置405A, 第二節點B包括由代碼掃描單元410B和DSM單元420B組成的數據同步裝置405B。下文
9中,在不需要區分的情況下,將代碼掃描單元410A和410B統稱為代碼掃描單元410,或者將 DSM單元420A和420B統稱為DSM單元420,或者將可執行代碼440A和440B統稱為可執行代碼440。作業系統430或應用程式在代碼掃描單元410和DSM單元420上運行。數據同步裝置405A和405B類似於圖1的數據同步裝置100,並且可以執行圖2或圖3所示的方法,為避免重複,不再贅述。例如,代碼掃描單元410對可執行代碼440進行掃描,以捕獲原子操作和內存屏障等同步指令和/或流程改變指令,並且用陷入指令替換所捕獲的同步指令和/或流程改變指令,以便可執行代碼運行至陷入指令時,會陷入至DSM單元420執行所替換的同步指令和 /或流程改變指令。DSM單元420實現並發多寫協議,並且在遇到原子操作和內存屏障等同步指令時, DSM單元420所實現的協議由多寫協議變為單寫協議,在執行完成這些同步指令之後,可以恢復為並發多寫協議。DSM單元420可運行在特權級,在陷入到DSM單元420時,執行權從作業系統430或應用程式移交至DSM單元420,DSM單元420執行完相應的操作,將執行權返回給作業系統430或應用程式。數據同步裝置405A和405B之間可通過DSM協議進行數據同步操作。當需要其他節點進行操作時,例如廣播更新的數據或者禁止其他節點對相應數據進行同步操作的情況下,通過DSM協議進行節點間的交互。根據本發明實施例,為提高DSM系統的通用性和性能,採用代碼掃描方法透明支持作業系統和應用程式內存屏障等同步指令,並實現並發多寫協議。另外,本實施例的數據同步裝置運行在作業系統或應用程式之下,無需對作業系統或應用程式進行修改,因此具有較好的通用性。圖5是本發明一個實施例提供的數據同步系統的示意性架構圖。圖5的實施例與圖4的實施例的不同之處在於,圖5的數據同步裝置被包括在作業系統中。在圖5中,與圖 4相同或相似的部分使用相似的附圖標記表示,並適當省略詳細描述。如圖5所示,第一節點A上的作業系統530A包括可執行代碼540A、代碼掃描單元 510A和DSM單元520A。代碼掃描單元510A和DSM單元520A組成數據同步裝置505A。第二節點B上的作業系統530B包括可執行代碼540B、代碼掃描單元510B和DSM單元520B。 代碼掃描單元510B和DSM單元520B組成數據同步裝置505B。數據同步裝置505A和505B類似於圖1的數據同步裝置100,並且可以執行圖2或圖3所示的方法,為避免重複,不再贅述。例如,數據同步裝置505A和505B之間可通過DSM協議進行數據同步操作。當需要其他節點進行操作時,例如廣播更新的數據或者禁止其他節點對相應數據進行同步操作的情況下,通過DSM協議進行節點間的交互。需要說明的是,在實現本實施例時,作業系統530A和530B需要修改內存屏障和原子操作等同步指令的原始碼實現,用DSM單元提供的接口來代替,但是這種修改比較小,容易實現。圖6是本發明一個實施例的數據處理系統的框圖。圖6的數據處理系統包括作業系統61和在作業系統61之下運行的數據同步裝置62。數據同步裝置62包括代碼掃描單元621和DSM單元622。代碼掃描單元621掃描代碼以捕獲同步指令,將所捕獲的同步指令替換為陷入指令。DSM單元622在代碼運行至陷入指令時,從作業系統61獲取代碼執行權,其中DSM單元實現並發多寫協議,在執行同步指令時實現單寫協議。本發明實施例在代碼執行前進行預掃描,將可能影響數據同步的同步指令替換為陷入指令,使得在代碼運行至所述陷入指令時,代碼執行權陷入至實現並發多寫協議的DSM 單元,而DSM單元在執行同步指令時實現單寫協議,從而能夠支持並發多寫協議,並且解決了並發多寫協議帶來的同步問題。此外,圖6的數據處理系統的一個例子是圖4所示的一個節點,數據同步裝置62 運行在作業系統61之下,因此無需對現有的作業系統進行修改,具有較好的通用性。數據通信裝置62的一個例子是上述圖1所示的數據同步裝置100,並且可執行圖 2-圖3中的方法實施例的各個步驟,為避免重複,不再贅述。根據本發明的實施例引入了一種軟體實現的高性能內存一致性的多處理系統,通過以軟體的方式整合廉價的伺服器或工作站來形成一種高性能的、低價格的高端伺服器系統,解決了分布式內存一致性系統中存在的並發多寫協議帶來的內存屏障指令等同步問題,並且支持作業系統廠商提供的作業系統或應用程式無任何修改地運行或者修改較小, 提高了分布式內存一致性系統的通用性。本領域普通技術人員可以意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬體、或者計算機軟體和電子硬體的結合來實現。這些功能究竟以硬體還是軟體方式來執行,取決於技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的範圍。所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統、 裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。在本申請所提供的幾個實施例中,應該理解到,所揭露的系統、裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。所述功能如果以軟體功能單元的形式實現並作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的部分可以以軟體產品的形式體現出來,該計算機軟體產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,伺服器,或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。 而前述的存儲介質包括U盤、移動硬碟、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光碟等各種可以存儲程序代碼的介質。
以上所述,僅為本發明的具體實施方式
,但本發明的保護範圍並不局限於此,任何熟悉本技術領域的技術人員在本發明揭露的技術範圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明的保護範圍應所述以權利要求的保護範圍為準。
權利要求
1.一種數據同步方法,其特徵在於,包括 代碼掃描單元掃描代碼以捕獲同步指令;所述代碼掃描單元將所捕獲的同步指令替換為陷入指令;在代碼運行至所述陷入指令時,分布式共享內存DSM單元獲取代碼執行權,其中所述 DSM單元實現並發多寫協議,在執行所述同步指令時實現單寫協議。
2.如權利要求1所述的方法,其特徵在於,在所述代碼運行至所述陷入指令之前,還包括所述代碼掃描單元掃描代碼以捕獲流程改變指令,並將所述流程改變指令替換為所述陷入指令。
3.如權利要求2所述的方法,其特徵在於,還包括所述DSM單元在執行所述流程改變指令時,判斷流程改變指向的目標頁面是否為已掃描的頁面;在所述流程改變指向的目標頁面為已掃描的頁面時,將執行流程改變至所述已掃描的頁面中的對應代碼並執行所述對應代碼;在所述流程改變指向的目標頁面為未掃描的頁面時,對所述未掃描的頁面執行所述掃描代碼以捕獲同步指令的過程和所述將所捕獲的同步指令替換為陷入指令的過程。
4.如權利要求1所述的方法,其特徵在於,如果所述同步指令為內存屏障指令,則所述 DSM單元在執行所述同步指令時實現單寫協議,包括所述DSM單元等待所有數據更新操作完成之後,返回代碼執行權。
5.如權利要求1所述的方法,其特徵在於,如果所述同步指令為原子操作指令,則所述 DSM單元在執行所述同步指令時實現單寫協議,包括向其他節點發送廣播通知,以使得其他節點將對應的數據設為只讀,禁止對所述對應的數據進行同步操作;在執行完所述原子操作指令之後將更新數據廣播給其他節點,以使得其他節點更新所述對應的數據,並允許對所述對應的數據進行同步操作。
6.如權利要求1所述的方法,其特徵在於,還包括在代碼執行的過程中產生缺頁異常時,所述DSM單元獲取代碼執行權。
7.如權利要求6所述的方法,其特徵在於,如果所述缺頁異常由讀操作引起,則所述DSM單元生成所述讀操作所針對的數據的副本,並使得其他節點上對應的副本設為只讀;如果所述缺頁異常由寫操作引起,則當所述寫操作所針對的頁面不存在時,所述DSM 單元申請高速緩存並將數據寫入該高速緩存中,當所述寫操作所針對的頁面存在時,所述 DSM單元更新數據並將更新的數據以及更新的全局時間廣播給其他節點,以便其他節點根據所述全局時間更新對應的數據。
8.如權利要求1-7任一項所述的方法,其特徵在於,所述並發多寫協議為寫更新協議。
9.一種數據同步裝置,其特徵在於,包括代碼掃描單元,用於掃描代碼以捕獲同步指令,將所捕獲的同步指令替換為陷入指令;分布式共享內存DSM單元,用於在代碼運行至所述陷入指令時,獲取代碼執行權,其中所述DSM單元實現並發多寫協議,在執行所述同步指令時實現單寫協議。
10.如權利要求9所述的裝置,其特徵在於,所述代碼掃描單元還用於掃描代碼以捕獲流程改變指令,並將所述流程改變指令替換為所述陷入指令。
11.如權利要求10所述的裝置,其特徵在於,所述DSM單元還用於在執行所述流程改變指令時,判斷流程改變指向的目標頁面是否為已掃描的頁面,在所述流程改變指向的目標頁面為已掃描的頁面時,將執行流程改變至所述已掃描的頁面中的對應代碼並執行所述對應代碼,在所述流程改變指向的目標頁面為未掃描的頁面時,調用所述代碼掃描單元對所述未掃描的頁面執行所述掃描代碼以捕獲同步指令並將所捕獲的同步指令替換為陷入指令的過程。
12.如權利要求9所述的裝置,其特徵在於,如果所述同步指令為內存屏障指令,則所述DSM單元具體用於等待所有數據更新操作完成之後,返回代碼執行權。
13.如權利要求9所述的裝置,其特徵在於,如果所述同步指令為原子操作指令,則所述DSM單元具體用於向其他節點發送廣播通知,以使得其他節點將對應的數據設為只讀, 禁止對所述對應的數據進行同步操作,並在執行完所述原子操作指令之後將更新數據廣播給其他節點,以使得其他節點更新所述對應的數據,並允許對所述對應的數據進行同步操作。
14.如權利要求9所述的裝置,其特徵在於,所述DSM單元還用於在代碼執行的過程中產生缺頁異常時,獲取代碼執行權。
15.如權利要求9所述的裝置,其特徵在於,如果所述缺頁異常由讀操作引起,則所述DSM單元生成所述讀操作所針對的數據的副本,並使得其他節點上對應的副本設為只讀;如果所述缺頁異常由寫操作引起,則當所述寫操作所針對的頁面不存在時,所述DSM 單元申請高速緩存並將數據寫入該高速緩存中,當所述寫操作所針對的頁面存在時,所述 DSM單元更新數據並將更新的數據以及更新的全局時間廣播給其他節點,以便其他節點根據所述全局時間更新對應的數據。
16.如權利要求9所述的裝置,其特徵在於,所述裝置在作業系統或應用程式之下運行,或者被包括在作業系統中。
17.如權利要求9-16任一項所述的裝置,其特徵在於,所述並發多寫協議為寫更新協議。
18.一種數據處理系統,其特徵在於,包括作業系統和在所述作業系統之下運行的如權利要求9-16任一項所述的數據同步裝置。
全文摘要
本發明實施例提供了一種數據同步方法和裝置。該方法包括掃描代碼以捕獲同步指令;將所捕獲的同步指令替換為陷入指令;在代碼運行至陷入指令時,代碼執行權陷入至分布式共享內存DSM單元,其中DSM單元實現並發多寫協議,但在執行同步指令時實現單寫協議,從而能夠支持並發多寫協議並解決了並發多寫協議帶來的同步問題。
文檔編號G06F9/38GK102436366SQ20111024167
公開日2012年5月2日 申請日期2011年8月22日 優先權日2011年8月22日
發明者王振國 申請人:華為技術有限公司