本申請涉及計算機(jī)技術(shù)領(lǐng)域,具體涉及一種訪問緩存的方法以及一種訪問緩存的裝置;本申請同時涉及一種電子設(shè)備。
背景技術(shù):
為了緩解訪問內(nèi)存時的慢速問題,引入了根據(jù)數(shù)據(jù)的時間局域和空間局域特性引入了多層緩存架構(gòu)來緩解這個問題。緩存是一個或多個小型高速相聯(lián)存儲器,當(dāng)處理器在讀取或?qū)懭霑r,首先檢查緩存中是否存在目標(biāo)數(shù)據(jù),如果存在,處理器首先指向緩存而不是其他存儲器(例如內(nèi)存)。通過多層緩存架構(gòu)可以提高訪問性能,在訪問一級緩存時,若一級緩存中不存在目標(biāo)數(shù)據(jù),即,發(fā)生缺失則訪問二級緩存,若二級緩存中也不存在目標(biāo)數(shù)據(jù),則繼續(xù)訪問下一級緩存直至獲取到目標(biāo)數(shù)據(jù)。雖然多層緩存架構(gòu)設(shè)置一級與二級緩存的目的是減少訪問延遲,設(shè)置三級緩存目的是減少缺失率,但是多層緩存架構(gòu)引入的同時也增加了訪問每級緩存時的延遲,例如:從訪問一級緩存時發(fā)生缺失,到訪問二級緩存時需要6個周期,從訪問二級緩存時發(fā)生缺失,到訪問三級緩存時需要8個周期。
由此可見,雖然設(shè)置多層緩存架構(gòu)的目的是為了減少訪問延遲,但是在訪問緩存時發(fā)生缺失,命中率不高的情況下,逐級的訪問每級緩存帶來的訪問延遲會逐級累加,最終帶來十分明顯的延遲,并且逐級的訪問每級緩存會產(chǎn)生冗余功耗。若同時訪問每級緩存,雖然能提高獲取目標(biāo)數(shù)據(jù)的命中率,降低缺失,但會帶來更多的冗余功耗。
技術(shù)實現(xiàn)要素:
本申請?zhí)峁┮环N訪問緩存的方法以及一種訪問緩存的裝置,以解決現(xiàn)有技術(shù)中訪問緩存時的延遲問題。本申請同時涉及一種電子設(shè)備。
本申請?zhí)峁┝艘环N訪問緩存的方法,所述訪問緩存的方法包括:
讀取用于獲取數(shù)據(jù)的訪問指令;
根據(jù)所述訪問指令攜帶的延遲標(biāo)識判斷所述訪問指令是否會產(chǎn)生延遲;
若產(chǎn)生延遲,則訪問緩存并根據(jù)所述訪問指令攜帶的位置標(biāo)識執(zhí)行預(yù)取操作;
根據(jù)所述訪問指令獲取到的數(shù)據(jù)的位置,修改所述訪問指令攜帶的延遲標(biāo)識和位置標(biāo)識。
可選的,所述訪問指令攜帶的延遲標(biāo)識和位置標(biāo)識是在所述訪問指令的緩存行上設(shè)置的使用比特標(biāo)注的標(biāo)識。
可選的,所述延遲,包括:
數(shù)據(jù)缺失時逐層訪問緩存時產(chǎn)生的延遲或者所述訪問指令執(zhí)行計算時產(chǎn)生的延遲。
可選的,所述根據(jù)所述訪問指令攜帶的延遲標(biāo)識判斷所述訪問指令是否會產(chǎn)生延遲,包括:
讀取所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識的數(shù)值判斷所述訪問指令是否會產(chǎn)生延遲。
可選的,所述讀取所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識的數(shù)值判斷所述訪問指令是否會產(chǎn)生延遲,具體包括:
讀取所述訪問指令攜帶的使用二進(jìn)制比特標(biāo)注的延遲標(biāo)識的數(shù)值,判斷所述訪問指令攜帶的使用二進(jìn)制比特標(biāo)注的延遲標(biāo)識的數(shù)值是否大于1;
若大于1,說明所述訪問指令會產(chǎn)生延遲,并執(zhí)行訪問緩存并根據(jù)所述訪問指令攜帶的位置標(biāo)識執(zhí)行預(yù)取操作的步驟。
可選的,所述訪問緩存并根據(jù)所述訪問指令攜帶的位置標(biāo)識執(zhí)行預(yù)取操作,包括:
讀取所述訪問指令攜帶的使用比特標(biāo)注的位置標(biāo)識的數(shù)值;
訪問一級緩存時,根據(jù)所述訪問指令攜帶的使用比特標(biāo)注的位置標(biāo)識的數(shù)值,訪問對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存進(jìn)行訪問。
可選的,在所述訪問一級緩存時,根據(jù)所述訪問指令攜帶的使用比特標(biāo)注的位置標(biāo)識的數(shù)值,訪問對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存進(jìn)行訪問的步驟之后,包括:
判斷在所述一級緩存和對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存中,是否 獲取到所述訪問指令需求的數(shù)據(jù);
若否,則按照多層緩存的層級順序依次訪問每級緩存與內(nèi)存,直至獲取到所述訪問指令需求的數(shù)據(jù)。
可選的,在獲取到所述訪問指令需求的數(shù)據(jù)之后,還包括:
記錄所述訪問指令獲取到的數(shù)據(jù)的位置。
可選的,所述根據(jù)所述訪問指令獲取到的數(shù)據(jù)的位置,修改所述訪問指令攜帶的延遲標(biāo)識和位置標(biāo)識,包括:
判斷已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置是否為一級緩存;
若是,將所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識向下置位;
若否,將所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識向上置位,并判斷已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置是否為對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存;
若否,則根據(jù)已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置,將所述訪問指令攜帶的位置標(biāo)識進(jìn)行置位,使所述訪問指令攜帶的位置標(biāo)識表征獲取到所述訪問指令需求的數(shù)據(jù)的緩存層或內(nèi)存。
可選的,在所述將所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識向下置位的步驟之后,包括:
判斷已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置是否包括對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存;
若是,則丟棄對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存獲取到所述訪問指令需求的數(shù)據(jù)。
相應(yīng)的,本申請還提供了一種訪問緩存的裝置,所述訪問緩存的裝置包括:
訪問指令讀取單元,用于讀取用于獲取數(shù)據(jù)的訪問指令;
延遲標(biāo)識判斷單元,用于根據(jù)所述訪問指令攜帶的延遲標(biāo)識判斷所述訪問指令是否會產(chǎn)生延遲;
緩存訪問預(yù)取單元,用于接收所述延遲標(biāo)識判斷單元的判斷結(jié)果,若產(chǎn)生延遲,則訪問緩存并根據(jù)所述訪問指令攜帶的位置標(biāo)識執(zhí)行預(yù)取操作;
標(biāo)識修改單元,用于根據(jù)所述訪問指令獲取到的數(shù)據(jù)的位置,修改所述訪問指令攜帶的延遲標(biāo)識和位置標(biāo)識。
可選的,所述延遲標(biāo)識判斷單元,具體用于根據(jù)所述訪問指令的緩存行上設(shè)置的使用比特標(biāo)注的標(biāo)識判斷所述訪問指令是否會產(chǎn)生延遲。
可選的,所述延遲標(biāo)識判斷單元,具體用于根據(jù)所述訪問指令攜帶的延遲標(biāo)識判斷所述訪問指令是否會產(chǎn)生數(shù)據(jù)缺失時逐層訪問緩存時產(chǎn)生的延遲或者所述訪問指令執(zhí)行計算時產(chǎn)生的延遲。
可選的,所述延遲標(biāo)識判斷單元,具體用于讀取所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識的數(shù)值判斷所述訪問指令是否會產(chǎn)生延遲。
可選的,所述延遲標(biāo)識判斷單元,包括:
數(shù)值讀取子單元,用于讀取所述訪問指令攜帶的使用二進(jìn)制比特標(biāo)注的延遲標(biāo)識的數(shù)值,判斷所述訪問指令攜帶的使用二進(jìn)制比特標(biāo)注的延遲標(biāo)識的數(shù)值是否大于1;
緩存訪問預(yù)取觸發(fā)子單元,用于接收所述數(shù)值讀取子單元的判斷結(jié)果,若大于1,則觸發(fā)所述緩存訪問預(yù)取單元。
可選的,所述緩存訪問預(yù)取單元,包括:
比特數(shù)值讀取子單元,用于讀取所述訪問指令攜帶的使用比特標(biāo)注的位置標(biāo)識的數(shù)值;
緩存訪問預(yù)取子單元,用于訪問一級緩存時,根據(jù)所述訪問指令攜帶的使用比特標(biāo)注的位置標(biāo)識的數(shù)值,訪問對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存進(jìn)行訪問。
可選的,所述緩存訪問預(yù)取單元,還包括:
數(shù)據(jù)獲取判斷子單元,用于在所述訪問一級緩存時,根據(jù)所述訪問指令攜帶的使用比特標(biāo)注的位置標(biāo)識的數(shù)值,訪問對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存進(jìn)行訪問之后,判斷在所述一級緩存和對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存中,是否獲取到所述訪問指令需求的數(shù)據(jù);
逐層訪問子單元,用于接收所述數(shù)據(jù)獲取判斷子單元的判斷結(jié)果,若否,則按照多層緩存的層級順序依次訪問每級緩存與內(nèi)存,直至獲取到所述訪問指令需求的數(shù)據(jù)。
可選的,所述訪問緩存的裝置,還包括:
位置記錄單元,用于記錄所述訪問指令獲取到的數(shù)據(jù)的位置。
可選的,所述標(biāo)識修改單元,包括:
位置判斷子單元,用于判斷已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置是否為一級緩存;
向下置位子單元,用于接收所述位置判斷判斷子單元的判斷結(jié)果,若是,將所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識向下置位;
向上置位子單元,用于接收所述位置判斷判斷子單元的判斷結(jié)果,若否,將所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識向上置位,并判斷已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置是否為對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存;
位置標(biāo)識置位子單元,用于接收所述向上置位子單元的判斷結(jié)果,若否,則根據(jù)已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置,將所述訪問指令攜帶的位置標(biāo)識進(jìn)行置位,使所述訪問指令攜帶的位置標(biāo)識表征獲取到所述訪問指令需求的數(shù)據(jù)的緩存層或內(nèi)存。
可選的,所述向下置位子單元,包括:
重復(fù)位置判斷子單元,用于在所述將所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識向下置位之后,判斷已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置是否包括對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存;
丟棄數(shù)據(jù)子單元,用于接收所述重復(fù)位置判斷子單元的判斷結(jié)果,若是,則丟棄對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存獲取到所述訪問指令需求的數(shù)據(jù)。
此外,本申請還提供了一種電子設(shè)備,所述電子設(shè)備包括:
顯示器;
處理器;
存儲器,用于存儲緩存并行訪問程序,所述程序在被所述處理器讀取執(zhí)行時,執(zhí)行如下操作:讀取用于獲取數(shù)據(jù)的訪問指令;根據(jù)所述訪問指令攜帶的延遲標(biāo)識判斷所述訪問指令是否會產(chǎn)生延遲;若產(chǎn)生延遲,則訪問緩存并根據(jù)所述訪問指令攜帶的位置標(biāo)識執(zhí)行預(yù)取操作;根據(jù)所述訪問指令獲取到的數(shù)據(jù)的位置,修改所述訪問指令攜帶的延遲標(biāo)識和位置標(biāo)識。
與現(xiàn)有技術(shù)相比,本申請具有以下優(yōu)點:
本申請?zhí)峁┑脑L問緩存的方法、訪問緩存的裝置以及電子設(shè)備,通過讀取用于獲取數(shù)據(jù)的訪問指令;根據(jù)所述訪問指令攜帶的延遲標(biāo)識判斷所述訪問指令是否會產(chǎn)生延遲;若產(chǎn)生延遲,則訪問緩存并根據(jù)所述訪問指令攜帶的位置標(biāo)識執(zhí)行預(yù)取操作;根據(jù)獲取到所述訪問指令需求的數(shù)據(jù)的位置,修改所述訪問指令攜帶的延遲標(biāo)識和位置標(biāo)識。所述技術(shù)方案解決了訪問緩存時,命中率不高的問題,降低了發(fā)生缺失的概率,并降低了在獲取目標(biāo)數(shù)據(jù)時逐級的訪問每級緩存帶來的訪問延遲,相應(yīng)的減少了訪問緩存時產(chǎn)生的功耗,提高了CPU的性能。
附圖說明
為了更清楚地說明本申請實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,還可以根據(jù)這些附圖獲得其他的附圖。
圖1示出了根據(jù)本申請的實施例提供的訪問緩存的方法的流程圖;
圖2示出了根據(jù)本申請的實施例提供的訪問緩存并根據(jù)所述訪問指令攜帶的位置標(biāo)識執(zhí)行預(yù)取操作的流程圖;
圖3示出了根據(jù)本申請的實施例提供的防止發(fā)生缺失方法的流程圖;
圖4示出了根據(jù)本申請的實施例提供的數(shù)據(jù)丟棄方法的流程圖;
圖5示出了根據(jù)本申請的實施例提供的訪問緩存的裝置的示意圖;
圖6示出了根據(jù)本申請的實施例提供的電子設(shè)備的示意圖。
具體實施方式
為了能夠更清楚地理解本申請的上述目的、特征和優(yōu)點,下面結(jié)合附圖和具體實施方式對本申請進(jìn)行進(jìn)一步的詳細(xì)描述。需要說明的是,在不沖突的情況下,本申請的實施例及實施例中的特征可以相互組合。
在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本申請。但是,本申請能夠以很多不同于在此描述的其它方式來實施,本領(lǐng)域技術(shù)人員可以在不違背本申請內(nèi)涵的情況下做類似推廣,因此,本申請不受下面公開的具體實施的限 制。
本申請的實施例提供了一種訪問緩存的方法以及一種訪問緩存的裝置,本申請的實施例同時提供了一種電子設(shè)備。在下面的實施例中逐一進(jìn)行詳細(xì)說明。
通過多層緩存架構(gòu)可以提高訪問性能,在訪問一級緩存時,若一級緩存中不存在目標(biāo)數(shù)據(jù),即,發(fā)生缺失則訪問二級緩存,若二級緩存中也不存在目標(biāo)數(shù)據(jù),則繼續(xù)訪問下一級緩存直至獲取到目標(biāo)數(shù)據(jù)。雖然多層緩存架構(gòu)設(shè)置一級與二級緩存的目的是減少訪問延遲,設(shè)置三級緩存目的是減少缺失率,但是多層緩存架構(gòu)引入的同時也增加了訪問每級緩存時的延遲,例如:從訪問一級緩存時發(fā)生缺失,到訪問二級緩存時需要6個周期,從訪問二級緩存時發(fā)生缺失,到訪問三級緩存時需要8個周期。由此可見,雖然設(shè)置多層緩存架構(gòu)的目的是為了減少訪問延遲,但是在訪問緩存時發(fā)生缺失,命中率不高的情況下,逐級的訪問每級緩存帶來的訪問延遲會逐級累加,最終帶來十分明顯的延遲,并且逐級的訪問每級緩存會產(chǎn)生冗余功耗。若同時訪問每級緩存,雖然能提高獲取目標(biāo)數(shù)據(jù)的命中率,降低缺失,但會帶來更多的冗余功耗。針對這一問題,本申請的技術(shù)方案通過讀取用于獲取數(shù)據(jù)的訪問指令,根據(jù)所述訪問指令攜帶的延遲標(biāo)識判斷所述訪問指令是否會產(chǎn)生延遲,若產(chǎn)生延遲,則訪問緩存并根據(jù)所述訪問指令攜帶的位置標(biāo)識執(zhí)行預(yù)取操作,根據(jù)所述訪問指令獲取到的數(shù)據(jù)的位置,修改所述訪問指令攜帶的延遲標(biāo)識和位置標(biāo)識,從而實現(xiàn)了訪問內(nèi)存時降低訪問延遲的功能。
本申請實施例所提供的訪問緩存的方法和裝置可應(yīng)用于計算機(jī)等智能設(shè)備中,也可以應(yīng)用于智能手機(jī)、掌上電腦、平板電腦等其他可以安裝應(yīng)用程序的電子設(shè)備中,以實現(xiàn)降低訪問內(nèi)存的延遲,方便用戶的使用。
為了便于理解本申請?zhí)峁┑募夹g(shù)方案,在對實施例進(jìn)行詳細(xì)描述之前,先對本申請的技術(shù)方案作簡要說明。
緩存就是數(shù)據(jù)交換的緩沖區(qū)(稱作Cache),某一硬件要讀取一個數(shù)據(jù)時,首先從一級緩存中查找,如果找到就立即讀取并送給CPU處理;如果沒有找到,就繼續(xù)訪問下一級緩存;如果在緩存中找不到的話則從速度相對較慢的內(nèi)存中讀取并送給CPU處理,,同時把這個數(shù)據(jù)所在的數(shù)據(jù)塊調(diào)入緩存中,可以使得以后對整塊數(shù)據(jù)的讀取都從緩存中進(jìn)行,不必再調(diào)用內(nèi)存。由于緩存的運行速度比內(nèi)存快得多,故緩存的作用就是幫助硬件更快地運行。
緩存通常采用多層緩存架構(gòu),包括一級緩存(Level 1Cache)簡稱L1 Cache,位于CPU內(nèi)核的旁邊,是與CPU結(jié)合最為緊密的CPU緩存,也是歷史上最早出現(xiàn)的CPU緩存。由于一級緩存的技術(shù)難度和制造成本最高,提高容量所帶來的技術(shù)難度增加和成本增加非常大,所帶來的性能提升卻不明顯,性價比很低,而且現(xiàn)有的一級緩存的命中率已經(jīng)很高,所以一級緩存是所有緩存中容量最小的,比二級緩存要小得多。
二級緩存(Level 2 Cache)簡稱L2 Cache是CPU的第二層高速緩存,分內(nèi)部和外部兩種芯片。內(nèi)部的芯片二級緩存運行速度與主頻相同,而外部的二級緩存則只有主頻的一半。L2高速緩存容量也會影響CPU的性能。
三級緩存(Level 3 Cache)簡稱L3 Cache分為兩種,早期的是外置,內(nèi)存延遲,同時提升大數(shù)據(jù)量計算時處理器的性能。降低內(nèi)存延遲和提升大數(shù)據(jù)量計算能力都很有幫助。而在服務(wù)器領(lǐng)域增加L3緩存在性能方面仍然有顯著的提升。設(shè)置第三級緩存的主要目的是減少缺失率。
內(nèi)存(Memory)是計算機(jī)中重要的部件之一,它是與CPU進(jìn)行溝通的橋梁。內(nèi)存也被稱為內(nèi)存儲器,其作用是用于暫時存放CPU中的運算數(shù)據(jù),以及與硬盤等外部存儲器交換的數(shù)據(jù)。只要計算機(jī)在運行中,CPU就會把需要運算的數(shù)據(jù)調(diào)到內(nèi)存中進(jìn)行運算,當(dāng)運算完成后CPU再將結(jié)果傳送出來,內(nèi)存的運行也決定了計算機(jī)的穩(wěn)定運行。
本申請的實施例提供了一種訪問緩存的方法。所述訪問緩存的方法實施例如下:
請參考圖1,其示出了根據(jù)本申請的實施例提供的訪問緩存的方法的流程圖。
所述訪問緩存的方法包括:
步驟S101,讀取用于獲取數(shù)據(jù)的訪問指令。
在本實施例中,所述讀取用于獲取數(shù)據(jù)的訪問指令,包括:從訪問指令存儲器中提取出所述用于獲取數(shù)據(jù)的訪問指令,并加載該訪問指令。其中,在步驟S101中,讀取用于獲取數(shù)據(jù)的訪問指令時,獲取所述訪問指令需要獲取的數(shù)據(jù)的數(shù)量信息。
需要說明的是,當(dāng)CPU執(zhí)行某一條訪問指令時,需要先把它從指令存儲器中提取出來,即完成提取指令的過程,然后對所述訪問指令進(jìn)行譯碼或測試,并產(chǎn)生相應(yīng)的操作控制信號,以便對所述訪問指令需要獲取的數(shù)據(jù)啟動相應(yīng)的動 作。例如一次內(nèi)存讀/寫操作,一個算術(shù)邏輯運算操作,或一個輸入/輸出操作等。所述訪問指令的執(zhí)行過程實際上就是從指令存儲器中提取指令、分析指令以及執(zhí)行指令的循環(huán)過程。
步驟S103,根據(jù)所述訪問指令攜帶的延遲標(biāo)識判斷所述訪問指令是否會產(chǎn)生延遲。
根據(jù)步驟S101中,讀取用于獲取數(shù)據(jù)的訪問指令時,還需讀取所述訪問指令上攜帶的延遲標(biāo)識。所述訪問指令攜帶的延遲標(biāo)識是在所述訪問指令的緩存行上設(shè)置的使用比特標(biāo)注的標(biāo)識。
在本實施例中,所述根據(jù)所述訪問指令攜帶的延遲標(biāo)識判斷所述訪問指令是否會產(chǎn)生延遲,可以采用如下方式實現(xiàn):讀取所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識的數(shù)值判斷所述訪問指令是否會產(chǎn)生延遲。
在CPU執(zhí)行訪問指令的過程中,若所述訪問指令在訪問緩存或訪問內(nèi)存時發(fā)生了延遲,那么在該訪問指令在之后再次執(zhí)行時仍然會在同一級緩存或內(nèi)存進(jìn)行訪問時發(fā)生延遲,導(dǎo)致性能阻塞。基于上述特性,通過預(yù)測阻塞可以判斷訪問指令在執(zhí)行時是否會產(chǎn)生延遲。
具體的,所述訪問指令的緩存行上設(shè)置的使用比特標(biāo)注的延遲標(biāo)識是由兩位二進(jìn)制比特進(jìn)行標(biāo)注,即在所述訪問指令的緩存行上設(shè)置兩位Bit 1和Bit 0進(jìn)行標(biāo)注,由于是二進(jìn)制,所以訪問指令攜帶的延遲標(biāo)識具有如下取值:
其中,Bit 1和Bit 0是所述訪問指令的緩存行上設(shè)置的兩位二進(jìn)制比特,Bit 1和Bit 0下面的4組二進(jìn)制數(shù)值是對應(yīng)于Bit 1和Bit 0的具體取值。
需要說明的是,在上述取值中,Bit 1和Bit 0取值為0和0以及Bit 1和Bit 0取值為0和1時,即:兩位二進(jìn)制比特的數(shù)值在轉(zhuǎn)化為十進(jìn)制的數(shù)值時小于1,說明所述訪問指令在訪問緩存時不會發(fā)生延遲;Bit 1和Bit 0取值為1和0以及Bit 1和Bit 0取值為1和1時,即:兩位二進(jìn)制比特的數(shù)值在轉(zhuǎn)化為十進(jìn)制的數(shù)值時大于1,說明所述訪問指令在訪問緩存時會發(fā)生延遲。
在上述4組Bit 1和Bit 0的具體取值中,每組取值是根據(jù)所述訪問指令實際執(zhí)行的結(jié)果進(jìn)行賦值的,并且每組取值對應(yīng)的具體意義是預(yù)先設(shè)定的并用于判斷所述訪問指令在執(zhí)行時是否會發(fā)生延遲。
需要說明的是,在本實施例中,所述訪問指令在訪問緩存時會發(fā)生的延遲,包括以下兩種延遲:
第一種是,數(shù)據(jù)缺失時逐層訪問緩存時產(chǎn)生的延遲。
需要說明的是,CPU通過采用多層緩存架構(gòu)提高訪問性能,訪問時的順序為一級緩存,二級緩存,三級緩存,內(nèi)存,但是訪問每一級緩存時都會產(chǎn)生不同程度的延遲影響性能。
在第一種情況下,訪問一級緩存后發(fā)現(xiàn)缺失(一級緩存中未獲取到需求的數(shù)據(jù))才訪問二級緩存,訪問二級緩存后發(fā)現(xiàn)缺失(二級緩存中未獲取到需求的數(shù)據(jù))才訪問三級緩存,直至訪問到內(nèi)存。
具體的,訪問一級緩存后發(fā)現(xiàn)缺失,到訪問二級緩存時需要6個周期,訪問二級緩存后發(fā)現(xiàn)缺失,到訪問三級緩存時需要8個周期。
第二種是,所述訪問指令執(zhí)行計算時產(chǎn)生的延遲。
需要說明的是,所述訪問指令在訪問緩存后執(zhí)行復(fù)雜計算時產(chǎn)生的延遲。例如,在緩存中獲取到需求的數(shù)據(jù)后,基于該數(shù)據(jù)進(jìn)行計算時,由于計算式或計算方法本身十分的復(fù)雜,而產(chǎn)生的計算延遲。
在具體實施時,步驟S103根據(jù)所述訪問指令攜帶的延遲標(biāo)識判斷所述訪問指令是否會產(chǎn)生延遲,可以采用如下方式實現(xiàn):讀取所述訪問指令攜帶的使用二進(jìn)制比特標(biāo)注的延遲標(biāo)識的數(shù)值,判斷所述訪問指令攜帶的使用二進(jìn)制比特標(biāo)注的延遲標(biāo)識的數(shù)值是否大于1,若大于1,說明所述訪問指令會產(chǎn)生延遲,并執(zhí)行訪問緩存并根據(jù)所述訪問指令攜帶的位置標(biāo)識執(zhí)行預(yù)取操作的步驟;若小于等于1,則按照正常訪問緩存的順序訪問緩存。
需要說明的是,所述判斷所述訪問指令攜帶的使用二進(jìn)制比特標(biāo)注的延遲標(biāo)識的數(shù)值是否大于1具體是,將二進(jìn)制比特標(biāo)注的延遲標(biāo)識的數(shù)值轉(zhuǎn)換為十進(jìn)制數(shù)值,并判斷該十進(jìn)制數(shù)值是否大于1。
步驟S105,若產(chǎn)生延遲,則訪問緩存并根據(jù)所述訪問指令攜帶的位置標(biāo)識執(zhí)行預(yù)取操作。
如果步驟S103根據(jù)所述訪問指令攜帶的使用二進(jìn)制比特標(biāo)注的延遲標(biāo)識的 數(shù)值大于1,說明所述訪問指令在訪問緩存或者內(nèi)存時會發(fā)生延遲,這種情況下執(zhí)行步驟105。
在判斷出所述訪問指令在訪問緩存或者內(nèi)存時會發(fā)生延遲后,就可以針對所述訪問指令攜帶的位置標(biāo)識執(zhí)行預(yù)取操作,所述訪問緩存并根據(jù)所述訪問指令攜帶的位置標(biāo)識執(zhí)行預(yù)取操作,具體包括步驟S105-1至步驟S105-2,下面結(jié)合圖2進(jìn)行說明。
請參考圖2,其示出了根據(jù)本申請的實施例提供的訪問緩存并根據(jù)所述訪問指令攜帶的位置標(biāo)識執(zhí)行預(yù)取操作的流程圖。
步驟S105-1,讀取所述訪問指令攜帶的使用比特標(biāo)注的位置標(biāo)識的數(shù)值。
在CPU執(zhí)行訪問指令的過程中,若所述訪問指令在訪問緩存或訪問內(nèi)存時發(fā)生了延遲,那么在該訪問指令在之后再次執(zhí)行時仍然會在同一級緩存或內(nèi)存進(jìn)行訪問時發(fā)生延遲,導(dǎo)致性能阻塞,即:說明在同一級緩存或內(nèi)存中獲取到數(shù)據(jù)?;谏鲜鎏匦裕ㄟ^預(yù)測阻塞可以判斷所述訪問指令需要獲取的數(shù)據(jù)在哪一級緩存或內(nèi)存。
需要說明的是,所述訪問指令攜帶的延遲標(biāo)識是在所述訪問指令的緩存行上設(shè)置的使用比特標(biāo)注的標(biāo)識。
具體的,所述訪問指令的緩存行上設(shè)置的使用比特標(biāo)注的位置標(biāo)識是由兩位二進(jìn)制比特進(jìn)行標(biāo)注,即在所述訪問指令的緩存行上設(shè)置兩位Bit 3和Bit 2進(jìn)行標(biāo)注,由于是二進(jìn)制,所以訪問指令攜帶的延遲標(biāo)識具有如下取值:
其中,Bit 3和Bit 2是所述訪問指令的緩存行上設(shè)置的兩位二進(jìn)制比特,Bit 3和Bit 2下面的4組二進(jìn)制數(shù)值是對應(yīng)于Bit 3和Bit 2的具體取值。
需要說明的是,在上述取值中,Bit 3和Bit 2取值為0和0時,該兩位二進(jìn)制比特的數(shù)值在轉(zhuǎn)化為十進(jìn)制的數(shù)值為0,說明在一級緩存中獲取到所述訪問指令需求的數(shù)據(jù),即:所述訪問指令在執(zhí)行時產(chǎn)生的延遲來源于執(zhí)行復(fù)雜的計 算;Bit 3和Bit 2取值為0和1時,該兩位二進(jìn)制比特的數(shù)值在轉(zhuǎn)化為十進(jìn)制的數(shù)值為1,說明在二級緩存中獲取到所述訪問指令需求的數(shù)據(jù);Bit 3和Bit 2取值為1和0時,該兩位二進(jìn)制比特的數(shù)值在轉(zhuǎn)化為十進(jìn)制的數(shù)值為2,說明在三級緩存中獲取到所述訪問指令需求的數(shù)據(jù);Bit 3和Bit 2取值為1和1時,該兩位二進(jìn)制比特的數(shù)值在轉(zhuǎn)化為十進(jìn)制的數(shù)值為3,說明在內(nèi)存中獲取到所述訪問指令需求的數(shù)據(jù)。
可以理解的,根據(jù)產(chǎn)生延遲的位置,可以推算出所述訪問指令需求的數(shù)據(jù)的位置是由于:在開始讀取緩存中的數(shù)據(jù)到讀取到需求的數(shù)據(jù)需要若干的周期,例如:在正常訪問時,在訪問二級緩存時,由于先要讀取一級緩存后(一級緩存中未獲取到需求的數(shù)據(jù),到訪問二級緩存時需要6個周期),才開始讀取二級緩存,在讀取二級緩存是同樣需要周期(例如需要8個周期),由于在二級緩存中獲取到所述訪問指令需求的數(shù)據(jù)后,不繼續(xù)訪問三級緩存,所以不會產(chǎn)生讀取三級緩存的周期,所以在訪問緩存時最后產(chǎn)生延遲的位置就是所述訪問指令需求的數(shù)據(jù)的位置。
在上述4組Bit 3和Bit 2的具體取值中,每組取值是根據(jù)所述訪問指令實際獲取到需求的數(shù)據(jù)的位置進(jìn)行賦值的,并且每組取值對應(yīng)的具體意義是預(yù)先設(shè)定的并用于判斷所述訪問指令需求的數(shù)據(jù)的位置。
步驟S105-2,訪問一級緩存時,根據(jù)所述訪問指令攜帶的使用比特標(biāo)注的位置標(biāo)識的數(shù)值,訪問對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存進(jìn)行訪問。
本步驟接收步驟S105-1中,讀取到的所述訪問指令攜帶的使用比特標(biāo)注的位置標(biāo)識的數(shù)值,在訪問一級緩存時,根據(jù)所述訪問指令攜帶的使用比特標(biāo)注的位置標(biāo)識的數(shù)值,訪問對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存進(jìn)行訪問。
例如,讀取到的所述訪問指令攜帶的使用比特標(biāo)注的位置標(biāo)識的數(shù)值為2,則在讀取一級緩存中的數(shù)據(jù)時,并行訪問三級緩存中的數(shù)據(jù)。
需要說明的是,所述訪問對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存進(jìn)行訪問,可以是在所述訪問指令訪問一級緩存的同時,訪問對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存進(jìn)行訪問;也可以是在所述訪問指令訪問一級緩存的過程中,訪問對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存進(jìn)行訪問,只要是在所述訪問指令訪問完一級緩存之前,訪問對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存進(jìn)行訪問,均在本申請的保護(hù)范圍之內(nèi)。
在執(zhí)行所述訪問一級緩存時,根據(jù)所述訪問指令攜帶的使用比特標(biāo)注的位置標(biāo)識的數(shù)值,訪問對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存進(jìn)行訪問的步驟之后,為了防止所述訪問指令在訪問一級緩存和執(zhí)行預(yù)取操作時發(fā)生缺失,本實施例的技術(shù)方案提供了一種優(yōu)選實施方式,在優(yōu)選方式下,具體包括步驟S106-1至S106-2,下面結(jié)合圖3作進(jìn)一步說明。
請參考圖3,其示出了根據(jù)本申請的實施例提供的防止發(fā)生缺失方法的流程圖。
步驟S106-1,判斷在所述一級緩存和對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存中,是否獲取到所述訪問指令需求的數(shù)據(jù)。
根據(jù)步驟S101中,讀取用于獲取數(shù)據(jù)的訪問指令時,獲取所述訪問指令需要獲取的數(shù)據(jù)的數(shù)量信息,判斷在所述一級緩存和對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存中,是否獲取到所述訪問指令需求的數(shù)據(jù)。
具體的,讀取在所述一級緩存和對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存中的數(shù)據(jù),判斷在讀取時是否獲取到與所述訪問指令需要獲取的數(shù)據(jù)的數(shù)量信息與數(shù)據(jù)類型相同的數(shù)據(jù)。
步驟S106-2,若否,則按照多層緩存的層級順序依次訪問每級緩存與內(nèi)存,直至獲取到所述訪問指令需求的數(shù)據(jù)。
在本實施例中,所述則按照多層緩存的層級順序依次訪問每級緩存與內(nèi)存,直至獲取到所述訪問指令需求的數(shù)據(jù),可以采用如下方式實現(xiàn):若在讀取時沒有獲取到與所述訪問指令需要獲取的數(shù)據(jù)的數(shù)量信息與數(shù)據(jù)類型相同的數(shù)據(jù),則按照二級緩存、三級緩存和內(nèi)存的順序依次訪問,直至獲取到所述訪問指令需求的數(shù)據(jù)。
例如,讀取到的所述訪問指令攜帶的使用比特標(biāo)注的位置標(biāo)識的數(shù)值為2,則在讀取一級緩存中的數(shù)據(jù)時,并行訪問三級緩存中的數(shù)據(jù)后,沒有獲取到所述訪問指令需求的數(shù)據(jù),則訪問二級緩存,若在二級緩存中獲取到所述訪問指令需求的數(shù)據(jù),則停止訪問緩存且不防問內(nèi)存。
在獲取到所述訪問指令需求的數(shù)據(jù)后,為了得到所述獲取到所述訪問指令需求的數(shù)據(jù)的位置,本實施例的技術(shù)方案提供了一種優(yōu)選實施方式,在優(yōu)選方式下,在獲取到所述訪問指令需求的數(shù)據(jù)之后,記錄所述訪問指令獲取到的數(shù)據(jù)的位置。
例如,在二級緩存中獲取到所述訪問指令需求的數(shù)據(jù),則記錄所述訪問指令獲取到的數(shù)據(jù)的位置為二級緩存。
步驟S107,根據(jù)所述訪問指令獲取到的數(shù)據(jù)的位置,修改所述訪問指令攜帶的延遲標(biāo)識和位置標(biāo)識。
本實施例中,在執(zhí)行步驟S105若產(chǎn)生延遲,則訪問緩存并根據(jù)所述訪問指令攜帶的位置標(biāo)識執(zhí)行預(yù)取操作后,為了使所述訪問指令攜帶的延遲標(biāo)識和位置標(biāo)識更加準(zhǔn)確,防止由于數(shù)據(jù)位置變動而產(chǎn)生的誤差,所述根據(jù)所述訪問指令獲取到的數(shù)據(jù)的位置,修改所述訪問指令攜帶的延遲標(biāo)識和位置標(biāo)識,具體包括步驟S107-1至S107-4如下:
步驟S107-1,判斷已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置是否為一級緩存。
在本實施例中,所述判斷已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置是否為一級緩存,可以采用如下方式實現(xiàn):獲取記錄的所述訪問指令獲取到的數(shù)據(jù)的位置,并判斷該記錄的所述訪問指令獲取到的數(shù)據(jù)的位置是否為一級緩存。
步驟S107-2,若是,將所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識向下置位。
本步驟接收步驟S107-1中的判斷結(jié)果,若記錄的所述訪問指令獲取到的數(shù)據(jù)的位置為一級緩存,則將所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識向下置位。
具體的,所述將所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識向下置位是:獲取所述訪問指令的緩存行上設(shè)置兩位Bit 1和Bit 0的取值,將Bit 0的取值減1,若Bit 0的取值為0,由于是二進(jìn)制,則向Bit 1借位。
例如,Bit 1和Bit 0的取值1和1,則將Bit 0的取值減1后,Bit 1和Bit 0的取值為1和0;若Bit 1和Bit 0的取值1和0,則將Bit 0的取值減1時向Bit 1借位,Bit 1和Bit 0的取值為0和1。
需要說明的是,若Bit 1和Bit 0的取值0和0,將所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識向下置位后,Bit 1和Bit 0的取值還是0和0。
在執(zhí)行預(yù)取操作時,為了防止讀取一級緩存和對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存時獲取重復(fù)數(shù)據(jù),本實施例的技術(shù)方案提供了一種優(yōu)選實施方式,在優(yōu)選方式下,具體包括步驟S107-2-1至S107-2-2,下面結(jié)合圖4作進(jìn)一步說 明。
請參考圖4,其示出了根據(jù)本申請的實施例提供的數(shù)據(jù)丟棄方法的流程圖。
步驟S107-2-1,判斷已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置是否包括對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存。
根據(jù)已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置,判斷已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置中是否還包含對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存,即記錄了2個所述訪問指令獲取到的數(shù)據(jù)的位置。
例如,一級緩存和三級緩存中都包含所述訪問指令需求的數(shù)據(jù),且在訪問時執(zhí)行預(yù)取操作的位置為三級緩存,則記錄所述訪問指令獲取到的數(shù)據(jù)的位置時,會記錄下一級緩存和三級緩存。
步驟S107-2-2,若是,則丟棄對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存獲取到所述訪問指令需求的數(shù)據(jù)。
本步驟接收步驟S107-2-1中的判斷結(jié)果,若已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置中還包含對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存,則將從對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存獲取到所述訪問指令需求的數(shù)據(jù)丟棄。
例如,從一級緩存和三級緩存中都獲取到了所述訪問指令需求的數(shù)據(jù),則將從三級緩存中通過預(yù)取操作獲取到的數(shù)據(jù)丟棄。
步驟S107-3,若否,將所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識向上置位,并判斷已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置是否為對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存。
本步驟接收步驟S107-1中的判斷結(jié)果,若記錄的所述訪問指令獲取到的數(shù)據(jù)的位置不為一級緩存,則將所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識向上置位,并判斷已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置是否為對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存。
具體的,所述將所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識向上置位是:獲取所述訪問指令的緩存行上設(shè)置兩位Bit 1和Bit 0的取值,將Bit 0的取值加1,若Bit 0的取值為1,由于是二進(jìn)制,則向Bit 1進(jìn)位。
例如,Bit 1和Bit 0的取值0和1,則將Bit 0的取值加1時向Bit 1進(jìn)位,Bit 1和Bit 0的取值為1和0;若Bit 1和Bit 0的取值1和0,則將Bit0的取值加1,Bit 1和Bit 0的取值為1和1。
需要說明的是,若Bit 1和Bit 0的取值1和1,將所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識向上置位后,由于比特飽和,所以Bit 1和Bit 0的取值還是1和1。
在本實施例中,所述判斷已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置是否為對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存,可以采用如下方式實現(xiàn):獲取記錄的所述訪問指令獲取到的數(shù)據(jù)的位置與對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存,判斷記錄的所述訪問指令獲取到的數(shù)據(jù)的位置與對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存是否一致。
例如,記錄的所述訪問指令獲取到的數(shù)據(jù)的位置為二級緩存,對應(yīng)于所述位置標(biāo)識的數(shù)值的位置是三級緩存。
步驟S107-4,若否,則根據(jù)已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置,將所述訪問指令攜帶的位置標(biāo)識進(jìn)行置位,使所述訪問指令攜帶的位置標(biāo)識表征獲取到所述訪問指令需求的數(shù)據(jù)的緩存層或內(nèi)存。
本步驟接收步驟S107-3中的判斷結(jié)果,若記錄的所述訪問指令獲取到的數(shù)據(jù)的位置與對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存不一致,則根據(jù)已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置,將所述訪問指令攜帶的位置標(biāo)識進(jìn)行置位,使所述訪問指令攜帶的位置標(biāo)識表征獲取到所述訪問指令需求的數(shù)據(jù)的緩存層或內(nèi)存。
在本實施例中,所述根據(jù)已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置,將所述訪問指令攜帶的位置標(biāo)識進(jìn)行置位,使所述訪問指令攜帶的位置標(biāo)識表征獲取到所述訪問指令需求的數(shù)據(jù)的緩存層或內(nèi)存,可以采用如下方式實現(xiàn):獲取記錄的所述訪問指令獲取到的數(shù)據(jù)的位置,將記錄的所述訪問指令獲取到的數(shù)據(jù)的位置按照預(yù)先設(shè)定Bit 3和Bit 2的對應(yīng)關(guān)系,轉(zhuǎn)換為對應(yīng)Bit 3和Bit 2的具體取值,并按照Bit 3和Bit 2的具體取值將所述訪問指令攜帶的位置標(biāo)識進(jìn)行置位。
例如,記錄的所述訪問指令獲取到的數(shù)據(jù)的位置為二級緩存,所述訪問指令攜帶的位置標(biāo)識Bit 3和Bit 2的取值為1和0表征預(yù)取操作時訪問三級緩存,則將記錄的所述訪問指令獲取到的數(shù)據(jù)的位置為二級緩存轉(zhuǎn)換為對應(yīng)Bit 3和Bit 2的具體取值0和1,使所述訪問指令攜帶的位置標(biāo)識Bit 3和Bit 2的取值進(jìn)行置位,將所述訪問指令攜帶的位置標(biāo)識Bit 3和Bit 2的取值更新為0 和1。
由于傳統(tǒng)的訪問緩存與內(nèi)存的步驟是,按照緩存的多層緩存架構(gòu)依次進(jìn)行每級的訪問,因此在訪問緩存和內(nèi)存時會產(chǎn)生訪問延遲,例如:所述訪問指令需求的數(shù)據(jù)在內(nèi)存中,在訪問時按照多層緩存架構(gòu)依次進(jìn)行每級的訪問,則在訪問到內(nèi)存之前,需要訪問一級緩存、二級緩存以及三級緩存,從而產(chǎn)生訪問延遲。而本申請的實施例提供的技術(shù)方案通過預(yù)測阻塞可以判斷訪問指令在執(zhí)行時是否會產(chǎn)生延遲,并判斷所述訪問指令需要獲取的數(shù)據(jù)在哪一級緩存或內(nèi)存,在按照多層緩存架構(gòu)依次進(jìn)行每級的訪問的同時,對所述訪問指令需要獲取的數(shù)據(jù)的預(yù)測位置進(jìn)行訪問,節(jié)約訪問緩存或內(nèi)存時的時間,提高了獲取數(shù)據(jù)的命中率,降低了訪問緩存或內(nèi)存時的缺失率,相應(yīng)的減少了訪問緩存時產(chǎn)生的功耗,提高了CPU的性能。
在上述的實施例中,提供了一種訪問緩存的方法,與上述訪問緩存的方法相對應(yīng)的,本申請還提供了一種訪問緩存的裝置。由于裝置的實施例基本相似于方法的實施例,所以描述得比較簡單,相關(guān)之處參見方法實施例的部分說明即可。下述描述的裝置實施例僅僅是示意性的。所述訪問緩存的裝置實施例如下:
請參考圖5,其示出了根據(jù)本申請的實施例提供的訪問緩存的裝置的示意圖。
所述訪問緩存的裝置,包括:訪問指令讀取單元501、延遲標(biāo)識判斷單元503、緩存訪問預(yù)取單元505以及標(biāo)識修改單元507;
所述訪問指令讀取單元501,用于讀取用于獲取數(shù)據(jù)的訪問指令;
所述延遲標(biāo)識判斷單元503,用于根據(jù)所述訪問指令攜帶的延遲標(biāo)識判斷所述訪問指令是否會產(chǎn)生延遲;
所述緩存訪問預(yù)取單元505,用于接收所述延遲標(biāo)識判斷單元的判斷結(jié)果,若產(chǎn)生延遲,則訪問緩存并根據(jù)所述訪問指令攜帶的位置標(biāo)識執(zhí)行預(yù)取操作;
所述標(biāo)識修改單元507,用于根據(jù)所述訪問指令獲取到的數(shù)據(jù)的位置,修改所述訪問指令攜帶的延遲標(biāo)識和位置標(biāo)識。
可選的,所述延遲標(biāo)識判斷單元503,具體用于根據(jù)所述訪問指令的緩存行上設(shè)置的使用比特標(biāo)注的標(biāo)識判斷所述訪問指令是否會產(chǎn)生延遲。
可選的,所述延遲標(biāo)識判斷單元503,具體用于根據(jù)所述訪問指令攜帶的延遲標(biāo)識判斷所述訪問指令是否會產(chǎn)生數(shù)據(jù)缺失時逐層訪問緩存時產(chǎn)生的延遲或者所述訪問指令執(zhí)行計算時產(chǎn)生的延遲。
可選的,所述延遲標(biāo)識判斷單元503,具體用于讀取所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識的數(shù)值判斷所述訪問指令是否會產(chǎn)生延遲。
可選的,所述延遲標(biāo)識判斷單元503,,包括:數(shù)值讀取子單元以及緩存訪問預(yù)取觸發(fā)子單元;
所述數(shù)值讀取子單元,用于讀取所述訪問指令攜帶的使用二進(jìn)制比特標(biāo)注的延遲標(biāo)識的數(shù)值,判斷所述訪問指令攜帶的使用二進(jìn)制比特標(biāo)注的延遲標(biāo)識的數(shù)值是否大于1;
所述緩存訪問預(yù)取觸發(fā)子單元,用于接收所述數(shù)值讀取子單元的判斷結(jié)果,若大于1,則觸發(fā)所述緩存訪問預(yù)取單元。
可選的,所述緩存訪問預(yù)取單元505,包括:比特數(shù)值讀取子單元以及緩存訪問預(yù)取子單元;
所述比特數(shù)值讀取子單元,用于讀取所述訪問指令攜帶的使用比特標(biāo)注的位置標(biāo)識的數(shù)值;
所述緩存訪問預(yù)取子單元,用于訪問一級緩存時,根據(jù)所述訪問指令攜帶的使用比特標(biāo)注的位置標(biāo)識的數(shù)值,訪問對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存進(jìn)行訪問。
可選的,所述緩存訪問預(yù)取單元505,還包括:數(shù)據(jù)獲取判斷子單元以及逐層訪問子單元;
所述數(shù)據(jù)獲取判斷子單元,用于在所述訪問一級緩存時,根據(jù)所述訪問指令攜帶的使用比特標(biāo)注的位置標(biāo)識的數(shù)值,訪問對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存進(jìn)行訪問之后,判斷在所述一級緩存和對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存中,是否獲取到所述訪問指令需求的數(shù)據(jù);
所述逐層訪問子單元,用于接收所述數(shù)據(jù)獲取判斷子單元的判斷結(jié)果,若否,則按照多層緩存的層級順序依次訪問每級緩存與內(nèi)存,直至獲取到所述訪問指令需求的數(shù)據(jù)。
可選的,所述訪問緩存的裝置,還包括:位置記錄單元;
所述位置記錄單元,用于記錄所述訪問指令獲取到的數(shù)據(jù)的位置。
可選的,所述標(biāo)識修改單元507,包括:位置判斷子單元、向下置位子單元、向上置位子單元以及位置標(biāo)識置位子單元;
所述位置判斷子單元,用于判斷已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置是否為一級緩存;
所述向下置位子單元,用于接收所述位置判斷判斷子單元的判斷結(jié)果,若是,將所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識向下置位;
所述向上置位子單元,用于接收所述位置判斷判斷子單元的判斷結(jié)果,若否,將所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識向上置位,并判斷已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置是否為對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存;
所述位置標(biāo)識置位子單元,用于接收所述向上置位子單元的判斷結(jié)果,若否,則根據(jù)已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置,將所述訪問指令攜帶的位置標(biāo)識進(jìn)行置位,使所述訪問指令攜帶的位置標(biāo)識表征獲取到所述訪問指令需求的數(shù)據(jù)的緩存層或內(nèi)存。
可選的,所述向下置位子單元,包括:重復(fù)位置判斷子單元以及丟棄數(shù)據(jù)子單元;
所述重復(fù)位置判斷子單元,用于在所述將所述訪問指令攜帶的使用比特標(biāo)注的延遲標(biāo)識向下置位之后,判斷已記錄的所述訪問指令獲取到的數(shù)據(jù)的位置是否包括對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存;
所述丟棄數(shù)據(jù)子單元,用于接收所述重復(fù)位置判斷子單元的判斷結(jié)果,若是,則丟棄對應(yīng)于所述位置標(biāo)識的數(shù)值的緩存層或內(nèi)存獲取到所述訪問指令需求的數(shù)據(jù)。
在上述的實施例中,提供了一種訪問緩存的方法以及一種訪問緩存的裝置,此外,本申請還提供了一種電子設(shè)備;所述電子設(shè)備實施例如下:
請參考圖6,其示出了根據(jù)本申請的實施例提供的電子設(shè)備的示意圖。
所述電子設(shè)備,包括:顯示器601、處理器603、存儲器605;
所述存儲器605,用于存儲緩存并行訪問程序,所述程序在被所述處理器讀取執(zhí)行時,執(zhí)行如下操作:讀取用于獲取數(shù)據(jù)的訪問指令;根據(jù)所述訪問指令攜帶的延遲標(biāo)識判斷所述訪問指令是否會產(chǎn)生延遲;若產(chǎn)生延遲,則訪問緩存并根據(jù)所述訪問指令攜帶的位置標(biāo)識執(zhí)行預(yù)取操作;根據(jù)所述訪問指令獲取到的數(shù)據(jù)的位置,修改所述訪問指令攜帶的延遲標(biāo)識和位置標(biāo)識。
在一個典型的配置中,計算設(shè)備包括一個或多個處理器(CPU)、輸入/輸出 接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計算機(jī)可讀介質(zhì)中的非永久性存儲器,隨機(jī)存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內(nèi)存是計算機(jī)可讀介質(zhì)的示例。
1、計算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機(jī)的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲器(SRAM)、動態(tài)隨機(jī)存取存儲器(DRAM)、其他類型的隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號和載波。
2、本領(lǐng)域技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)或計算機(jī)程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。
本申請雖然以較佳實施例公開如上,但其并不是用來限定本申請,任何本領(lǐng)域技術(shù)人員在不脫離本申請的精神和范圍內(nèi),都可以做出可能的變動和修改,因此本申請的保護(hù)范圍應(yīng)當(dāng)以本申請權(quán)利要求所界定的范圍為準(zhǔn)。