數(shù)據(jù)訪問方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實施例涉及計算機技術(shù),尤其涉及一種數(shù)據(jù)訪問方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]遠程直接數(shù)據(jù)存取(Remote Direct Memory Access,簡稱RDMA)技術(shù)是為了解決網(wǎng)絡(luò)傳輸中服務器端數(shù)據(jù)處理的延遲而產(chǎn)生的。支持RDMA的網(wǎng)絡(luò)設(shè)備(以下簡稱RDMA設(shè)備)在不需要中央處理器(Central Processing Unit,簡稱CPU)干預的情況下,允許通過網(wǎng)絡(luò)將數(shù)據(jù)從本地內(nèi)存?zhèn)鬏數(shù)竭h程內(nèi)存,或者從遠程內(nèi)存將數(shù)據(jù)讀回到本地內(nèi)存,而不對操作系統(tǒng)造成任何影響,消除了外部存儲器復制和文本交換操作,能夠解放內(nèi)存帶寬、提高CPU的利用率,進而改進應用系統(tǒng)性能。
[0003]在多核處理器計算機系統(tǒng)中,一個數(shù)據(jù)有多個副本。通常情況下,這些副本分布在處理器的存儲單元中,其中,存儲單元包括私有cache (高速緩沖存儲器)、共享cache和/或內(nèi)存;離各處理器核最近的一級cache通常分別為各處理器核的私有cache,離處理器核最遠的最后一級cache (Last Level Cache,簡稱LLC)通常為所有處理器核所共享的共享cache。當RDMA設(shè)備訪問一個數(shù)據(jù)時,需要訪問LLC和內(nèi)存以獲得該數(shù)據(jù)最新的副本,當RDMA設(shè)備訪問LLC時,LLC需要檢查LLC中是否存儲著數(shù)據(jù)最新的副本,當LLC中沒有存儲數(shù)據(jù)的最新副本時,LLC利用cache —致性模型,若判斷更上層的cache中存儲著數(shù)據(jù)最新的副本,則訪問更上層的cache,將數(shù)據(jù)的最新副本讀取到LLC中,由LLC將數(shù)據(jù)最新的副本發(fā)送到RDMA設(shè)備中。
[0004]傳統(tǒng)的RDMA設(shè)備訪問存儲單元的訪問延遲大,傳輸性能低。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例提供一種數(shù)據(jù)訪問方法、裝置及系統(tǒng),以降低訪問存儲單元的訪問延遲,提高數(shù)據(jù)傳輸性能。
[0006]第一方面,本發(fā)明實施例提供一種數(shù)據(jù)訪問方法,所述方法包括:
[0007]遠程直接數(shù)據(jù)存取RDMA在處理傳輸隊列中的首個傳輸任務的同時,獲取所述傳輸隊列中的下一個傳輸任務對應的數(shù)據(jù)的起始地址和大小,并向最后一級高速緩沖存儲器LLC發(fā)送同步請求,所述同步請求包括所述數(shù)據(jù)的起始地址和大小,以供所述LLC根據(jù)所述數(shù)據(jù)的起始地址和大小獲取所述數(shù)據(jù)的最新副本;
[0008]所述RDMA在處理所述下一個傳輸任務時,向所述LLC和內(nèi)存分別發(fā)送訪問請求,所述訪問請求包括所述數(shù)據(jù)的起始地址;
[0009]所述RDMA接收所述LLC返回的第一訪問響應及所述內(nèi)存返回的第二訪問響應;
[0010]所述RDMA根據(jù)所述第一訪問響應和第二訪問響應,獲取所述數(shù)據(jù)的最新副本;
[0011]其中,所述第二訪問響應包括所述數(shù)據(jù)在所述內(nèi)存中的副本;所述第一訪問響應包括:所述數(shù)據(jù)的最新副本;或者,所述數(shù)據(jù)在高速緩沖存儲器中沒有副本的指示
[0012]根據(jù)第一方面,在第一方面的第一種可能的實現(xiàn)方式中,所述RDMA根據(jù)所述第一訪問響應和第二訪問響應,獲取所述數(shù)據(jù)的最新副本,包括:
[0013]若所述第一訪問響應包括:所述數(shù)據(jù)在高速緩沖存儲器中沒有副本的指示,則所述RDMA將所述第二訪問響應中包括的所述數(shù)據(jù)在所述內(nèi)存中的副本確定為所述數(shù)據(jù)的最新副本;或者,
[0014]若所述第一訪問響應包括所述數(shù)據(jù)的最新副本,則所述RDMA根據(jù)所述第一訪問響應獲取所述數(shù)據(jù)的最新副本。
[0015]根據(jù)第一方面或第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可能的實現(xiàn)方式中,所述高速緩沖存儲器包括:所述LLC及各處理器核各自對應的私有高速緩沖存儲器。
[0016]第二方面,本發(fā)明實施例提供一種數(shù)據(jù)訪問方法,所述方法包括:
[0017]最后一級高速緩沖存儲器LLC接收遠程直接數(shù)據(jù)存取RDMA發(fā)送的同步請求,所述同步請求中包括數(shù)據(jù)的起始地址和大??;
[0018]所述LLC根據(jù)所述數(shù)據(jù)的起始地址和大小獲取所述數(shù)據(jù)的最新副本;
[0019]所述LLC接收所述RDMA發(fā)送的訪問請求,所述訪問請求包括所述數(shù)據(jù)的起始地址,并向所述RDMA返回訪問響應,所述訪問響應中包括所述獲取的所述數(shù)據(jù)的最新副本。
[0020]根據(jù)第二方面,在第二方面的第一種可能的實現(xiàn)方式中,所述根據(jù)所述數(shù)據(jù)的起始地址和大小獲取所述數(shù)據(jù)的最新副本,包括:
[0021]所述LLC根據(jù)所述數(shù)據(jù)的起始地址和大小,檢查所述LLC中是否存儲有所述數(shù)據(jù)的最新副本;
[0022]若檢查確定所述LLC中存儲有所述數(shù)據(jù)的最新副本時,則所述LLC獲取所述數(shù)據(jù)的最新副本;或者,
[0023]若檢查確定所述LLC中沒有存儲所述數(shù)據(jù)的最新副本時,則所述LLC根據(jù)高速緩沖存儲器一致性協(xié)議、以及所述數(shù)據(jù)的起始地址和大小,確定存儲有所述數(shù)據(jù)的最新副本的第一高速緩沖存儲器;并且,所述LLC向所述第一高速緩沖存儲器發(fā)送攜帶所述數(shù)據(jù)的起始地址和大小的讀請求;所述LLC接收所述第一高速緩沖存儲器返回的所述數(shù)據(jù)的最新副本。
[0024]根據(jù)第二方面的第一種可能的實現(xiàn)方式,在第二方面的第二種可能的實現(xiàn)方式中,所述高速緩沖存儲器一致性協(xié)議具體為目錄協(xié)議,其中,所述目錄用于記錄數(shù)據(jù)在高速緩沖存儲器中的各個副本的高速緩沖存儲器狀態(tài);相應的,所述LLC根據(jù)高速緩沖存儲器一致性協(xié)議、以及所述數(shù)據(jù)的起始地址和大小,確定存儲有所述數(shù)據(jù)的最新副本的第一高速緩沖存儲器,包括:
[0025]所述LLC根據(jù)所述數(shù)據(jù)的起始地址和大小查詢目錄,將存儲有所述數(shù)據(jù)的副本,并且所述數(shù)據(jù)的副本的高速緩沖存儲器狀態(tài)為獨占狀態(tài)的高速緩沖存儲器確定為存儲有所述數(shù)據(jù)的最新副本的第一高速緩沖存儲器。
[0026]根據(jù)第二方面的第一種或第二種可能的實現(xiàn)方式,在第二方面的第三種可能的實現(xiàn)方式中,所述第一高速緩沖存儲器至少為以下任意一個或者其組合:所述LLC、各處理器核各自對應的私有高速緩沖存儲器。
[0027]第三方面,本發(fā)明實施例提供一種遠程直接數(shù)據(jù)存取RDMA,所述RDMA包括:
[0028]處理模塊,用于在處理傳輸隊列中的首個傳輸任務的同時,獲取所述傳輸隊列中的下一個傳輸任務對應的數(shù)據(jù)的起始地址和大??;
[0029]發(fā)送模塊,用于向最后一級高速緩沖存儲器LLC發(fā)送同步請求,所述同步請求包括所述數(shù)據(jù)的起始地址和大小,以供所述LLC根據(jù)所述數(shù)據(jù)的起始地址和大小獲取所述數(shù)據(jù)的最新副本;
[0030]所述發(fā)送模塊,還用于在所述處理模塊處理所述下一個傳輸任務時,向所述LLC和內(nèi)存分別發(fā)送訪問請求,所述訪問請求包括所述數(shù)據(jù)的起始地址;
[0031]接收模塊,用于接收所述LLC返回的第一訪問響應及所述內(nèi)存返回的第二訪問響應;
[0032]所述處理模塊,還用于根據(jù)所述接收模塊接收的所述第一訪問響應和第二訪問響應,獲取所述數(shù)據(jù)的最新副本;
[0033]其中,所述第二訪問響應包括所述數(shù)據(jù)在所述內(nèi)存中的副本;所述第一訪問響應包括:所述數(shù)據(jù)的最新副本;或者,所述數(shù)據(jù)在高速緩沖存儲器中沒有副本的指示。
[0034]根據(jù)第三方面,在第三方面的第一種可能的實現(xiàn)方式中,所述處理模塊具體用于:
[0035]若所述第一訪問響應包括:所述數(shù)據(jù)在高速緩沖存儲器中沒有副本的指示,則將所述第二訪問響應中包括的所述數(shù)據(jù)在所述內(nèi)存中的副本確定為所述數(shù)據(jù)的最新副本;或者,
[0036]若所述第一訪問響應包括所述數(shù)據(jù)的最新副本,則根據(jù)所述第一訪問響應獲取所述數(shù)據(jù)的最新副本。
[0037]根據(jù)第三方面或第三方面的第一種可能的實現(xiàn)方式,在第三方面的第二種可能的實現(xiàn)方式中,所述高速緩沖存儲器包括:所述LLC及各處理器核各自對應的私有高速緩沖存儲器。
[0038]第四方面,本發(fā)明實施例提供一種最后一級高速緩沖存儲器LLC,所述LLC包括:
[0039]接收模塊,用于接收遠程直接數(shù)據(jù)存取RDMA發(fā)送的同步請求,所述同步請求中包括數(shù)據(jù)的起始地址和大??;
[0040]獲取模塊,用于根據(jù)所述數(shù)據(jù)的起始地址和大小獲取所述數(shù)據(jù)的最新副本;
[0041]所述接收模塊,還用于接收所述RDMA發(fā)送的訪問請求,所述訪問請求包括所述數(shù)據(jù)的起始地址;
[0042]發(fā)送模塊,用于向所述RDMA返回訪問響應,所述訪問響應中包括所述獲取的所述數(shù)據(jù)的最新副本。
[0043]根據(jù)第四方面,在第四方面的第一種可能的實現(xiàn)方式中,所述獲取模塊,具體用于:根據(jù)所述數(shù)據(jù)的起始地址和大小,檢查所述LLC中是否存儲有所述數(shù)據(jù)的最新副本;
[0044]若檢查確定所述LLC中存儲有所述數(shù)據(jù)的最新副本時,則獲取所述數(shù)據(jù)的最新副本;或者,
[0045]若檢查確定所述LLC中沒有存儲所述數(shù)據(jù)的最新副本時,則根據(jù)高速緩沖存儲器一致性協(xié)議、以及所述數(shù)據(jù)的起始地址和大小,確定存儲有所述數(shù)據(jù)的最新副本的第一高速緩沖存儲器;并且,向所述第一高速緩沖存儲器發(fā)送攜帶所述數(shù)據(jù)的起始地址和大小的讀請求;接收所述第一高速緩沖存儲器返回的所述數(shù)據(jù)的最新副本。