午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

數(shù)據(jù)預(yù)取方法及可讀存儲(chǔ)介質(zhì)

文檔序號:39726349發(fā)布日期:2024-10-22 13:26閱讀:3來源:國知局
本發(fā)明涉及計(jì)算機(jī),尤其涉及一種數(shù)據(jù)預(yù)取方法及可讀存儲(chǔ)介質(zhì)。
背景技術(shù)
::1、cpu(中央處理器)硬件預(yù)取是通過提前將可能需要的數(shù)據(jù)取到cache(片上緩存)以隱藏內(nèi)存訪問請求所帶來的長延時(shí)。各類硬件預(yù)取器已經(jīng)在商業(yè)cpu里得到了廣泛的應(yīng)用,預(yù)取技術(shù)也在過去的數(shù)十年里經(jīng)歷了快速發(fā)展。2、預(yù)取器主要有兩個(gè)指標(biāo):準(zhǔn)確率和覆蓋率。準(zhǔn)確率表示預(yù)取器通過預(yù)測提前發(fā)出的請求有多少是準(zhǔn)確的,覆蓋率表示預(yù)取請求覆蓋了多少個(gè)實(shí)際的請求。假設(shè)一段時(shí)間內(nèi)cpu發(fā)出了a個(gè)加載請求,預(yù)取器發(fā)出了b個(gè)加載請求,cpu所發(fā)出的請求里有c個(gè)是被預(yù)取器所提供的,那么,預(yù)取的準(zhǔn)確率為c/b,覆蓋率為c/a。3、由于訪問內(nèi)存的長延時(shí)使得cpu不得不停頓以等待數(shù)據(jù),造成了系統(tǒng)性能的下降。為了更好地提升性能,覆蓋更多這些長延時(shí)的請求,預(yù)取器正變得越來越激進(jìn)。然而,與之而來的是越來越多的次優(yōu)數(shù)據(jù)塊被預(yù)取進(jìn)cache,也就是不準(zhǔn)確預(yù)取請求的數(shù)量越來越多。這些不準(zhǔn)確的預(yù)取請求會(huì)以各種方式擠占系統(tǒng)資源,包括爭用帶寬、爭用cache等。隨著共享資源如可用帶寬的減少,問題變得越來越嚴(yán)重:大量的預(yù)取器所帶來的性能提升隨著可用帶寬的減少而急劇下降,甚至低于0(即負(fù)面收益)。由此發(fā)現(xiàn),先前的預(yù)取器所遵循的通用結(jié)構(gòu)為它們帶來了不可避免的大量不準(zhǔn)確請求。4、為了對預(yù)取器的預(yù)取方式進(jìn)行優(yōu)化,基于位模式的預(yù)取應(yīng)運(yùn)而生。基于位模式的預(yù)取是通過記錄一個(gè)區(qū)域內(nèi)哪些數(shù)據(jù)塊被訪問來學(xué)習(xí)空間模式,并使用所學(xué)習(xí)的模式來發(fā)出預(yù)取請求。假設(shè)一個(gè)區(qū)域a包含8個(gè)數(shù)據(jù)塊,如果cpu訪問了a+2,a+3和a+6,那么一個(gè)形如00110010的位模式將被生成。每當(dāng)一個(gè)位模式被生成時(shí),它將會(huì)和一個(gè)事件綁定,而這個(gè)事件是使用該區(qū)域的觸發(fā)訪問(第一次訪問)的數(shù)個(gè)特征,例如包括pc(指令地址)、address(數(shù)據(jù)地址)、offset(頁內(nèi)偏移)等,而生成的這個(gè)事件再次發(fā)生時(shí),這個(gè)位模式會(huì)被用作預(yù)取。5、如圖1所示,基于位模式的預(yù)取通常包含三個(gè)主要組件:過濾表(ft,filtertable),累積表(at,,accumulation?table)和模式歷史表(pht,,pattern?historytable),其中,m表示未命中,h表示命中。ft被用于過濾掉單比特模式,這表明在記錄過程中該區(qū)域只有一個(gè)數(shù)據(jù)塊被訪問,at用于跟蹤所有最近訪問的區(qū)域,pht用于存儲(chǔ)“事件-模式”對,這是在累積后產(chǎn)生的。任何新訪問的區(qū)域都會(huì)首先記錄在ft中,只有在第二次不同的訪問到達(dá)后才會(huì)被跟蹤。此外,基于位模式的預(yù)取器通常采用預(yù)取緩沖區(qū)(pb,prefetchbuffer)來有效存儲(chǔ)預(yù)取地址,因?yàn)閱蝹€(gè)位模式通常包含多個(gè)具有相同起始地址的請求。此外,預(yù)取緩沖區(qū)還有助于平滑地發(fā)出預(yù)取。6、對此,space?memory?streaming(sms)首次規(guī)范化了基于位模式的預(yù)取結(jié)構(gòu)和邏輯。sms提出使用"pc+offset"作為事件,從而降低了存儲(chǔ)開銷,并使預(yù)取器能夠消除強(qiáng)制錯(cuò)失。bulk?memory?access?prediction?and?streaming(bump)進(jìn)一步降低了sms的能耗。bingo的設(shè)計(jì)基于這樣一個(gè)事實(shí),即較短的事件("pc+offset")被包含在較長的事件("pc+address")中。受tage分支預(yù)測器的啟發(fā),bingo首先嘗試使用較長的事件來查找精確匹配,如果沒有找到,則使用較短的事件尋找近似匹配。為減少冗余,bingo使用"pc+offset"作為索引,并使用"pc+address"作為標(biāo)簽來實(shí)現(xiàn)pht。近似匹配意味著相應(yīng)集合中的所有模式(即具有相同短事件的模式)都會(huì)被一起用于預(yù)取,這就增加了激進(jìn)性。因此,與sms相比,bingo在覆蓋更多請求(近似匹配)的情況下實(shí)現(xiàn)了相似的準(zhǔn)確性(通過精確匹配維持),但不準(zhǔn)確的預(yù)取次數(shù)有所增加??梢姡瑂ms和bingo都使用復(fù)雜的組合作為事件,需要極高的存儲(chǔ)開銷(約1kb)和漫長的學(xué)習(xí)時(shí)間才能實(shí)現(xiàn)高覆蓋率。7、為了解決這個(gè)問題,dual?spatial?pattern?prefetcher(dspatch)在指令粒度上識(shí)別空間模式(即使用"pc"作為事件)。同時(shí),dspatch會(huì)為每個(gè)pc維護(hù)兩個(gè)最新模式,并通過預(yù)取出現(xiàn)在任一模式中的數(shù)據(jù)塊來進(jìn)一步提高覆蓋率。pattern?merging?prefetcher(pmp)通過只使用"offset"進(jìn)一步簡化了事件,確保在短時(shí)間內(nèi)幾乎總能找到匹配。這就最大限度地減少了因執(zhí)行新指令或訪問未見地址而丟失預(yù)取機(jī)會(huì)的可能性。此外,對于每個(gè)offset,pmp會(huì)合并32個(gè)最新模式,這意味著歷史訪問特征會(huì)被保留和利用。不過,這也意味著不再使用的模式仍可在較長時(shí)間內(nèi)觸發(fā)預(yù)取,從而導(dǎo)致大量無用的預(yù)取。8、圖2顯示了使用"offset"作為事件時(shí),從數(shù)個(gè)真實(shí)工作負(fù)載中獲得的一些示例。在案例a中,第一種模式顯示了對數(shù)據(jù)塊的跨步訪問,而沖突模式則顯示了連續(xù)訪問,案例b與案例a類似。在案例c中,可以看到步長為3的恒定跨度和步長為{2,2,2,1}的復(fù)合跨度這兩種訪問模式。由于局部性,這些訪問模式很可能會(huì)再次出現(xiàn),因此應(yīng)被恰當(dāng)?shù)赜糜陬A(yù)取。但由于它們具有相同的第一偏移(圖中虛線所圈出來的數(shù)據(jù)塊),因此無法區(qū)分。9、綜上,這些方法所依賴的通用結(jié)構(gòu)所帶來的固有不準(zhǔn)確性(主要表現(xiàn)為錯(cuò)誤預(yù)測和過度預(yù)測)正在將預(yù)取所帶來的性能提升推向極限。10、事實(shí)上,簡化事件可帶來更高的覆蓋率、更好的性能和更低的存儲(chǔ)開銷。然而,這也使得區(qū)分具有不同長事件但具有相同短事件的不同模式變得具有挑戰(zhàn)性。例如,當(dāng)某條指令在兩個(gè)區(qū)域分別產(chǎn)生兩種不同的訪問模式時(shí),使用"pc+address"可以區(qū)分這些模式。然而,當(dāng)僅使用"pc"時(shí),兩個(gè)指令會(huì)共享相同的事件,通常將其稱為沖突。因此,后一種模式取代了前一種模式,使得預(yù)取器使用到錯(cuò)誤模式的概率較高,從而導(dǎo)致多次錯(cuò)誤預(yù)測。對此,最近的一些提議試圖通過從合并的沖突模式中提取共同特征來解決這一問題。例如,bingo在發(fā)生近似匹配時(shí),會(huì)合并同一set(具有相同較短事件)中的所有模式(共16個(gè));dspatch會(huì)合并每個(gè)pc中最近的兩個(gè)模式;而pmp則將合并范圍擴(kuò)大到每個(gè)offset的32個(gè)模式。然而,這并不是一個(gè)理想的解決方案,因?yàn)樗]有從根本上減少?zèng)_突,而且使不再使用的模式在很長一段時(shí)間內(nèi)成為共同特征的一部分,從而導(dǎo)致大量無用的預(yù)取。11、此外,目前還發(fā)現(xiàn)了一種以前被忽視但卻很常見的訪問模式,在以前的方法中,這種模式會(huì)導(dǎo)致大量無用的預(yù)取。通常將具有這種訪問模式的區(qū)域稱為單次使用區(qū)域,表示這些區(qū)域在很長一段時(shí)間內(nèi)只被訪問一次。在訪問一個(gè)新區(qū)域時(shí),預(yù)取器遵循基于位模式預(yù)取的通用邏輯,利用這次加載訪問來構(gòu)建搜索事件。然后,利用該事件搜索過去的模式,找到那些可能在新區(qū)域中重放的模式。在這種情況下,單次使用的區(qū)域能夠發(fā)出多個(gè)預(yù)取,其中大部分是無用的。隨著預(yù)取器變得更加激進(jìn),情況會(huì)變得更糟,因?yàn)檫@使得來自單次使用區(qū)域的事件能夠頻繁甚至持續(xù)地找到匹配模式,從而導(dǎo)致大量過度預(yù)測。技術(shù)實(shí)現(xiàn)思路1、本發(fā)明的目的在于提供一種數(shù)據(jù)預(yù)取方法及可讀存儲(chǔ)介質(zhì),以解決現(xiàn)有數(shù)據(jù)預(yù)取方法存在的錯(cuò)誤預(yù)測和過度預(yù)測等問題。2、為達(dá)到上述目的,本發(fā)明提供一種數(shù)據(jù)預(yù)取方法,包括以下步驟:3、s100、當(dāng)檢測到cpu對緩存的加載訪問時(shí),若所述加載訪問所請求的數(shù)據(jù)地址所屬的區(qū)域在累積表中未被追蹤,跳轉(zhuǎn)s200;4、s200、檢查所述區(qū)域是否已經(jīng)在過濾表中記錄過,若是,則跳轉(zhuǎn)s300;5、s300、檢查所述加載訪問所請求的數(shù)據(jù)地址的偏移和所述過濾表中記錄的偏移是否一致,若不一致,則跳轉(zhuǎn)s400;6、s400、在模式歷史表中,基于所述加載訪問所請求的數(shù)據(jù)地址的偏移和所述過濾表中記錄的偏移進(jìn)行查找,形成第一預(yù)取模式并發(fā)送到預(yù)取緩沖區(qū)。7、可選的,在所述s100中,若所述加載訪問所請求的數(shù)據(jù)地址所屬的區(qū)域在所述累積表中被追蹤,則跳轉(zhuǎn)s210;8、s210、根據(jù)所述加載訪問所請求的數(shù)據(jù)地址的偏移,檢查所述區(qū)域在最近三次訪問所間隔的兩個(gè)步長是否一致,若一致,則跳轉(zhuǎn)s220;9、s220、按照恒定步長的變化規(guī)律,形成第二預(yù)取模式發(fā)出預(yù)取請求。10、可選的,在所述s200中,若所述區(qū)域未在所述過濾表中記錄過,則在所述過濾表進(jìn)行記錄,區(qū)域號作為所述記錄的索引,同時(shí)所述記錄的內(nèi)容還包含所述加載訪問所請求的數(shù)據(jù)地址的偏移以及pc。11、可選的,在所述s300中,若所述加載訪問所請求的數(shù)據(jù)地址的偏移和所述過濾表中記錄的偏移一致,則更新lru標(biāo)志。12、可選的,在所述s400中,當(dāng)所述加載訪問所請求的數(shù)據(jù)塊和所述過濾表中記錄的偏移所述請求的數(shù)據(jù)塊對應(yīng)所述區(qū)域的前兩個(gè)數(shù)據(jù)塊,且所述區(qū)域內(nèi)的數(shù)據(jù)塊未被全部訪問時(shí),將所述區(qū)域設(shè)定為特殊區(qū)域,并利用所述模式歷史表對所述特殊區(qū)域建立pc標(biāo)簽,并根據(jù)所述pc標(biāo)簽的命中情況形成第三預(yù)取模式并發(fā)送到預(yù)取緩沖區(qū)。13、可選的,若所述pc標(biāo)簽未命中,則使用連續(xù)性感知向量進(jìn)行預(yù)取,所述連續(xù)性感知向量由多個(gè)計(jì)數(shù)器組成,對于所述特殊區(qū)域內(nèi)的每個(gè)數(shù)據(jù)塊,分別采用一個(gè)計(jì)數(shù)器來跟蹤它在最近特殊區(qū)域中的加載次數(shù),基于所述加載次數(shù)形成第四預(yù)取模式并發(fā)送到預(yù)取緩沖區(qū)。14、可選的,在所述s400之后,所述數(shù)據(jù)預(yù)取方法還包括:15、s500、將所述加載訪問在所述過濾表中的表項(xiàng)插入到累積表中,若所述累積表中產(chǎn)生淘汰,則將淘汰的表項(xiàng)發(fā)送給所述模式歷史表進(jìn)行存儲(chǔ)。16、可選的,在所述s500之后,所述數(shù)據(jù)預(yù)取方法還包括:17、將所述過濾表中記錄的偏移作為索引,所述加載訪問所請求的數(shù)據(jù)地址的偏移作為標(biāo)簽對所述第一預(yù)取模式進(jìn)行存儲(chǔ)。18、可選的,在通過所述預(yù)取緩沖區(qū)發(fā)出預(yù)取指令之前,所述數(shù)據(jù)預(yù)取方法還包括:19、判斷所述加載訪問結(jié)束后緩存是否還剩下足夠的緩存資源下以發(fā)送預(yù)取指令,若是則發(fā)出預(yù)取指令,否則,則結(jié)束預(yù)取。20、基于同一技術(shù)構(gòu)思,本發(fā)明還提供了一種可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被執(zhí)行時(shí)能實(shí)現(xiàn)如上所述的數(shù)據(jù)預(yù)取方法。21、在本發(fā)明提供的一種數(shù)據(jù)預(yù)取方法及可讀存儲(chǔ)介質(zhì)中,通過對訪問區(qū)域引入少量額外的觀察,能夠消除大量的錯(cuò)誤預(yù)測和過度預(yù)測,從而大幅提升數(shù)據(jù)預(yù)取的準(zhǔn)確率,降低額外帶寬的消耗。當(dāng)前第1頁12當(dāng)前第1頁12
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1