專利名稱:用于微處理器的內(nèi)存拷貝加速方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)微處理器領(lǐng)域,具體涉及一種用于微處理器的內(nèi)存拷貝加速方法及裝置。
背景技術(shù):
隨著計(jì)算機(jī)領(lǐng)域的高速發(fā)展,應(yīng)用程序?qū)ξ⑻幚砥魈幚砟芰Φ囊笤絹碓礁?。人們不斷通過提高處理器的頻率、采用新的體系結(jié)構(gòu)等技術(shù)來改善處理器內(nèi)核的性能。然而,在微處理器內(nèi)核性能大幅提高的同時(shí),存儲(chǔ)器帶寬的增加則相對(duì)緩慢得多。如果存儲(chǔ)器無法為處理器內(nèi)核提供充足的數(shù)據(jù),處理器資源將無法得到充分利用。因此,提高內(nèi)存拷貝等訪存操作的性能成為處理器設(shè)計(jì)者日益關(guān)心的問題。內(nèi)存拷貝操作已經(jīng)成為現(xiàn)代計(jì)算機(jī)系統(tǒng)中最為常見的一種操作。而許多應(yīng)用的 性能直接或間接地依賴于內(nèi)存拷貝操作的性能。TCP/IP協(xié)議及文件拷貝等應(yīng)用程序一般都包含大量的內(nèi)存拷貝操作,其整體性能也很大程度上由其中內(nèi)存拷貝操作所花費(fèi)的時(shí)間所決定。此外,一些操作系統(tǒng)函數(shù)同樣需要內(nèi)存拷貝操作的支持,如虛擬內(nèi)存管理、頁管理、緩存管理及進(jìn)程通信等。在傳統(tǒng)的計(jì)算機(jī)系統(tǒng)中,內(nèi)存拷貝操作一般由一系列的訪存指令Load/Store組成。在內(nèi)存拷貝過程中,Load/Store指令一直占有處理器資源,阻塞后續(xù)指令執(zhí)行。每條Load/Store指令都需要首先訪問快表(TLB)以將指令中的虛地址轉(zhuǎn)換為實(shí)地址,然后再訪問高速緩存(Cache)。也就是說,一次Load/Store操作都需要訪問一次TLB和訪問一次高速緩存,功耗及性能開銷較大。為了提高內(nèi)存拷貝的效率,DMA技術(shù)被應(yīng)用于大數(shù)據(jù)塊拷貝。但是這種基于DMA的內(nèi)存拷貝技術(shù)仍存在一定的缺點(diǎn),如(I )DMA設(shè)備往往需要較長的啟動(dòng)時(shí)間,(2)在拷貝結(jié)束以后需要通過中斷通知內(nèi)核,(3)需要操作系統(tǒng)的支持。綜上所述,無論上述哪種內(nèi)存拷貝實(shí)現(xiàn)方法,都存在性能相對(duì)較低的問題。此外,這些內(nèi)存拷貝實(shí)現(xiàn)方法基本上都是針對(duì)某一單獨(dú)的拷貝操作進(jìn)行加速,而沒有給出微處理器中多條相關(guān)內(nèi)存拷貝操作的優(yōu)化方法。隨著體系結(jié)構(gòu)與制造工藝的不斷發(fā)展,處理器內(nèi)核與存儲(chǔ)器帶寬之間的性能差距正在不斷加大,需要頻繁訪存的內(nèi)存拷貝操作的性能制約了處理器整體性能的提高;而與此同時(shí),內(nèi)存拷貝操作廣泛存在于各種操作系統(tǒng)程序及用戶程序之中。因此,這種內(nèi)存拷貝的重要性及其現(xiàn)有技術(shù)中性能的低效性促使內(nèi)存拷貝加速成為一個(gè)亟待解決的技術(shù)問題。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種內(nèi)存拷貝性能高、硬件實(shí)現(xiàn)簡單且代價(jià)小、擴(kuò)展性好、兼容性強(qiáng)、并發(fā)性好、訪存次數(shù)少、消耗功耗低的用于微處理器的內(nèi)存拷貝加速方法及裝置。為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為
一種用于微處理器的內(nèi)存拷貝加速方法,其實(shí)施步驟如下1)預(yù)先在微處理器指令集中增加內(nèi)存拷貝指令支持,在微處理器的指令執(zhí)行流水線中增加專用于執(zhí)行所述內(nèi)存拷貝指令的內(nèi)存拷貝單元;
2)譯碼邏輯在進(jìn)行譯碼時(shí)如果譯碼的指令為內(nèi)存拷貝指令,則將內(nèi)存拷貝指令轉(zhuǎn)換為內(nèi)存拷貝請(qǐng)求并發(fā)送給所述內(nèi)存拷貝單元;所述內(nèi)存拷貝單元接收譯碼邏輯發(fā)送的新內(nèi)存拷貝請(qǐng)求,通過相關(guān)檢測(cè)部件檢測(cè)新內(nèi)存拷貝請(qǐng)求與內(nèi)存拷貝單元內(nèi)用于緩存內(nèi)存拷貝請(qǐng)求的請(qǐng)求隊(duì)列中其它內(nèi)存拷貝請(qǐng)求之間的相關(guān)關(guān)系,如果存在目的地址或者源地址與新內(nèi)存拷貝請(qǐng)求的源地址相同的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,則判定新內(nèi)存拷貝請(qǐng)求存在具有相關(guān)關(guān)系的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,當(dāng)所述請(qǐng)求隊(duì)列存在空閑項(xiàng)時(shí)內(nèi)存拷貝單元將新內(nèi)存拷貝請(qǐng)求及其相關(guān)關(guān)系緩存至所述請(qǐng)求隊(duì)列中;
3)所述內(nèi)存拷貝單元從請(qǐng)求隊(duì)列選擇待執(zhí)行的當(dāng)前內(nèi)存拷貝請(qǐng)求,與高速緩存及快表進(jìn)行交互獲取當(dāng)前內(nèi)存拷貝請(qǐng)求的物理地址,以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求;如果存在與當(dāng)前內(nèi)存拷貝請(qǐng)求具有相關(guān)關(guān)系的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,則將關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求與當(dāng)前內(nèi)存拷貝請(qǐng)求中相同的頁拷貝操作合并執(zhí)行。 作為本發(fā)明用于微處理器的內(nèi)存拷貝加速方法的進(jìn)一步改進(jìn)
所述步驟2)中將新內(nèi)存拷貝請(qǐng)求及其相關(guān)關(guān)系緩存至請(qǐng)求隊(duì)列中時(shí),所述請(qǐng)求隊(duì)列中內(nèi)存拷貝請(qǐng)求的內(nèi)容域包括源地址、目的地址、拷貝長度、拷貝類型、源地址’、目的地址’、拷貝長度’、有效位和關(guān)聯(lián)標(biāo)識(shí)位,其中源地址、目的地址、拷貝長度、拷貝類型與所述內(nèi)存拷貝指令的內(nèi)容相同;所述源地址’表示未完成的源內(nèi)存區(qū)域的起始地址,目的地址’表示目的內(nèi)存區(qū)域的起始地址,拷貝長度’表示待拷貝長度;所述源地址’的初始值為源地址,目的地址’的初始值為目的地址,拷貝長度’的初始值為拷貝長度;所述有效位表示是否存在關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,有效位為I表示該內(nèi)存拷貝請(qǐng)求與其之前的內(nèi)存拷貝請(qǐng)求沒有關(guān)聯(lián)關(guān)系,可以由內(nèi)存拷貝單元執(zhí)行,有效位為O表示該內(nèi)存拷貝請(qǐng)求與其之前的內(nèi)存拷貝請(qǐng)求存在關(guān)聯(lián)關(guān)系,目前還不能由內(nèi)存拷貝單元單獨(dú)執(zhí)行,而由內(nèi)存拷貝單元合并執(zhí)行;所述關(guān)聯(lián)標(biāo)識(shí)位用于存儲(chǔ)關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的編號(hào);所述步驟3)中以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求時(shí),建立用于存儲(chǔ)當(dāng)前進(jìn)行的頁拷貝操作的頁拷貝記錄的頁拷貝狀態(tài)表,頁拷貝狀態(tài)表中每一項(xiàng)頁拷貝記錄的內(nèi)容域包括源頁起始地址、目的頁起始地址和拷貝長度信肩、O所述步驟3)的詳細(xì)步驟如下
3. I)所述內(nèi)存拷貝單元從請(qǐng)求隊(duì)列選擇有效位為I的當(dāng)前內(nèi)存拷貝請(qǐng)求,將當(dāng)前內(nèi)存拷貝請(qǐng)求根據(jù)虛擬存儲(chǔ)器的頁大小分解為多個(gè)頁拷貝;
3. 2)所述內(nèi)存拷貝單元與高速緩存及快表進(jìn)行交互獲取當(dāng)前內(nèi)存拷貝請(qǐng)求待執(zhí)行頁拷貝的物理地址;將待執(zhí)行頁拷貝的源頁起始地址、目的頁起始地址和拷貝長度信息建立頁拷貝記錄;
3. 3)更新當(dāng)前內(nèi)存拷貝請(qǐng)求在請(qǐng)求隊(duì)列中的源地址’、目的地址’與長度’,使源地址’等于源地址’減去待執(zhí)行頁拷貝的長度、目的地址’等于目的地址’減去待執(zhí)行頁拷貝的長度,長度’等于拷貝長度’減去待執(zhí)行頁拷貝的長度;
3. 4)根據(jù)所述頁拷貝狀態(tài)表中記錄的當(dāng)前內(nèi)存拷貝請(qǐng)求的待執(zhí)行頁拷貝訪問高速緩存或外部存儲(chǔ)器,以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求的頁拷貝;同時(shí)所述內(nèi)存拷貝單元掃描請(qǐng)求隊(duì)列,如果請(qǐng)求隊(duì)列中存在與當(dāng)前內(nèi)存拷貝請(qǐng)求存在相關(guān)關(guān)系的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,則將關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求與當(dāng)前內(nèi)存拷貝請(qǐng)求中相同的頁拷貝操作合并執(zhí)行;
3. 5)在待執(zhí)行頁拷貝執(zhí)行完畢后,判斷當(dāng)前內(nèi)存拷貝請(qǐng)求的所有頁拷貝是否已經(jīng)全部完成,如果還有頁拷貝未完成則跳轉(zhuǎn)執(zhí)行步驟3. 2),否則跳轉(zhuǎn)執(zhí)行下一步;
3. 6)發(fā)出信號(hào),表明本次內(nèi)存拷貝請(qǐng)求完成,并將與本次內(nèi)存拷貝請(qǐng)求合并執(zhí)行的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的有效位設(shè)為I。所述步驟3. 4)的詳細(xì)步驟如下
3. 4. I)根據(jù)所述頁拷貝狀態(tài)表中記錄的當(dāng)前內(nèi)存拷貝請(qǐng)求的待執(zhí)行頁拷貝訪問高速緩存或外部存儲(chǔ)器,以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求的頁拷貝;同時(shí)所述內(nèi)存拷貝單元掃描請(qǐng)求隊(duì)列,判定請(qǐng)求隊(duì)列中是否存在有效位為O且關(guān)聯(lián)標(biāo)識(shí)位記錄的為當(dāng)前內(nèi)存拷貝請(qǐng)求的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,如果存在則跳轉(zhuǎn)執(zhí)行下一步,否則直接跳轉(zhuǎn)執(zhí)行步驟3. 5);
3. 4. 2)判斷關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求之間的關(guān)聯(lián)關(guān)系,如果請(qǐng)求隊(duì)列存在目的地址與當(dāng)前內(nèi)存拷貝請(qǐng)求的源地址相同的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求(如應(yīng)用程序通信的內(nèi)存拷貝操作),則判定當(dāng)前內(nèi)存拷貝請(qǐng)求與其關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求之間存在數(shù)據(jù)相關(guān)關(guān)系,跳轉(zhuǎn)執(zhí)行3. 4. 3);如果請(qǐng)求隊(duì)列存在源地址與當(dāng)前內(nèi)存拷貝請(qǐng)求的源地址相同的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求(如基于進(jìn)程拷貝通信的內(nèi)存拷貝操作),則判定當(dāng)前內(nèi)存拷貝請(qǐng)求與其關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求之間存在源相關(guān)關(guān)系,跳轉(zhuǎn)執(zhí)行3. 4. 5);
3. 4. 3)將關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求在請(qǐng)求隊(duì)列中的各項(xiàng)進(jìn)行修改源地址不變;目的地址不變;拷貝長度等于拷貝長度原值減去當(dāng)前內(nèi)存拷貝請(qǐng)求的拷貝長度’;源地址’等于當(dāng)前內(nèi)存拷貝請(qǐng)求的源地址’;目的地址’等于目的地址原值加上當(dāng)前內(nèi)存拷貝請(qǐng)求的拷貝長度并減去當(dāng)前內(nèi)存拷貝請(qǐng)求的拷貝長度’;拷貝長度’等于當(dāng)前內(nèi)存拷貝請(qǐng)求的拷貝長度’;然后跳轉(zhuǎn)執(zhí)行下一步;
3. 4.4)當(dāng)前內(nèi)存拷貝請(qǐng)求后續(xù)的頁拷貝時(shí),每次從緩存讀取一個(gè)拷貝單位數(shù)據(jù)后,同時(shí)寫入當(dāng)前內(nèi)存拷貝請(qǐng)求對(duì)應(yīng)的緩存數(shù)據(jù)區(qū)域與關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求對(duì)應(yīng)的目的數(shù)據(jù)區(qū)域中;在當(dāng)前內(nèi)存拷貝請(qǐng)求的所有頁拷貝完成以后,對(duì)關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求所在請(qǐng)求隊(duì)列位置中的拷貝長度’、目的地址’和源地址’進(jìn)行修改源地址’等于關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的源地址;目的地址’等于關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的目的地址;拷貝長度’等于關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的拷貝長度;同時(shí),將關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的有效位設(shè)為1,所述關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求將由內(nèi)存拷貝單元單獨(dú)執(zhí)行;跳轉(zhuǎn)執(zhí)行步驟3. 5);
3. 4.5)當(dāng)前內(nèi)存拷貝請(qǐng)求后續(xù)的頁拷貝時(shí),每次從緩存讀取一個(gè)拷貝單位數(shù)據(jù)后,將同時(shí)寫入當(dāng)前內(nèi)存拷貝請(qǐng)求的目的地址以及與關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的目的地址;在當(dāng)前內(nèi)存拷貝請(qǐng)求的所有頁拷貝完成以后,對(duì)關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求所在請(qǐng)求隊(duì)列位置中的拷貝長度’進(jìn)行修改拷貝長度’等于關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的拷貝長度’減去當(dāng)前內(nèi)存拷貝請(qǐng)求的拷貝長度’;將關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的有效位設(shè)為1,所述關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求將由內(nèi)存拷貝單元單獨(dú)執(zhí)行;跳轉(zhuǎn)執(zhí)行步驟3. 5)。所述執(zhí)行頁拷貝時(shí),如果所述內(nèi)存拷貝單元讀入或?qū)懟夭僮餍袨橛绊懙礁咚倬彌_中數(shù)據(jù)的一致性,對(duì)高速緩沖中的數(shù)據(jù)執(zhí)行失效或者更新等操作。本發(fā)明還提供一種用于微處理器的內(nèi)存拷貝加速裝置,包括
內(nèi)存拷貝單元,專用于執(zhí)行內(nèi)存拷貝請(qǐng)求,設(shè)于微處理器的指令執(zhí)行流水線中;
相關(guān)檢測(cè)部件,用于檢測(cè)新內(nèi)存拷貝請(qǐng)求與隊(duì)列中其它內(nèi)存拷貝請(qǐng)求之間的相關(guān)關(guān)系;
微處理器指令集中設(shè)有內(nèi)存拷貝指令支持,譯碼邏輯在進(jìn)行譯碼時(shí)如果譯碼的指令為內(nèi)存拷貝指令,則將內(nèi)存拷貝指令轉(zhuǎn)換為內(nèi)存拷貝請(qǐng)求并發(fā)送給所述內(nèi)存拷貝單元;所述內(nèi)存拷貝單元接收譯碼邏輯發(fā)送的新內(nèi)存拷貝請(qǐng)求,通過所述相關(guān)檢測(cè)部件檢測(cè)新內(nèi)存拷貝請(qǐng)求與內(nèi)存拷貝單元內(nèi)用于緩存內(nèi)存拷貝請(qǐng)求的請(qǐng)求隊(duì)列中其它內(nèi)存拷貝請(qǐng)求之間的相關(guān)關(guān)系,當(dāng)所述請(qǐng)求隊(duì)列存在空閑項(xiàng)時(shí)內(nèi)存拷貝單元將新內(nèi)存拷貝請(qǐng)求及其相關(guān)關(guān)系緩存至所述請(qǐng)求隊(duì)列中;所述相關(guān)檢測(cè)部件檢測(cè)新內(nèi)存拷貝請(qǐng)求與隊(duì)列中其它內(nèi)存拷貝請(qǐng)求之間的相關(guān)關(guān)系時(shí),如果存在目的地址或者源地址與新內(nèi)存拷貝請(qǐng)求的源地址相同的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,則判定新內(nèi)存拷貝請(qǐng)求存在具有相關(guān)關(guān)系的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,當(dāng)所述請(qǐng)求隊(duì)列存在空閑項(xiàng)時(shí)內(nèi)存拷貝單元將新內(nèi)存拷貝請(qǐng)求及其相關(guān)關(guān)系緩存至所述請(qǐng)求隊(duì)列中;所述內(nèi)存拷貝單元從請(qǐng)求隊(duì)列選擇待執(zhí)行的當(dāng)前內(nèi)存拷貝請(qǐng)求,與高速緩存及快表進(jìn)行交互獲取當(dāng)前內(nèi)存拷貝請(qǐng)求的物理地址,以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求;如果存在與當(dāng)如內(nèi)存拷貝請(qǐng)求具有相關(guān)關(guān)系的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,則所述內(nèi)存拷貝單兀將關(guān)聯(lián)內(nèi)存 拷貝請(qǐng)求與當(dāng)前內(nèi)存拷貝請(qǐng)求中相同的頁拷貝操作合并執(zhí)行。作為本發(fā)明用于微處理器的內(nèi)存拷貝加速裝置的進(jìn)一步改進(jìn)
所述內(nèi)存拷貝單元包含
請(qǐng)求隊(duì)列,用于緩存內(nèi)存拷貝請(qǐng)求及其相關(guān)關(guān)系;
頁拷貝狀態(tài)表,用于記錄當(dāng)前進(jìn)行的頁拷貝操作建立對(duì)應(yīng)的頁拷貝記錄;
拷貝控制單元,用于控制請(qǐng)求隊(duì)列和頁拷貝狀態(tài)表、與高速緩存及快表進(jìn)行交互獲取當(dāng)前內(nèi)存拷貝請(qǐng)求的物理地址、執(zhí)行頁拷貝操作;
所述請(qǐng)求隊(duì)列中內(nèi)存拷貝請(qǐng)求的內(nèi)容域包括源地址、目的地址、拷貝長度、拷貝類型、源地址’、目的地址’、拷貝長度’、有效位和關(guān)聯(lián)標(biāo)識(shí)位,其中源地址、目的地址、拷貝長度、拷貝類型與所述內(nèi)存拷貝指令的內(nèi)容相同;所述源地址’表示未完成的源內(nèi)存區(qū)域的起始地址,目的地址’表示目的內(nèi)存區(qū)域的起始地址,拷貝長度’表示待拷貝長度;所述源地址’的初始值為源地址,目的地址’的初始值為目的地址,拷貝長度’的初始值為拷貝長度;所述有效位表示是否存在關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,有效位為I表示該內(nèi)存拷貝請(qǐng)求與其之前的內(nèi)存拷貝請(qǐng)求沒有關(guān)聯(lián)關(guān)系,可以由內(nèi)存拷貝單元單獨(dú)執(zhí)行,有效位為O表示該內(nèi)存拷貝請(qǐng)求與其之前的內(nèi)存拷貝請(qǐng)求存在關(guān)聯(lián)關(guān)系,目前還不能由內(nèi)存拷貝單元單獨(dú)執(zhí)行,而由內(nèi)存拷貝單元合并執(zhí)行;所述關(guān)聯(lián)標(biāo)識(shí)位用于存儲(chǔ)關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的編號(hào);所述頁拷貝狀態(tài)表中每一項(xiàng)頁拷貝記錄的內(nèi)容域包括源頁起始地址、目的頁起始地址和拷貝長度信息。本發(fā)明具有下述優(yōu)點(diǎn)
I、本發(fā)明通過獲取內(nèi)存拷貝請(qǐng)求和請(qǐng)求隊(duì)列中其它內(nèi)存拷貝請(qǐng)求之間的相關(guān)關(guān)系,在以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求的同時(shí),具有關(guān)聯(lián)關(guān)系的不同內(nèi)存拷貝請(qǐng)求進(jìn)行合并,減少訪存次數(shù),有效提高內(nèi)存拷貝操作的效率。將整個(gè)拷貝操作劃分為多個(gè)頁拷貝,相關(guān)檢測(cè)的粒度更細(xì),能夠增加內(nèi)存拷貝指令與其它普通指令的之間的執(zhí)行并行性,提高了系統(tǒng)性能,當(dāng)內(nèi)核中的后續(xù)指令與內(nèi)存拷貝指令之間不存在相關(guān)性或者相關(guān)解除時(shí),后續(xù)指令可以繼續(xù)執(zhí)行,而不需要等待拷貝指令的完成,能夠加速傳統(tǒng)內(nèi)存拷貝操作,具有內(nèi)存拷貝性能高、并發(fā)性好的優(yōu)點(diǎn)。2、本發(fā)明在微處理器現(xiàn)有指令集的基礎(chǔ)上增加了專有的內(nèi)存拷貝指令來進(jìn)行內(nèi)存拷貝,且采用專有硬件支持內(nèi)存拷貝操作,對(duì)現(xiàn)有微處理器的指令集修改較小,而且執(zhí)行內(nèi)存拷貝時(shí)不需要經(jīng)過數(shù)據(jù)寫回單元,而是直接訪問數(shù)據(jù)高速緩存或者外部存儲(chǔ)控制器來實(shí)現(xiàn)數(shù)據(jù)的讀取和寫回,因此結(jié)構(gòu)更加簡單,也無需排隊(duì)等待其他操作占用的數(shù)據(jù)寫回單元,能夠有效提高內(nèi)存拷貝的性能以及處理器的綜合處理性能;而且這種特性使得本發(fā)明易于應(yīng)用于現(xiàn)有各種微處理器體系結(jié)構(gòu),在確保性能的同時(shí)降低了硬件設(shè)計(jì)的復(fù)雜度,硬件結(jié)構(gòu)簡單,代價(jià)小,擴(kuò)展性好。3、本發(fā)明對(duì)微處理器的原有硬件結(jié)構(gòu)修改小,保留了處理器原先的流水線結(jié)構(gòu),因此原先的應(yīng)用程序能夠不加改動(dòng)地運(yùn)行于改動(dòng)以后的處理器上,即改進(jìn)后的微處理器可以完全兼容傳統(tǒng)的應(yīng)用程序,兼容性好。4、本發(fā)明針對(duì)應(yīng)用程序通信、進(jìn)程拷貝通信的特殊拷貝操作存在的特點(diǎn),將存在數(shù)據(jù)相關(guān)關(guān)系與源相關(guān)關(guān)系的內(nèi)存拷貝操作進(jìn)行合并,從而能夠進(jìn)一步減少內(nèi)存拷貝實(shí)際訪存的次數(shù),提高了性能,降低了功耗,具有內(nèi)存拷貝性能高、訪存次數(shù)少、消耗功耗低的優(yōu)點(diǎn)。
本發(fā)明用于微處理器的內(nèi)存拷貝加速裝置為與本發(fā)明內(nèi)存拷貝加速方法相對(duì)應(yīng)的結(jié)構(gòu),也具有與本發(fā)明內(nèi)存拷貝加速方法相同的技術(shù)效果,因此在此不再贅述。
圖I為本發(fā)明實(shí)施例的基本實(shí)施流程示意圖。圖2為本發(fā)明實(shí)施例中內(nèi)存拷貝指令的格式示意圖。圖3為本發(fā)明實(shí)施例中內(nèi)存拷貝指令的執(zhí)行流程示意圖。圖4為本發(fā)明實(shí)施例中步驟3)的實(shí)施流程示意圖。圖5為本發(fā)明實(shí)施例中步驟3. 4)的實(shí)施流程示意圖。圖6為應(yīng)用本發(fā)明實(shí)施例內(nèi)存拷貝加速裝置的微處理器流水線結(jié)構(gòu)示意圖。圖7為本發(fā)明實(shí)施例內(nèi)存拷貝加速裝置的訪存連接關(guān)系示意圖。圖8為應(yīng)用本發(fā)明實(shí)施例內(nèi)存拷貝加速裝置的微處理器結(jié)構(gòu)示意圖。圖9為應(yīng)用本發(fā)明實(shí)施例中內(nèi)存拷貝加速單元的詳細(xì)結(jié)構(gòu)示意圖。圖10為應(yīng)用本發(fā)明實(shí)施例基于應(yīng)用程序通信的內(nèi)存拷貝加速原理示意圖。圖11為應(yīng)用本發(fā)明實(shí)施例基于進(jìn)程拷貝通信的內(nèi)存拷貝加速原理示意圖。
具體實(shí)施例方式如圖I所示,本發(fā)明實(shí)施例用于微處理器的內(nèi)存拷貝加速方法的實(shí)施步驟如下
1)預(yù)先在微處理器指令集中增加內(nèi)存拷貝指令支持,在微處理器的指令執(zhí)行流水線中增加專用于執(zhí)行內(nèi)存拷貝指令的內(nèi)存拷貝單元;
2)譯碼邏輯在進(jìn)行譯碼時(shí)如果譯碼的指令為內(nèi)存拷貝指令,則將內(nèi)存拷貝指令轉(zhuǎn)換為內(nèi)存拷貝請(qǐng)求并發(fā)送給內(nèi)存拷貝單元;內(nèi)存拷貝單元接收譯碼邏輯發(fā)送的新內(nèi)存拷貝請(qǐng)求,通過相關(guān)檢測(cè)部件檢測(cè)新內(nèi)存拷貝請(qǐng)求與內(nèi)存拷貝單元內(nèi)用于緩存內(nèi)存拷貝請(qǐng)求的請(qǐng)求隊(duì)列中其它內(nèi)存拷貝請(qǐng)求之間的相關(guān)關(guān)系(數(shù)據(jù)相關(guān)或源相關(guān)),如果存在目的地址或者源地址與新內(nèi)存拷貝請(qǐng)求的源地址相同的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,則判定新內(nèi)存拷貝請(qǐng)求存在具有相關(guān)關(guān)系的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,當(dāng)請(qǐng)求隊(duì)列存在空閑項(xiàng)時(shí)內(nèi)存拷貝單元將新內(nèi)存拷貝請(qǐng)求及其相關(guān)關(guān)系緩存至請(qǐng)求隊(duì)列中;
3)內(nèi)存拷貝單元從請(qǐng)求隊(duì)列選擇待執(zhí)行的當(dāng)前內(nèi)存拷貝請(qǐng)求,與高速緩存及快表進(jìn)行交互獲取當(dāng)前內(nèi)存拷貝請(qǐng)求的物理地址,以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求;如果存在與當(dāng)iu內(nèi)存拷貝請(qǐng)求具有相關(guān)關(guān)系的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,則將關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求與當(dāng)如內(nèi)存拷貝請(qǐng)求中相同的頁拷貝操作合并執(zhí)行。本實(shí)施例引入了專有的內(nèi)存拷貝指令與硬件結(jié)構(gòu)的內(nèi)存拷貝單元,程序中內(nèi)存拷貝操作采用專用的內(nèi)存拷貝指令表示,而專有的內(nèi)存拷貝單元負(fù)責(zé)執(zhí)行拷貝指令,因此內(nèi)存拷貝操作不需要經(jīng)過數(shù)據(jù)寫回單元,而是直接訪問數(shù)據(jù)高速緩存或者外部存儲(chǔ)控制器,提高處理器的性能;而且本實(shí)施例的內(nèi)存拷貝單元還能夠?qū)截愓?qǐng)求隊(duì)列中所有拷貝請(qǐng)求進(jìn)行掃描,識(shí)別出各拷貝操作之間存在的關(guān)系,然后對(duì)一些相關(guān)的拷貝操作進(jìn)行合并執(zhí)行,從而減少拷貝操作開銷,解決了現(xiàn)有內(nèi)存拷貝技術(shù)訪存開銷大,進(jìn)而影響微處理器性能的問題。而且本實(shí)施例的拷貝方法中,內(nèi)存拷貝單元將整個(gè)拷貝操作劃分為多個(gè)頁拷貝,相關(guān)檢測(cè)的粒度更細(xì),能夠增加內(nèi)存拷貝指令與其它普通指令的之間的執(zhí)行并行性,提高了系 統(tǒng)性能;如果一條指令與前面的內(nèi)存拷貝指令相關(guān),該指令只需要內(nèi)存拷貝指令拷貝完包含相關(guān)數(shù)據(jù)的頁,即可立即執(zhí)行,而不需要等待拷貝指令完成所有頁的拷貝。為了實(shí)現(xiàn)對(duì)內(nèi)存拷貝的加速,本實(shí)施例預(yù)先在微處理器原有指令集的基礎(chǔ)上增加內(nèi)存拷貝指令支持。如圖2所示,本實(shí)施例的內(nèi)存拷貝指令包含拷貝類型域、源地址域、目的地址域與拷貝長度域四部分。該指令表示從源地址所指的內(nèi)存區(qū)域開始向目的地址所指的內(nèi)存區(qū)域拷貝數(shù)據(jù),拷貝長度指明了拷貝的字節(jié)數(shù)。內(nèi)存拷貝指令可支持多種不同的尋址方式,包括寄存器尋址、立即數(shù)尋址及基址尋址,在進(jìn)行具體實(shí)現(xiàn)時(shí)可以實(shí)現(xiàn)全部尋址方式,也可實(shí)現(xiàn)其中一種或幾種尋址方式。本實(shí)施例中,內(nèi)存拷貝指令具體形式為mcopy srcdst len,該指令代表將某一內(nèi)存區(qū)域中的數(shù)據(jù)拷貝到另一內(nèi)存區(qū)域,其中src表示源內(nèi)存區(qū)域的起始地址,dst表示目的內(nèi)存區(qū)域的起始地址,Ien表示本次內(nèi)存拷貝所要拷貝的數(shù)據(jù)長度。如圖3所示,本實(shí)施例的內(nèi)存拷貝指令與微處理器的現(xiàn)有指令集中的其它指令類型的執(zhí)行步驟相同,其執(zhí)行步驟如下(1)讀取指令取指部件根據(jù)程序計(jì)數(shù)器的值從存儲(chǔ)器中讀取指令并存儲(chǔ)到指令隊(duì)列中,同時(shí)程序計(jì)數(shù)器指向下一條指令;(2)指令譯碼譯碼部件從所述指令緩沖隊(duì)列中取出一條指令進(jìn)行譯碼;(3)指令執(zhí)行如果正在譯碼的指令是內(nèi)存拷貝指令,該指令發(fā)送給內(nèi)存拷貝加速裝置并由內(nèi)存拷貝加速裝置(即內(nèi)存拷貝單元)負(fù)責(zé)執(zhí)行,否則,該指令進(jìn)入傳統(tǒng)的指令執(zhí)行流水線。本實(shí)施例步驟2)中將新內(nèi)存拷貝請(qǐng)求及其相關(guān)關(guān)系緩存至請(qǐng)求隊(duì)列中時(shí),請(qǐng)求隊(duì)列中內(nèi)存拷貝請(qǐng)求的內(nèi)容域包括源地址、目的地址、拷貝長度、拷貝類型、源地址’、目的地址’、拷貝長度’、有效位和關(guān)聯(lián)標(biāo)識(shí)位,其中源地址、目的地址、拷貝長度、拷貝類型與內(nèi)存拷貝指令的內(nèi)容相同;源地址’表示未完成的源內(nèi)存區(qū)域的起始地址,目的地址’表示目的內(nèi)存區(qū)域的起始地址,拷貝長度’表示待拷貝長度;源地址’的初始值為源地址,目的地址’的初始值為目的地址,拷貝長度’的初始值為拷貝長度;有效位表示是否存在關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,有效位為I表示由內(nèi)存拷貝單元單獨(dú)執(zhí)行,有效位為O表示由內(nèi)存拷貝單元合并執(zhí)行;關(guān)聯(lián)標(biāo)識(shí)位用于存儲(chǔ)關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的編號(hào);步驟3)中以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求時(shí),建立用于存儲(chǔ)當(dāng)前進(jìn)行的頁拷貝操作的頁拷貝記錄的頁拷貝狀態(tài)表,頁拷貝狀態(tài)表中每一項(xiàng)頁拷貝記錄的內(nèi)容域包括源頁起始地址、目的頁起始地址和拷貝長度信息。如圖4所示,本實(shí)施例中,步驟3)的詳細(xì)步驟如下
3. I)內(nèi)存拷貝單元從請(qǐng)求隊(duì)列選擇有效位為I的當(dāng)前內(nèi)存拷貝請(qǐng)求,將當(dāng)前內(nèi)存拷貝請(qǐng)求根據(jù)虛擬存儲(chǔ)器的頁大小分解為多個(gè)頁拷貝;
3. 2)內(nèi)存拷貝單元與高速緩存及快表進(jìn)行交互獲取當(dāng)前內(nèi)存拷貝請(qǐng)求待執(zhí)行頁拷貝的物理地址;將待執(zhí)行頁拷貝的源頁起始地址、目的頁起始地址和拷貝長度信息建立頁拷貝記錄;
3. 3)更新當(dāng)前內(nèi)存拷貝請(qǐng)求在請(qǐng)求隊(duì)列中的源地址’、目的地址’與長度’,使源地址’等于源地址’減去待執(zhí)行頁拷貝的長度、目的地址’等于目的地址’減去待執(zhí)行頁拷貝的長度,長度’等于拷貝長度’減去待執(zhí)行頁拷貝的長度;
3. 4)根據(jù)頁拷貝狀態(tài)表中記錄的當(dāng)前內(nèi)存拷貝請(qǐng)求的待執(zhí)行頁拷貝訪問高速緩存或 外部存儲(chǔ)器,以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求的頁拷貝;同時(shí)內(nèi)存拷貝單元掃描請(qǐng)求隊(duì)列,如果請(qǐng)求隊(duì)列中存在與當(dāng)前內(nèi)存拷貝請(qǐng)求存在相關(guān)關(guān)系的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,則將關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求與當(dāng)前內(nèi)存拷貝請(qǐng)求中相同的頁拷貝操作合并執(zhí)行;
3. 5)在待執(zhí)行頁拷貝執(zhí)行完畢后,判斷當(dāng)前內(nèi)存拷貝請(qǐng)求的所有頁拷貝是否已經(jīng)全部完成,如果還有頁拷貝未完成則跳轉(zhuǎn)執(zhí)行步驟3. 2),否則跳轉(zhuǎn)執(zhí)行下一步;
3. 6)發(fā)出信號(hào),表明本次內(nèi)存拷貝請(qǐng)求完成,并將與本次內(nèi)存拷貝請(qǐng)求合并執(zhí)行的內(nèi)存拷貝請(qǐng)求的有效位設(shè)為I。如圖5所示,本實(shí)施例中,步驟3. 4)的詳細(xì)步驟如下
3. 4. I)根據(jù)頁拷貝狀態(tài)表中記錄的當(dāng)前內(nèi)存拷貝請(qǐng)求的待執(zhí)行頁拷貝訪問高速緩存或外部存儲(chǔ)器,以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求的頁拷貝;同時(shí)內(nèi)存拷貝單元掃描請(qǐng)求隊(duì)列,判定請(qǐng)求隊(duì)列中是否存在有效位為O且關(guān)聯(lián)標(biāo)識(shí)位記錄的為當(dāng)前內(nèi)存拷貝請(qǐng)求的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,如果存在則跳轉(zhuǎn)執(zhí)行下一步,否則直接跳轉(zhuǎn)執(zhí)行步驟3. 5);
3. 4. 2)判斷關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求之間的關(guān)聯(lián)關(guān)系,如果請(qǐng)求隊(duì)列存在目的地址與當(dāng)前內(nèi)存拷貝請(qǐng)求的源地址相同的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求(如應(yīng)用程序通信的內(nèi)存拷貝操作),則判定當(dāng)前內(nèi)存拷貝請(qǐng)求與其關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求之間存在數(shù)據(jù)相關(guān)關(guān)系,跳轉(zhuǎn)執(zhí)行3. 4. 3);如果請(qǐng)求隊(duì)列存在源地址與當(dāng)前內(nèi)存拷貝請(qǐng)求的源地址相同的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求(如基于進(jìn)程拷貝通信的內(nèi)存拷貝操作),則判定當(dāng)前內(nèi)存拷貝請(qǐng)求與其關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求之間存在源相關(guān)關(guān)系,跳轉(zhuǎn)執(zhí)行3. 4. 5);
3. 4. 3)將關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求在請(qǐng)求隊(duì)列中的各項(xiàng)進(jìn)行修改源地址不變;目的地址不變;拷貝長度等于拷貝長度原值減去當(dāng)前內(nèi)存拷貝請(qǐng)求的拷貝長度’;源地址’等于當(dāng)前內(nèi)存拷貝請(qǐng)求的源地址’;目的地址’等于目的地址原值加上當(dāng)前內(nèi)存拷貝請(qǐng)求的拷貝長度并減去當(dāng)前內(nèi)存拷貝請(qǐng)求的拷貝長度’;拷貝長度’等于當(dāng)前內(nèi)存拷貝請(qǐng)求的拷貝長度’;然后跳轉(zhuǎn)執(zhí)行下一步;
3. 4.4)當(dāng)前內(nèi)存拷貝請(qǐng)求后續(xù)的頁拷貝時(shí),每次從緩存讀取一個(gè)拷貝單位數(shù)據(jù)后,同時(shí)寫入當(dāng)前內(nèi)存拷貝請(qǐng)求對(duì)應(yīng)的緩存數(shù)據(jù)區(qū)域與關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求對(duì)應(yīng)的目的數(shù)據(jù)區(qū)域中;在當(dāng)前內(nèi)存拷貝請(qǐng)求的所有頁拷貝完成以后,對(duì)關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求所在請(qǐng)求隊(duì)列位置中的拷貝長度’、目的地址’和源地址’進(jìn)行修改源地址’等于關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的源地址;目的地址’等于關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的目的地址;拷貝長度’等于關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的拷貝長度;同時(shí),將關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的有效位設(shè)為1,關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求將由內(nèi)存拷貝單元單獨(dú)執(zhí)行;跳轉(zhuǎn)執(zhí)行步驟3. 5);
3. 4.5)當(dāng)前內(nèi)存拷貝請(qǐng)求后續(xù)的頁拷貝時(shí),每次從緩存讀取一個(gè)拷貝單位數(shù)據(jù)后,將同時(shí)寫入當(dāng)前內(nèi)存拷貝請(qǐng)求的目的地址以及與關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的目的地址;在當(dāng)前內(nèi)存拷貝請(qǐng)求的所有頁拷貝完成以后,對(duì)關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求所在請(qǐng)求隊(duì)列位置中的拷貝長度’進(jìn)行修改拷貝長度’等于關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的拷貝長度’減去當(dāng)前內(nèi)存拷貝請(qǐng)求的拷貝長度’;將關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的有效位設(shè)為1,關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求將由內(nèi)存拷貝單元單獨(dú)執(zhí)行;跳轉(zhuǎn)執(zhí)行步驟3. 5)。本實(shí)施例的內(nèi)存拷貝單元可以直接訪問外部存儲(chǔ)器讀入或?qū)懟匾截惖臄?shù)據(jù),因此內(nèi)存拷貝單元在執(zhí)行頁拷貝時(shí),如果所述內(nèi)存拷貝單元讀入或?qū)懟夭僮餍袨橛绊懙礁咚倬彌_中數(shù)據(jù)的一致性,對(duì)高速緩沖中的數(shù)據(jù)執(zhí)行失效或者更新等操作。而且,內(nèi)存拷貝單元的這種訪存連接方式也保留了內(nèi)存拷貝單元通過高速緩沖訪問外部存儲(chǔ)器的通路。當(dāng)拷貝的數(shù)據(jù)將會(huì)被后續(xù)指令使用時(shí),內(nèi)存拷貝單元可以通過高速緩沖訪問外部存儲(chǔ)器。 鑒于不同的內(nèi)存拷貝操作之間往往存在一定的關(guān)聯(lián),將拷貝操作之間存在的數(shù)據(jù)相關(guān)關(guān)系與源相關(guān)關(guān)系引入到上述內(nèi)存拷貝硬件裝置中,本實(shí)施例在請(qǐng)求隊(duì)列中為每一個(gè)內(nèi)存拷貝請(qǐng)求設(shè)置了一個(gè)拷貝類型內(nèi)容域,根據(jù)拷貝類型不同,分別進(jìn)行不同的優(yōu)化
一、應(yīng)用程序通信的內(nèi)存拷貝操作加速。在應(yīng)用程序通信等一些應(yīng)用環(huán)境中,拷貝操作A首先將要通信的數(shù)據(jù)從源地址拷貝到共享緩存中,然后拷貝操作B再將通信數(shù)據(jù)從共享緩存中拷貝到通信目標(biāo)地址,操作A和操作B之間存在數(shù)據(jù)相關(guān)關(guān)系。內(nèi)存拷貝單元在檢測(cè)到拷貝隊(duì)列中的內(nèi)存拷貝操作之間存在數(shù)據(jù)相關(guān)關(guān)系以后,相關(guān)的拷貝操作A和B將被同時(shí)執(zhí)行。在操作A拷貝剩余數(shù)據(jù)時(shí),拷貝的數(shù)據(jù)將被同時(shí)寫入操作B所指的通信目標(biāo)地址中,減少了內(nèi)核對(duì)內(nèi)存數(shù)據(jù)的讀寫次數(shù)。當(dāng)應(yīng)用程序A與應(yīng)用程序B通信時(shí),操作系統(tǒng)首先采用一個(gè)拷貝操作將應(yīng)用程序A要發(fā)送的數(shù)據(jù)逐一拷貝到操作系統(tǒng)地址空間中,然后采用第二個(gè)拷貝操作再將操作系統(tǒng)地址空間中的數(shù)據(jù)拷貝到應(yīng)用程序B的接收緩存中,因此兩個(gè)應(yīng)用程序間的每次數(shù)據(jù)通信都要使用兩次拷貝操作來完成,且這兩次拷貝之間具有數(shù)據(jù)相關(guān)關(guān)系。本實(shí)施例的內(nèi)存拷貝單元將掃描請(qǐng)求隊(duì)列,將其中屬于應(yīng)用程序通信的內(nèi)存拷貝操作的具有數(shù)據(jù)相關(guān)關(guān)系的兩個(gè)內(nèi)存拷貝請(qǐng)求識(shí)別出來并通過前述的步驟3. 4. 3) 3. 4. 4)的執(zhí)行步驟對(duì)進(jìn)行合并執(zhí)行,從而減少實(shí)際訪存操作。二、基于進(jìn)程拷貝通信的內(nèi)存拷貝操作加速。在進(jìn)程拷貝等一些應(yīng)用環(huán)境中,多個(gè)拷貝操作將某一地址的數(shù)據(jù)分別拷貝到其它多個(gè)不同的地址,這些拷貝操作之間存在源相關(guān)關(guān)系??截悊卧跈z測(cè)到拷貝隊(duì)列的內(nèi)存拷貝操作之間存在源相關(guān)關(guān)系以后,相關(guān)的多個(gè)拷貝操作將被同時(shí)執(zhí)行。如果某一拷貝操作還要從源緩沖中接收數(shù)據(jù),這部分?jǐn)?shù)據(jù)會(huì)被同時(shí)寫入其它源相關(guān)操作所指的目標(biāo)地址中,避免了同一數(shù)據(jù)被內(nèi)核重復(fù)讀取多次的現(xiàn)象。當(dāng)一個(gè)應(yīng)用程序拷貝產(chǎn)生多個(gè)執(zhí)行進(jìn)程時(shí),操作系統(tǒng)將分別采用多個(gè)拷貝操作,將父進(jìn)程中的數(shù)據(jù)分別拷貝到多個(gè)子進(jìn)程中。因此,父進(jìn)程中的數(shù)據(jù)將會(huì)被上述多個(gè)拷貝操作進(jìn)行重復(fù)讀取,我們稱這些內(nèi)存拷貝操作之間存在源相關(guān)關(guān)系。本實(shí)施例內(nèi)存拷貝單元將掃描拷貝請(qǐng)求隊(duì)列,將其中屬于基于進(jìn)程拷貝通信的內(nèi)存拷貝操作的具有源相關(guān)關(guān)系的多個(gè)內(nèi)存拷貝請(qǐng)求識(shí)別出來,并通過前述的步驟3. 4. 5)的執(zhí)行步驟對(duì)其進(jìn)行合并執(zhí)行,從而減少實(shí)際訪存操作。如圖6所示,本實(shí)施例用于微處理器的內(nèi)存拷貝加速裝置包括
內(nèi)存拷貝單元,專用于執(zhí)行內(nèi)存拷貝請(qǐng)求,設(shè)于微處理器的指令執(zhí)行流水線中;
相關(guān)檢測(cè)部件,用于檢測(cè)新內(nèi)存拷貝請(qǐng)求與隊(duì)列中其它內(nèi)存拷貝請(qǐng)求之間的相關(guān)關(guān)
系;
微處理器指令集中設(shè)有內(nèi)存拷貝指令支持,譯碼邏輯在進(jìn)行譯碼時(shí)如果譯碼的指令為內(nèi)存拷貝指令,則將內(nèi)存拷貝指令轉(zhuǎn)換為內(nèi)存拷貝請(qǐng)求并發(fā)送給內(nèi)存拷貝單元;內(nèi)存拷貝單元接收譯碼邏輯發(fā)送的新內(nèi)存拷貝請(qǐng)求,通過相關(guān)檢測(cè)部件檢測(cè)新內(nèi)存拷貝請(qǐng)求與內(nèi)存拷貝單元內(nèi)用于緩存內(nèi)存拷貝請(qǐng)求的請(qǐng)求隊(duì)列中其它內(nèi)存拷貝請(qǐng)求之間的相關(guān)關(guān)系,當(dāng)請(qǐng)求隊(duì)列存在空閑項(xiàng)時(shí)內(nèi)存拷貝單元將新內(nèi)存拷貝請(qǐng)求及其相關(guān)關(guān)系緩存至請(qǐng)求隊(duì)列中;相關(guān)檢測(cè)部件檢測(cè)新內(nèi)存拷貝請(qǐng)求與隊(duì)列中其它內(nèi)存拷貝請(qǐng)求之間的相關(guān)關(guān)系時(shí),如果存在 目的地址或者源地址與新內(nèi)存拷貝請(qǐng)求的源地址相同的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,則判定新內(nèi)存拷貝請(qǐng)求存在具有相關(guān)關(guān)系(數(shù)據(jù)相關(guān)或源相關(guān))的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,當(dāng)請(qǐng)求隊(duì)列存在空閑項(xiàng)時(shí)內(nèi)存拷貝單元將新內(nèi)存拷貝請(qǐng)求及其相關(guān)關(guān)系緩存至請(qǐng)求隊(duì)列中;內(nèi)存拷貝單元從請(qǐng)求隊(duì)列選擇待執(zhí)行的當(dāng)前內(nèi)存拷貝請(qǐng)求,與高速緩存及快表進(jìn)行交互獲取當(dāng)前內(nèi)存拷貝請(qǐng)求的物理地址,以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求;如果存在與當(dāng)前內(nèi)存拷貝請(qǐng)求存在相關(guān)關(guān)系的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,則內(nèi)存拷貝單元將關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求與當(dāng)前內(nèi)存拷貝請(qǐng)求中相同的頁拷貝操作合并執(zhí)行。微處理器主要包括程序計(jì)數(shù)器、取指單元、指令高速緩存、譯碼單元、寄存器文件、數(shù)據(jù)高速緩存、相關(guān)檢測(cè)單元、功能單元(Load/Store單元、浮點(diǎn)運(yùn)算單元和算術(shù)邏輯單元)以及數(shù)據(jù)寫回單元。取指單元依據(jù)程序計(jì)數(shù)器向指令高速緩存發(fā)出訪存請(qǐng)求獲取指令,然后取指單元將準(zhǔn)備好的指令發(fā)往譯碼單元進(jìn)行譯碼;依據(jù)譯碼單元的譯碼結(jié)果,指令訪問寄存器文件獲取源操作數(shù)并發(fā)往合適的功能單元進(jìn)行運(yùn)算;最后,數(shù)據(jù)寫回部件負(fù)責(zé)將該指令的最終結(jié)果寫回寄存器文件。而本實(shí)施例的內(nèi)存拷貝單元屬于一種特殊的功能單元,因此可以與其它現(xiàn)有功能單元放在同一級(jí)流水段中。譯碼單元在檢測(cè)到指令是內(nèi)存拷貝指令以后,將該指令發(fā)送給內(nèi)存拷貝單元執(zhí)行,內(nèi)存拷貝單元主要負(fù)責(zé)搬運(yùn)內(nèi)存中的數(shù)據(jù),因此其不需要經(jīng)過數(shù)據(jù)寫回單元,而是直接訪問數(shù)據(jù)高速緩存或者外部存儲(chǔ)控制器。為盡量提高處理器的性能,本實(shí)施例對(duì)相關(guān)檢測(cè)單元稍作修改,將內(nèi)存拷貝單元中的內(nèi)存拷貝指令和請(qǐng)求隊(duì)列中內(nèi)存拷貝請(qǐng)求的相關(guān)關(guān)系也加到相關(guān)檢測(cè)部件的控制范圍。如果內(nèi)存拷貝指令的后續(xù)指令與本次拷貝操作存在數(shù)據(jù)相關(guān)且相關(guān)的數(shù)據(jù)已經(jīng)拷貝結(jié)束,則后續(xù)相關(guān)指令可以執(zhí)行,而不需要等待該拷貝指令完全執(zhí)行完畢。由于內(nèi)存拷貝一般是進(jìn)行大數(shù)據(jù)塊數(shù)據(jù)傳輸,因此內(nèi)存拷貝單元對(duì)數(shù)據(jù)需求遠(yuǎn)遠(yuǎn)大于Load/Store單元。如果內(nèi)存拷貝單元完全通過高速緩存訪問內(nèi)存,則存在以下幾個(gè)問題1)內(nèi)存拷貝單元占用大量帶寬,影響Load/Store單元訪存性能;2)內(nèi)存拷貝單元通過高速緩存訪問內(nèi)存,本身性能受到限制;3)內(nèi)存拷貝單元將大量數(shù)據(jù)替換進(jìn)入高速緩存,導(dǎo)致高速緩存污染,影響正在執(zhí)行的應(yīng)用程序。如圖7所示,本實(shí)施例中內(nèi)存拷貝單元能夠直接與高速緩存及快表進(jìn)行交互獲取當(dāng)前內(nèi)存拷貝請(qǐng)求的物理地址,因此能夠直接訪問外部存儲(chǔ)器讀入或?qū)懟匾截惖臄?shù)據(jù),如果讀入或?qū)懟夭僮餍袨橛绊懙礁咚倬彌_中數(shù)據(jù)一致性,需要對(duì)高速緩沖中數(shù)據(jù)進(jìn)行失效或者更新等操作。同時(shí),該訪存連接方式也保留了內(nèi)存拷貝單元通過高速緩沖訪問外部存儲(chǔ)器的通路,當(dāng)拷貝的數(shù)據(jù)將會(huì)被后續(xù)指令使用時(shí),內(nèi)存拷貝單元可以通過高速緩沖訪問外部存儲(chǔ)器。如圖8所示,應(yīng)用本實(shí)施例的微處理器由一個(gè)內(nèi)核、一個(gè)高速緩存、一個(gè)快表、一個(gè)存儲(chǔ)器控制器組成。本實(shí)施例的內(nèi)存拷貝單元作為一個(gè)專有拷貝模塊,是處理器內(nèi)核內(nèi)部的一個(gè)功能單元。微處理器內(nèi)核能夠支持多個(gè)程序同時(shí)運(yùn)行,每個(gè)程序可以包括多個(gè)執(zhí)行進(jìn)程。內(nèi)存拷貝單元負(fù)責(zé)接收內(nèi)核中每個(gè)程序的內(nèi)存拷貝請(qǐng)求,并將其分解為獨(dú)立的存儲(chǔ)器讀寫請(qǐng)求。由于指令中的地址是虛地址,所以內(nèi)存拷貝單元需要訪問快表,將虛地址轉(zhuǎn)換為物理地址。在獲得物理地址以后,內(nèi)存拷貝單元將發(fā)出訪存請(qǐng)求,這時(shí)可以根據(jù)需要通過高速緩存訪問存儲(chǔ)器或者繞過高速緩存直接訪問存儲(chǔ)器。如果繞過高速緩存,需要作廢高速緩存中相關(guān)數(shù)據(jù)塊以保證高速緩存的一致性。如圖9所示,本實(shí)施例的內(nèi)存拷貝單元包含
請(qǐng)求隊(duì)列,用于緩存內(nèi)存拷貝請(qǐng)求及其相關(guān)關(guān)系;
頁拷貝狀態(tài)表,用于記錄當(dāng)前進(jìn)行的頁拷貝操作建立對(duì)應(yīng)的頁拷貝記錄;
拷貝控制單元,用于控制請(qǐng)求隊(duì)列和頁拷貝狀態(tài)表、與高速緩存及快表進(jìn)行交互獲取當(dāng)前內(nèi)存拷貝請(qǐng)求的物理地址、執(zhí)行頁拷貝操作;
請(qǐng)求隊(duì)列中內(nèi)存拷貝請(qǐng)求的內(nèi)容域包括源地址、目的地址、拷貝長度、拷貝類型、源地址’、目的地址’、拷貝長度’、有效位(V)和關(guān)聯(lián)標(biāo)識(shí)位,其中源地址、目的地址、拷貝長度、拷貝類型與內(nèi)存拷貝指令的內(nèi)容相同;源地址’表示未完成的源內(nèi)存區(qū)域的起始地址,目的地址’表示目的內(nèi)存區(qū)域的起始地址,拷貝長度’表示待拷貝長度;源地址’的初始值為源地址,目的地址’的初始值為目的地址,拷貝長度’的初始值為拷貝長度;有效位表示是否存在關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,有效位為I表示該內(nèi)存拷貝請(qǐng)求與其之前的內(nèi)存拷貝請(qǐng)求沒有關(guān)聯(lián)關(guān)系,可以由內(nèi)存拷貝單元執(zhí)行,有效位為O表示該內(nèi)存拷貝請(qǐng)求與其之前的內(nèi)存拷貝請(qǐng)求存在關(guān)聯(lián)關(guān)系,目前還不能由內(nèi)存拷貝單元單獨(dú)執(zhí)行,而由內(nèi)存拷貝單元合并執(zhí)行(與之前存在關(guān)聯(lián)關(guān)系的內(nèi)存拷貝請(qǐng)求合并執(zhí)行);關(guān)聯(lián)標(biāo)識(shí)位用于存儲(chǔ)關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的編號(hào);頁拷貝狀態(tài)表中每一項(xiàng)頁拷貝記錄的內(nèi)容域包括源頁起始地址、目的頁起始地址和拷貝長度 目息。請(qǐng)求隊(duì)列每一項(xiàng)內(nèi)存拷貝請(qǐng)求都會(huì)自動(dòng)形成一個(gè)索引號(hào)(圖中的1、2、3、4),而關(guān)聯(lián)標(biāo)識(shí)位則包含所有請(qǐng)求隊(duì)列中項(xiàng)目的索引號(hào),如果當(dāng)前內(nèi)存拷貝請(qǐng)求關(guān)聯(lián)標(biāo)識(shí)位為1,則代表與索引號(hào)為I的內(nèi)存拷貝請(qǐng)求為當(dāng)前內(nèi)存拷貝請(qǐng)求的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求。拷貝控制單元從請(qǐng)求隊(duì)列獲取內(nèi)存拷貝請(qǐng)求,在當(dāng)前內(nèi)存拷貝請(qǐng)求在請(qǐng)求隊(duì)列中不存在相關(guān)關(guān)系的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求時(shí),拷貝控制單元以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求;在當(dāng)前內(nèi)存拷貝請(qǐng)求存在相關(guān)關(guān)系的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求時(shí),拷貝控制單元在以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求,同時(shí)在執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求時(shí)還根據(jù)頁拷貝狀態(tài)表中頁拷貝將已經(jīng)讀取的源數(shù)據(jù)也一并拷貝到關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求對(duì)應(yīng)的目的數(shù)據(jù)區(qū)域中??截惪刂茊卧莾?nèi)存拷貝單元中的核心部件,拷貝控制單元負(fù)責(zé)控制拷貝模塊中的其它子部件,并負(fù)責(zé)與高速緩存與快表進(jìn)行交互。請(qǐng)求隊(duì)列記錄內(nèi)核中各個(gè)程序發(fā)出的所有待處理的內(nèi)存拷貝請(qǐng)求??截惪刂茊卧鶕?jù)虛擬存儲(chǔ)器的頁大小,拷貝控制單元將內(nèi)存拷貝請(qǐng)求分解為多個(gè)頁拷貝??截惪刂茊卧鶕?jù)標(biāo)志位V決定內(nèi)存拷貝請(qǐng)求是被獨(dú)立執(zhí)行還是被合并執(zhí)行,有效位V頁表示對(duì)應(yīng)的內(nèi)存拷貝請(qǐng)求目前是否可以執(zhí)行。
A)本實(shí)施例對(duì)于V=I (獨(dú)立執(zhí)行)的內(nèi)存拷貝請(qǐng)求的基本執(zhí)行過程如下
Al)當(dāng)內(nèi)存拷貝請(qǐng)求與請(qǐng)求隊(duì)列中前面的普通內(nèi)存拷貝請(qǐng)求不存在數(shù)據(jù)相關(guān),并且請(qǐng)求隊(duì)列存在空閑項(xiàng),該內(nèi)存拷貝請(qǐng)求發(fā)射進(jìn)入內(nèi)存拷貝單元的請(qǐng)求隊(duì)列。源地址’、目的地址’與長度’的初始值分別等于指令中的源地址、目的地址、拷貝長度。由于新進(jìn)入請(qǐng)求隊(duì)列的內(nèi)存拷貝請(qǐng)求與其他內(nèi)存拷貝請(qǐng)求之間不存在數(shù)據(jù)相關(guān),故有效位V設(shè)為I。A2)拷貝控制單元從請(qǐng)求隊(duì)列中選擇V=I的某個(gè)內(nèi)存拷貝請(qǐng)求項(xiàng)進(jìn)行服務(wù)??截惪刂茊卧獙?dāng)前內(nèi)存拷貝請(qǐng)求根據(jù)虛擬存儲(chǔ)器的頁大小分解為多個(gè)頁拷貝,將待執(zhí)行頁拷貝的源頁起始地址、目的頁起始地址和拷貝長度信息建立頁拷貝記錄??截惪刂茊卧獙⒏鶕?jù)拷貝請(qǐng)求中的源地址、目的地址訪問快表(TLB),獲得其對(duì)應(yīng)的物理地址,并記錄在頁拷貝狀態(tài)表中。A3)更新該拷貝請(qǐng)求在請(qǐng)求隊(duì)列中的源地址’、目的地址’與長度’,源地址’=源地 址’-拷貝長度,目的地址’=目的地址’-拷貝長度,拷貝長度’=拷貝長度’-拷貝長度。A4)根據(jù)頁拷貝狀態(tài)表,訪問高速緩存或外部存儲(chǔ)器,以頁為單位進(jìn)行內(nèi)存數(shù)據(jù)拷貝。A5)當(dāng)本次頁拷貝完成以后,如果相應(yīng)內(nèi)存拷貝還未完成,跳轉(zhuǎn)步驟2),否則跳轉(zhuǎn)步驟6)。A6)發(fā)出信號(hào),表明本次內(nèi)存拷貝完成。在上述步驟Al) A6)拷貝單元執(zhí)行過程中,凡是有效位V為I的內(nèi)存拷貝請(qǐng)求之間由于都不存在數(shù)據(jù)相關(guān),因此這些內(nèi)存拷貝請(qǐng)求之間可以亂序執(zhí)行甚至并發(fā)執(zhí)行,從而可以提高內(nèi)存拷貝操作的效率。如圖10所示,本實(shí)施例對(duì)V=O (合并執(zhí)行)的應(yīng)用程序通信的內(nèi)存拷貝操作實(shí)現(xiàn)加速的執(zhí)行步驟如下
BI)內(nèi)存拷貝請(qǐng)求A (V=l,待獨(dú)立執(zhí)行的內(nèi)存拷貝請(qǐng)求)首先進(jìn)入拷貝請(qǐng)求隊(duì)列,并首先得到服務(wù)。B2)在內(nèi)存拷貝請(qǐng)求A得到服務(wù)的過程中(已完成部分拷貝,如箭頭a所示),內(nèi)存拷貝請(qǐng)求B (V=O,待合并執(zhí)行的內(nèi)存拷貝請(qǐng)求)進(jìn)入請(qǐng)求隊(duì)列。B3)拷貝控制單元在內(nèi)存拷貝請(qǐng)求B進(jìn)入請(qǐng)求隊(duì)列時(shí)將內(nèi)存拷貝請(qǐng)求B對(duì)應(yīng)的源地址、拷貝長度與隊(duì)列中其它拷貝請(qǐng)求的目的地址、拷貝長度分別進(jìn)行比較,如果相同,則表明這兩個(gè)操作之間存在數(shù)據(jù)相關(guān)關(guān)系,有效位V設(shè)為O繼續(xù)執(zhí)行步驟4);(否則有效位設(shè)為I,則按照步驟Al) A6 )所示的一般過程執(zhí)行內(nèi)存拷貝請(qǐng)求A與內(nèi)存拷貝請(qǐng)求B。B4)對(duì)內(nèi)存拷貝請(qǐng)求B所在請(qǐng)求隊(duì)列位置中的各項(xiàng)進(jìn)行修改
源地址不變;
目的地址不變;
拷貝長度=拷貝長度-內(nèi)存拷貝請(qǐng)求A的拷貝長度’;
源地址’=內(nèi)存拷貝請(qǐng)求A的源地址’;
目的地址’=內(nèi)存拷貝請(qǐng)求B的目的地址+內(nèi)存拷貝請(qǐng)求A的拷貝長度-內(nèi)存拷貝請(qǐng)求A的拷貝長度’;
拷貝長度’=內(nèi)存拷貝請(qǐng)求A的拷貝長度’;
內(nèi)存拷貝請(qǐng)求A關(guān)聯(lián)標(biāo)識(shí)中對(duì)應(yīng)內(nèi)存拷貝請(qǐng)求B的項(xiàng)設(shè)為有效,表明內(nèi)存拷貝請(qǐng)求A的執(zhí)行過程中,可以附帶執(zhí)行內(nèi)存拷貝請(qǐng)求B的部分內(nèi)容。B5)拷貝控制單元在執(zhí)行內(nèi)存拷貝請(qǐng)求A的后續(xù)頁拷貝時(shí),每次從緩存讀取一個(gè)拷貝單位數(shù)據(jù)后,將同時(shí)寫入緩存數(shù)據(jù)區(qū)域與目的數(shù)據(jù)區(qū)域中,如圖中箭頭b所示。B6)在內(nèi)存拷貝請(qǐng)求A完成以后,對(duì)內(nèi)存拷貝請(qǐng)求B所在請(qǐng)求隊(duì)列位置中的拷貝長度’、目的地址’和源地址’進(jìn)行修改
源地址’=內(nèi)存拷貝請(qǐng)求B的源地址;
目的地址’=內(nèi)存拷貝請(qǐng)求B的目的地址;
拷貝長度’=內(nèi)存拷貝請(qǐng)求B的拷貝長度; 同時(shí),將內(nèi)存拷貝請(qǐng)求B的有效位V設(shè)為1,表明內(nèi)存拷貝請(qǐng)求B可以有內(nèi)存拷貝單元獨(dú)立執(zhí)行,其具體拷貝行為如圖中箭頭c所示。 B7 )內(nèi)存拷貝請(qǐng)求B執(zhí)行完成以后,發(fā)出信號(hào)表明內(nèi)存拷貝請(qǐng)求B對(duì)應(yīng)的內(nèi)存拷貝結(jié)束。應(yīng)用程序之間的通信一般由操作系統(tǒng)采用兩次內(nèi)存拷貝操作來實(shí)現(xiàn)。操作系統(tǒng)首先采用一個(gè)內(nèi)存拷貝請(qǐng)求A將所要傳輸?shù)臄?shù)據(jù)從應(yīng)用程序的源數(shù)據(jù)區(qū)域逐一拷貝到內(nèi)核空間的緩存區(qū)域中,然后第二個(gè)內(nèi)存拷貝請(qǐng)求B再將共內(nèi)核空間緩存區(qū)域中的數(shù)據(jù)拷貝到另一應(yīng)用程序的目的數(shù)據(jù)區(qū)域,內(nèi)存拷貝請(qǐng)求A與內(nèi)存拷貝請(qǐng)求B之間的這種關(guān)系為數(shù)據(jù)相關(guān)。在現(xiàn)有技術(shù)的內(nèi)存拷貝過程中,只有當(dāng)內(nèi)存拷貝請(qǐng)求A完全完成以后,內(nèi)存拷貝請(qǐng)求B才能進(jìn)行,本實(shí)施例提出的這種內(nèi)存拷貝加速方法將應(yīng)用程序通信中的兩次內(nèi)存拷貝進(jìn)行有效合并,內(nèi)存拷貝單元將整個(gè)拷貝操作劃分為多個(gè)頁拷貝,如果內(nèi)存拷貝請(qǐng)求A中的某個(gè)頁完成,內(nèi)存拷貝請(qǐng)求B即可開始拷貝,這種操作的細(xì)粒度特征使得內(nèi)存拷貝的并行性得到有效提聞,進(jìn)而提聞了系統(tǒng)的性能,減少了內(nèi)核對(duì)內(nèi)存數(shù)據(jù)的讀與。當(dāng)內(nèi)存拷貝請(qǐng)求A與內(nèi)存拷貝請(qǐng)求B合并以后,如果源數(shù)據(jù)區(qū)域中還有部分?jǐn)?shù)據(jù)沒有發(fā)送到緩存數(shù)據(jù)區(qū)域中,這部分?jǐn)?shù)據(jù)將同時(shí)發(fā)送到緩存數(shù)據(jù)區(qū)域與目的數(shù)據(jù)區(qū)域中,避免了從緩存數(shù)據(jù)區(qū)域中讀取上述數(shù)據(jù),本實(shí)施例的BI) B7)這種加速方法也可以用于加速其它環(huán)境下具有數(shù)據(jù)相關(guān)關(guān)系的內(nèi)存拷貝操作。如圖11所示,本實(shí)施例對(duì)V=O (合并執(zhí)行)的基于進(jìn)程拷貝通信的內(nèi)存拷貝操作實(shí)現(xiàn)加速的執(zhí)行步驟如下
Cl)拷貝請(qǐng)求Ci (V=l,待獨(dú)立執(zhí)行的內(nèi)存拷貝請(qǐng)求)進(jìn)入拷貝隊(duì)列,拷貝控制單元檢查源地址所指的數(shù)據(jù)是否可用,如果可用,則執(zhí)行操作Ci ;
C2)拷貝請(qǐng)求& (V=0,待合并執(zhí)行的內(nèi)存拷貝請(qǐng)求)進(jìn)入拷貝隊(duì)列時(shí),拷貝控制單元將拷貝請(qǐng)求Cj對(duì)應(yīng)的源地址、拷貝長度與隊(duì)列中其它拷貝請(qǐng)求的源地址、拷貝長度分別進(jìn)行比較,如果存在相同項(xiàng),則說明隊(duì)列中存在源相關(guān)的多個(gè)關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求(除去Ci的C1,…,Cm);
C3)拷貝單元在執(zhí)行拷貝操作Ci的后續(xù)頁拷貝時(shí),每次從緩存讀取一個(gè)拷貝單位數(shù)據(jù)后,將同時(shí)寫入Ci與中相應(yīng)的目的地址;
C4)對(duì)操作&所在請(qǐng)求隊(duì)列位置中的拷貝長度’進(jìn)行修改,拷貝長度’=拷貝長度’-操作Ci的拷貝長度’,將除去Ci的C1,…,Cm的有效位設(shè)為1,除去Ci的C1,…,Cm將由內(nèi)存拷貝單元單獨(dú)執(zhí)行。進(jìn)程拷貝通信一般由多個(gè)獨(dú)立的基本拷貝操作組成。操作系統(tǒng)通過內(nèi)存拷貝操作C1,…,Cm將父進(jìn)程緩存中的數(shù)據(jù)分別拷貝到m個(gè)子進(jìn)程緩存中。我們稱C1,…,Cm之間的這種關(guān)系為源相關(guān)。在現(xiàn)有技術(shù)的內(nèi)存拷貝過程中,每次拷貝操作都是獨(dú)立完成,生成m個(gè)子進(jìn)程需要對(duì)父進(jìn)程緩存中的數(shù)據(jù)讀取m次。這種實(shí)現(xiàn)方式引入了一些冗余的訪存操作,不僅浪費(fèi)了存儲(chǔ)器帶寬,還影響了通信的性能。而本實(shí)施例中提出的這種內(nèi)存拷貝加速方法將存在源相關(guān)的多次拷貝操作進(jìn)行有效合并,減少了內(nèi)核對(duì)內(nèi)存數(shù)據(jù)的讀寫。當(dāng)操作Ci與操作合并以后,如果Ci對(duì)應(yīng)的子進(jìn)程緩存還要從父進(jìn)程緩存中接收數(shù)據(jù),這部分?jǐn)?shù)據(jù)會(huì)同時(shí)被G對(duì)應(yīng)的子進(jìn)程緩存接收,避免了同一數(shù)據(jù)被內(nèi)核重復(fù)讀取多次的現(xiàn)象。本實(shí)施例中Cl) C4)這種加速方法也可以用于加速其它環(huán)境下具有源相關(guān)關(guān)系的內(nèi)存拷貝操作。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實(shí)施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域 的普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種用于微處理器的內(nèi)存拷貝加速方法,其特征在于其實(shí)施步驟如下 1)預(yù)先在微處理器指令集中增加內(nèi)存拷貝指令支持,在微處理器的指令執(zhí)行流水線中增加專用于執(zhí)行所述內(nèi)存拷貝指令的內(nèi)存拷貝單元; 2)譯碼邏輯在進(jìn)行譯碼時(shí)如果譯碼的指令為內(nèi)存拷貝指令,則將內(nèi)存拷貝指令轉(zhuǎn)換為內(nèi)存拷貝請(qǐng)求并發(fā)送給所述內(nèi)存拷貝單元;所述內(nèi)存拷貝單元接收譯碼邏輯發(fā)送的新內(nèi)存拷貝請(qǐng)求,通過相關(guān)檢測(cè)部件檢測(cè)新內(nèi)存拷貝請(qǐng)求與內(nèi)存拷貝單元內(nèi)用于緩存內(nèi)存拷貝請(qǐng)求的請(qǐng)求隊(duì)列中其它內(nèi)存拷貝請(qǐng)求之間的相關(guān)關(guān)系,如果存在目的地址或者源地址與新內(nèi)存拷貝請(qǐng)求的源地址相同的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,則判定新內(nèi)存拷貝請(qǐng)求存在具有相關(guān)關(guān)系的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,當(dāng)所述請(qǐng)求隊(duì)列存在空閑項(xiàng)時(shí)內(nèi)存拷貝單元將新內(nèi)存拷貝請(qǐng)求及其相關(guān)關(guān)系緩存至所述請(qǐng)求隊(duì)列中; 3)所述內(nèi)存拷貝單元從請(qǐng)求隊(duì)列選擇待執(zhí)行的當(dāng)前內(nèi)存拷貝請(qǐng)求,與高速緩存及塊表進(jìn)行交互獲取當(dāng)前內(nèi)存拷貝請(qǐng)求的物理地址,以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求;如果存 在與當(dāng)前內(nèi)存拷貝請(qǐng)求具有相關(guān)關(guān)系的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,則將關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求與當(dāng)前內(nèi)存拷貝請(qǐng)求中相同的頁拷貝操作合并執(zhí)行。
2.根據(jù)權(quán)利要求I所述的用于微處理器的內(nèi)存拷貝加速方法,其特征在于所述步驟2 )中將新內(nèi)存拷貝請(qǐng)求及其相關(guān)關(guān)系緩存至請(qǐng)求隊(duì)列中時(shí),所述請(qǐng)求隊(duì)列中內(nèi)存拷貝請(qǐng)求的內(nèi)容域包括源地址、目的地址、拷貝長度、拷貝類型、源地址’、目的地址’、拷貝長度’、有效位和關(guān)聯(lián)標(biāo)識(shí)位,其中源地址、目的地址、拷貝長度、拷貝類型與所述內(nèi)存拷貝指令的內(nèi)容相同;所述源地址’表示未完成的源內(nèi)存區(qū)域的起始地址,目的地址’表示目的內(nèi)存區(qū)域的起始地址,拷貝長度’表示待拷貝長度;所述源地址’的初始值為源地址,目的地址’的初始值為目的地址,拷貝長度’的初始值為拷貝長度;所述有效位表示是否存在關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,有效位為I表示該內(nèi)存拷貝請(qǐng)求與其之前的內(nèi)存拷貝請(qǐng)求沒有關(guān)聯(lián)關(guān)系,可以由內(nèi)存拷貝單元執(zhí)行,有效位為O表示該內(nèi)存拷貝請(qǐng)求與其之前的內(nèi)存拷貝請(qǐng)求存在關(guān)聯(lián)關(guān)系,目前還不能由內(nèi)存拷貝單元單獨(dú)執(zhí)行,而由內(nèi)存拷貝單元合并執(zhí)行;所述關(guān)聯(lián)標(biāo)識(shí)位用于存儲(chǔ)關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的編號(hào);所述步驟3)中以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求時(shí),建立用于存儲(chǔ)當(dāng)前進(jìn)行的頁拷貝操作的頁拷貝記錄的頁拷貝狀態(tài)表,頁拷貝狀態(tài)表中每一項(xiàng)頁拷貝記錄的內(nèi)容域包括源頁起始地址、目的頁起始地址和拷貝長度信息。
3.根據(jù)權(quán)利要求2所述的用于微處理器的內(nèi)存拷貝加速方法,其特征在于,所述步驟3)的詳細(xì)步驟如下 3.I)所述內(nèi)存拷貝單元從請(qǐng)求隊(duì)列選擇有效位為I的當(dāng)前內(nèi)存拷貝請(qǐng)求,將當(dāng)前內(nèi)存拷貝請(qǐng)求根據(jù)虛擬存儲(chǔ)器的頁大小分解為多個(gè)頁拷貝; 3.2)所述內(nèi)存拷貝單元與高速緩存及快表進(jìn)行交互獲取當(dāng)前內(nèi)存拷貝請(qǐng)求待執(zhí)行頁拷貝的物理地址;將待執(zhí)行頁拷貝的源頁起始地址、目的頁起始地址和拷貝長度信息建立頁拷貝記錄; 3.3)更新當(dāng)前內(nèi)存拷貝請(qǐng)求在請(qǐng)求隊(duì)列中的源地址’、目的地址’與長度’,使源地址’等于源地址’減去待執(zhí)行頁拷貝的長度、目的地址’等于目的地址’減去待執(zhí)行頁拷貝的長度,長度’等于拷貝長度’減去待執(zhí)行頁拷貝的長度; 3.4)根據(jù)所述頁拷貝狀態(tài)表中記錄的當(dāng)前內(nèi)存拷貝請(qǐng)求的待執(zhí)行頁拷貝訪問高速緩存或外部存儲(chǔ)器,以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求的頁拷貝;同時(shí)所述內(nèi)存拷貝單元掃描請(qǐng)求隊(duì)列,如果請(qǐng)求隊(duì)列中存在與當(dāng)前內(nèi)存拷貝請(qǐng)求存在相關(guān)關(guān)系的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,則將關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求與當(dāng)前內(nèi)存拷貝請(qǐng)求中相同的頁拷貝操作合并執(zhí)行; .3.5)在待執(zhí)行頁拷貝執(zhí)行完畢后,判斷當(dāng)前內(nèi)存拷貝請(qǐng)求的所有頁拷貝是否已經(jīng)全部完成,如果還有頁拷貝未完成則跳轉(zhuǎn)執(zhí)行步驟3. 2),否則跳轉(zhuǎn)執(zhí)行下一步; . 3.6)發(fā)出信號(hào),表明本次內(nèi)存拷貝請(qǐng)求完成,并將與本次內(nèi)存拷貝請(qǐng)求合并執(zhí)行的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的有效位設(shè)為I。
4.根據(jù)權(quán)利要求3所述的用于微處理器的內(nèi)存拷貝加速方法,其特征在于,所述步驟.3.4)的詳細(xì)步驟如下 .3.4. I)根據(jù)所述頁拷貝狀態(tài)表中記錄的當(dāng)前內(nèi)存拷貝請(qǐng)求的待執(zhí)行頁拷貝訪問高速緩存或外部存儲(chǔ)器,以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求的頁拷貝;同時(shí)所述內(nèi)存拷貝單元掃描請(qǐng)求隊(duì)列,判定請(qǐng)求隊(duì)列中是否存在有效位為O且關(guān)聯(lián)標(biāo)識(shí)位記錄的為當(dāng)前內(nèi)存拷貝 請(qǐng)求的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,如果存在則跳轉(zhuǎn)執(zhí)行下一步,否則直接跳轉(zhuǎn)執(zhí)行步驟3. 5); .3.4. 2)判斷關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求之間的關(guān)聯(lián)關(guān)系,如果請(qǐng)求隊(duì)列存在目的地址與當(dāng)前內(nèi)存拷貝請(qǐng)求的源地址相同的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,則判定當(dāng)前內(nèi)存拷貝請(qǐng)求與其關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求之間存在數(shù)據(jù)相關(guān)關(guān)系,跳轉(zhuǎn)執(zhí)行3. 4. 3);如果請(qǐng)求隊(duì)列存在源地址與當(dāng)前內(nèi)存拷貝請(qǐng)求的源地址相同的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,則判定當(dāng)前內(nèi)存拷貝請(qǐng)求與其關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求之間存在源相關(guān)關(guān)系,跳轉(zhuǎn)執(zhí)行3. 4. 5); .3.4. 3)將關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求在請(qǐng)求隊(duì)列中的各項(xiàng)進(jìn)行修改源地址不變;目的地址不變;拷貝長度等于拷貝長度原值減去當(dāng)前內(nèi)存拷貝請(qǐng)求的拷貝長度’;源地址’等于當(dāng)前內(nèi)存拷貝請(qǐng)求的源地址’;目的地址’等于目的地址原值加上當(dāng)前內(nèi)存拷貝請(qǐng)求的拷貝長度并減去當(dāng)前內(nèi)存拷貝請(qǐng)求的拷貝長度’;拷貝長度’等于當(dāng)前內(nèi)存拷貝請(qǐng)求的拷貝長度’;然后跳轉(zhuǎn)執(zhí)行下一步; .3.4.4)當(dāng)前內(nèi)存拷貝請(qǐng)求后續(xù)的頁拷貝時(shí),每次從緩存讀取一個(gè)拷貝單位數(shù)據(jù)后,同時(shí)寫入當(dāng)前內(nèi)存拷貝請(qǐng)求對(duì)應(yīng)的緩存數(shù)據(jù)區(qū)域與關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求對(duì)應(yīng)的目的數(shù)據(jù)區(qū)域中;在當(dāng)前內(nèi)存拷貝請(qǐng)求的所有頁拷貝完成以后,對(duì)關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求所在請(qǐng)求隊(duì)列位置中的拷貝長度’、目的地址’和源地址’進(jìn)行修改源地址’等于關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的源地址;目的地址’等于關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的目的地址;拷貝長度’等于關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的拷貝長度;同時(shí),將關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的有效位設(shè)為1,所述關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求將由內(nèi)存拷貝單元單獨(dú)執(zhí)行;跳轉(zhuǎn)執(zhí)行步驟3. 5); .3.4.5)當(dāng)前內(nèi)存拷貝請(qǐng)求后續(xù)的頁拷貝時(shí),每次從緩存讀取一個(gè)拷貝單位數(shù)據(jù)后,將同時(shí)寫入當(dāng)前內(nèi)存拷貝請(qǐng)求的目的地址以及與關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的目的地址;在當(dāng)前內(nèi)存拷貝請(qǐng)求的所有頁拷貝完成以后,對(duì)關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求所在請(qǐng)求隊(duì)列位置中的拷貝長度’進(jìn)行修改拷貝長度’等于關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的拷貝長度’減去當(dāng)前內(nèi)存拷貝請(qǐng)求的拷貝長度’;將關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的有效位設(shè)為1,所述關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求將由內(nèi)存拷貝單元單獨(dú)執(zhí)行;跳轉(zhuǎn)執(zhí)行步驟3. 5)。
5.根據(jù)權(quán)利要求3或4所述的用于微處理器的內(nèi)存拷貝加速方法,其特征在于所述執(zhí)行頁拷貝時(shí),如果所述內(nèi)存拷貝單元讀入或?qū)懟夭僮餍袨橛绊懙礁咚倬彌_中數(shù)據(jù)的一致性,對(duì)高速緩沖中的數(shù)據(jù)執(zhí)行失效或者更新等操作。
6.一種用于微處理器的內(nèi)存拷貝加速裝置,其特征在于包括內(nèi)存拷貝單元,專用于執(zhí)行內(nèi)存拷貝請(qǐng)求,設(shè)于微處理器的指令執(zhí)行流水線中; 相關(guān)檢測(cè)部件,用于檢測(cè)新內(nèi)存拷貝請(qǐng)求與隊(duì)列中其它內(nèi)存拷貝請(qǐng)求之間的相關(guān)關(guān)系; 微處理器指令集中設(shè)有內(nèi)存拷貝指令支持,譯碼邏輯在進(jìn)行譯碼時(shí)如果譯碼的指令為內(nèi)存拷貝指令,則將內(nèi)存拷貝指令轉(zhuǎn)換為內(nèi)存拷貝請(qǐng)求并發(fā)送給所述內(nèi)存拷貝單元;所述內(nèi)存拷貝單元接收譯碼邏輯發(fā)送的新內(nèi)存拷貝請(qǐng)求,通過所述相關(guān)檢測(cè)部件檢測(cè)新內(nèi)存拷貝請(qǐng)求與內(nèi)存拷貝單元內(nèi)用于緩存內(nèi)存拷貝請(qǐng)求的請(qǐng)求隊(duì)列中其它內(nèi)存拷貝請(qǐng)求之間的相關(guān)關(guān)系,當(dāng)所述請(qǐng)求隊(duì)列存在空閑項(xiàng)時(shí)內(nèi)存拷貝單元將新內(nèi)存拷貝請(qǐng)求及其相關(guān)關(guān)系緩 存至所述請(qǐng)求隊(duì)列中;所述相關(guān)檢測(cè)部件檢測(cè)新內(nèi)存拷貝請(qǐng)求與隊(duì)列中其它內(nèi)存拷貝請(qǐng)求之間的相關(guān)關(guān)系時(shí),如果存在目的地址或者源地址與新內(nèi)存拷貝請(qǐng)求的源地址相同的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,則判定新內(nèi)存拷貝請(qǐng)求存在具有相關(guān)關(guān)系的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,當(dāng)所述請(qǐng)求隊(duì)列存在空閑項(xiàng)時(shí)內(nèi)存拷貝單元將新內(nèi)存拷貝請(qǐng)求及其相關(guān)關(guān)系緩存至所述請(qǐng)求隊(duì)列中;所述內(nèi)存拷貝單元從請(qǐng)求隊(duì)列選擇待執(zhí)行的當(dāng)前內(nèi)存拷貝請(qǐng)求,與高速緩存及快表進(jìn)行交互獲取當(dāng)前內(nèi)存拷貝請(qǐng)求的物理地址,以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求;如果存在與當(dāng)如內(nèi)存拷貝請(qǐng)求具有相關(guān)關(guān)系的關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,則所述內(nèi)存拷貝單兀將關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求與當(dāng)前內(nèi)存拷貝請(qǐng)求中相同的頁拷貝操作合并執(zhí)行。
7.根據(jù)權(quán)利要求6所述的用于微處理器的內(nèi)存拷貝加速裝置,其特征在于,所述內(nèi)存拷貝單元包含 請(qǐng)求隊(duì)列,用于緩存內(nèi)存拷貝請(qǐng)求及其相關(guān)關(guān)系; 頁拷貝狀態(tài)表,用于記錄當(dāng)前進(jìn)行的頁拷貝操作建立對(duì)應(yīng)的頁拷貝記錄; 拷貝控制單元,用于控制請(qǐng)求隊(duì)列和頁拷貝狀態(tài)表、與高速緩存及快表進(jìn)行交互獲取當(dāng)前內(nèi)存拷貝請(qǐng)求的物理地址、執(zhí)行頁拷貝操作; 所述請(qǐng)求隊(duì)列中內(nèi)存拷貝請(qǐng)求的內(nèi)容域包括源地址、目的地址、拷貝長度、拷貝類型、源地址’、目的地址’、拷貝長度’、有效位和關(guān)聯(lián)標(biāo)識(shí)位,其中源地址、目的地址、拷貝長度、拷貝類型與所述內(nèi)存拷貝指令的內(nèi)容相同;所述源地址’表示未完成的源內(nèi)存區(qū)域的起始地址,目的地址’表示目的內(nèi)存區(qū)域的起始地址,拷貝長度’表示待拷貝長度;所述源地址’的初始值為源地址,目的地址’的初始值為目的地址,拷貝長度’的初始值為拷貝長度;所述有效位表示是否存在關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求,有效位為I表示該內(nèi)存拷貝請(qǐng)求與其之前的內(nèi)存拷貝請(qǐng)求沒有關(guān)聯(lián)關(guān)系,可以由內(nèi)存拷貝單元單獨(dú)執(zhí)行,有效位為O表示該內(nèi)存拷貝請(qǐng)求與其之前的內(nèi)存拷貝請(qǐng)求存在關(guān)聯(lián)關(guān)系,目前還不能由內(nèi)存拷貝單元單獨(dú)執(zhí)行,而由內(nèi)存拷貝單元合并執(zhí)行;所述關(guān)聯(lián)標(biāo)識(shí)位用于存儲(chǔ)關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求的編號(hào);所述頁拷貝狀態(tài)表中每一項(xiàng)頁拷貝記錄的內(nèi)容域包括源頁起始地址、目的頁起始地址和拷貝長度信息。
全文摘要
本發(fā)明公開了一種用于微處理器的內(nèi)存拷貝加速方法及裝置,方法步驟如下1在微處理器增加內(nèi)存拷貝單元;2)譯碼邏輯譯碼得到的內(nèi)存拷貝指令發(fā)送給內(nèi)存拷貝單元;內(nèi)存拷貝單元通過相關(guān)檢測(cè)部件檢測(cè)新內(nèi)存拷貝請(qǐng)求與其它內(nèi)存拷貝請(qǐng)求之間的相關(guān)關(guān)系,將新內(nèi)存拷貝請(qǐng)求及其相關(guān)關(guān)系緩存至請(qǐng)求隊(duì)列;3)內(nèi)存拷貝單元以頁為單位執(zhí)行當(dāng)前內(nèi)存拷貝請(qǐng)求并合并執(zhí)行關(guān)聯(lián)內(nèi)存拷貝請(qǐng)求;裝置包括專用于執(zhí)行內(nèi)存拷貝請(qǐng)求的內(nèi)存拷貝單元和用于檢測(cè)新內(nèi)存拷貝請(qǐng)求與隊(duì)列中其它內(nèi)存拷貝請(qǐng)求之間的相關(guān)關(guān)系的相關(guān)檢測(cè)部件。本發(fā)明具有內(nèi)存拷貝性能高、硬件實(shí)現(xiàn)簡單且代價(jià)小、擴(kuò)展性好、兼容性強(qiáng)、并發(fā)性好、訪存次數(shù)少、消耗功耗低的優(yōu)點(diǎn)。
文檔編號(hào)G06F9/38GK102968395SQ201210493320
公開日2013年3月13日 申請(qǐng)日期2012年11月28日 優(yōu)先權(quán)日2012年11月28日
發(fā)明者石偉, 任巨, 鄧宇, 龔銳, 郭御風(fēng), 張明, 羅莉, 馬愛永, 竇強(qiáng), 王永文 申請(qǐng)人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)