一種數(shù)據(jù)拷貝的方法、裝置和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)拷貝的方法、裝置和系統(tǒng),該方法采取控制與第一記錄介質、第二記錄介質分別對應的第一地址命令總線和第二地址命令總線上的讀寫時序,即通過第一地址命令總線向第一記錄介質發(fā)送讀命令和通過第二地址命令總線向第二記錄介質發(fā)送寫命令,使得第二記錄介質從數(shù)據(jù)總線上接收第一記錄介質發(fā)送的數(shù)據(jù),從而快速直接地完成數(shù)據(jù)的拷貝,解決了現(xiàn)有拷貝方法中步驟繁瑣、路徑冗長的問題,減少了數(shù)據(jù)拷貝對內存帶寬的占用,同時可降低功耗。
【專利說明】一種數(shù)據(jù)拷貝的方法、裝置和系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及計算機領域,具體涉及一種數(shù)據(jù)拷貝的方法、裝置和系統(tǒng)。
【背景技術】
[0002]數(shù)據(jù)拷貝是計算機和其它數(shù)據(jù)處理系統(tǒng)中一種常見的數(shù)據(jù)操作,它通常是指將一塊連續(xù)存放的數(shù)據(jù)從存儲空間中的某個起始物理位置,復制到存儲空間中的另一個起始物理位置。
[0003]具體來講,在通用計算機的程序中,數(shù)據(jù)拷貝操作通常發(fā)生在主存(Main Memory)之中,從主存的源地址連續(xù)拷貝一整塊數(shù)據(jù)至主存的目的地址,程序中通常使用的函數(shù)為memcpy ()。然而,memcpy ()函數(shù)的執(zhí)行將引發(fā)一系列軟/硬件操作,以硬件操作為例,一整塊數(shù)據(jù)將分批次的、不停的從內存模組(Dual Inlime Memory Module,簡稱DIMM)中讀取并傳入CPU,再由CPU發(fā)出Store指令,將剛讀入的數(shù)據(jù)存入內存空間目的地址;如此不停的反復,直至達到被拷貝數(shù)據(jù)塊的邊界。
[0004]現(xiàn)有技術中數(shù)據(jù)拷貝通?;蚧鶞实淖龇ㄊ恰岸啻位蜓h(huán)執(zhí)行l(wèi)oad和store指令,直至達到被拷貝數(shù)據(jù)塊的邊界”,亦可被稱為“Word by Word memory copy”,讀出的數(shù)據(jù)經(jīng)內存控制器傳入CPU,再由CPU發(fā)出Store指令,將剛讀入的數(shù)據(jù)存入內存空間的目的地址;如此不停的反復,直至達到被拷貝數(shù)據(jù)塊的邊界。
[0005]memcpy ()函數(shù)核心部分被編譯為多次或循環(huán)執(zhí)行l(wèi)oad/store指令,以x86為例:
[0006]mo V eax, [SrcAddress] # 等價于 RISC 中的 load 指令
[0007]mov [DestAddress], eax# 等價于 RISC 中的 store 指令
[0008]或者,
[0009]repz movsl%ds: (%esi), %es: (%edi) # 循環(huán)執(zhí)行 mov 操作
[0010]在對此方法的研究和實踐過程中,本發(fā)明的發(fā)明人發(fā)現(xiàn),被拷貝的數(shù)據(jù)在內存、內存控制器和CPU之間往復傳輸,步驟多,長時間占用CPU、內存控制器、訪存通道等資源。數(shù)據(jù)經(jīng)過內存控制器的訪存通道,浪費訪存帶寬,內存到CPU之間的帶寬資源通常比較緊缺,且通常是影響程序運行性能的關鍵。例如,在SPEC CPU2006測試程序集中,某些程序(如464.h264ref)大量頻繁調用memcpy ()函數(shù),此函數(shù)運行時間占程序總時間的比例甚至高達 40.9%ο
【發(fā)明內容】
[0011]本發(fā)明實施例提供一種數(shù)據(jù)拷貝的方法、裝置和系統(tǒng),以期簡化數(shù)據(jù)拷貝的路徑,減少數(shù)據(jù)拷貝對內存帶寬的占用,提高數(shù)據(jù)拷貝的執(zhí)行效率,進而提升系統(tǒng)總體性能。
[0012]第一方面,本發(fā)明實施例提供一種數(shù)據(jù)拷貝的方法,包括:
[0013]通過第一地址命令總線向第一記錄介質發(fā)送讀命令,使得所述第一記錄介質根據(jù)所述讀命令進行數(shù)據(jù)讀取,并將讀取的數(shù)據(jù)發(fā)送至數(shù)據(jù)總線;
[0014]通過第二地址命令總線向第二記錄介質發(fā)送寫命令,使得所述第二記錄介質根據(jù)所述寫命令從所述數(shù)據(jù)總線接收所述數(shù)據(jù)。
[0015]在第一種可能的實施方式中,結合第一方面,所述第一記錄介質發(fā)送所述數(shù)據(jù)至所述數(shù)據(jù)總線與所述第二記錄介質從所述數(shù)據(jù)總線接收所述數(shù)據(jù)同步,其中,所述同步是指所述第一記錄介質發(fā)送所述數(shù)據(jù)至所述數(shù)據(jù)總線與所述第二記錄介質從所述數(shù)據(jù)總線接收所述數(shù)據(jù)的時間差在預設的時間范圍內。
[0016]在第二種可能的實施方式中,結合第一方面或第一方面的第一種可能的實施方式,所述第一記錄介質和/或第二記錄介質為內存模組。
[0017]在第三種可能的實施方式中,結合第一方面或第一方面的第一種可能的實施方式,所述第一記錄介質和第二記錄介質為同一個內存模組上的內存顆粒。
[0018]第二方面,本發(fā)明實施例還提供一種數(shù)據(jù)拷貝的裝置,包括:
[0019]控制器,用于向第一記錄介質發(fā)送讀命令,并且向第二記錄介質發(fā)送寫命令;
[0020]第一地址命令總線,用于傳遞所述讀命令;
[0021]第二地址命令總線,用于傳遞所述寫命令;
[0022]數(shù)據(jù)總線,用于將所述第一記錄介質讀取的數(shù)據(jù)傳輸給所述第二記錄介質。
[0023]在第一種可能的實施方式中,結合第二方面,所述控制器還用于控制所述第一記錄介質發(fā)送數(shù)據(jù)至所述數(shù)據(jù)總線與所述第二記錄介質從所述數(shù)據(jù)總線接收數(shù)據(jù)的時間差在預設的時間范圍內。
[0024]第三方面,本發(fā)明實施例還提供一種數(shù)據(jù)拷貝的系統(tǒng),包括:
[0025]控制器,用于向第一記錄介質發(fā)送讀命令,并且向第二記錄介質發(fā)送寫命令;
[0026]第一地址命令總線,用于傳遞所述讀命令;
[0027]第二地址命令總線,用于傳遞所述寫命令;
[0028]數(shù)據(jù)總線,用于將所述第一記錄介質讀取的數(shù)據(jù)傳輸給所述第二記錄介質;
[0029]第一記錄介質,用于接收所述控制器發(fā)送的讀命令,根據(jù)所述讀命令進行數(shù)據(jù)讀取,并將讀取的數(shù)據(jù)發(fā)送至所述數(shù)據(jù)總線;
[0030]第二記錄介質,用于接收所述控制器發(fā)送的寫命令,并根據(jù)所述寫命令從所述數(shù)據(jù)總線接收所述數(shù)據(jù)。
[0031]本發(fā)明實施例提供的數(shù)據(jù)拷貝的方法采用由控制器控制與第一記錄介質、第二記錄介質分別對應的第一地址命令總線和第二地址命令總線上的讀寫時序,即通過第一地址命令總線向第一記錄介質發(fā)送讀命令和通過第二地址命令總線向第二記錄介質發(fā)送寫命令,使得第二記錄介質從數(shù)據(jù)總線上接收第一記錄介質發(fā)送的數(shù)據(jù),從而快速直接地完成數(shù)據(jù)的拷貝,解決了現(xiàn)有拷貝方法中步驟繁瑣、路徑冗長的問題,減少了數(shù)據(jù)拷貝對內存帶寬的影響,同時可降低功耗。
【專利附圖】
【附圖說明】
[0032]圖1是本發(fā)明實施例提供的一種數(shù)據(jù)拷貝方法的流程示意圖;
[0033]圖2是本發(fā)明實施例提供的一種數(shù)據(jù)拷貝裝置的結構示意圖。
【具體實施方式】
[0034]本發(fā)明實施例提供一種數(shù)據(jù)拷貝的方法、裝置和系統(tǒng),以期簡化數(shù)據(jù)拷貝的路徑,減少數(shù)據(jù)拷貝對內存帶寬的占用,提高數(shù)據(jù)拷貝的執(zhí)行效率,進而提升系統(tǒng)總體性能。
[0035]為了使本【技術領域】的人員更好地理解本發(fā)明方案,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應當屬于本發(fā)明保護的范圍。
[0036]本發(fā)明實施例提供一種數(shù)據(jù)拷貝的方法,包括:
[0037]通過第一地址命令總線向第一記錄介質發(fā)送讀命令,使得所述第一記錄介質根據(jù)所述讀命令進行數(shù)據(jù)讀取,并將讀取的數(shù)據(jù)發(fā)送至數(shù)據(jù)總線;
[0038]通過第二地址命令總線向第二記錄介質發(fā)送寫命令,使得所述第二記錄介質根據(jù)所述寫命令從所述數(shù)據(jù)總線接收所述數(shù)據(jù)。
[0039]需要說明的是,上述各步驟可以由控制器執(zhí)行,本發(fā)明實施例提供的數(shù)據(jù)拷貝的方法用于“單數(shù)據(jù)總線、多地址命令總線”的存儲拓撲結構當中,即各數(shù)據(jù)記錄介質之間存在一套共享的數(shù)據(jù)總線,且分別具有各自獨立的地址命令總線。
[0040]進一步的,所述第一記錄介質發(fā)送數(shù)據(jù)至所述數(shù)據(jù)總線與所述第二記錄介質從所述數(shù)據(jù)總線接收數(shù)據(jù)可以同步,即讀數(shù)據(jù)/寫數(shù)據(jù)操作同時驅動/采集一條共享的數(shù)據(jù)通路,從而實現(xiàn)數(shù)據(jù)可以在兩個記錄介質間直接傳遞,縮短拷貝時間;
[0041]進一步的,第一記錄介質,和/或第二記錄介質可以為內存模組;或者,
[0042]第一記錄介質和第二介質為同一個內存模組上的內存顆粒。
[0043]現(xiàn)有技術中被拷貝的數(shù)據(jù)在內存、內存控制器和CPU之間往復傳輸,而并不經(jīng)過任何處理和計算,每個小塊數(shù)據(jù)復制需要一次讀操作內存帶寬和一次寫操作內存帶寬,浪費了訪存帶寬,而本發(fā)明實施例提供的數(shù)據(jù)拷貝的方法,通過設計“單數(shù)據(jù)總線、多地址命令總線”的存儲拓撲結構,并由控制器分別控制讀寫時序,即控制所述第一記錄介質發(fā)送所述數(shù)據(jù)至所述數(shù)據(jù)總線與所述第二記錄介質從所述數(shù)據(jù)總線接收所述數(shù)據(jù)的時間差在預設的時間范圍內,使得讀/寫操作共享一條數(shù)據(jù)總線,實現(xiàn)了數(shù)據(jù)在記錄介質間的直接傳遞,原本需要串行執(zhí)行、且中間有很長間隔的兩個操作變成為一個操作,大幅度減少內存帶寬的占用,提高了數(shù)據(jù)拷貝的效率。
[0044]參見圖1,具體流程如下:
[0045]S101、控制器通過第一地址命令總線向第一記錄介質發(fā)送讀命令,使得所述第一記錄介質根據(jù)所述讀命令進行數(shù)據(jù)讀取,并將讀取的數(shù)據(jù)發(fā)送至數(shù)據(jù)總線;
[0046]S102、通過第二地址命令總線向第二記錄介質發(fā)送寫命令,使得所述第二記錄介質根據(jù)所述寫命令從所述數(shù)據(jù)總線接收所述數(shù)據(jù);
[0047]需要說明的是,控制器向第一記錄介質發(fā)送讀命令后,可以在確定的時鐘周期數(shù)后,向第二記錄介質發(fā)送寫命令,使得第一記錄介質讀操作與第二記錄介質寫操作同時共享一條數(shù)據(jù)總線。
[0048]第一記錄介質和第二記錄介質可以都為內存模組。
[0049]其中,第一地址命令總線連接于控制器與第一記錄介質之間,第二地址命令總線連接與控制器與第二記錄介質之間,數(shù)據(jù)總線與控制器連接,同時,數(shù)據(jù)總線還分別與第一記錄介質、第二記錄介質連接。因此,本發(fā)明實施例在實現(xiàn)數(shù)據(jù)拷貝時不再需要經(jīng)歷第一內存模組一內存控制器一CPU —內存控制器一第二內存模組這條數(shù)據(jù)通路,而是通過共享的數(shù)據(jù)總線將數(shù)據(jù)從第一內存模組轉移至第二內存模組。
[0050]由上可見,本發(fā)明實施例提供的數(shù)據(jù)拷貝的方法采取控制與第一記錄介質、第二記錄介質分別對應的第一地址命令總線和第二地址命令總線上的讀寫時序,即通過第一地址命令總線向第一記錄介質發(fā)送讀命令和通過第二地址命令總線向第二記錄介質發(fā)送寫命令,使得第二記錄介質從數(shù)據(jù)總線上接收第一記錄介質發(fā)送的數(shù)據(jù),從而快速直接地完成數(shù)據(jù)的拷貝,解決了現(xiàn)有拷貝方法中步驟繁瑣、路徑冗長的問題,減少了數(shù)據(jù)拷貝對內存帶寬的占用,同時可降低功耗。
[0051]本發(fā)明實施例還提供一種數(shù)據(jù)拷貝的裝置,包括:
[0052]控制器,用于向第一記錄介質發(fā)送讀命令,并且向第二記錄介質發(fā)送寫命令;
[0053]第一地址命令總線,用于傳遞所述讀命令;
[0054]第二地址命令總線,用于傳遞所述寫命令;
[0055]數(shù)據(jù)總線,用于將所述第一記錄介質讀取的數(shù)據(jù)傳輸給所述第二記錄介質。
[0056]即本發(fā)明實施例數(shù)據(jù)拷貝裝置中的控制器通過所述第一地址命令總線向所述第一記錄介質發(fā)送讀命令,使得所述第一記錄介質根據(jù)所述讀命令進行數(shù)據(jù)讀取,并將讀取的數(shù)據(jù)發(fā)送至所述數(shù)據(jù)總線,并且,所述控制器通過所述第二地址命令總線向第二記錄介質發(fā)送寫命令,使得所述第二記錄介質根據(jù)所述寫命令從所述數(shù)據(jù)總線接收所述數(shù)據(jù)。
[0057]進一步的,控制器還可以用于控制所述第一記錄介質發(fā)送數(shù)據(jù)至所述數(shù)據(jù)總線與所述第二記錄介質從所述數(shù)據(jù)總線接收數(shù)據(jù)的時間差在預設的時間范圍內。
[0058]其中,第一記錄介質和/或第二記錄介質可以為內存模組;或者,第一記錄介質和第二記錄介質為同一個內存模組上的內存顆粒。
[0059]具體的數(shù)據(jù)拷貝裝置的結構參見圖2所示,該裝置采用“單數(shù)據(jù)總線、多地址命令總線”的存儲拓撲結構,兩個內存模組共享一套數(shù)據(jù)總線,但分別具有各自獨立的地址命令總線,即第一內存模組對應地址命令總線1,第二內存模組對應地址命令總線2。
[0060]內存控制器精確控制兩條地址命令總線的時序,可以實現(xiàn)第一內存模組與第二內存模組之間的直接數(shù)據(jù)傳遞:內存控制器首先在地址命令總線I上對第一內存模組發(fā)出讀命令,然后在確定的時鐘周期數(shù)后,在地址命令總線2上對第二內存模組發(fā)出寫命令,此時第二內存模組會接收數(shù)據(jù)總線上的數(shù)據(jù)。
[0061]由上可見,本發(fā)明實施例提供的數(shù)據(jù)拷貝的裝置采用單數(shù)據(jù)總線和多地址命令總線的存儲拓撲結構,即多個地址命令總線分別對應一個記錄介質,一套數(shù)據(jù)總線由記錄介質共享,并且控制器控制各條地址命令總線上的讀寫時序,使得數(shù)據(jù)由第一記錄介質,經(jīng)共享的數(shù)據(jù)總線快速直接地轉移到第二記錄介質上,如此可大幅度減少內存帶寬的占用,提高數(shù)據(jù)拷貝的執(zhí)行效率,進而提升系統(tǒng)總體性能。
[0062]本發(fā)明實施例還提供一種數(shù)據(jù)拷貝的系統(tǒng),包括:控制器,用于向第一記錄介質發(fā)送讀命令,并且向第二記錄介質發(fā)送寫命令;
[0063]第一地址命令總線,用于傳遞所述讀命令;
[0064]第二地址命令總線,用于傳遞所述寫命令;
[0065]數(shù)據(jù)總線,用于將所述第一記錄介質讀取的數(shù)據(jù)傳輸給所述第二記錄介質;
[0066]第一記錄介質,用于接收所述控制器發(fā)送的讀命令,并根據(jù)所述讀命令進行數(shù)據(jù)讀取,并將讀取的數(shù)據(jù)發(fā)送至所述數(shù)據(jù)總線;
[0067]第二記錄介質,用于接收所述控制器發(fā)送的寫命令,并根據(jù)所述寫命令從所述數(shù)據(jù)總線接收所述數(shù)據(jù)。
[0068]其中,控制器可以同步控制所述第一記錄介質發(fā)送數(shù)據(jù)至所述數(shù)據(jù)總線與所述第二記錄介質從所述數(shù)據(jù)總線接收數(shù)據(jù),即控制器控制所述第一記錄介質發(fā)送數(shù)據(jù)總線與所述第二記錄介質從所述數(shù)據(jù)總線接收數(shù)據(jù)的時間差在預設的時間范圍內,從而實現(xiàn)數(shù)據(jù)可以在兩個記錄介質間直接傳遞,縮短拷貝時間。
[0069]由上可見,本發(fā)明實施例提供的數(shù)據(jù)拷貝的系統(tǒng)采用單數(shù)據(jù)總線和多地址命令總線的存儲拓撲結構,即多個地址命令總線分別對應一個記錄介質,一套數(shù)據(jù)總線由記錄介質共享,并且控制器控制各條地址命令總線上的讀寫時序,使得數(shù)據(jù)由第一記錄介質,經(jīng)共享的數(shù)據(jù)總線快速直接地轉移到第二記錄介質上,如此可大幅度減少內存帶寬的占用,提高數(shù)據(jù)拷貝的執(zhí)行效率,進而提升系統(tǒng)總體性能。
[0070]本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,該程序可以存儲于一計算機可讀存儲介質中,存儲介質可以包括:只讀存儲器(ROM,Read Only Memory)、隨機存取存儲器(RAM,RandomAccess Memory)、磁盤或光盤等。
[0071]同時,在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
[0072]以上對本發(fā)明實施例所提供的數(shù)據(jù)拷貝的方法、裝置和系統(tǒng)進行了詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領域的一般技術人員,依據(jù)本發(fā)明的思想,在【具體實施方式】及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發(fā)明的限制。
【權利要求】
1.一種數(shù)據(jù)拷貝的方法,其特征在于,包括: 通過第一地址命令總線向第一記錄介質發(fā)送讀命令,使得所述第一記錄介質根據(jù)所述讀命令進行數(shù)據(jù)讀取,并將讀取的數(shù)據(jù)發(fā)送至數(shù)據(jù)總線; 通過第二地址命令總線向第二記錄介質發(fā)送寫命令,使得所述第二記錄介質根據(jù)所述寫命令從所述數(shù)據(jù)總線接收所述數(shù)據(jù)。
2.根據(jù)權利要求1所述的方法,其特征在于,所述第一記錄介質發(fā)送所述數(shù)據(jù)至所述數(shù)據(jù)總線與所述第二記錄介質從所述數(shù)據(jù)總線接收所述數(shù)據(jù)同步,其中,所述同步是指所述第一記錄介質發(fā)送所述數(shù)據(jù)至所述數(shù)據(jù)總線與所述第二記錄介質從所述數(shù)據(jù)總線接收所述數(shù)據(jù)的時間差在預設的時間范圍內。
3.根據(jù)權利要求1所述的方法,其特征在于,所述第一記錄介質和/或第二記錄介質為內存模組。
4.根據(jù)權利要求1所述的方法,其特征在于,所述第一記錄介質和第二記錄介質為同一個內存模組上的內存顆粒。
5.一種數(shù)據(jù)拷貝的裝置,其特征在于,包括: 控制器,用于向第一記錄介質發(fā)送讀命令,并且向第二記錄介質發(fā)送寫命令; 第一地址命令總線,用于傳遞所述讀命令; 第二地址命令總線,用于傳遞所述寫命令; 數(shù)據(jù)總線,用于將所述第一記錄介質讀取的數(shù)據(jù)傳輸給所述第二記錄介質。
6.根據(jù)權利要求5所述的裝置,其特征在于,所述控制器還用于控制所述第一記錄介質發(fā)送數(shù)據(jù)至所述數(shù)據(jù)總線與所述第二記錄介質從所述數(shù)據(jù)總線接收數(shù)據(jù)的時間差在預設的時間范圍內。
7.根據(jù)權利要求5所述的裝置,其特征在于,所述第一記錄介質和/或第二記錄介質為內存模組。
8.根據(jù)權利要求5所述的裝置,其特征在于,所述第一記錄介質和第二記錄介質為同一個內存模組上的內存顆粒。
9.一種數(shù)據(jù)拷貝的系統(tǒng),其特征在于,包括: 控制器,用于向第一記錄介質發(fā)送讀命令,并且向第二記錄介質發(fā)送寫命令; 第一地址命令總線,用于傳遞所述讀命令; 第二地址命令總線,用于傳遞所述寫命令; 數(shù)據(jù)總線,用于將所述第一記錄介質讀取的數(shù)據(jù)傳輸給所述第二記錄介質; 第一記錄介質,用于接收所述控制器發(fā)送的讀命令,根據(jù)所述讀命令進行數(shù)據(jù)讀取,并將讀取的數(shù)據(jù)發(fā)送至所述數(shù)據(jù)總線; 第二記錄介質,用于接收所述控制器發(fā)送的寫命令,并根據(jù)所述寫命令從所述數(shù)據(jù)總線接收所述數(shù)據(jù)。
10.根據(jù)權利要求9所述的系統(tǒng),其特征在于,所述控制器還用于控制所述第一記錄介質發(fā)送數(shù)據(jù)至所述數(shù)據(jù)總線與所述第二記錄介質從所述數(shù)據(jù)總線接收數(shù)據(jù)的時間差在預設的時間范圍內。
【文檔編號】G06F17/30GK104166647SQ201310181769
【公開日】2014年11月26日 申請日期:2013年5月16日 優(yōu)先權日:2013年5月16日
【發(fā)明者】張科, 張立新, 侯銳, 王聰 申請人:華為技術有限公司, 中國科學院計算技術研究所