一種多核處理器、數據同步的方法及裝置的制造方法
【技術領域】
[0001] 本發明涉及處理器技術領域,具體涉及一種多核處理器、數據同步的方法及裝置。
【背景技術】
[0002] 處理器的發展趨勢是在片上集成越來越多的核,多核共享存儲的多線程并行模式 為大規模細粒度并行提供了機會,大規模細粒度并行就是不同線程可以并行訪問不同的數 據對象。
[0003] 細粒度并行的關鍵技術是細粒度數據的同步機制。在共享存儲多線程模式下,多 個線程可能對同一數據對象進行操作,導致線程間對該數據對象的訪問存在沖突,因而需 要協調多個線程對該數據對象的訪問,也就是需要對該數據對象的訪問次序進行同步。通 常的細粒度數據同步技術是為每個存在訪問競爭的數據對象分配一把物理鎖,線程對該數 據對象操作之前必須先獲取該物理鎖,操作完成后再釋放該物理鎖。
[0004] 現有技術中這種避免數據同步沖突的方法,需要為每個存在訪問競爭的數據對象 分配物理鎖和對應的內存空間。由于每個數據對象都可能存在訪問競爭,為每個數據對象 都設置一把物理鎖,就會導致很大的內存開銷。
【發明內容】
[0005] 為了解決現有技術中數據同步時為每個存在訪問競爭的數據對象顯式分配物理 鎖而引起很大的內存開銷的技術問題,本發明實施例提供一種多核處理器、數據同步的方 法及裝置。可以一定程度上解決線程間的對數據對象的訪問沖突問題,又減少了物理鎖的 內存開銷。
[0006] 本發明第一方面提供一種多核處理器,包括:物理鎖裝置和集成在每個處理器核 上的虛擬鎖指令執行裝置,所述物理鎖裝置分別與每個所述虛擬鎖指令執行裝置連接,所 述物理鎖裝置包括多個物理鎖,用于存儲數據對象的內存空間包括多個虛擬鎖的標識,所 述虛擬鎖的標識為所述數據對象的一個存儲地址,且所述虛擬鎖的標識的數量大于所述物 理鎖的標識的數量;
[0007] 所述虛擬鎖指令執行裝置用于:
[0008] 接收虛擬鎖指令,所述虛擬鎖指令用于指示執行從虛擬鎖的標識到物理鎖的標識 的映射操作,所述虛擬鎖指令包括鎖操作類型標識和目的虛擬鎖的標識;
[0009] 根據所述目的虛擬鎖的標識映射出目的物理鎖的標識,并向所述物理鎖裝置發送 鎖操作請求,所述鎖操作請求包括所述鎖操作類型標識和所述目的物理鎖的標識;
[0010] 所述物理鎖裝置用于:
[0011] 根據所述目的物理鎖的標識,從所述多個物理鎖中確定所述目的物理鎖;
[0012] 對所述目的物理鎖執行所述鎖操作類型標識對應的鎖操作,得到針對所述目標物 理鎖的鎖操作結果。
[0013] 結合第一方面,在第一種可能的實現方式中,所述鎖操作請求還包括所述虛擬鎖 指令執行裝置所屬的處理器核的標識;
[0014] 所述物理鎖裝置,還用于根據所述處理器核的標識向所述虛擬鎖指令執行裝置返 回所述鎖操作結果。
[0015] 結合第一方面第一種可能的實現方式,在第二種可能的實現方式中,所述虛擬鎖 指令執行裝置包括虛擬鎖的標識寄存器和映射處理模塊,所述物理鎖裝置包括緩沖隊列存 儲模塊和物理鎖操作模塊;其中,
[0016] 所述虛擬鎖的標識寄存器,用于存儲所述目的虛擬鎖的標識,所述目的虛擬鎖的 標識包括所述目的虛擬鎖的標識對應的數據對象的一個地址;
[0017] 所述映射處理模塊,用于根據所述虛擬鎖的標識寄存器中存儲的所述虛擬鎖的標 識,以及虛擬鎖的標識與物理鎖的標識的映射關系,映射出與所述虛擬鎖的標識對應的目 的物理鎖的標識,并向所述物理鎖裝置發送鎖操作請求,所述鎖操作請求包括鎖操作類型 標識、所述目的物理鎖的標識和所述虛擬鎖指令執行裝置所屬的處理器核的標識;
[0018] 所述緩沖隊列存儲模塊,用于緩存所述鎖操作請求;
[0019] 所述物理鎖操作模塊用于:
[0020] 從所述緩沖隊列存儲模塊中讀取排在所述緩沖隊列最前面的鎖操作請求;
[0021 ] 根據所述鎖操作請求中的目的物理鎖的標識確定所述目的物理鎖,對所述目的物 理鎖執行所述鎖操作類型標識對應的鎖操作,得到針對所述目的物理鎖的鎖操作結果;
[0022] 根據所述處理器核的標識向所述虛擬鎖指令執行裝置返回所述鎖操作結果。
[0023] 結合第一方面第一種或第二種可能的實現方式,在第三種可能的實現方式中,所 述虛擬鎖指令執行裝置還包括:虛擬鎖返回結果寄存器;
[0024] 所述物理鎖操作模塊,具體用于返回所述鎖操作結果給所述虛擬鎖指令執行裝置 中的虛擬鎖返回結果寄存器;
[0025] 所述虛擬鎖返回結果寄存器,用于存儲接收到的所述鎖操作結果。
[0026] 結合第一方面第一種、第二種或第三種可能的實現方式,在第四種可能的實現方 式中,
[0027] 所述物理鎖操作模塊具體用于:
[0028] 當所述鎖操作類型標識為加鎖的標識vltrylock時,確定所述目的物理鎖的狀 態;
[0029] 當所述目的物理鎖處于空閑狀態時,獲取所述目的物理鎖,將所述目的物理鎖的 狀態修改到被占用狀態,并向所述虛擬鎖指令執行裝置返回表示獲取鎖成功的鎖操作結 果;
[0030] 當所述目的物理鎖處于被占用狀態時,向所述虛擬鎖指令執行裝置返回表示獲取 鎖失敗的鎖操作結果。
[0031] 結合第一方面第一種、第二種或第三種可能的實現方式,在第五種可能的實現方 式中,
[0032] 所述物理鎖操作模塊具體用于:
[0033] 當所述鎖操作類型標識為解鎖的標識vlunlock時,對所述目的物理鎖進行解鎖 操作,并將所述目的物理鎖的狀態修改到空閑狀態,得到表示解鎖成功的鎖操作結果;
[0034] 當所述鎖操作類型標識為重置目的虛擬鎖的標識vlreset時,對所述目的物理鎖 進行重置操作,將所述目的物理鎖的狀態修改到空閑狀態,得到表示重置目的物理鎖成功 或失敗的鎖操作結果。
[0035] 本發明第二方面提供一種數據同步的方法,所述方法應用于多核處理器,所述多 核處理器包括物理鎖裝置和多個處理器核,每個所述處理器核均包括一虛擬鎖指令執行裝 置,所述物理鎖裝置分別與所述虛擬鎖指令執行裝置連接,所述物理鎖裝置包括多個物理 鎖,用于存儲數據對象的內存空間包括多個虛擬鎖的標識,所述虛擬鎖的標識為所述數據 對象的一個存儲地址,且所述虛擬鎖的標識的數量大于所述物理鎖的標識的數量,所述方 法包括:
[0036] 所述虛擬鎖指令執行裝置接收虛擬鎖指令,所述虛擬鎖指令包括鎖操作類型標識 和目的虛擬鎖的標識,所述目的虛擬鎖的標識為待同步數據對象的一個地址;
[0037] 所述虛擬鎖指令執行裝置根據所述目的虛擬鎖的標識映射出目的物理鎖的標識, 向所述物理鎖裝置發送鎖操作請求,所述鎖操作請求包括所述鎖操作類型標識和所述目的 物理鎖的標識;
[0038] 所述物理鎖裝置根據所述目的物理鎖的標識,從所述多個物理鎖中確定所述目的 物理鎖;
[0039] 所述物理鎖裝置對所述目的物理鎖執行所述鎖操作類型標識對應的鎖操作,得到 針對所述目的物理鎖的鎖操作結果,所述鎖操作的結果用于所述待同步數據對象的同步操 作。
[0040] 結合第二方面,在第一種可能的實現方式中,所述鎖操作請求還包括所述虛擬鎖 指令執行裝置所屬的處理器核的標識,所述方法還包括:
[0041] 所述物理鎖裝置根據所述處理器核的標識向所述虛擬鎖指令執行裝置返回所述 鎖操作結果;
[0042] 所述虛擬鎖指令執行裝置接收所述物理鎖裝置返回的所述鎖操作結果,并存儲所 述鎖操作結果。
[0043] 結合第二方面第一種可能的實現方式,在第二種可能的實現方式中,所述虛擬鎖 指令執行裝置接收虛擬鎖指令之后,所述方法還包括:
[0044] 所述虛擬鎖指令執行裝置存儲所述目的虛擬鎖的標識,所述目的虛擬鎖的標識包 括所述目的虛擬鎖的標識對應的數據對象的一個地址;
[0045] 所述虛擬鎖指令執行裝置根據所述目的虛擬鎖的標識映射出目的物理鎖的標識, 向所述物理鎖裝置發送鎖操作請求,所述鎖操作請求包括所述鎖操作類型標識和所述目的 物理鎖的標識,包括:
[0046] 所述虛擬鎖指令執行裝置根據存儲的所述虛擬鎖的標識,以及虛擬鎖的標識與物 理鎖的標識的映射關系,映射出與所述虛擬鎖的標識對應的目的物理鎖的標識,并向所述 物理鎖裝置發送鎖操作請求,所述鎖操作請求包括鎖操作類型標識、所述目的物理鎖的標 識和所述虛擬鎖指令執行裝置所屬的處理器核的標識。
[0047] 結合第二方面、第二方面第一種或第二種可能的實現方式,在第三種可能的實現 方式中,所述物理鎖裝置根據所述目的物理鎖的標識,從所述多個物理鎖中確定所述目的 物理鎖之前,所述方法還包括:
[0048] 所述物理鎖裝置按照緩沖隊列的方式緩存接收的所述鎖操作請求;
[0049] 從緩存的所述鎖操作請求中讀取排在所述緩沖隊列最前面的鎖操作請求。
[0050] 結合第二方面、第二方面第一種、第二種或第三種可能的實現方式,在第四種可能 的實現方式中,所述對所述目的物理鎖執行所述鎖操作類型標識對應的鎖操作,得到針對 所述目的物理鎖的鎖操作結果,包括:
[0051] 當所述鎖操作類型標識為加鎖的標識vltrylock時,確定所述目的物理鎖的狀 態;
[0052] 當所述目的物理鎖處于空閑狀態時,獲取所述目的物理鎖,將所述目的物理鎖的 狀態修改到被占用狀態,得到表示獲取鎖成功的鎖操作結果;
[0053] 當所述目的物理鎖處于被占用狀態時,得到表示獲取鎖失敗的鎖操作結果。
[0054] 結合第二方面、第二方面第一種、第二種或第三種可能的實現方式,在第五種可能 的實現方式中,所述對所述目的物理鎖執行所述鎖操作類型標識對應的鎖操作,得到針對 所述目的物理鎖的鎖操作結果,包括:
[0055] 當所述鎖操作類型標識為解鎖的標識vlunlock時,對所述目的物理鎖進行解鎖 操作,并將所述目的物理鎖的狀態修改到空閑狀態,得到表示解鎖成功的鎖操作結果;
[0056] 當所述鎖操作類型標識為重置目的虛擬鎖的標識vlreset時,對所述目的物理鎖 進行重置操作,將所述目的物理鎖的狀態修改到空閑狀態,得到表示重置目的物