內(nèi)存拷貝的方法、裝置和片上系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供一種內(nèi)存拷貝的方法、裝置和片上系統(tǒng)。本發(fā)明內(nèi)存拷貝的方法,包括:接收內(nèi)存拷貝指令,內(nèi)存拷貝指令中包括待拷貝數(shù)據(jù)在內(nèi)存中的源地址、目的地址和待拷貝數(shù)據(jù)的長度;向源地址對應(yīng)的緩存目錄存儲裝置發(fā)送讀取請求,讀取請求中攜帶源地址,以使源地址對應(yīng)的緩存目錄存儲裝置根據(jù)源地址獲取對應(yīng)的待拷貝數(shù)據(jù);接收緩存目錄存儲裝置發(fā)送的讀取響應(yīng),讀取響應(yīng)中攜帶待拷貝數(shù)據(jù);向目的地址對應(yīng)的緩存目錄存儲裝置發(fā)送寫入請求,寫入請求中攜帶待拷貝數(shù)據(jù),以使緩存目錄存裝置塊將待拷貝數(shù)據(jù)寫入目的地址對應(yīng)的內(nèi)存中。本發(fā)明可以提高內(nèi)存拷貝的效率,降低系統(tǒng)消耗。
【專利說明】內(nèi)存拷貝的方法、裝置和片上系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)技術(shù),尤其涉及一種內(nèi)存拷貝的方法、裝置和片上系統(tǒng)。
【背景技術(shù)】
[0002]內(nèi)存拷貝是指將內(nèi)存中的一塊連續(xù)的數(shù)據(jù)從一個地址拷貝到另一個地址。目前,處理器的計算速度飛速提升,而處理器訪問內(nèi)存的能力(訪存能力)提升緩慢。內(nèi)存拷貝過程幾乎不需要任何計算,而需要大量的訪存操作,占用大量的訪存帶寬這一寶貴的訪存資源。
[0003]多核處理器時代的內(nèi)存拷貝更加復(fù)雜,同樣一個數(shù)據(jù)可能既存在于cache中,又存在于內(nèi)存中。這個數(shù)據(jù)在cache中的值和在內(nèi)存中的值如果不相同,則稱cache的不一致性;如果相同,則稱cache的一致性。cache的不一致性可能引發(fā)系統(tǒng)錯誤,特別對于支持高速緩沖存儲器cache —致性的多核處理器。另外,處理器采用的虛地址和內(nèi)存數(shù)據(jù)使用的實地址有專門的對應(yīng)關(guān)系,該關(guān)系由頁表統(tǒng)一維護(hù)。內(nèi)存拷貝時,需要考慮虛實地址轉(zhuǎn)換的工作。現(xiàn)有技術(shù)中,采用DMA (Direct Memory Access,直接內(nèi)存訪問)技術(shù),在訪存系統(tǒng)中所使用的DMA模塊是獨立于最后一級緩存和內(nèi)存控制器之外的模塊,作為一個外部模塊,在內(nèi)存拷貝過程中,其向最后一級緩存發(fā)送的讀取命令需要耗費較多的資源。此外,內(nèi)存拷貝過程中,處理器采用虛地址,內(nèi)存中存儲的數(shù)據(jù)使用的是實地址,虛、實地址有專門的對應(yīng)關(guān)系,DMA模塊需要不斷地進(jìn)行虛實地址轉(zhuǎn)換的工作,導(dǎo)致系統(tǒng)內(nèi)存拷貝效率低,系統(tǒng)消耗大。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供一種內(nèi)存拷貝的方法、裝置和片上系統(tǒng),用以提高內(nèi)存拷貝效率,降低系統(tǒng)消耗。
[0005]本發(fā)明第一方面提供一種內(nèi)存拷貝方法,包括:
[0006]接收內(nèi)存拷貝指令,所述內(nèi)存拷貝指令中包括待拷貝數(shù)據(jù)在內(nèi)存中的源地址、目的地址和所述待拷貝數(shù)據(jù)的長度;
[0007]向所述源地址對應(yīng)的緩存目錄存儲裝置發(fā)送讀取請求,所述讀取請求中攜帶所述源地址,以使所述源地址對應(yīng)的緩存目錄存儲裝置根據(jù)所述源地址獲取對應(yīng)的所述待拷貝數(shù)據(jù);
[0008]接收所述緩存目錄存儲裝置發(fā)送的讀取響應(yīng),所述讀取響應(yīng)中攜帶所述待拷貝數(shù)據(jù);
[0009]向所述目的地址對應(yīng)的緩存目錄存儲裝置發(fā)送寫入請求,所述寫入請求中攜帶所述待拷貝數(shù)據(jù),以使所述緩存目錄存裝置塊將所述待拷貝數(shù)據(jù)寫入目的地址對應(yīng)的內(nèi)存中。
[0010]所述讀取請求中還包括cache標(biāo)識位,以使所述源地址對應(yīng)的緩存目錄存儲模塊根據(jù)所述cache標(biāo)識位確定是否對所述待拷貝數(shù)據(jù)進(jìn)行本地存儲。[0011 ] 所述寫入請求中還包括cache標(biāo)識位,以使所述目的地址對應(yīng)的緩存目錄存儲裝置根據(jù)所述cache標(biāo)識位確定是否對所述待拷貝數(shù)據(jù)進(jìn)行本地存儲。
[0012]本發(fā)明第二方面提供一種內(nèi)存拷貝裝置,其特征在于,包括:
[0013]第一接收模塊,用于接收內(nèi)存拷貝指令,所述內(nèi)存拷貝指令中包括待拷貝數(shù)據(jù)在內(nèi)存中的源地址、目的地址和所述待拷貝數(shù)據(jù)的長度;
[0014]第一發(fā)送模塊,用于向所述源地址對應(yīng)的緩存目錄存儲裝置發(fā)送讀取請求,所述讀取請求中攜帶所述源地址,以使所述源地址對應(yīng)的緩存目錄存儲裝置根據(jù)所述源地址獲取對應(yīng)的所述待拷貝數(shù)據(jù);
[0015]第二接收模塊,用于接收所述源地址對應(yīng)的緩存目錄存儲裝置發(fā)送的讀取響應(yīng),所述讀取響應(yīng)中攜帶所述待拷貝數(shù)據(jù);
[0016]第二發(fā)送模塊,用于向所述目的地址對應(yīng)的緩存目錄存儲裝置發(fā)送寫入請求,所述寫入請求中攜帶所述待拷貝數(shù)據(jù),以使所述緩存目錄存儲裝置塊將所述待拷貝數(shù)據(jù)寫入目的地址對應(yīng)的內(nèi)存中。
[0017]第三方面,本發(fā)明提供一種片上系統(tǒng),包括:處理器核、緩存目錄存儲裝置,所述緩存目錄存儲裝置上聚合設(shè)置第二方面提供的內(nèi)存拷貝裝置;
[0018]所述處理器核用于執(zhí)行內(nèi)存拷貝指令,將所述內(nèi)存拷貝指令發(fā)送給所述內(nèi)存拷貝裝置,所述內(nèi)存拷貝指令中包括待拷貝數(shù)據(jù)在內(nèi)存中的源地址、目的地址和待拷貝數(shù)據(jù)的長度;
[0019]所述內(nèi)存拷貝裝置用于根據(jù)所述內(nèi)存拷貝命令向所述源地址對應(yīng)的緩存目錄存儲裝置發(fā)送讀取請求,根據(jù)所述緩存目錄存儲裝置的讀取響應(yīng),向所述目的地址對應(yīng)的緩存目錄存儲裝置發(fā)送寫入請求,所述讀取請求中攜帶所述源地址;所述寫入請求中攜帶所述待拷貝數(shù)據(jù);
[0020]所述緩存目錄存儲裝置用于根據(jù)所述讀取請求獲取所述源地址對應(yīng)的所述待拷貝數(shù)據(jù),向所述內(nèi)存拷貝裝置發(fā)送讀取響應(yīng),根據(jù)所述寫入請求將所述待拷貝數(shù)據(jù)寫入內(nèi)存,所述讀取響應(yīng)中攜帶所述待拷貝數(shù)據(jù)。
[0021]本發(fā)明內(nèi)存拷貝的方法、裝置和片上系統(tǒng),通過在內(nèi)存拷貝過程中使用了內(nèi)存拷貝指令,該指令中攜帶被拷貝數(shù)據(jù)在內(nèi)存中的源地址、目的地址和所述待拷貝數(shù)據(jù)的長度。由于該指令給出了源地址和目的地址,因此在拷貝過程中無需進(jìn)行額外的虛實地址轉(zhuǎn)換,提高了內(nèi)存拷貝效率。本發(fā)明使用的內(nèi)存拷貝裝置可以聚合設(shè)置于緩存目錄存儲裝置中,是緩存目錄存儲裝置的內(nèi)部裝置,該內(nèi)部裝置與緩存目錄存儲裝置通信時所消耗的資源少于現(xiàn)有技術(shù)中使用外部模塊DMA與緩存目錄存儲裝置通信所消耗的資源。
【專利附圖】
【附圖說明】
[0022]圖1為本發(fā)明內(nèi)存拷貝方法實施例的流程圖;
[0023]圖2為本發(fā)明內(nèi)存拷貝實施例的示意圖;
[0024]圖3為本發(fā)明內(nèi)存拷貝實施例的另一不意圖;
[0025]圖4為現(xiàn)有內(nèi)存拷貝方法最后一級cache不意圖;
[0026]圖5為本發(fā)明內(nèi)存拷貝方法最后一級cache示意圖;
[0027]圖6為本發(fā)明內(nèi)存拷貝裝置實施例一的結(jié)構(gòu)示意圖;[0028]圖7為本發(fā)明片上系統(tǒng)實施例的結(jié)構(gòu)示意圖。
【具體實施方式】
[0029]圖1為本發(fā)明內(nèi)存拷貝方法實施例的流程圖,如圖1所示,本實施例的方法可以包括:
[0030]S101、接收內(nèi)存拷貝指令,內(nèi)存拷貝指令中包括待拷貝數(shù)據(jù)在內(nèi)存中的源地址、目的地址和待拷貝數(shù)據(jù)的長度。
[0031]S102、向源地址對應(yīng)的緩存目錄存儲裝置發(fā)送讀取請求,讀取請求中攜帶源地址,以使源地址對應(yīng)的緩存目錄存儲裝置根據(jù)源地址獲取對應(yīng)的待拷貝數(shù)據(jù)。
[0032]S103、接收緩存目錄存儲裝置發(fā)送的讀取響應(yīng),讀取響應(yīng)中攜帶待拷貝數(shù)據(jù)。
[0033]一種可能的實施方式,上述的讀取響應(yīng)中還包括cache標(biāo)識位,以使源地址對應(yīng)的緩存目錄存儲模塊根據(jù)cache標(biāo)識位確定是否對所述待拷貝數(shù)據(jù)進(jìn)行本地存儲。
[0034]S104、向目的地址對應(yīng)的緩存目錄存儲裝置發(fā)送寫入請求,寫入請求中攜帶待拷貝數(shù)據(jù),以使緩存目錄存裝置塊將待拷貝數(shù)據(jù)寫入目的地址對應(yīng)的內(nèi)存中。
[0035]同樣的,寫入請求中還包括cache標(biāo)識位,以使目的地址對應(yīng)的緩存目錄存儲裝置根據(jù)cache標(biāo)識位確定是否對待拷貝數(shù)據(jù)進(jìn)行本地存儲。
[0036]本發(fā)明實施例的方法通過在內(nèi)存拷貝過程中使用了內(nèi)存拷貝指令,該指令中攜帶被拷貝數(shù)據(jù)在內(nèi)存中的源地址、目的地址和所述待拷貝數(shù)據(jù)的長度。由于該指令給出了源地址和目的地址,因此在拷貝過程中無需進(jìn)行額外的虛實地址轉(zhuǎn)換,提高了內(nèi)存拷貝效率。
[0037]圖2為本發(fā)明內(nèi)存拷貝實施例的示意圖,實現(xiàn)本發(fā)明內(nèi)存拷貝方法的系統(tǒng)具體為一種片上多核處理器,多核處理器里可以有多個處理器核,處理器核的數(shù)量是可以變化的,本實施例以比較常見的四核處理器為例進(jìn)行說明,以二級緩存作為最后一級緩存為例,舉例說明本發(fā)明內(nèi)存拷貝的過程,其中一致性協(xié)議的維護(hù)通過緩存目錄管理,緩存目錄中存儲系統(tǒng)內(nèi)所有一級cache和二級cache的數(shù)據(jù)存儲信息,若緩存目錄存儲在二級cache中,則由二級cache來維護(hù)cache —致性;若緩存目錄存儲在內(nèi)存控制器中,則由內(nèi)存控制器來維護(hù)cache —致性;維護(hù)cache —致性是指根據(jù)緩存目錄來查詢一級cache是否有數(shù)據(jù)備份,這些數(shù)據(jù)備份的狀態(tài)為獨占、共享或者無效,確保內(nèi)存和所有cache中存儲的數(shù)據(jù)一致。作為一種可行的實施方式,在圖2中,內(nèi)存拷貝模塊可以是數(shù)據(jù)搬運(yùn)模塊(DataMovement Module,DMM)這樣的硬件模塊,設(shè)置在二級緩存內(nèi)部,是二級緩存的一部分。即本實施例使用二級緩存來維護(hù)cache —致性操作。
[0038]以下以圖2所示的實施例為例,詳細(xì)論述本發(fā)明的實施過程。圖2中左邊內(nèi)存的數(shù)據(jù)被拷貝到右邊內(nèi)存(如圖2中虛箭頭所示)。圖2中左邊二級cache即為源地址對應(yīng)的二級cache,右邊二級cache即為目的地址對應(yīng)的二級cache。由于圖2所示的實施例是把內(nèi)存中的數(shù)據(jù)從左邊內(nèi)存拷貝到右邊內(nèi)存,因此,左邊DMM參與本次內(nèi)存拷貝過程,右邊DMM不參與本次內(nèi)存拷貝過程??梢岳斫獾氖?,如果要把內(nèi)存中的數(shù)據(jù)從右邊內(nèi)存拷貝到左邊內(nèi)存,則右邊DMM參與內(nèi)存拷貝過程,而左邊DMM不參與本次內(nèi)存拷貝過程。
[0039]圖2中左邊二級cache,根據(jù)源地址獲取對應(yīng)的被拷貝數(shù)據(jù)時,首先查詢緩存目錄,判斷系統(tǒng)內(nèi)所有一級cache中是否存在被拷貝數(shù)據(jù)。其中,緩存目錄中存儲系統(tǒng)內(nèi)所有一級cache和二級cache的數(shù)據(jù)存儲信息。若系統(tǒng)內(nèi)存在存儲有被拷貝數(shù)據(jù)的一級cache,由于左邊一級cache存儲的數(shù)據(jù)是左邊二級cache存儲數(shù)據(jù)的子集,那么,左邊二級cache必然也存儲了被拷貝數(shù)據(jù)。此時,還需進(jìn)一步判斷左邊一級cache存儲的數(shù)據(jù),與左邊二級cache存儲的數(shù)據(jù),這兩者是否有一致。若兩者不一致,則左邊二級cache從存儲有被拷貝數(shù)據(jù)的左邊一級cache中獲取被拷貝數(shù)據(jù),因為該數(shù)據(jù)是最新的數(shù)據(jù);若兩者一致,說明兩者并沒有“新、舊”的區(qū)別,則左邊二級cache也無需從左邊一級cache中獲取被拷貝數(shù)據(jù)。若系統(tǒng)內(nèi)不存在存儲有被拷貝數(shù)據(jù)的一級cache (即圖中4個一級cache都沒有存儲被拷貝數(shù)據(jù)),還需進(jìn)一步判斷左邊一級cache是否存儲了被拷貝數(shù)據(jù),如果沒有存儲,則左邊二級cache還需要從源地址對應(yīng)的內(nèi)存(即圖中左邊內(nèi)存)中獲取被拷貝數(shù)據(jù)。(被拷貝數(shù)據(jù)有三種存儲情況:1 一級cache中有最新的數(shù)據(jù),即某一個一級cache中數(shù)據(jù)狀態(tài)為獨占,則從一級cache中獲取數(shù)據(jù);2 —級cache或者二級cache中有數(shù)據(jù),該數(shù)據(jù)是共享狀態(tài),則一級cache和二級cache中的數(shù)據(jù)是一樣的,則直接從二級cache中獲取數(shù)據(jù);3 —級cache和二級cache都沒有數(shù)據(jù),貝U從內(nèi)存中獲取數(shù)據(jù))(說明:一級cache是二級cache的子集,一級cache有數(shù)據(jù)則二級cache肯定也有該數(shù)據(jù))
[0040]進(jìn)一步的,二級cache查詢緩存目錄時,若判斷被拷貝的數(shù)據(jù)處于獨占狀態(tài)(即有且僅有I個一級cache存儲該被拷貝的數(shù)據(jù),并且該一級cache中存儲的被拷貝的數(shù)據(jù)的值,與二級cache中存儲的被拷貝的數(shù)據(jù)的值,兩者不一致),則左邊二級cache向該一級cache發(fā)出寫回請求。隨后,該一級cache將被拷貝的數(shù)據(jù)寫回到左邊二級cache,并將緩存目錄中該cache狀態(tài)從獨占狀態(tài)更新為共享狀態(tài)(至少一個一級cache存儲有待拷貝數(shù)據(jù),并且該一級cache中存儲的被拷貝的數(shù)據(jù)的值,與二級cache中存儲的被拷貝的數(shù)據(jù)的值,兩者一致)。二級cache查詢緩存目錄時,若判斷被拷貝的數(shù)據(jù)處于共享狀態(tài),則左邊二級cache也無需從左邊一級cache中獲取被拷貝數(shù)據(jù)。
[0041]圖3為本發(fā)明內(nèi)存拷貝實施例的另一不意圖,在圖2所不實施例的基礎(chǔ)上,作為另一種可行的實施方式,在本示意圖中,內(nèi)存拷貝模塊DMM還可以設(shè)置在內(nèi)存控制器內(nèi)部,是內(nèi)存控制器的一部分。即在本實施例中使用內(nèi)存控制器來維護(hù)cache —致性操作。
[0042]具體的,圖3中左邊內(nèi)存的數(shù)據(jù)被拷貝到右邊內(nèi)存(如圖3中虛箭頭所示)。圖3中左邊內(nèi)存控制器即為源地址對應(yīng)的內(nèi)存控制器,右邊內(nèi)存控制器即為目的地址對應(yīng)的內(nèi)存控制器,左邊DMM參與本次內(nèi)存拷貝過程,右邊DMM不參與本次內(nèi)存拷貝過程。以此類推,如果要把內(nèi)存中的數(shù)據(jù)從右邊內(nèi)存拷貝到左邊內(nèi)存,則右邊DMM參與內(nèi)存拷貝過程,而左邊DMM不參與本次內(nèi)存拷貝過程。具體的拷貝過程參見圖2所示實施例,由內(nèi)存控制器及DMM來完成圖2中二級cache及DMM的操作。
[0043]進(jìn)一步的,內(nèi)存控制器查詢緩存目錄時,若判斷被拷貝的數(shù)據(jù)處于獨占狀態(tài)(即有且僅有I個一級cache存儲該被拷貝的數(shù)據(jù),并且該一級cache中存儲的被拷貝的數(shù)據(jù)的值,與二級cache中存儲的被拷貝的數(shù)據(jù)的值,兩者不一致),則左邊內(nèi)存控制器向該一級cache發(fā)出寫回請求。隨后,該一級cache將被拷貝的數(shù)據(jù)寫回到左邊二級cache,并將緩存目錄中該cache狀態(tài)從獨占狀態(tài)更新為共享狀態(tài)(至少一個一級cache存儲有待拷貝數(shù)據(jù),并且該一級cache中存儲的被拷貝的數(shù)據(jù)的值,與二級cache中存儲的被拷貝的數(shù)據(jù)的值,兩者一致)。
[0044]圖2、圖3的內(nèi)存拷貝過程中,假設(shè)了只有二級緩存,若系統(tǒng)中有多級緩存,可以用同樣的方式實現(xiàn)內(nèi)存拷貝功能,對于內(nèi)存拷貝實現(xiàn)的系統(tǒng)中具體有幾級cache,本發(fā)明不作限制。此外,一個處理器核可以認(rèn)為是一個單核處理器。
[0045]表1為內(nèi)存拷貝指令示意,僅用于說明內(nèi)存拷貝指令可行的指令長度以及指令的
可行結(jié)構(gòu),但并不能依次作為對本發(fā)明的限制。
[0046]
【權(quán)利要求】
1.一種內(nèi)存拷貝方法,其特征在于,包括: 接收內(nèi)存拷貝指令,所述內(nèi)存拷貝指令中包括待拷貝數(shù)據(jù)在內(nèi)存中的源地址、目的地址和所述待拷貝數(shù)據(jù)的長度; 向所述源地址對應(yīng)的緩存目錄存儲裝置發(fā)送讀取請求,所述讀取請求中攜帶所述源地址,以使所述源地址對應(yīng)的緩存目錄存儲裝置根據(jù)所述源地址獲取對應(yīng)的所述待拷貝數(shù)據(jù); 接收所述緩存目錄存儲裝置發(fā)送的讀取響應(yīng),所述讀取響應(yīng)中攜帶所述待拷貝數(shù)據(jù); 向所述目的地址對應(yīng)的緩存目錄存儲裝置發(fā)送寫入請求,所述寫入請求中攜帶所述待拷貝數(shù)據(jù),以使所述緩存目錄存裝置塊將所述待拷貝數(shù)據(jù)寫入目的地址對應(yīng)的內(nèi)存中。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述讀取請求中還包括cache標(biāo)識位,以使所述源地址對應(yīng)的緩存目錄存儲模塊根據(jù)所述cache標(biāo)識位確定是否對所述待拷貝數(shù)據(jù)進(jìn)行本地存儲。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述寫入請求中還包括cache標(biāo)識位,以使所述目的地址對應(yīng)的緩存目錄存儲裝置根據(jù)所述cache標(biāo)識位確定是否對所述待拷貝數(shù)據(jù)進(jìn)行本地存儲。
4.一種內(nèi)存拷貝裝置,其特征在于 ,包括: 第一接收模塊,用于接收內(nèi)存拷貝指令,所述內(nèi)存拷貝指令中包括待拷貝數(shù)據(jù)在內(nèi)存中的源地址、目的地址和所述待拷貝數(shù)據(jù)的長度; 第一發(fā)送模塊,用于向所述源地址對應(yīng)的緩存目錄存儲裝置發(fā)送讀取請求,所述讀取請求中攜帶所述源地址,以使所述源地址對應(yīng)的緩存目錄存儲裝置根據(jù)所述源地址獲取對應(yīng)的所述待拷貝數(shù)據(jù); 第二接收模塊,用于接收所述源地址對應(yīng)的緩存目錄存儲裝置發(fā)送的讀取響應(yīng),所述讀取響應(yīng)中攜帶所述待拷貝數(shù)據(jù); 第二發(fā)送模塊,用于向所述目的地址對應(yīng)的緩存目錄存儲裝置發(fā)送寫入請求,所述寫入請求中攜帶所述待拷貝數(shù)據(jù),以使所述緩存目錄存裝置塊將所述待拷貝數(shù)據(jù)寫入目的地址對應(yīng)的內(nèi)存中。
5.根據(jù)權(quán)利要求4所述的裝置,其特征在于,所述第一發(fā)送模塊,還用于: 向所述源地址對應(yīng)的緩存目錄存儲裝置發(fā)送讀取請求,所述讀取請求攜帶cache標(biāo)識位,以使所述源地址對應(yīng)的緩存目錄存儲模塊根據(jù)所述cache標(biāo)識位確定是否對所述待拷貝數(shù)據(jù)進(jìn)行本地存儲。
6.根據(jù)權(quán)利要求4所述的裝置,其特征在于,所述第二發(fā)送模塊,還用于: 向所述目的地址對應(yīng)的緩存目錄存儲裝置發(fā)送寫入請求,所述寫入請求中還攜帶cache標(biāo)識位,以使所述目的地址對應(yīng)的緩存目錄存儲裝置根據(jù)所述cache標(biāo)識位確定是否對所述待拷貝數(shù)據(jù)進(jìn)行本地存儲。
7.一種片上系統(tǒng),其特征在于,包括:處理器核和緩存目錄存儲裝置,所述緩存目錄存儲裝置上聚合設(shè)置如權(quán)利要求4-6所述的內(nèi)存拷貝裝置; 所述處理器核用于執(zhí)行內(nèi)存拷貝指令,將所述內(nèi)存拷貝指令發(fā)送給所述內(nèi)存拷貝裝置,所述內(nèi)存拷貝指令中包括待拷貝數(shù)據(jù)在內(nèi)存中的源地址、目的地址和待拷貝數(shù)據(jù)的長度;所述內(nèi)存拷貝裝置用于根據(jù)所述內(nèi)存拷貝命令向所述源地址對應(yīng)的緩存目錄存儲裝置發(fā)送讀取請求,根據(jù)所述緩存目錄存儲裝置的讀取響應(yīng),向所述目的地址對應(yīng)的緩存目錄存儲裝置發(fā)送寫入請求,所述讀取請求中攜帶所述源地址;所述寫入請求中攜帶所述待拷貝數(shù)據(jù); 所述緩存目錄存儲裝置用于根據(jù)所述讀取請求獲取所述源地址對應(yīng)的所述待拷貝數(shù)據(jù),向所述內(nèi)存拷貝裝置發(fā)送讀取響應(yīng),根據(jù)所述寫入請求將所述待拷貝數(shù)據(jù)寫入內(nèi)存,所述讀取響應(yīng)中攜帶所述待拷貝數(shù)據(jù)。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述緩存目錄存儲裝置還用于: 查詢緩存目錄判斷系統(tǒng)內(nèi)所有一級緩存至最后一級緩存中是否存在所述待拷貝數(shù)據(jù),所述緩存目錄中存儲所述系統(tǒng)內(nèi)所有一級緩存至最后一級的數(shù)據(jù)存儲信息; 若所述系統(tǒng)內(nèi)存在存儲有所述待拷貝數(shù)據(jù)的緩存,并且所述待拷貝數(shù)據(jù)為獨占狀態(tài),則從存儲有所述待拷貝數(shù)據(jù)的緩存中獲取所述待拷貝數(shù)據(jù); 或者,若所述系統(tǒng)內(nèi)不存在存儲有所述待拷貝數(shù)據(jù)的緩存,則從所述源地址對應(yīng)的內(nèi)存中獲取所述待拷貝數(shù)據(jù)。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述緩存目錄存儲裝置還用于: 將緩存目錄中存儲所述待拷貝數(shù)據(jù)的一級緩存由所述獨占狀態(tài)更新為共享狀態(tài)。
10.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述內(nèi)存拷貝裝置還用于: 向所述源地址對應(yīng)的緩存目錄存儲裝置發(fā)送讀取請求,所述讀取請求攜帶cache標(biāo)識位,則所述緩存目錄存儲裝置還用于: 根據(jù)所述cache標(biāo)識位確定是否對所述待拷貝數(shù)據(jù)進(jìn)行本地存儲。
11.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述緩存目錄存儲裝置還用于: 查詢緩存目錄判斷系統(tǒng)內(nèi)所有一級緩存至最后一級前一級緩存中是否存在待覆蓋數(shù)據(jù),所述緩存目錄中存儲所述系統(tǒng)內(nèi)所有緩存的數(shù)據(jù)存儲信息;若所述系統(tǒng)內(nèi)存在存儲有所述待覆蓋數(shù)據(jù)的緩存,則無效所述緩存中的所述待覆蓋數(shù)據(jù);或者,若所述系統(tǒng)內(nèi)不存在存儲有所述待拷貝數(shù)據(jù)的緩存,則直接將所述待拷貝數(shù)據(jù)寫入所述目的地址對應(yīng)的內(nèi)存中。
12.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述內(nèi)存拷貝裝置還用于:向所述目的地址對應(yīng)的緩存目錄存儲裝置發(fā)送寫入請求,所述寫入請求中還包括cache標(biāo)識位, 則所述緩存目錄存儲裝置還用于: 根據(jù)所述cache標(biāo)識位確定是否對所述待拷貝數(shù)據(jù)進(jìn)行本地存儲。
13.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述緩存目錄存儲裝置具體為最后一級緩存或者內(nèi)存控制器。
【文檔編號】G06F12/08GK103645996SQ201310686394
【公開日】2014年3月19日 申請日期:2013年12月9日 優(yōu)先權(quán)日:2013年12月9日
【發(fā)明者】陳李維, 汪文祥, 王煥東 申請人:龍芯中科技術(shù)有限公司