亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

內(nèi)存數(shù)據(jù)預(yù)取方法和裝置制造方法

文檔序號:6544237閱讀:196來源:國知局
內(nèi)存數(shù)據(jù)預(yù)取方法和裝置制造方法
【專利摘要】本發(fā)明提供一種內(nèi)存數(shù)據(jù)預(yù)取方法和裝置。該方法包括:向內(nèi)存發(fā)送預(yù)取命令;將N個預(yù)取地址分別寫入一個N項先入先出隊列FIFO的每一項中,其中,N≥1;從所述內(nèi)存一次獲取存儲在所述N個預(yù)取地址的N個數(shù)據(jù)項;將所述N個數(shù)據(jù)項存儲于所述N項FIFO的每一項中。通過一個預(yù)取命令就可以將一個N項FIFO填滿,可極大的減少現(xiàn)有技術(shù)中來自多個FIFO的多個訪存請求交叉沖突的問題,相對于現(xiàn)有技術(shù)的方案最多可以減少N-1次頁沖突次數(shù),從而可極大的縮短內(nèi)存數(shù)據(jù)返回時延,減少內(nèi)存功率的消耗。
【專利說明】內(nèi)存數(shù)據(jù)預(yù)取方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機存儲技術(shù),尤其涉及一種內(nèi)存數(shù)據(jù)預(yù)取方法和裝置。
【背景技術(shù)】
[0002]預(yù)取技術(shù)是利用處理器訪存行為的時間和空間局部性,在處理器發(fā)生高速緩沖存儲器缺失前預(yù)測需要的數(shù)據(jù),并提前取回至離高速緩沖存儲器較近的位置,在發(fā)生高速緩沖存儲器缺失時,先查看預(yù)取的地址,如果命中則直接返回數(shù)據(jù),可以極大的縮小訪存延遲,減少存儲器緩存缺失引起的流水線停頓,從而提高系統(tǒng)的性能。
[0003]為了減小對處理器硬件設(shè)計的影響,目前通常在內(nèi)存控制器中增加流預(yù)取模塊(stream buffer),其主要組成部分為一個先入先出隊列(FIFO, First Input FirstOutput), FIFO 一般包含N項,每一項包含一個地址存儲單元,一個有效位和一個高速緩沖存儲器行的數(shù)據(jù),如圖1所示的FIFO包含4項,每一項包含一個地址存儲單元,一個有效位和一個高速緩存行數(shù)據(jù),每當(dāng)檢測到高速緩沖存儲器缺失時,stream buffer向內(nèi)存發(fā)出預(yù)取命令,以將下一高速緩沖存儲器行的數(shù)據(jù)預(yù)取至stream buffer,該預(yù)取過程將持續(xù)到FIFO填滿。
[0004]對于多組stream buffer結(jié)構(gòu),針對數(shù)據(jù)流的訪存請求之間存在訪存沖突時,多個訪存沖突的訪存請求交叉訪問內(nèi)存將導(dǎo)致大量的頁打開和頁關(guān)閉操作,增加內(nèi)存數(shù)據(jù)返回時延,同時增加內(nèi)存功率消耗。

【發(fā)明內(nèi)容】

[0005]本發(fā)明提供一種內(nèi)存數(shù)據(jù)預(yù)取方法和裝置,以縮短內(nèi)存數(shù)據(jù)返回時延,減少內(nèi)存功率的消耗。
[0006]第一方面,本發(fā)明提供一種內(nèi)存數(shù)據(jù)預(yù)取方法,包括:
[0007]向內(nèi)存發(fā)送預(yù)取命令;
[0008]將N個預(yù)取地址分別寫入一個N項先入先出隊列FIFO的每一項中,其中,N≥I ;
[0009]從所述內(nèi)存一次獲取存儲在所述N個預(yù)取地址的N個數(shù)據(jù)項;
[0010]將所述N個數(shù)據(jù)項存儲于所述N項FIFO的每一項中。
[0011]在第一方面的第一種可能的實現(xiàn)方式中,所述將N個預(yù)取地址分別寫入一個N項FIFO的每一項中,包括:
[0012]將所述N個預(yù)取地址分別寫入所述N項FIFO的N個地址存儲單元中,所述N個地址存儲單元中設(shè)有與所述N個預(yù)取地址對應(yīng)的N個地址有效位;并將與所述N個預(yù)取地址對應(yīng)的所述N個地址有效位均置為有效;
[0013]相應(yīng)的,所述將所述N個數(shù)據(jù)項存儲于所述N項FIFO的每一項中,包括:
[0014] 將所述N個數(shù)據(jù)項分別存儲于所述N項FIFO的N個數(shù)據(jù)存儲單元中,所述N個數(shù)據(jù)存儲單元中設(shè)有與所述N個數(shù)據(jù)項對應(yīng)的N個數(shù)據(jù)有效位;并將與所述N個數(shù)據(jù)項對應(yīng)的所述N個數(shù)據(jù)有效位置為有效。[0015]根據(jù)第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述方法還包括:
[0016]接收高速緩存缺失命令,所述高速緩存缺失命令中包含缺失地址;
[0017]若判斷出所述缺失地址與所述N個地址存儲單元中的首個預(yù)取地址相同,且所述首個預(yù)取地址對應(yīng)的地址有效位為有效,則判定為命中預(yù)取數(shù)據(jù);
[0018]將所述首個預(yù)取地址所對應(yīng)的地址有效位置為無效。
[0019]根據(jù)第一方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述將所述首個預(yù)取地址所對應(yīng)的地址有效位置為無效之后,還包括:
[0020]若與所述缺失地址相同的所述首個預(yù)取地址的地址有效位為無效,且與所述首個預(yù)取地址對應(yīng)的數(shù)據(jù)項的數(shù)據(jù)有效位為有效,則將所述數(shù)據(jù)項返回高速緩沖存儲器;
[0021]在將所述數(shù)據(jù)項返回所述高速緩沖存儲器后,將所述數(shù)據(jù)項對應(yīng)的數(shù)據(jù)有效位置為無效。[0022]根據(jù)第一方面的第二種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,還包括:
[0023]若判斷出所述缺失地址與所述N個地址存儲單元中的首個預(yù)取地址不相同,則判定為沒有命中預(yù)取數(shù)據(jù)。
[0024]結(jié)合第一方面的第二種至第四種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,所述向內(nèi)存發(fā)送預(yù)取命令包括:
[0025]判斷出所述N個預(yù)取地址對應(yīng)的地址有效位均為無效,且所述N個數(shù)據(jù)項的對應(yīng)的數(shù)據(jù)有效位均為無效時,向所述內(nèi)存發(fā)送所述預(yù)取命令。
[0026]第二方面,本發(fā)明提供一種內(nèi)存數(shù)據(jù)預(yù)取裝置,包括:
[0027]發(fā)送模塊,用于向內(nèi)存發(fā)送預(yù)取命令;
[0028]寫入模塊,用于將N個預(yù)取地址分別寫入一個N項先入先出隊列FIFO的每一項中,其中,N ^ I ;
[0029]獲取模塊,用于從所述內(nèi)存一次獲取存儲在所述N個預(yù)取地址的N個數(shù)據(jù)項;
[0030]存儲模塊;用于將所述N個數(shù)據(jù)項存儲于所述N項FIFO的每一項中。
[0031]在第二方面的第一種可能的實現(xiàn)方式中,還包括:置位模塊;
[0032]其中,所述寫入模塊具體用于將所述N個預(yù)取地址分別寫入所述N項FIFO的N個地址存儲單元中,所述N個地址存儲單元中設(shè)有與所述N個預(yù)取地址對應(yīng)的N個地址有效位,所述置位模塊將與所述N個預(yù)取地址對應(yīng)的所述N個地址有效位均置為有效;
[0033]相應(yīng)的,所述存儲模塊具體用于將所述N個數(shù)據(jù)項分別存儲于所述N項FIFO的N個數(shù)據(jù)存儲單元中,所述N個數(shù)據(jù)存儲單元中設(shè)有與所述N個數(shù)據(jù)項對應(yīng)的N個數(shù)據(jù)有效位,所述置位模塊將與所述N個數(shù)據(jù)項對應(yīng)的所述N個數(shù)據(jù)有效位置為有效。
[0034]根據(jù)第二方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述裝置還包括接收模塊,用于接收高速緩存缺失命令,所述高速緩存缺失命令中包含缺失地址;
[0035]所述裝置還包括判斷模塊,用于在判斷出所述缺失地址與所述N個地址存儲單元中的首個預(yù)取地址相同,且所述首個預(yù)取地址對應(yīng)的地址有效位為有效時,判定為命中預(yù)取數(shù)據(jù);所述置位模塊還用于將所述首個預(yù)取地址對應(yīng)的地址有效位置為無效。
[0036]根據(jù)第二方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述裝置還包括數(shù)據(jù)返回模塊,用于當(dāng)與所述缺失地址相同的所述首個預(yù)取地址的地址有效位為無效,且與所述首個預(yù)取地址對應(yīng)的數(shù)據(jù)項的數(shù)據(jù)有效位為有效時,將所述數(shù)據(jù)項返回高速緩沖存儲器;
[0037]所述置位模塊還用于在所述數(shù)據(jù)返回模塊將所述數(shù)據(jù)項返回所述高速緩沖存儲器后,將所述數(shù)據(jù)項對應(yīng)的數(shù)據(jù)有效位置為無效。
[0038]根據(jù)第二方面的第二種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述判斷模塊還用于在判斷出所述缺失地址與所述N個地址存儲單元中的首個預(yù)取地址不相同時,判定為沒有命中預(yù)取數(shù)據(jù)。
[0039]結(jié)合第二方面的第一種可能的實現(xiàn)方式至第四種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,所述發(fā)送模塊具體用于在判斷出所述N個預(yù)取地址的地址有效位均為無效,且所述N個數(shù)據(jù)項對應(yīng)的數(shù)據(jù)有效位均為無效時,向所述內(nèi)存發(fā)送所述預(yù)取命令。
[0040]第三方面,本發(fā)明提供一種內(nèi)存數(shù)據(jù)預(yù)取裝置,包括至少一個N項先入先出隊列FIFO,其中,N≥I,所述N項FIFO包括:
[0041 ] 地址存儲器,用于存儲N個預(yù)取地址,以及分別與所述N個預(yù)取地址對應(yīng)的N個地址有效位;
[0042]數(shù)據(jù)存儲器,用于存儲N個數(shù)據(jù)項,以及分別與所述N個數(shù)據(jù)項對應(yīng)的N個數(shù)據(jù)有效位;其中,所述N個數(shù)據(jù)項從內(nèi)存中的所述N個預(yù)取地址中一次性獲取。
[0043]在第三方面的第一種可能的實現(xiàn)方式中,當(dāng)所述地址存儲器中寫入所述N個預(yù)取地址時,所述N個地址有效位均置于有效狀態(tài);當(dāng)高速緩存的缺失地址與所述地址存儲器中的首個預(yù)取地址相同,且所述首個預(yù)取地址對應(yīng)的地址有效位處于有效狀態(tài)時,所述首個預(yù)取地址的地址有效位置為無效。
[0044]在第三方面的第二種可能的實現(xiàn)方式中,當(dāng)所述數(shù)據(jù)存儲器中寫入所述N個數(shù)據(jù)項時,所述N個數(shù)據(jù)有效位均置于有效狀態(tài);當(dāng)與首個預(yù)取地址對應(yīng)的數(shù)據(jù)項返回高速緩沖存儲器后,所述數(shù)據(jù)項對應(yīng)的數(shù)據(jù)有效位置為無效。
[0045]結(jié)合第三方面至第三方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,當(dāng)所述N個預(yù)取地址對應(yīng)的N個地址有效位均為無效,且所述N個數(shù)據(jù)項的對應(yīng)的N個數(shù)據(jù)有效位均為無效時,所述內(nèi)存數(shù)據(jù)預(yù)取裝置向所述內(nèi)存發(fā)送所述預(yù)取命令。
[0046]本發(fā)明提供的內(nèi)存數(shù)據(jù)預(yù)取方法和裝置,通過向內(nèi)存發(fā)送預(yù)取命令JfN個預(yù)取地址分別寫入一個N項先入先出隊列FIFO的每一項中,其中,N ^ I ;從所述內(nèi)存一次獲取存儲在所述N個預(yù)取地址的N個數(shù)據(jù)項;將所述N個數(shù)據(jù)項存儲于所述N項FIFO的每一項中。通過一個預(yù)取命令就可以將一個N項FIFO填滿,當(dāng)內(nèi)存數(shù)據(jù)預(yù)取裝置中包含有多個FIFO時,這種預(yù)取命令最多導(dǎo)致一次頁沖突,可極大的減少現(xiàn)有技術(shù)中來自多個FIFO的多個訪存請求交叉沖突的問題,相對于現(xiàn)有技術(shù)的方案最多可以減少N-1次頁沖突次數(shù),從而可極大的縮短內(nèi)存數(shù)據(jù)返回時延,減少內(nèi)存功率的消耗。
【專利附圖】

【附圖說明】
[0047]圖1為現(xiàn)有技術(shù)的流預(yù)取的模塊中FIFO的結(jié)構(gòu)示意圖;
[0048]圖2為本發(fā)明內(nèi)存數(shù)據(jù)預(yù)取方法實施例一的流程圖;
[0049]圖3為本發(fā)明內(nèi)存數(shù)據(jù)預(yù)取方法實施例二的流程圖;
[0050]圖4為本發(fā)明一實施例中FIFO中地址存儲單元的結(jié)構(gòu)示意圖;[0051]圖5為本發(fā)明一實施例中FIFO中數(shù)據(jù)存儲單元的結(jié)構(gòu)示意圖;
[0052]圖6為本發(fā)明內(nèi)存數(shù)據(jù)預(yù)取方法實施例三的流程圖;
[0053]圖7為本發(fā)明內(nèi)存數(shù)據(jù)預(yù)取裝置實施例一的結(jié)構(gòu)示意圖;
[0054]圖8為本發(fā)明內(nèi)存數(shù)據(jù)預(yù)取裝置另一實施例的結(jié)構(gòu)示意圖;
[0055]圖9為本發(fā)明內(nèi)存數(shù)據(jù)預(yù)取裝置實施例二的結(jié)構(gòu)示意圖。
【具體實施方式】
[0056]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。[0057]圖2為本發(fā)明內(nèi)存數(shù)據(jù)預(yù)取方法實施例一的流程圖。如圖2所示,本實施例提供的方法具體可以由內(nèi)存數(shù)據(jù)預(yù)取裝置執(zhí)行,內(nèi)存數(shù)據(jù)預(yù)取裝置可以設(shè)置在距離高速緩存較近的位置,例如可以設(shè)置在內(nèi)存控制器上。本實施例提供的內(nèi)存數(shù)據(jù)預(yù)取方法具體可以包括:
[0058]步驟101、向內(nèi)存發(fā)送預(yù)取命令,來一次性獲取存儲在內(nèi)存中N個預(yù)取地址中的數(shù)據(jù),以在高速緩沖存儲器缺失時,向其提供數(shù)據(jù)。
[0059]步驟102、將N個預(yù)取地址分別寫入一個N項FIFO的每一項中,其中,N≥I。
[0060]步驟103、從所述內(nèi)存一次獲取存儲在所述N個預(yù)取地址的N個數(shù)據(jù)項。
[0061]步驟104、將所述N個數(shù)據(jù)項存儲于所述N項FIFO的每一項中。
[0062]本實施例的技術(shù)方案,通過一個預(yù)取命令即可將一個N項FIFO填滿,當(dāng)內(nèi)存數(shù)據(jù)預(yù)取裝置中包含有多個FIFO時,這種預(yù)取命令最多導(dǎo)致一次頁沖突,可極大的減少現(xiàn)有技術(shù)中來自多個FIFO的多個訪存請求交叉沖突的問題,相對于現(xiàn)有技術(shù)的方案最多可以減少N-1次頁沖突次數(shù),從而縮短內(nèi)存數(shù)據(jù)返回時間,減少對正常訪存請求和其他預(yù)取命令的影響。
[0063]圖3為本發(fā)明內(nèi)存數(shù)據(jù)預(yù)取方法實施例二的流程圖。如圖3所示,在上述實施例的基礎(chǔ)上,本實施例提供的方法中,上述步驟102具體可以為:
[0064]步驟202、將所述N個預(yù)取地址分別寫入所述N項FIFO的N個地址存儲單元中,所述N個地址存儲單元中設(shè)有與所述N個預(yù)取地址對應(yīng)的N個地址有效位;并將與所述N個預(yù)取地址對應(yīng)的所述N個地址有效位均置為有效。
[0065]在本發(fā)明的一個實施例中,如圖4所示,其為項數(shù)為4的FIFO中包括的4個地址存儲單元,每個地址存儲單元中包括預(yù)取地址和對應(yīng)的地址有效位。
[0066]具體地,向內(nèi)存發(fā)送預(yù)取命令后,會將4個預(yù)取地址一一寫入4個地址存儲單元,即,圖4中的地址存儲單元41中寫入預(yù)取地址i,地址存儲單元42中寫入預(yù)取地址i+Ι,地址存儲單元43中寫入預(yù)取地址i+2和地址存儲單元44中寫入預(yù)取地址i+3 ;并將相應(yīng)的地址有效位a均設(shè)置為有效。
[0067]在一個實施例中,例如可以以a為I來表示地址有效位為有效,a為O來表示地址有效位為無效。
[0068]相應(yīng)的,上述步驟104可以為:[0069]步驟203、將所述N個數(shù)據(jù)項分別存儲于所述N項FIFO的N個數(shù)據(jù)存儲單元中,所述N個數(shù)據(jù)存儲單元中設(shè)有與所述N個數(shù)據(jù)項對應(yīng)的N個數(shù)據(jù)有效位;并將與所述N個數(shù)據(jù)項對應(yīng)的所述N個數(shù)據(jù)有效位置為有效。
[0070]在本發(fā)明的一個實施例中,如圖5所示,其為項數(shù)為4的FIFO中的4個數(shù)據(jù)存儲單元,每個數(shù)據(jù)存儲單元中包括數(shù)據(jù)項和對應(yīng)的數(shù)據(jù)有效位。
[0071]具體地,從內(nèi)存一次獲取到存儲在4個預(yù)取地址的4個數(shù)據(jù)項后,將4個數(shù)據(jù)項分別存儲在4項FIFO的4個數(shù)據(jù)存儲單元中,并將對應(yīng)的4個數(shù)據(jù)有效位b設(shè)置為有效,即,接收到圖5中數(shù)據(jù)存儲單元51中的數(shù)據(jù)項i,數(shù)據(jù)存儲單元52中的數(shù)據(jù)項i+Ι,數(shù)據(jù)存儲單元53中的數(shù)據(jù)項i+2和數(shù)據(jù)存儲單元54中的數(shù)據(jù)項i+3時,將相應(yīng)的數(shù)據(jù)有效位b置為有效。
[0072]在一個實施例中,例如可以以b為I來表示數(shù)據(jù)有效位為有效,b為O來表示數(shù)據(jù)有效位為無效。
[0073]對于數(shù)據(jù)存儲單元而言,當(dāng)數(shù)據(jù)項被返回給高速緩沖存儲器后,其有效位才會被置為無效,即,在將數(shù)據(jù)返回給高速緩沖存儲器后,將相應(yīng)的有效位置為O。
[0074]上述步驟101具體可以為:
[0075]步驟201、判斷出所述N個預(yù)取地址對應(yīng)的地址有效位均為無效,且所述N個數(shù)據(jù)項的對應(yīng)的數(shù)據(jù)有效位均為無效時,向所述內(nèi)存發(fā)送所述預(yù)取命令。
[0076]具體的,為了防止數(shù)據(jù)溢出,在判斷出N個預(yù)取地址的地址有效位均為無效,且N個數(shù)據(jù)項的數(shù)據(jù)有效位均為無效時,向內(nèi)存發(fā)送預(yù)取命令。也就是說,內(nèi)存數(shù)據(jù)預(yù)取裝置在判斷出FIFO中的所有預(yù)取地址被命中、且所有的數(shù)據(jù)項中的數(shù)據(jù)被返回給高速緩沖存儲器后,向內(nèi)存發(fā)送預(yù)取命令。
[0077]本實施例的技術(shù)方案,通過一個預(yù)取命令就可以將一個FIFO填滿,并將預(yù)取地址與數(shù)據(jù)項分開存放,并分別設(shè)置地址有效位和數(shù)據(jù)有效位,不同于現(xiàn)有技術(shù)中streambuffer的預(yù)取地址與數(shù)據(jù)項共用一個有效位,且有效位只有在內(nèi)存數(shù)據(jù)返回streambuffer后才被置為有效,解決了現(xiàn)有技術(shù)中,若高速緩存缺失命令到來時內(nèi)存數(shù)據(jù)還未返回stream buffer,則會直接到內(nèi)存中取數(shù)據(jù)而導(dǎo)致的同一預(yù)取地址的數(shù)據(jù)取兩遍,且stream buffer中的數(shù)據(jù)也不會被使用,浪費內(nèi)存帶寬的問題,從而縮短內(nèi)存數(shù)據(jù)返回時延,減少內(nèi)存功率的消耗。
[0078]圖6為本發(fā)明內(nèi)存數(shù)據(jù)預(yù)取方法實施例三的流程圖。如圖6所示,在上述實施例的基礎(chǔ)上,本實施例提供的方法進一步還可以包括:
[0079]步驟301、接收高速緩存缺失命令,所述高速緩存缺失命令中包含缺失地址。
[0080]步驟302、若判斷出所述缺失地址與所述N個地址存儲單元中的首個預(yù)取地址相同,且所述首個預(yù)取地址對應(yīng)的地址有效位為有效,則判定為命中預(yù)取數(shù)據(jù)。
[0081]可以理解的是,若判斷出所述缺失地址與所述N個地址存儲單元中的首個預(yù)取地址不相同,則判定為沒有命中預(yù)取數(shù)據(jù)。
[0082]也就是說,內(nèi)存數(shù)據(jù)預(yù)取裝置在判定預(yù)取數(shù)據(jù)是否被命中時,需要將缺失地址與N個地址存儲單元中的首個預(yù)取地址(例如為首個地址存儲單元的預(yù)取地址)進行比較,若缺失地址與首個預(yù)取地址相同,且首個預(yù)取地址有效,則認為預(yù)取數(shù)據(jù)被命中。
[0083]步驟303、將所述首個預(yù)取地址所對應(yīng)的地址有效位置為無效。[0084]具體的,地址有效位只有在接收到高速緩存缺失命令后,判斷出缺失地址與N個地址存儲單元中的首個預(yù)取地址相同,且首個預(yù)取地址的地址有效位為有效,即,命中預(yù)取數(shù)據(jù)時,才會被置為無效,即,在命中預(yù)取數(shù)據(jù)后,首個預(yù)取地址的地址有效位才會被置為
O0
[0085]步驟304、若與所述缺失地址相同的所述首個預(yù)取地址的地址有效位為無效,且與所述首個預(yù)取地址對應(yīng)的數(shù)據(jù)項的數(shù)據(jù)有效位為有效,則將所述數(shù)據(jù)項返回高速緩沖存儲器。
[0086]步驟305、在將所述數(shù)據(jù)項返回所述高速緩沖存儲器后,將所述數(shù)據(jù)項對應(yīng)的數(shù)據(jù)有效位置為無效。
[0087]需要說明的是,本實施例中,只有在預(yù)取地址已經(jīng)被命中且數(shù)據(jù)已經(jīng)從內(nèi)存返回到內(nèi)存數(shù)據(jù)預(yù)取裝置后,才可將數(shù)據(jù)項中的數(shù)據(jù)返回高速緩沖存儲器。
[0088]本實施例的技術(shù)方案,在接收到高速緩存缺失命令后,若判斷缺失地址與N個地址存儲單元中的首個預(yù)取地址相同,且首個預(yù)取地址有效,則判定為命中預(yù)取數(shù)據(jù),并在命中預(yù)取數(shù)據(jù)后,將首個預(yù)取地址的地址有效位置為無效。將預(yù)取地址與數(shù)據(jù)項分開存放,并分別設(shè)置有效位,不同于現(xiàn)有技術(shù)中stream buffer的預(yù)取地址與數(shù)據(jù)項共用一個有效位,且有效位只有在內(nèi)存數(shù)據(jù)返回stream buffer后才被置為有效,解決了現(xiàn)有技術(shù)中,若高速緩存缺失命令到來時內(nèi)存數(shù)據(jù)還未返回stream buffer,則會直接到內(nèi)存中取數(shù)據(jù)而導(dǎo)致的同一預(yù)取地址的數(shù)據(jù)取兩遍,且stream buffer中的數(shù)據(jù)也不會被使用,浪費內(nèi)存帶寬的問題,從而縮短內(nèi)存數(shù)據(jù)返回時延,減少內(nèi)存功率的消耗。
[0089]圖7為本發(fā)明內(nèi)存數(shù)據(jù)預(yù)取裝置實施例一的結(jié)構(gòu)示意圖。如圖7所示,本實施例提供的內(nèi)存數(shù)據(jù)預(yù)取裝置10具體可以包括:
[0090]發(fā)送模塊11,用于向內(nèi)存發(fā)送預(yù)取命令;
[0091]寫入模塊12,用于將N個預(yù)取地址分別寫入一個N項FIFO的每一項中,其中,N^l;
[0092]獲取模塊13,用于從所述內(nèi)存一次獲取存儲在所述N個預(yù)取地址的N個數(shù)據(jù)項;
[0093]存儲模塊14,用于將所述N個數(shù)據(jù)項存儲于所述N項FIFO的每一項中。
[0094]在另一實施例中,所述內(nèi)存數(shù)據(jù)預(yù)取裝置10還可以包括置位模塊15,如圖8所示;其中,所述寫入模塊12具體可以用于將所述N個預(yù)取地址分別寫入所述N項FIFO的N個地址存儲單元中,所述N個地址存儲單元中設(shè)有與所述N個預(yù)取地址對應(yīng)的N個地址有效位,所述置位模塊15將與所述N個預(yù)取地址對應(yīng)的所述N個地址有效位均置為有效。
[0095]相應(yīng)的,所述存儲模塊14具體可以用于將所述N個數(shù)據(jù)項分別存儲于所述N項FIFO的N個數(shù)據(jù)存儲單元中,所述N個數(shù)據(jù)存儲單元中設(shè)有與所述N個數(shù)據(jù)項對應(yīng)的N個數(shù)據(jù)有效位,所述置位模塊15將與所述N個數(shù)據(jù)項對應(yīng)的所述N個數(shù)據(jù)有效位置為有效。
[0096] 進一步地,所述內(nèi)存數(shù)據(jù)預(yù)取裝置10還可以包括接收模塊16,用于接收高速緩存缺失命令,所述高速緩存缺失命令中包含缺失地址;判斷模塊17,用于在判斷出所述缺失地址與所述N個地址存儲單元中的首個預(yù)取地址相同,且所述首個預(yù)取地址對應(yīng)的地址有效位為有效時,判定為命中預(yù)取數(shù)據(jù);所述置位模塊15還可以用于將所述首個預(yù)取地址對應(yīng)的地址有效位置為無效。所述判斷模塊17還可以用于在判斷出所述缺失地址與所述N個地址存儲單元中的首個預(yù)取地址不相同時,判定為沒有命中預(yù)取數(shù)據(jù)。[0097]進一步,所述內(nèi)存數(shù)據(jù)預(yù)取裝置10還可以包括數(shù)據(jù)返回模塊18,用于當(dāng)與所述缺失地址相同的所述首個預(yù)取地址的地址有效位為無效,且與所述首個預(yù)取地址對應(yīng)的數(shù)據(jù)項的數(shù)據(jù)有效位為有效時,將所述數(shù)據(jù)項返回高速緩沖存儲器;所述置位模塊15還可以用于在所述數(shù)據(jù)返回模塊18將所述數(shù)據(jù)項返回所述高速緩沖存儲器后,將所述數(shù)據(jù)項對應(yīng)的數(shù)據(jù)有效位置為無效。
[0098]具體的,所述發(fā)送模塊11具體可以用于在判斷出所述N個預(yù)取地址的地址有效位均為無效,且所述N個數(shù)據(jù)項對應(yīng)的數(shù)據(jù)有效位均為無效時,向所述內(nèi)存發(fā)送所述預(yù)取命令。
[0099]需要說明的是,內(nèi)存數(shù)據(jù)預(yù)取裝置10可以設(shè)置在距離高速緩存較近的位置,例如可以設(shè)置在內(nèi)存控制器上。
[0100]本實施例的內(nèi)存數(shù)據(jù)預(yù)取裝置,可用于執(zhí)行上述方法實施例的技術(shù)方案,其實現(xiàn)原理及技術(shù)效果類似,此處不再贅述。
[0101]圖9為本發(fā)明內(nèi)存數(shù)據(jù)預(yù)取裝置實施例二的結(jié)構(gòu)示意圖。如圖9所示,本實施例提供的內(nèi)存數(shù)據(jù)預(yù)取裝置20具體可以包括至少一個N項FIFO,其中,N≥1,所述N項FIFO包括:
[0102]地址存儲器21,用于存儲N個預(yù)取地址,以及分別與所述N個預(yù)取地址對應(yīng)的N個地址有效位;數(shù)據(jù)存儲器22,用于存儲N個數(shù)據(jù)項,以及分別與所述N個數(shù)據(jù)項對應(yīng)的N個數(shù)據(jù)有效位;其中,所述N個數(shù)據(jù)項從內(nèi)存中的所述N個預(yù)取地址中一次性獲取。
[0103]具體的,地址存儲器包括N個如圖4所示的地址存儲單元,當(dāng)所述地址存儲器21中寫入所述N個預(yù)取地址時,所述N個地址有效位均置于有效狀態(tài);當(dāng)高速緩存的缺失地址與所述地址存儲器21中的首個預(yù)取地址相同,且所述首個預(yù)取地址對應(yīng)的地址有效位處于有效狀態(tài)時,所述首個預(yù)取地址的地址有效位置為無效;數(shù)據(jù)存儲器包括N個如圖5所示的數(shù)據(jù)存儲單元,當(dāng)所述數(shù)據(jù)存儲器22中寫入所述N個數(shù)據(jù)項時,所述N個數(shù)據(jù)有效位均置于有效狀態(tài);當(dāng)與首個預(yù)取地址對應(yīng)的數(shù)據(jù)項返回高速緩沖存儲器后,所述數(shù)據(jù)項對應(yīng)的數(shù)據(jù)有效位置為無效。
[0104]進一步地,當(dāng)所述N個預(yù)取地址對應(yīng)的N個地址有效位均為無效,且所述N個數(shù)據(jù)項的對應(yīng)的N個數(shù)據(jù)有效位均為無效時,所述內(nèi)存數(shù)據(jù)預(yù)取裝置20向所述內(nèi)存發(fā)送所述預(yù)取命令。
[0105]也就是說,在本實施例中,將預(yù)取地址與數(shù)據(jù)項分開存放,并分別設(shè)置有效位,即,地址有效位和數(shù)據(jù)有效位。對于預(yù)取地址而言,在每次預(yù)取命令發(fā)出后,即將N個的預(yù)取地址同時寫入地址存儲器,并將N個預(yù)取地址對應(yīng)的地址有效位均置為有效,例如,置為I ;當(dāng)N個預(yù)取地址中的某一個被命中后,其有效位才會被置為無效,例如,置為O。對于數(shù)據(jù)項而言,當(dāng)對應(yīng)某個數(shù)據(jù)項的內(nèi)存數(shù)據(jù)從內(nèi)存返回后,與該數(shù)據(jù)項對應(yīng)的數(shù)據(jù)有效位被置為有效,例如置為1,當(dāng)該數(shù)據(jù)發(fā)送給高速緩沖存儲器時,與該數(shù)據(jù)項對應(yīng)的數(shù)據(jù)有效位被置為無效,例如置為O。
[0106]需要說明的是,內(nèi)存數(shù)據(jù)預(yù)取裝置可以設(shè)置在距離高速緩存較近的位置,例如可以設(shè)置在內(nèi)存控制器上。
[0107]本實施例的內(nèi)存數(shù)據(jù)預(yù)取裝置,可用于執(zhí)行上述方法實施例的技術(shù)方案,其實現(xiàn)原理及技術(shù)效果類似,此處不再贅述。[0108]在本發(fā)明所提供的幾個實施例中,應(yīng)該理解到,所揭露的裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
[0109]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
[0110]另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。
[0111]上述以軟件功能單元的形式實現(xiàn)的集成的單元,可以存儲在一個計算機可讀取存儲介質(zhì)中。上述軟件功能單元存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明各個實施例所述方法的部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(Read-Only Memory, ROM)、隨機存取存儲器(Random Access Memory, RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0112]本領(lǐng)域技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能模塊的劃分進行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的裝置的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
[0113]最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種內(nèi)存數(shù)據(jù)預(yù)取方法,其特征在于,包括: 向內(nèi)存發(fā)送預(yù)取命令; 將N個預(yù)取地址分別寫入一個N項先入先出隊列FIFO的每一項中,其中,N≥1; 從所述內(nèi)存一次獲取存儲在所述N個預(yù)取地址的N個數(shù)據(jù)項; 將所述N個數(shù)據(jù)項存儲于所述N項FIFO的每一項中。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將N個預(yù)取地址分別寫入一個N項FIFO的每一項中,包括: 將所述N個預(yù)取地址分別寫入所述N項FIFO的N個地址存儲單元中,所述N個地址存儲單元中設(shè)有與所述N個預(yù)取地址對應(yīng)的N個地址有效位;并將與所述N個預(yù)取地址對應(yīng)的所述N個地址有效位均置為有效; 相應(yīng)的,所述將 所述N個數(shù)據(jù)項存儲于所述N項FIFO的每一項中,包括: 將所述N個數(shù)據(jù)項分別存儲于所述N項FIFO的N個數(shù)據(jù)存儲單元中,所述N個數(shù)據(jù)存儲單元中設(shè)有與所述N個數(shù)據(jù)項對應(yīng)的N個數(shù)據(jù)有效位;并將與所述N個數(shù)據(jù)項對應(yīng)的所述N個數(shù)據(jù)有效位置為有效。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,還包括: 接收高速緩存缺失命令,所述高速緩存缺失命令中包含缺失地址; 若判斷出所述缺失地址與所述N個地址存儲單元中的首個預(yù)取地址相同,且所述首個預(yù)取地址對應(yīng)的地址有效位為有效,則判定為命中預(yù)取數(shù)據(jù); 將所述首個預(yù)取地址所對應(yīng)的地址有效位置為無效。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述將所述首個預(yù)取地址所對應(yīng)的地址有效位置為無效之后,還包括: 若與所述缺失地址相同的所述首個預(yù)取地址的地址有效位為無效,且與所述首個預(yù)取地址對應(yīng)的數(shù)據(jù)項的數(shù)據(jù)有效位為有效,則將所述數(shù)據(jù)項返回高速緩沖存儲器; 在將所述數(shù)據(jù)項返回所述高速緩沖存儲器后,將所述數(shù)據(jù)項對應(yīng)的數(shù)據(jù)有效位置為無效。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,還包括: 若判斷出所述缺失地址與所述N個地址存儲單元中的首個預(yù)取地址不相同,則判定為沒有命中預(yù)取數(shù)據(jù)。
6.根據(jù)權(quán)利要求2-5任一所述的方法,其特征在于,所述向內(nèi)存發(fā)送預(yù)取命令包括: 判斷出所述N個預(yù)取地址對應(yīng)的地址有效位均為無效,且所述N個數(shù)據(jù)項的對應(yīng)的數(shù)據(jù)有效位均為無效時,向所述內(nèi)存發(fā)送所述預(yù)取命令。
7.—種內(nèi)存數(shù)據(jù)預(yù)取裝置,其特征在于,包括: 發(fā)送模塊,用于向內(nèi)存發(fā)送預(yù)取命令; 寫入模塊,用于將N個預(yù)取地址分別寫入一個N項先入先出隊列FIFO的每一項中,其中,N > 1 ; 獲取模塊,用于從所述內(nèi)存一次獲取存儲在所述N個預(yù)取地址的N個數(shù)據(jù)項; 存儲模塊,用于將所述N個數(shù)據(jù)項存儲于所述N項FIFO的每一項中。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括:置位模塊; 其中,所述寫入模塊具體用于將所述N個預(yù)取地址分別寫入所述N項FIFO的N個地址存儲單元中,所述N個地址存儲單元中設(shè)有與所述N個預(yù)取地址對應(yīng)的N個地址有效位,所述置位模塊將與所述N個預(yù)取地址對應(yīng)的所述N個地址有效位均置為有效; 相應(yīng)的,所述存儲模塊具體用于將所述N個數(shù)據(jù)項分別存儲于所述N項FIFO的N個數(shù)據(jù)存儲單元中,所述N個數(shù)據(jù)存儲單元中設(shè)有與所述N個數(shù)據(jù)項對應(yīng)的N個數(shù)據(jù)有效位,所述置位模塊將與所述N個數(shù)據(jù)項對應(yīng)的所述N個數(shù)據(jù)有效位置為有效。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括接收模塊,用于接收高速緩存缺失命令,所述聞速緩存缺失命令中包含缺失地址; 所述裝置還包括判斷模塊,用于在判斷出所述缺失地址與所述N個地址存儲單元中的首個預(yù)取地址相同,且所述首個預(yù)取地址對應(yīng)的地址有效位為有效時,判定為命中預(yù)取數(shù)據(jù);所述置位模塊還用于將所述首個預(yù)取地址對應(yīng)的地址有效位置為無效。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述裝置還包括數(shù)據(jù)返回模塊,用于當(dāng)與所述缺失地址相同的所述首個預(yù)取地址的地址有效位為無效,且與所述首個預(yù)取地址對應(yīng)的數(shù)據(jù)項的數(shù)據(jù)有效位為有效時,將所述數(shù)據(jù)項返回高速緩沖存儲器; 所述置位模塊還用于在所述數(shù)據(jù)返回模塊將所述數(shù)據(jù)項返回所述高速緩沖存儲器后,將所述數(shù)據(jù)項對應(yīng)的數(shù)據(jù)有效位置為無效。
11.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述判斷模塊還用于在判斷出所述缺失地址與所述N個地址存儲單元中的所述首個預(yù)取地址不相同時,判定為沒有命中預(yù)取數(shù)據(jù)。
12.根據(jù)權(quán)利要求8-11任一所述的裝置,其特征在于,所述發(fā)送模塊具體用于在判斷出所述N個預(yù)取地址的地址有效位均為無效,且所述N個數(shù)據(jù)項對應(yīng)的數(shù)據(jù)有效位均為無效時,向所述內(nèi)存發(fā)送所述預(yù)取命令。
13.一種內(nèi)存數(shù)據(jù)預(yù)取裝置,其特征在于,包括至少一個N項先入先出隊列FIFO,其中,N≥1,所述N項FIFO包括: 地址存儲器,用于存儲N個預(yù)取地址,以及分別與所述N個預(yù)取地址對應(yīng)的N個地址有效位; 數(shù)據(jù)存儲器,用于存儲N個數(shù)據(jù)項,以及分別與所述N個數(shù)據(jù)項對應(yīng)的N個數(shù)據(jù)有效位;其中,所述N個數(shù)據(jù)項從內(nèi)存中的所述N個預(yù)取地址中一次性獲取。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,當(dāng)所述地址存儲器中寫入所述N個預(yù)取地址時,所述N個地址有效位均置于有效狀態(tài);當(dāng)高速緩存的缺失地址與所述地址存儲器中的首個預(yù)取地址相同,且所述首個預(yù)取地址對應(yīng)的地址有效位處于有效狀態(tài)時,所述首個預(yù)取地址的地址有效位置為無效。
15.根據(jù)權(quán)利要求13所述的裝置,其特征在于,當(dāng)所述數(shù)據(jù)存儲器中寫入所述N個數(shù)據(jù)項時,所述N個數(shù)據(jù)有效位均置于有效狀態(tài);當(dāng)與首個預(yù)取地址對應(yīng)的數(shù)據(jù)項返回高速緩沖存儲器后,所述數(shù)據(jù)項對應(yīng)的數(shù)據(jù)有效位置為無效。
16.根據(jù)權(quán)利要求13-15任一所述的裝置,其特征在于,當(dāng)所述N個預(yù)取地址對應(yīng)的N個地址有效位均為無效,且所述N個數(shù)據(jù)項的對應(yīng)的N個數(shù)據(jù)有效位均為無效時,所述內(nèi)存數(shù)據(jù)預(yù)取裝置向所述內(nèi)存發(fā)送所述預(yù)取命令。
【文檔編號】G06F12/08GK103914394SQ201410157970
【公開日】2014年7月9日 申請日期:2014年4月18日 優(yōu)先權(quán)日:2014年4月18日
【發(fā)明者】黃帥, 王煥東, 陳新科, 陳廈 申請人:龍芯中科技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1