專利名稱:一種編譯器數(shù)據(jù)預取方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種編譯器數(shù)據(jù)預取方法和裝置。
背景技術(shù):
由于高速緩存(Cache)復雜的硬件邏輯,使得在一些多核結(jié)構(gòu)里不可容納 Cache結(jié)構(gòu),取而代之的是硬件結(jié)構(gòu)簡單、占用面積小和功耗更低的軟件管理片上存儲器 (Scratch Pad Memory, SPM)0 SPM在帶來高效能、低功耗的同時,也對于編程模型和編譯優(yōu)化提出了更高的要求和挑戰(zhàn)。Cache可以由硬件自動維護數(shù)據(jù)的一致性,而SPM則需要由軟件來實現(xiàn)一致性的維護以及管理數(shù)據(jù)在不同層次存儲系統(tǒng)之間的移動,要在保證程序正確性的前提下,充分利用數(shù)據(jù)局部性和局存空間,開發(fā)計算與訪存并行,盡量避免存儲器碎片,合理選擇數(shù)據(jù)放入片上存儲器。
考慮到目前大多數(shù)包含SPM的嵌入式系統(tǒng)中都支持直接內(nèi)存訪問(Direct Memory Access, DMA)模式,現(xiàn)有的一種針對SPM預取的方法是,將層次存儲分配(Memory Hierarchical Layer Assignment,MHLA)優(yōu)化策略、預取算法和DMA模式結(jié)合,并引入優(yōu)先級的概念,使用不同優(yōu)先級的DMA來完成數(shù)據(jù)在主存和SPM之間的移動,引入雙緩沖進行協(xié)同預取。這種結(jié)合了 DMA的預取技術(shù)既引入了已經(jīng)比較成熟的MHLA優(yōu)化策略,同時針對嵌入式的結(jié)構(gòu)特點使用DMA模式來取代硬件Cache的自動控制數(shù)據(jù)移動,相對于Cache的硬件自動控制而言,DMA具有更好的靈活性和可控性,可有效避免盲目預取和冗余預取。
然而,上述現(xiàn)有技術(shù)缺乏軟、硬件兩方面的協(xié)同支持,其軟件算法的開銷會對整體性能造成較大的影響,而硬件方面SPM無法完成Cache的一些基本功能,給程序員造成較大負擔。發(fā)明內(nèi)容
本發(fā)明實施例提供一種編譯器數(shù)據(jù)預取方法和裝置,以實現(xiàn)高效的訪存優(yōu)化。
本發(fā)明實施例提供一種編譯器數(shù)據(jù)預取方法,所述方法包括
提供硬件指令查詢軟件管理片上存儲器SPM中劃分的局存空間,所述硬件指令包含數(shù)據(jù)的主存地址;
若在所述SPM局存空間查詢到所述主存地址對應的數(shù)據(jù),則讀取所述主存地址對應的數(shù)據(jù);
若在所述SPM局存空間沒有查詢到所述主存地址對應的數(shù)據(jù),則根據(jù)所述硬件指令進行不命中處理以將數(shù)據(jù)預取到所述SPM局存空間。
本發(fā)明實施例提供一種編譯器數(shù)據(jù)預取裝置,所述裝置包括
硬件指令提供模塊,用于提供硬件指令查詢軟件管理片上存儲器SPM中劃分的局存空間,所述硬件指令包含數(shù)據(jù)的主存地址;
讀取模塊,用于若所述硬件指令提供模塊在所述SPM局存空間查詢到所述主存地址對應的數(shù)據(jù),則讀取所述主存地址對應的數(shù)據(jù);
不命中處理模塊,用于若所述硬件指令提供模塊在所述SPM局存空間沒有查詢到所述主存地址對應的數(shù)據(jù),則根據(jù)所述硬件指令進行不命中處理以將數(shù)據(jù)預取到所述SPM 局存空間。
從上述本發(fā)明實施例可知,由于查詢軟件管理片上存儲器中劃分的局存空間是由硬件提供的硬件指令進行,而在SPM局存空間不能查詢到主存地址對應的數(shù)據(jù)時,則進行不命中處理可通過軟件算法實現(xiàn)。因此,與現(xiàn)有技術(shù)相比,本發(fā)明實施例提供的方法結(jié)合了軟硬件協(xié)同Cache模型,軟硬件協(xié)同完成數(shù)據(jù)的緩存管理,充分利用硬件的高效性和軟件靈活性,以較小的硬件開銷實現(xiàn)高效的訪存優(yōu)化,在此基礎(chǔ)上實現(xiàn)了結(jié)合硬件支持和精簡的預取算法的基于軟硬件協(xié)同管理機制的編譯器數(shù)據(jù)預取方法。由于很好地利用了硬件指令加速,在性能上要優(yōu)于純軟件算法,同時也保證了軟件算法的靈活性,便于實現(xiàn)相關(guān)技術(shù)。
為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對現(xiàn)有技術(shù)或?qū)嵤├枋鲋兴枰褂玫母綀D作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域技術(shù)人員來講,還可以如這些附圖獲得其他的附圖。
圖I是本發(fā)明實施例提供的編譯器數(shù)據(jù)預取方法流程示意圖2是本發(fā)明實施例提供的編譯器數(shù)據(jù)預取裝置結(jié)構(gòu)示意圖3是本發(fā)明另一實施例提供的編譯器數(shù)據(jù)預取裝置結(jié)構(gòu)示意圖4是本發(fā)明另一實施例提供的編譯器數(shù)據(jù)預取裝置結(jié)構(gòu)示意圖5是本發(fā)明另一實施例提供的編譯器數(shù)據(jù)預取裝置結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域技術(shù)人員所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參閱附圖1,是本發(fā)明實施例提供的編譯器數(shù)據(jù)預取方法流程示意圖,主要包括步驟S101、步驟S102和步驟S103,具體地
S101,提供硬件指令查詢軟件管理片上存儲器SPM中劃分的局存空間,所述硬件指令包含數(shù)據(jù)的主存地址。
在軟件管理片上存儲器(Scratch Pad Memory, SPM)上,劃分出一部分連續(xù)空間作為Cache行,保存程序所需的數(shù)據(jù),這一部分空間稱為局存空間。需要說明的是,SPM上還會預留一部分指定空間,用于軟件算法中一些基本變量和代碼的保存,這部分空間不能作為局存空間來使用的。在局存空間上可以申請多個Cache,每個Cache的行數(shù)也可由用戶指定。
在本發(fā)明實施例中,硬件指令由硬件提供,其攜帶的是數(shù)據(jù)在主存儲器上的地址。 為了便于說明,在下文的描述中,數(shù)據(jù)在主存儲器上的地址簡稱為“數(shù)據(jù)的主存地址”;查詢SPM局存空間實際上是查詢硬件指令攜帶的主存地址對應的數(shù)據(jù)是否存在于SPM局存空間。
S102,若在所述SPM局存空間查詢到所述主存地址對應的數(shù)據(jù),則讀取所述主存地址對應的數(shù)據(jù)。
如前所述,SPM上預留的一部分指定空間用于保存軟件算法中一些基本變量和代碼。在本發(fā)明實施例中,“標簽(tag)”作為其中一個變量,其以一個表的形式存在于SPM上預留的指定空間,每一個表項標記的是數(shù)據(jù)的主存地址與數(shù)據(jù)的局存地址的對應關(guān)系,因此,若查詢到硬件指令攜帶的主存地址存在于tag中,則表明該主存地址對應的數(shù)據(jù)存在于SPM局存空間,即在SPM局存空間能夠查詢到主存地址對應的數(shù)據(jù),從而直接讀取主存地址對應的數(shù)據(jù)。
S103,若在所述SPM局存空間沒有查詢到所述主存地址對應的數(shù)據(jù),則根據(jù)所述硬件指令進行不命中處理以將數(shù)據(jù)預取到所述SPM局存空間。
若在SPM局存空間沒有查詢到主存地址對應的數(shù)據(jù),即tag中沒有標記該數(shù)據(jù)的主存地址與數(shù)據(jù)的局存地址的對應關(guān)系的表項,則根據(jù)硬件指令進行不命中處理以將數(shù)據(jù)預取到SPM局存空間,包括根據(jù)硬件指令,修改預取到SPM局存空間的數(shù)據(jù)的主存地址和局存地址對應關(guān)系,以使后續(xù)查詢所述SPM局存空間時命中數(shù)據(jù)。由于SPM局存空間沒有主存地址對應的數(shù)據(jù),因此,首先根據(jù)數(shù)據(jù)的主存地址,將所述數(shù)據(jù)從主存空間搬移到SPM 局存空間,然后,按照數(shù)據(jù)在SPM局存空間的存儲位置,建立數(shù)據(jù)的主存地址與數(shù)據(jù)在SPM 局存空間的局存地址之間的對應關(guān)系,即在tag中建立新的表項,標記數(shù)據(jù)的主存地址與數(shù)據(jù)的局存地址之間的對應關(guān)系。數(shù)據(jù)的主存地址與數(shù)據(jù)的局存地址之間的對應關(guān)系建立后,如果后續(xù)再次查詢SPM局存空間時,由于tag中保存了該數(shù)據(jù)的主存地址與數(shù)據(jù)的局存地址之間的對應關(guān)系,因此,可以直接命中。
這里需要說明的是,要使當前數(shù)據(jù)的主存地址命中,首先要保證上一次的直接內(nèi)存訪問(Direct Memory Access, DMA)完成,在提供的硬件指令C0DC_SEARCH中,這種情形表現(xiàn)為等待上一次的預取DMA完成,確保當前數(shù)據(jù)已經(jīng)在SPM局存空間中,然后切換tag中的主存地址和局存地址使命中;而對于提供的硬件指令C0DC_FETCH,由于C0DC_FETCH只有在預取DMA完成的情況下才會進入不命中處理,所以無需等待,直接切換tag中的主存地址和局存地址即可。對于每一個數(shù)組空間,需要申請一塊獨立的SPM局存空間。然而,在包含多個循環(huán)多個數(shù)組訪問的程序中,若每個數(shù)組對應的SPM局存空間都是分離的,那么會需要很大的SPM局存空間才可以滿足要求,而在實際情況中多數(shù)SPM局存空間在使用一次后就處在閑置狀態(tài)。因此,可以采用循環(huán)利用局存空間的方法來解決這一問題,即,在同一循環(huán)的內(nèi)部針對不同數(shù)組使用不同的局存Cache,當程序進入下一個循環(huán)后,由于上次利用的 SPM局存空間已處于閑置狀態(tài),因此,循環(huán)利用這些局存Cache。針對不同的訪存類型,一般需要兩個Cache或者三個Cache。
數(shù)據(jù)預取實現(xiàn)在不命中處理函數(shù)中,為了具有更好的適應性,本發(fā)明針對不同訪存模式,即只讀、只寫、讀寫共存和跨步使用了不同的預取方法。數(shù)據(jù)預取結(jié)合了 DMA數(shù)據(jù)傳輸方式,以算法精簡為目標,盡量減少不命中處理的開銷,同時針對結(jié)構(gòu)簡單的循環(huán)提出了進一步簡化的算法,在實際應用中具有良好的效果。
在根據(jù)硬件指令修改預取到SPM局存空間的數(shù)據(jù)的主存地址和局存地址對應關(guān)系以使后續(xù)查詢SPM局存空間時命中數(shù)據(jù)的另一實施例中,可以首先根據(jù)所述硬件指令, 對數(shù)據(jù)進行重用性和局部性分析。在編譯器中實現(xiàn)本發(fā)明實施例提供的預取分析方法,基于0pen64原有的Mowry局部性分析機制,針對協(xié)同Cache的特點做一些相應的更改。所謂數(shù)據(jù)重用性,是指在某個層次的迭代空間內(nèi),某一塊數(shù)據(jù)空間在不同的時間先后被訪問,或者不同的數(shù)據(jù)引用訪問同一塊數(shù)據(jù)空間。由于本發(fā)明中對于跨步預取的支持,所以使得重用性的定義上也擴展了針對跨步特點的重用。重用性只有當數(shù)據(jù)的使用出現(xiàn)在它被替代之前才能轉(zhuǎn)化為局部性,具有局部性的訪存才有預取價值。重用性取決于Cache的大小以及在兩重用數(shù)據(jù)之間進入Cache的數(shù)據(jù)量。在協(xié)同Cache中計算進入Cache的數(shù)據(jù)量時需要考慮跨步的因素,實際數(shù)據(jù)量應該是兩重用數(shù)據(jù)之間的距離除以跨步的比值。
在對數(shù)據(jù)進行重用性和局部性分析后,再根據(jù)重用性和局部性分析的分析結(jié)果, 生成數(shù)據(jù)預取策略,即,若數(shù)據(jù)進行局部性分析的結(jié)果為該數(shù)據(jù)具有局部性,則分別根據(jù)所述具有局部性的數(shù)據(jù)的時間重用性、空間重用性或組重用性,使用不同的預取方式。具體地,對于時間重用性,與傳統(tǒng)預取方式相同,僅在具有時間重用性的訪存的第一次訪問時進行預取,則在其后的重復訪問時則會訪問Cache中的數(shù)據(jù);對于空間重用性,要根據(jù) Cache大小來確定預取方式,例如,同一 Cache行可容納k個數(shù)組元素,則在數(shù)組下標為 k的整數(shù)倍時進行數(shù)據(jù)的預?。粚τ诮M重用性,則在一個具有重用性的組里選擇一個主要 (leading)元素,只在該主要元素被訪問時進行預取,且同時考慮是否可以進行合并預取。
根據(jù)生成的預取策略,將可預取數(shù)據(jù)從主存空間搬移到SPM局存空間。最后,如前述實施例類似,按照可預取數(shù)據(jù)在SPM局存空間的存儲位置,建立可預取數(shù)據(jù)的主存地址與可預取數(shù)據(jù)在SPM局存空間的局存地址之間的對應關(guān)系,即,在tag中建立新的表項,標記可預取數(shù)據(jù)的主存地址與可預取數(shù)據(jù)在SPM局存空間的局存地址之間的對應關(guān)系。
從上述本發(fā)明實施例提供的編譯器數(shù)據(jù)預取方法可知,由于查詢軟件管理片上存儲器中劃分的局存空間是由硬件提供的硬件指令進行,而在SPM局存空間不能查詢到主存地址對應的數(shù)據(jù)時,則進行不命中處理可通過軟件算法實現(xiàn)。因此,與現(xiàn)有技術(shù)相比,本發(fā)明實施例提供的方法結(jié)合了軟硬件協(xié)同Cache模型,軟硬件協(xié)同完成數(shù)據(jù)的緩存管理,充分利用硬件的高效性和軟件靈活性,以較小的硬件開銷實現(xiàn)高效的訪存優(yōu)化,在此基礎(chǔ)上實現(xiàn)了結(jié)合硬件支持和精簡的預取算法的基于軟硬件協(xié)同管理機制的編譯器數(shù)據(jù)預取方法。由于很好地利用了硬件指令加速,在性能上要優(yōu)于純軟件算法,同時也保證了軟件算法的靈活性,便于實現(xiàn)相關(guān)技術(shù)。
請參閱附圖2,是本發(fā)明實施例提供的編譯器數(shù)據(jù)預取裝置結(jié)構(gòu)示意圖。為了便于說明,僅僅示出了與本發(fā)明實施例相關(guān)的部分。附圖2示例的編譯器數(shù)據(jù)預取裝置包括硬件指令提供模塊201、讀取模塊202和不命中處理模塊203,其中
硬件指令提供模塊201,用于提供硬件指令查詢軟件管理片上存儲器SPM中劃分的局存空間,所述硬件指令包含數(shù)據(jù)的主存地址;
讀取模塊202,用于若所述硬件指令提供模塊201在所述SPM局存空間查詢到所述主存地址對應的數(shù)據(jù),則讀取所述主存地址對應的數(shù)據(jù);
不命中處理模塊203,用于若所述硬件指令提供模塊201在所述SPM局存空間沒有查詢到所述主存地址對應的數(shù)據(jù),則根據(jù)所述硬件指令進行不命中處理以將數(shù)據(jù)預取到所述SPM局存空間。
需要說明的是,以上編譯器數(shù)據(jù)預取裝置的實施方式中,各功能模塊的劃分僅是舉例說明,實際應用中可以根據(jù)需要,例如相應硬件的配置要求或者軟件的實現(xiàn)的便利考慮,而將上述功能分配由不同的功能模塊完成,即將所述編譯器數(shù)據(jù)預取裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。而且,實際應用中,本實施例中的相應的功能模塊可以是由相應的硬件實現(xiàn),也可以由相應的硬件執(zhí)行相應的軟件完成,例如,前述的讀取模塊,可以是具有執(zhí)行前述若所述硬件指令提供模塊在所述SPM局存空間查詢到所述主存地址對應的數(shù)據(jù),則讀取所述主存地址對應的數(shù)據(jù)的硬件,例如讀取器,也可以是能夠執(zhí)行相應計算機程序從而完成前述功能的一般處理器或者其他硬件設(shè)備;再如前述的不命中處理模塊,可以是具有執(zhí)行前述若所述硬件指令提供模塊在所述 SPM局存空間沒有查詢到所述主存地址對應的數(shù)據(jù),則根據(jù)所述硬件指令進行不命中處理以將數(shù)據(jù)預取到所述SPM局存空間功能的硬件,例如不命中處理器,也可以是能夠執(zhí)行相應計算機程序從而完成前述功能的一般處理器或者其他硬件設(shè)備(本說明書提供的各個實施例都可應用上述描述原則)。
附圖2示例的不命中處理模塊203可以包括地址修改子模塊301,如附圖3所示本發(fā)明另一實施例提供的編譯器數(shù)據(jù)預取裝置。地址修改子模塊301用于根據(jù)所述硬件指令,修改預取到SPM局存空間的數(shù)據(jù)的主存地址和局存地址對應關(guān)系以使后續(xù)查詢SPM局存空間時命中數(shù)據(jù)。
附圖3示例的地址修改子模塊301可以包括第一數(shù)據(jù)搬移單元401和第一建立單元402,如附圖4所示本發(fā)明另一實施例提供的編譯器數(shù)據(jù)預取裝置,其中
第一數(shù)據(jù)搬移單元401,用于根據(jù)所述數(shù)據(jù)的主存地址,將所述數(shù)據(jù)從主存空間搬移到所述SPM局存空間;
第一建立單元402,用于按照所述數(shù)據(jù)在所述SPM局存空間的存儲位置,建立所述數(shù)據(jù)的主存地址與所述數(shù)據(jù)在所述SPM局存空間的局存地址之間的對應關(guān)系。
附圖3示例的地址修改子模塊301也可以包括分析單元501、策略生成單元502、 第二數(shù)據(jù)搬移單元503和第二建立單元504,如附圖5所示本發(fā)明另一實施例提供的編譯器數(shù)據(jù)預取裝置,其中
分析單元501,用于根據(jù)所述硬件指令,對數(shù)據(jù)進行重用性和局部性分析;
策略生成單元502,用于根據(jù)所述重用性和局部性分析的分析結(jié)果,生成數(shù)據(jù)預取策略,即若數(shù)據(jù)進行局部性分析的結(jié)果為所述數(shù)據(jù)具有局部性,則策略生成單元502分別根據(jù)所述具有局部性的數(shù)據(jù)的時間重用性、空間重用性或組重用性,使用不同的預取方式。 具體地,對于時間重用性,與傳統(tǒng)預取方式相同,僅在具有具有時間重用性的訪存的第一次訪問時進行預取,則在其后的重復訪問時則會訪問Cache中的數(shù)據(jù);對于空間重用性,要根據(jù)Cache大小來確定預取方式,例如,同一 Cache行可容納k個數(shù)組元素,則在數(shù)組下標為 k的整數(shù)倍時進行數(shù)據(jù)的預??;對于組重用性,則在一個具有重用性的組里選擇一個主要 (leading)元素,只在該主要元素被訪問時進行預取,且同時考慮是否可以進行合并預??;
第二數(shù)據(jù)搬移單元503,用于根據(jù)所述預取策略,將可預取數(shù)據(jù)從主存空間搬移到所述SPM局存空間;
第二建立單元504,用于按照所述可預取數(shù)據(jù)在所述SPM局存空間的存儲位置,建立所述可預取數(shù)據(jù)的主存地址與所述可預取數(shù)據(jù)在所述SPM局存空間的局存地址之間的對應關(guān)系。
需要說明的是,上述裝置各模塊/單元之間的信息交互、執(zhí)行過程等內(nèi)容,由于與本發(fā)明方法實施例基于同一構(gòu)思,其帶來的技術(shù)效果與本發(fā)明方法實施例相同,具體內(nèi)容可參見本發(fā)明方法實施例中的敘述,此處不再贅述。
本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,比如以下各種方法的一種或多種或全部
提供硬件指令查詢軟件管理片上存儲器SPM中劃分的局存空間,所述硬件指令包含數(shù)據(jù)的主存地址;
若在所述SPM局存空間查詢到所述主存地址對應的數(shù)據(jù),則讀取所述主存地址對應的數(shù)據(jù);
若在所述SPM局存空間沒有查詢到所述主存地址對應的數(shù)據(jù),則根據(jù)所述硬件指令進行不命中處理以將數(shù)據(jù)預取到所述SPM局存空間。
本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機可讀存儲介質(zhì)中,存儲介質(zhì)可以包括只讀存儲器(ROM,Read Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁盤或光盤等。
以上對本發(fā)明實施例提供的一種編譯器數(shù)據(jù)預取方法和裝置進行了詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應理解為對本發(fā)明的限制。
權(quán)利要求
1.一種編譯器數(shù)據(jù)預取方法,其特征在于,所述方法包括 提供硬件指令查詢軟件管理片上存儲器SPM中劃分的局存空間,所述硬件指令包含數(shù)據(jù)的主存地址; 若在所述SPM局存空間查詢到所述主存地址對應的數(shù)據(jù),則讀取所述主存地址對應的數(shù)據(jù); 若在所述SPM局存空間沒有查詢到所述主存地址對應的數(shù)據(jù),則根據(jù)所述硬件指令進行不命中處理以將數(shù)據(jù)預取到所述SPM局存空間。
2.如權(quán)利要求I所述的方法,其特征在于,所述根據(jù)所述硬件指令進行不命中處理以將數(shù)據(jù)預取到所述SPM局存空間包括 根據(jù)所述硬件指令,修改預取到所述SPM局存空間的數(shù)據(jù)的主存地址和局存地址對應關(guān)系以使后續(xù)查詢所述SPM局存空間時命中數(shù)據(jù)。
3.如權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述硬件指令,修改預取到所述SPM局存空間的數(shù)據(jù)的主存地址和局存地址對應關(guān)系以使后續(xù)查詢所述SPM局存空間時命中數(shù)據(jù)包括 根據(jù)所述數(shù)據(jù)的主存地址,將所述數(shù)據(jù)從主存空間搬移到所述SPM局存空間; 按照所述數(shù)據(jù)在所述SPM局存空間的存儲位置,建立所述數(shù)據(jù)的主存地址與所述數(shù)據(jù)在所述SPM局存空間的局存地址之間的對應關(guān)系。
4.如權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述硬件指令,修改預取到所述SPM局存空間的數(shù)據(jù)的主存地址和局存地址對應關(guān)系以使后續(xù)查詢所述SPM局存空間時命中數(shù)據(jù)包括 根據(jù)所述硬件指令,對數(shù)據(jù)進行重用性和局部性分析; 根據(jù)所述重用性和局部性分析的分析結(jié)果,生成數(shù)據(jù)預取策略; 根據(jù)所述預取策略,將可預取數(shù)據(jù)從主存空間搬移到所述SPM局存空間; 按照所述可預取數(shù)據(jù)在所述SPM局存空間的存儲位置,建立所述可預取數(shù)據(jù)的主存地址與所述可預取數(shù)據(jù)在所述SPM局存空間的局存地址之間的對應關(guān)系。
5.如權(quán)利要求4所述的方法,其特征在干,所述根據(jù)所述重用性和局部性分析的分析結(jié)果,生成數(shù)據(jù)預取策略包括 若數(shù)據(jù)進行局部性分析的結(jié)果為所述數(shù)據(jù)具有局部性,則分別根據(jù)所述具有局部性的數(shù)據(jù)的時間重用性、空間重用性或組重用性,使用不同的預取方式。
6.一種編譯器數(shù)據(jù)預取裝置,其特征在于,所述裝置包括 硬件指令提供模塊,用于提供硬件指令查詢軟件管理片上存儲器SPM中劃分的局存空間,所述硬件指令包含數(shù)據(jù)的主存地址; 讀取模塊,用于若所述硬件指令提供模塊在所述SPM局存空間查詢到所述主存地址對應的數(shù)據(jù),則讀取所述主存地址對應的數(shù)據(jù); 不命中處理模塊,用于若所述硬件指令提供模塊在所述SPM局存空間沒有查詢到所述主存地址對應的數(shù)據(jù),則根據(jù)所述硬件指令進行不命中處理以將數(shù)據(jù)預取到所述SPM局存空間。
7.如權(quán)利要求6所述的裝置,其特征在于,所述不命中處理模塊包括 地址修改子模塊,用于根據(jù)所述硬件指令,修改預取到所述SPM局存空間的數(shù)據(jù)的主存地址和局存地址對應關(guān)系以使后續(xù)查詢所述SPM局存空間時命中數(shù)據(jù)。
8.如權(quán)利要求7所述的裝置,其特征在于,所述地址修改子模塊包括 第一數(shù)據(jù)搬移単元,用于根據(jù)所述數(shù)據(jù)的主存地址,將所述數(shù)據(jù)從主存空間搬移到所述SPM局存空間; 第一建立単元,用于按照所述數(shù)據(jù)在所述SPM局存空間的存儲位置,建立所述數(shù)據(jù)的主存地址與所述數(shù)據(jù)在所述SPM局存空間的局存地址之間的對應關(guān)系。
9.如權(quán)利要求7所述的裝置,其特征在于,所述地址修改子模塊包括 分析単元,用于根據(jù)所述硬件指令,對數(shù)據(jù)進行重用性和局部性分析; 策略生成単元,用于根據(jù)所述重用性和局部性分析的分析結(jié)果,生成數(shù)據(jù)預取策略; 第二數(shù)據(jù)搬移単元,用于根據(jù)所述預取策略,將可預取數(shù)據(jù)從主存空間搬移到所述SPM局存空間; 第二建立単元,用于按照所述可預取數(shù)據(jù)在所述SPM局存空間的存儲位置,建立所述可預取數(shù)據(jù)的主存地址與所述可預取數(shù)據(jù)在所述SPM局存空間的局存地址之間的對應關(guān)系O
10.如權(quán)利要求9所述的裝置,其特征在于,所述策略生成単元具體用于若數(shù)據(jù)進行局部性分析的結(jié)果為所述數(shù)據(jù)具有局部性,則分別根據(jù)所述具有局部性的數(shù)據(jù)的時間重用性、空間重用性或組重用性,使用不同的預取方式。
全文摘要
本發(fā)明實施例提供一種編譯器數(shù)據(jù)預取方法和裝置,以實現(xiàn)高效的訪存優(yōu)化。所述方法包括提供硬件指令查詢軟件管理片上存儲器SPM中劃分的局存空間,所述硬件指令包含數(shù)據(jù)的主存地址;若在所述SPM局存空間查詢到所述主存地址對應的數(shù)據(jù),則讀取所述主存地址對應的數(shù)據(jù);若在所述SPM局存空間沒有查詢到所述主存地址對應的數(shù)據(jù),則根據(jù)所述硬件指令進行不命中處理以將數(shù)據(jù)預取到所述SPM局存空間。本發(fā)明充分利用硬件的高效性和軟件靈活性,以較小的硬件開銷實現(xiàn)高效的訪存優(yōu)化,在此基礎(chǔ)上實現(xiàn)了結(jié)合硬件支持和精簡的預取算法的基于軟硬件協(xié)同管理機制的編譯器數(shù)據(jù)預取方法,在性能上要優(yōu)于純軟件算法,保證了軟件算法的靈活性。
文檔編號G06F12/08GK102981883SQ20121042097
公開日2013年3月20日 申請日期2012年10月29日 優(yōu)先權(quán)日2012年10月29日
發(fā)明者漆鋒濱, 肖謙, 沈莉, 姜軍, 王超 申請人:無錫江南計算技術(shù)研究所