本公開涉及數(shù)據(jù)處理。更具體地,本公開涉及緩存要進(jìn)行數(shù)據(jù)處理的數(shù)據(jù)。
背景技術(shù):
在數(shù)據(jù)處理裝置中可以提供緩存以便存儲(chǔ)被存儲(chǔ)在存儲(chǔ)器中的數(shù)據(jù)項(xiàng)的本地副本,以使得當(dāng)那些數(shù)據(jù)項(xiàng)被數(shù)據(jù)處理裝置頻繁地訪問時(shí),不需要針對(duì)每一次訪問引起與從存儲(chǔ)器獲取那些數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的延時(shí)。
緩存可以以多個(gè)緩存等級(jí)的形式被提供,其中緩存等級(jí)和存儲(chǔ)數(shù)據(jù)項(xiàng)的存儲(chǔ)器形成層次結(jié)構(gòu),其中靠近數(shù)據(jù)處理裝置的處理元件提供較小較快的緩存,并且靠近存儲(chǔ)器提供較大較慢的緩存。
緩存可以以組相聯(lián)(set-associative)的方式被安排,其中提供了可用以存儲(chǔ)數(shù)據(jù)項(xiàng)的多個(gè)路徑。給定數(shù)據(jù)項(xiàng)在緩存中的存儲(chǔ)位置通常由該數(shù)據(jù)項(xiàng)的存儲(chǔ)器地址的一部分確定,但是多個(gè)路徑為數(shù)據(jù)項(xiàng)提供了對(duì)應(yīng)數(shù)量的可能的存儲(chǔ)位置。這減輕了與兩個(gè)數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的問題,這兩個(gè)數(shù)據(jù)項(xiàng)都被數(shù)據(jù)處理裝置頻繁地訪問,并具有相同的存儲(chǔ)器地址部分并且因此在緩存中具有相同的存儲(chǔ)位置。如果對(duì)于這兩個(gè)數(shù)據(jù)項(xiàng)在緩存中只存在一個(gè)可能的存儲(chǔ)位置,則訪問一個(gè)數(shù)據(jù)項(xiàng)將會(huì)驅(qū)逐另一個(gè)數(shù)據(jù)項(xiàng),并且對(duì)兩個(gè)數(shù)據(jù)項(xiàng)的頻繁訪問將會(huì)導(dǎo)致“系統(tǒng)顛簸(thrashing)”。
對(duì)于數(shù)據(jù)處理裝置中的緩存的實(shí)現(xiàn)方式,緩存的運(yùn)行效率和速度是重要的因素,并且仍存在改善這兩個(gè)特性的機(jī)會(huì)。
技術(shù)實(shí)現(xiàn)要素:
至少一些實(shí)施例具有緩存,該緩存包括:
多個(gè)路徑,多個(gè)路徑中的每一路徑包括數(shù)據(jù)陣列,其中,由緩存所存 儲(chǔ)的數(shù)據(jù)項(xiàng)被存儲(chǔ)在多個(gè)路徑中的一個(gè)路徑的數(shù)據(jù)陣列中;以及
包括多個(gè)條目的路徑追蹤器,多個(gè)條目中的每一條目用于存儲(chǔ)數(shù)據(jù)項(xiàng)標(biāo)識(shí)符,以及用于與數(shù)據(jù)項(xiàng)標(biāo)識(shí)符相關(guān)聯(lián)地存儲(chǔ)對(duì)多個(gè)路徑中的選定路徑的指示,以指示由數(shù)據(jù)項(xiàng)標(biāo)識(shí)符所標(biāo)識(shí)的數(shù)據(jù)項(xiàng)被存儲(chǔ)在選定路徑中,
其中,每一條目還用于與數(shù)據(jù)項(xiàng)標(biāo)識(shí)符相關(guān)聯(lián)地存儲(chǔ)錯(cuò)過指示符,其中,當(dāng)針對(duì)由數(shù)據(jù)項(xiàng)標(biāo)識(shí)符所標(biāo)識(shí)的數(shù)據(jù)項(xiàng)的查找已經(jīng)導(dǎo)致緩存錯(cuò)過時(shí),錯(cuò)過指示符由緩存來設(shè)置。
至少一些實(shí)施例提供了緩存數(shù)據(jù)項(xiàng)的方法,該方法包括:
將數(shù)據(jù)項(xiàng)存儲(chǔ)在緩存的多個(gè)路徑中的路徑的數(shù)據(jù)陣列中;
將數(shù)據(jù)項(xiàng)標(biāo)識(shí)符存儲(chǔ)在包括多個(gè)條目的路徑追蹤器的條目中;
與路徑追蹤器的條目中的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符相關(guān)聯(lián)地存儲(chǔ)對(duì)多個(gè)路徑中的選定路徑的指示,以指示由數(shù)據(jù)項(xiàng)標(biāo)識(shí)符所標(biāo)識(shí)的數(shù)據(jù)項(xiàng)被存儲(chǔ)在選定路徑中;
與路徑追蹤器中所存儲(chǔ)的每一數(shù)據(jù)項(xiàng)標(biāo)識(shí)符相關(guān)聯(lián)地存儲(chǔ)錯(cuò)過指示符;以及
當(dāng)針對(duì)由數(shù)據(jù)項(xiàng)標(biāo)識(shí)符所標(biāo)識(shí)的數(shù)據(jù)項(xiàng)的查找已經(jīng)導(dǎo)致緩存錯(cuò)過時(shí),設(shè)置錯(cuò)過指示符。
至少一些實(shí)施例具有緩存,該緩存包括:
用于將數(shù)據(jù)項(xiàng)存儲(chǔ)在緩存的多個(gè)路徑中的路徑的數(shù)據(jù)陣列中的裝置;
用于將數(shù)據(jù)項(xiàng)標(biāo)識(shí)符存儲(chǔ)在包括多個(gè)條目的路徑追蹤器的條目中的裝置;
用于與路徑追蹤器的條目中的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符相關(guān)聯(lián)地存儲(chǔ)對(duì)多個(gè)路徑中的選定路徑的指示以指示由數(shù)據(jù)項(xiàng)標(biāo)識(shí)符所標(biāo)識(shí)的數(shù)據(jù)項(xiàng)被存儲(chǔ)在選定路徑中的裝置;
用于與路徑追蹤器中所存儲(chǔ)的每一數(shù)據(jù)項(xiàng)標(biāo)識(shí)符相關(guān)聯(lián)地存儲(chǔ)錯(cuò)過指示符的裝置;以及
用于當(dāng)針對(duì)由數(shù)據(jù)項(xiàng)標(biāo)識(shí)符所標(biāo)識(shí)的數(shù)據(jù)項(xiàng)的查找已經(jīng)導(dǎo)致緩存錯(cuò)過時(shí)設(shè)置錯(cuò)過指示符的裝置。
附圖說明
本發(fā)明將只以示例的方式參考附圖中所示的其實(shí)施例被進(jìn)一步描述,其中:
圖1示意性地示出了一個(gè)實(shí)施例中包括緩存的數(shù)據(jù)處理裝置;
圖2示意性地更詳細(xì)地示出了一個(gè)實(shí)施例中的緩存;
圖3A示意性地示出了一個(gè)實(shí)施例中的路徑追蹤器;
圖3B示意性地示出了一個(gè)實(shí)施例中由緩存所接收的地址和路徑追蹤器中所存儲(chǔ)的地址之間的匹配的確定;以及
圖4示出了當(dāng)實(shí)現(xiàn)一個(gè)實(shí)施例的方法時(shí)實(shí)行的一系列步驟。
具體實(shí)施方式
根據(jù)本技術(shù)的至少一些緩存的實(shí)施例包括:多個(gè)路徑,多個(gè)路徑中的每一路徑包括數(shù)據(jù)陣列,其中由緩存所存儲(chǔ)的數(shù)據(jù)項(xiàng)被存儲(chǔ)在多個(gè)路徑中的一個(gè)路徑的數(shù)據(jù)陣列中;以及包括多個(gè)條目的路徑追蹤器,多個(gè)條目中的每一條目用于存儲(chǔ)數(shù)據(jù)項(xiàng)標(biāo)識(shí)符,以及用于與數(shù)據(jù)項(xiàng)標(biāo)識(shí)符相關(guān)聯(lián)地存儲(chǔ)對(duì)多個(gè)路徑中的選定路徑的指示,以指示由數(shù)據(jù)項(xiàng)標(biāo)識(shí)符所標(biāo)識(shí)的數(shù)據(jù)項(xiàng)被存儲(chǔ)在選定路徑中,其中每一條目還用于與數(shù)據(jù)項(xiàng)標(biāo)識(shí)符相關(guān)聯(lián)地存儲(chǔ)錯(cuò)過指示符,其中當(dāng)針對(duì)由該數(shù)據(jù)項(xiàng)標(biāo)識(shí)符所標(biāo)識(shí)的數(shù)據(jù)項(xiàng)的查找已經(jīng)導(dǎo)致緩存錯(cuò)過時(shí),錯(cuò)過指示符由緩存設(shè)置。
因?yàn)榫彺嬷兴鎯?chǔ)的給定數(shù)據(jù)項(xiàng)可以被存儲(chǔ)在緩存中若干可能的存儲(chǔ)位置中的一個(gè)中,其中可能的存儲(chǔ)位置的數(shù)量由緩存中路徑的數(shù)量來給定,所以緩存具有多個(gè)路徑(即,它是組相聯(lián)的)。在緩存中針對(duì)數(shù)據(jù)項(xiàng)存在多個(gè)可能的存儲(chǔ)位置的情況下,提供路徑追蹤器以便對(duì)存儲(chǔ)特定數(shù)據(jù)項(xiàng)(由其數(shù)據(jù)項(xiàng)標(biāo)識(shí)符(例如其存儲(chǔ)器地址或其存儲(chǔ)器地址的一部分)所標(biāo)識(shí)的)的緩存的路徑給出早期指示,例如其使得緩存中的完全查找過程能夠被避免。此外,路徑追蹤器的每一條目還被安排為能夠存儲(chǔ)錯(cuò)過指示符,該錯(cuò)過指示符在針對(duì)緩存中錯(cuò)過的對(duì)應(yīng)數(shù)據(jù)項(xiàng)的查找之后被設(shè)置,換言之,假設(shè)已知對(duì)應(yīng)的數(shù)據(jù)項(xiàng)未被存儲(chǔ)在緩存中。這樣一來,本技術(shù)使得緩存能夠受益于在緩存中存儲(chǔ)與“已知的緩存錯(cuò)過”有關(guān)的信息,而無需 為了這么做而提供額外的專用組件,因?yàn)檫@種功能通過利用現(xiàn)有的路徑追蹤器并且擴(kuò)展路徑追蹤器(該路徑追蹤器以其它方式存儲(chǔ)數(shù)據(jù)項(xiàng)被存儲(chǔ)在緩存中何處的指示)的每一條目中所存儲(chǔ)的信息而被提供以包括對(duì)數(shù)據(jù)項(xiàng)的已知緩存錯(cuò)過的指示。
在一些實(shí)施例中,緩存還包括:具有用于存儲(chǔ)數(shù)據(jù)項(xiàng)標(biāo)識(shí)符的多個(gè)標(biāo)簽條目的至少一個(gè)標(biāo)簽陣列,該至少一個(gè)標(biāo)簽陣列用于將數(shù)據(jù)項(xiàng)標(biāo)識(shí)符存儲(chǔ)在與多個(gè)路徑中的一個(gè)路徑的數(shù)據(jù)陣列中的數(shù)據(jù)項(xiàng)的存儲(chǔ)位置相對(duì)應(yīng)的至少一個(gè)標(biāo)簽陣列的標(biāo)簽條目中;以及訪問電路,其用于響應(yīng)于對(duì)所接收的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符的接收來在至少一個(gè)標(biāo)簽陣列中和多個(gè)路徑中的每一路徑的數(shù)據(jù)陣列中執(zhí)行查找過程,其中路徑追蹤器響應(yīng)于所接收的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符和路徑追蹤器的條目中的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符之間的匹配以使得由訪問電路來抑制在至少一個(gè)標(biāo)簽陣列中的查找過程。因此,在至少一個(gè)標(biāo)簽陣列被提供以使得緩存能夠執(zhí)行查找以確定緩存中給定數(shù)據(jù)項(xiàng)的存儲(chǔ)位置(路徑)的情況下,因?yàn)闊o論是否路徑追蹤器中的條目指示數(shù)據(jù)項(xiàng)被存儲(chǔ)在緩存的特定路徑中(并且因此確定該路徑的標(biāo)簽陣列查找不是必需的),還是路徑追蹤器中的條目指示數(shù)據(jù)項(xiàng)是“已知的緩存錯(cuò)過”(并且因此標(biāo)簽陣列查找不是必需的,因?yàn)樵诰彺嬷形窗l(fā)現(xiàn)數(shù)據(jù)項(xiàng)),當(dāng)路徑追蹤器中存在匹配時(shí),通過抑制至少一個(gè)標(biāo)簽陣列中的查找過程可以節(jié)省緩存的時(shí)間和能量消耗。從一個(gè)視角來看,路徑追蹤器實(shí)際上可以被視為標(biāo)簽陣列的小子集,并且路徑追蹤器較小的事實(shí)使得路徑追蹤器能夠被更快地訪問(并且因此當(dāng)發(fā)現(xiàn)匹配時(shí),及時(shí)抑制實(shí)際標(biāo)簽陣列訪問)。
在一些實(shí)施例中,路徑追蹤器響應(yīng)于所接收的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符和路徑追蹤器的條目中的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符之間的匹配,并且當(dāng)對(duì)選定路徑的指示被存儲(chǔ)在該條目中時(shí),以使得抑制訪問電路對(duì)多個(gè)路徑中的每一路徑而不是選定路徑的數(shù)據(jù)陣列的訪問。因此,在路徑追蹤器中的條目指示已知所請(qǐng)求的數(shù)據(jù)項(xiàng)(如所接收的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符所標(biāo)識(shí)的)被存儲(chǔ)在其中的路徑時(shí),對(duì)數(shù)據(jù)陣列的訪問可被部分地避免,因?yàn)樵撛L問只需要在已知數(shù)據(jù)項(xiàng)被存儲(chǔ)在其中的路徑中被執(zhí)行。由此節(jié)省了在其它路徑中執(zhí)行訪問的能量消耗。
在一些實(shí)施例中,路徑追蹤器響應(yīng)于所接收的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符和路徑追蹤器的條目中的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符之間的匹配,并且當(dāng)錯(cuò)過指示符與該數(shù)據(jù)項(xiàng)標(biāo)識(shí)符相關(guān)聯(lián)地被存儲(chǔ)時(shí),以使得抑制訪問電路對(duì)所有多個(gè)路徑的數(shù)據(jù)陣列的訪問。(因?yàn)殄e(cuò)過指示符被與對(duì)應(yīng)的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符相關(guān)聯(lián)地設(shè)置和存儲(chǔ))在已知數(shù)據(jù)項(xiàng)未被存儲(chǔ)在緩存中的情況下,通過抑制所有數(shù)據(jù)陣列中的訪問,與訪問數(shù)據(jù)陣列相關(guān)聯(lián)的能量消耗可以被節(jié)省。
在一些實(shí)施例中,對(duì)路徑追蹤器中所存儲(chǔ)的選定路徑的指示包括針對(duì)多個(gè)路徑中的每一路徑的禁用指示符,并且當(dāng)針對(duì)路徑追蹤器的條目中的該路徑的禁用指示符被設(shè)置時(shí),訪問電路響應(yīng)于所接收的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符和路徑追蹤器的條目中的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符之間的匹配而禁止對(duì)緩存的路徑的數(shù)據(jù)陣列的訪問。對(duì)選定路徑的指示可以被存儲(chǔ)在各種路徑中,例如該指示可以是對(duì)特定路徑的顯示引用,但是在其中針對(duì)每一路徑的禁用指示符被提供的這些實(shí)施例中,禁用指示符可以被用來禁止對(duì)相對(duì)應(yīng)的數(shù)據(jù)陣列的訪問(即,在該數(shù)據(jù)陣列中不執(zhí)行任何訪問)。
在一些實(shí)施例中,路徑追蹤器中的錯(cuò)過指示符的存儲(chǔ)包括為所有多個(gè)路徑全部設(shè)置禁用指示符。因此,通過設(shè)置所有可用的禁用指示符(即,針對(duì)所有路徑),確保對(duì)于已知的緩存錯(cuò)過,將不執(zhí)行對(duì)緩存的路徑的訪問。
在一些實(shí)施例中,緩存構(gòu)成了存儲(chǔ)器層次結(jié)構(gòu)的一部分,并且緩存是一級(jí)緩存(level one cache)。一級(jí)緩存針對(duì)響應(yīng)速度通常將具有存儲(chǔ)器層次結(jié)構(gòu)中最嚴(yán)格的要求(即,最快的響應(yīng)時(shí)間需求),并且由于其所需要的對(duì)數(shù)據(jù)處理裝置的處理元件(例如,處理器核心)的接近,(根據(jù)其在集成電路中的配置)還將經(jīng)常具有最少的可用面積。因此,本技術(shù)存儲(chǔ)對(duì)緩存中存儲(chǔ)給定數(shù)據(jù)項(xiàng)的路徑的指示和已知的緩存錯(cuò)過的指示的能力可以是特定適用于一級(jí)緩存中的能力。此外,一級(jí)緩存處的典型數(shù)據(jù)訪問模式可以特別地使用本技術(shù)。具體地,多個(gè)緩存錯(cuò)過請(qǐng)求可以在請(qǐng)求到達(dá)二級(jí)(或更低級(jí))緩存的時(shí)候被濾除,但這通常不是在最低級(jí)(L1)緩存的情況,L1緩存可能經(jīng)歷來自多個(gè)不同指令的查找,這些查找都需要相同的緩存線,并且對(duì)于這些查找經(jīng)存在未解決的錯(cuò)過請(qǐng)求,但是這通常不能足夠 快地被獲知以抑制L1緩存查找。
在一些實(shí)施例中,路徑追蹤器還用于接收與尋求對(duì)其的訪問的所請(qǐng)求的數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的存儲(chǔ)屬性信息,并且當(dāng)存儲(chǔ)屬性信息指示所請(qǐng)求的數(shù)據(jù)項(xiàng)不可緩存時(shí),路徑追蹤器被安排為抑制在路徑追蹤器中用所設(shè)置的錯(cuò)過指示符來為所請(qǐng)求的數(shù)據(jù)項(xiàng)創(chuàng)建條目。數(shù)據(jù)項(xiàng)的不可緩存性可能是為什么針對(duì)緩存中數(shù)據(jù)項(xiàng)的查找導(dǎo)致緩存錯(cuò)過的一個(gè)原因,并且因此如果關(guān)于所請(qǐng)求的數(shù)據(jù)項(xiàng)不可緩存的信息是可獲得的,則抑制在路徑追蹤器中用所設(shè)置的錯(cuò)過指示符來創(chuàng)建條目可以使得路徑追蹤器的條目對(duì)于可緩存的其它數(shù)據(jù)項(xiàng)是可獲得的,并且因此,對(duì)于這些數(shù)據(jù)項(xiàng)可以獲得將相關(guān)聯(lián)的信息存儲(chǔ)在本技術(shù)的路徑追蹤器中的益處。
在一些實(shí)施例中,存儲(chǔ)屬性信息被從轉(zhuǎn)譯后備緩沖器接收。存儲(chǔ)屬性信息可以被從多個(gè)源接收,盡管其通常將是給定存儲(chǔ)器位置的頁表中最終存儲(chǔ)的信息,并且這是信息可以被從轉(zhuǎn)譯后備緩沖器(TLB)接收的情況,該TLB被與尋求對(duì)存儲(chǔ)器位置處的數(shù)據(jù)項(xiàng)的訪問的處理元件相關(guān)聯(lián)地提供,以提供對(duì)這樣的屬性信息的更快訪問。事實(shí)上,轉(zhuǎn)譯后備緩沖器本身是可應(yīng)用本技術(shù)的各種緩存。
在一些實(shí)施例中,數(shù)據(jù)項(xiàng)標(biāo)識(shí)符至少是數(shù)據(jù)項(xiàng)的存儲(chǔ)器地址的一部分。數(shù)據(jù)項(xiàng)標(biāo)識(shí)符可以采取各種形式,并且可以包括數(shù)據(jù)項(xiàng)的整個(gè)存儲(chǔ)器地址或者存儲(chǔ)器地址的一部分,只要這部分足夠唯一地標(biāo)識(shí)該數(shù)據(jù)項(xiàng)。
在一些實(shí)施例中,路徑追蹤器的每一條目還包括數(shù)據(jù)項(xiàng)標(biāo)識(shí)符擴(kuò)展器,其中當(dāng)確定在所接收的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符和路徑追蹤器的條目中的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符之間是否存在匹配時(shí),路徑追蹤器響應(yīng)于數(shù)據(jù)項(xiàng)標(biāo)識(shí)符擴(kuò)展器被設(shè)置為忽略預(yù)定的標(biāo)識(shí)符部分。因此,該數(shù)據(jù)項(xiàng)標(biāo)識(shí)符擴(kuò)展器使得例如一系列所接收的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符能夠被發(fā)現(xiàn)是與路徑追蹤器的條目中所存儲(chǔ)的給定數(shù)據(jù)項(xiàng)標(biāo)識(shí)符相匹配。因此,無需將額外的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符存儲(chǔ)在路徑追蹤器的條目中,落入該范圍內(nèi)的任何所接收的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符(例如,存儲(chǔ)器地址)然后可以被發(fā)現(xiàn)為相匹配,并且用于響應(yīng)該匹配的以上所描述的技術(shù)可以被實(shí)現(xiàn)。
在一些實(shí)施例中,預(yù)定的標(biāo)識(shí)符部分包括數(shù)據(jù)項(xiàng)標(biāo)識(shí)符的最低有效部 分。為了發(fā)現(xiàn)匹配而被忽略的那部分可以采取各種形式,但是忽略數(shù)據(jù)項(xiàng)標(biāo)識(shí)符的最低有效部分使得存儲(chǔ)器地址的連續(xù)范圍(例如,兩個(gè)連續(xù)的存儲(chǔ)器地址)能夠與路徑追蹤器的條目中的一個(gè)數(shù)據(jù)項(xiàng)標(biāo)識(shí)符相匹配。正被執(zhí)行的數(shù)據(jù)處理指令的性質(zhì)可以使得一些連續(xù)的存儲(chǔ)器地址緊接著被訪問,從而導(dǎo)致這些實(shí)施例的特定適用性。
至少一些實(shí)施例提供了緩存數(shù)據(jù)項(xiàng)的方法,包括:將數(shù)據(jù)項(xiàng)存儲(chǔ)在緩存的多個(gè)路徑中的路徑的數(shù)據(jù)陣列中;將數(shù)據(jù)項(xiàng)標(biāo)識(shí)符存儲(chǔ)在包括多個(gè)條目的路徑追蹤器的條目中;與路徑追蹤器的條目中的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符相關(guān)聯(lián)地存儲(chǔ)對(duì)多個(gè)路徑中的選定路徑的指示,以指示由數(shù)據(jù)項(xiàng)標(biāo)識(shí)符標(biāo)識(shí)的數(shù)據(jù)項(xiàng)被存儲(chǔ)于選定路徑中;與路徑追蹤器中所存儲(chǔ)的每一數(shù)據(jù)項(xiàng)標(biāo)識(shí)符相關(guān)聯(lián)地存儲(chǔ)錯(cuò)過指示符;以及當(dāng)針對(duì)由該數(shù)據(jù)項(xiàng)標(biāo)識(shí)符所標(biāo)識(shí)的數(shù)據(jù)項(xiàng)的查找已經(jīng)導(dǎo)致緩存錯(cuò)過時(shí),設(shè)置錯(cuò)過指示符。
至少一些實(shí)施例提供緩存,包括:用于將數(shù)據(jù)項(xiàng)存儲(chǔ)在緩存的多個(gè)路徑中的路徑的數(shù)據(jù)陣列中的裝置;用于將數(shù)據(jù)項(xiàng)標(biāo)識(shí)符存儲(chǔ)在包括多個(gè)條目的路徑追蹤器的條目中的裝置;用于與路徑追蹤器的條目中的數(shù)據(jù)項(xiàng)標(biāo)識(shí)符相關(guān)聯(lián)地存儲(chǔ)對(duì)多個(gè)路徑中的選定路徑的指示以指示由數(shù)據(jù)項(xiàng)標(biāo)識(shí)符所標(biāo)識(shí)的數(shù)據(jù)項(xiàng)被存儲(chǔ)在選定路徑中的裝置;用于與路徑追蹤器中所存儲(chǔ)的每一數(shù)據(jù)項(xiàng)標(biāo)識(shí)符相關(guān)聯(lián)地存儲(chǔ)錯(cuò)過指示符的裝置;以及用于當(dāng)針對(duì)由該數(shù)據(jù)項(xiàng)標(biāo)識(shí)符所標(biāo)識(shí)的數(shù)據(jù)項(xiàng)的查找已經(jīng)導(dǎo)致緩存錯(cuò)過時(shí)設(shè)置錯(cuò)過指示符的裝置。
圖1示意性地示出了一個(gè)實(shí)施例中的數(shù)據(jù)處理裝置。數(shù)據(jù)處理裝置包括處理器核心10。處理器核心10具有執(zhí)行管線12,處理器核心10通過執(zhí)行管線12來執(zhí)行數(shù)據(jù)處理操作。在執(zhí)行這些數(shù)據(jù)處理操作時(shí),處理器核心10從存儲(chǔ)數(shù)據(jù)項(xiàng)的存儲(chǔ)器14獲取數(shù)據(jù)項(xiàng)。應(yīng)該注意到,這里“數(shù)據(jù)項(xiàng)”指代指令和根據(jù)這些指令進(jìn)行處理的主題的數(shù)據(jù)值。存儲(chǔ)器14構(gòu)成了存儲(chǔ)器層次結(jié)構(gòu)的一部分,存儲(chǔ)器層次結(jié)構(gòu)還包括第3級(jí)(L3)緩存16、第2級(jí)(L2)緩存18和兩個(gè)第一級(jí)(L1)緩存20和22,其中L1緩存20是專用指令緩存,并且L1緩存22是專用數(shù)據(jù)緩存。在執(zhí)行管線12和存儲(chǔ)器14之間提供這三級(jí)緩存使得處理器核心10能夠避免每次數(shù)據(jù)項(xiàng) 被(以本領(lǐng)域普通技術(shù)人員熟悉的但是為簡(jiǎn)單起見這里未進(jìn)一步描述的方式)訪問時(shí)與從存儲(chǔ)器14頻繁地獲取那些數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的延時(shí)。
當(dāng)尋求對(duì)給定數(shù)據(jù)項(xiàng)的訪問時(shí),執(zhí)行管線通過虛擬地址的方式來指定該數(shù)據(jù)項(xiàng),該虛擬地址必須被轉(zhuǎn)換成物理地址以用于緩存層次結(jié)構(gòu)和存儲(chǔ)器中。存儲(chǔ)器14中所存儲(chǔ)的頁表中給出了由執(zhí)行管線所使用的虛擬地址和緩存與存儲(chǔ)器中所使用的物理地址之間的轉(zhuǎn)換,但是為使得虛擬地址能夠更快地轉(zhuǎn)換成物理地址,這些轉(zhuǎn)換也被緩存,μTLB 24和26以及TLB 28和30形成它們自己的轉(zhuǎn)換層次結(jié)構(gòu),其中TLB是μTLB的支持緩存(backing cache),并且二者都可以被用來滿足對(duì)L1緩存的請(qǐng)求,例如如果L1緩存請(qǐng)求在μTLB中錯(cuò)過,則(這些(μ)TLB構(gòu)成其一部分的)MMU檢查TLB以便滿足L1緩存查找。
數(shù)據(jù)處理裝置還包括經(jīng)由L2緩存18和L3緩存16來共享對(duì)存儲(chǔ)器14的訪問的另一(又一)處理器核心32。在內(nèi)部,又一處理器核心32可以以與處理器核心10相似的方式被配置。由于對(duì)緩存層次結(jié)構(gòu)和處理器14中的數(shù)據(jù)項(xiàng)的共享訪問,還提供相干性控制34,該相干性控制34監(jiān)控由處理器核心10和又一處理器核心32對(duì)數(shù)據(jù)項(xiàng)的訪問,并且確保遵循合適的相干性協(xié)議,以使得不會(huì)因?yàn)閮蓚€(gè)處理器核心都訪問和修改相同的數(shù)據(jù)項(xiàng)而發(fā)生沖突。這些相干性協(xié)議的實(shí)現(xiàn)方式的細(xì)節(jié)對(duì)本領(lǐng)域的普通技術(shù)人員也是已知的,并且為簡(jiǎn)單起見在此并未給出。
圖2示意性地更詳細(xì)地示出了一個(gè)實(shí)施例中的根據(jù)本技術(shù)的緩存的配置,該實(shí)施例例如可以在圖1中所示的L1緩存20和22中實(shí)現(xiàn)。緩存40是組相聯(lián)的緩存,其中給定數(shù)據(jù)項(xiàng)(由其存儲(chǔ)器地址所指定的)可以被存儲(chǔ)在緩存中的多個(gè)位置,也就是被存儲(chǔ)在緩存的多個(gè)路徑之一中。為簡(jiǎn)化說明,圖2中所示的緩存40只具有2條路徑,但本技術(shù)不限于特定數(shù)量的路徑,并且具有例如4條或8條路徑(等等)的緩存的其它實(shí)施例也被考慮。因此,參考圖2,緩存40中所存儲(chǔ)的給定數(shù)據(jù)項(xiàng)被存儲(chǔ)在路徑0的數(shù)據(jù)陣列42中或者路徑1的數(shù)據(jù)陣列44中。標(biāo)簽陣列46還聯(lián)合數(shù)據(jù)陣列42和44而被提供,該標(biāo)簽陣列46中存儲(chǔ)了數(shù)據(jù)陣列之一中所存儲(chǔ)的數(shù)據(jù)項(xiàng)的存儲(chǔ)器地址的標(biāo)簽部分,以便使得緩存能夠執(zhí)行查找過程以確定所請(qǐng) 求的數(shù)據(jù)項(xiàng)(由其存儲(chǔ)器地址所指定的)是否被存儲(chǔ)在緩存中。標(biāo)簽陣列46事實(shí)上被分成兩部分,與路徑0相對(duì)應(yīng)的第一標(biāo)簽陣列和與路徑1相對(duì)應(yīng)的第二標(biāo)簽陣列。
緩存40的訪問電路48被配置為在標(biāo)簽陣列46中形成查找過程,并且被配置為基于所接收的存儲(chǔ)器地址來訪問數(shù)據(jù)陣列42和44。本領(lǐng)域的普通技術(shù)人員將熟悉組相聯(lián)緩存的這種特征,因此在此未給出查找過程的進(jìn)一步細(xì)節(jié)。然而,查找和訪問過程本質(zhì)上包括訪問電路48使用存儲(chǔ)器地址的索引部分來對(duì)標(biāo)簽陣列46與數(shù)據(jù)陣列42和44中的給定一組條目進(jìn)行選擇,其中如果存儲(chǔ)器地址的標(biāo)簽部分與路徑0的標(biāo)簽陣列或路徑1的標(biāo)簽陣列中所存儲(chǔ)的標(biāo)簽部分相匹配,則已經(jīng)發(fā)現(xiàn)緩存“命中(hit)”,也就是所請(qǐng)求的數(shù)據(jù)項(xiàng)然后已知被存儲(chǔ)在對(duì)應(yīng)的數(shù)據(jù)陣列(即,42或44)中。
在標(biāo)簽陣列46中實(shí)行查找過程的同時(shí),相同索引還被用來讀出數(shù)據(jù)陣列42和數(shù)據(jù)陣列44的對(duì)應(yīng)條目,以避免與對(duì)標(biāo)簽陣列及然后對(duì)數(shù)據(jù)陣列的連續(xù)引用以及訪問相關(guān)聯(lián)的延時(shí)。起因于標(biāo)簽陣列46中的查找的命中被信令至選擇器49,該選擇器49然后相應(yīng)地控制多路復(fù)用器50以便之后輸出所請(qǐng)求的數(shù)據(jù)項(xiàng)。如果緩存錯(cuò)過起因于查找過程(即,所接收的地址的標(biāo)簽部分與任一標(biāo)簽陣列的經(jīng)索引的條目中所存儲(chǔ)的標(biāo)簽部分不相匹配),則選擇器49阻止從數(shù)據(jù)陣列42或44中讀出的數(shù)據(jù)項(xiàng)的二者之一輸出。不論已經(jīng)發(fā)生緩存命中還是緩存錯(cuò)過,查找過程的結(jié)果都還被信令至控制單元52,該控制單元52維持對(duì)緩存40的整體控制并且可以例如當(dāng)發(fā)生緩存錯(cuò)過時(shí),向緩存層次結(jié)構(gòu)的下一級(jí)發(fā)信號(hào)以便所請(qǐng)求的數(shù)據(jù)項(xiàng)被從緩存層次結(jié)構(gòu)的下一級(jí)獲取或者請(qǐng)求仍被進(jìn)一步傳遞。
根據(jù)本技術(shù),緩存40還被提供有路徑追蹤器54,在圖2示出的示例實(shí)施例中該路徑追蹤器54具有四個(gè)條目56。為了本公開的目的,這些條目56中的每一條目被示出為經(jīng)安排以存儲(chǔ)以下信息:足以唯一地標(biāo)識(shí)緩存中所存儲(chǔ)的數(shù)據(jù)項(xiàng)的地址信息、以及有效性信息、路徑信息和“已知的緩存錯(cuò)過”信息。此外,路徑追蹤器存儲(chǔ)否則將來自標(biāo)簽陣列的一些額外的緩存狀態(tài)信息(這里未明確示出),以便使得標(biāo)簽陣列訪問能夠被完全 跳過。有效性信息(例如,指示對(duì)應(yīng)的條目有效還是無效的單一位)被提供以便于對(duì)路徑追蹤器54中的條目56的管理。路徑信息被路徑追蹤器54用來存儲(chǔ)已知將對(duì)應(yīng)的數(shù)據(jù)項(xiàng)(由其存儲(chǔ)器地址所指定的)存儲(chǔ)在緩存中何處(具體地,數(shù)據(jù)項(xiàng)被存儲(chǔ)在緩存的哪個(gè)路徑中)的指示。因此,當(dāng)存儲(chǔ)器地址被緩存40接收時(shí),控制單元52參考路徑追蹤器54的條目進(jìn)行檢查以確定是否存在路徑追蹤器54的條目56中所存儲(chǔ)的對(duì)應(yīng)的(有效)地址,并且如果存在,則該數(shù)據(jù)項(xiàng)被指示為存儲(chǔ)在緩存的哪個(gè)路徑中。基于該信息,路徑追蹤器54向訪問電路58發(fā)信號(hào)表示已經(jīng)發(fā)現(xiàn)有效的地址匹配,并且因此訪問電路48抑制標(biāo)簽陣列46中的查找(由于已知所請(qǐng)求的數(shù)據(jù)項(xiàng)被存儲(chǔ)在哪個(gè)路徑42或44中,因此可以節(jié)省在標(biāo)簽陣列46中執(zhí)行查找過程的時(shí)間和能量消耗)。此外,訪問電路48使得除由路徑追蹤器54的對(duì)應(yīng)條目56所指示的路徑之外的所有其它路徑被禁用,以使得只有已知其中存儲(chǔ)了所請(qǐng)求的數(shù)據(jù)項(xiàng)的數(shù)據(jù)陣列被訪問,并且數(shù)據(jù)項(xiàng)被從該數(shù)據(jù)陣列讀出。從訪問電路48到選擇器49的重寫信號(hào)使得選擇器49能夠使多路復(fù)用器50輸出合適的數(shù)據(jù)項(xiàng)。
此外,路徑追蹤器54的條目56包括“已知的緩存錯(cuò)過”(KCM)信息。在該實(shí)施例中可以作為指示KCM狀態(tài)或非KCM狀態(tài)的單一位被提供的該指示被用來指示針對(duì)該數(shù)據(jù)項(xiàng)(由相同條目中的地址信息所指定)的先前查找已經(jīng)導(dǎo)致緩存錯(cuò)過。換言之,已知對(duì)應(yīng)的數(shù)據(jù)項(xiàng)當(dāng)前未被存儲(chǔ)在緩存40中。因此,在針對(duì)標(biāo)簽陣列46而實(shí)行的查找過程導(dǎo)致緩存錯(cuò)過的情況下,該緩存錯(cuò)過被信令至控制52,該控制52使得路徑追蹤器54中的對(duì)應(yīng)的條目被使用所設(shè)置的KCM指示符創(chuàng)建或更新。因此,當(dāng)由緩存40所接收的所請(qǐng)求的數(shù)據(jù)項(xiàng)的存儲(chǔ)器地址與路徑追蹤器54中的有效條目相匹配時(shí),由于已知所請(qǐng)求的數(shù)據(jù)項(xiàng)未被存儲(chǔ)在任一數(shù)據(jù)陣列中,所以如果KCM指示符被設(shè)置,則路徑追蹤器54使得訪問電路48禁止對(duì)數(shù)據(jù)陣列42和數(shù)據(jù)陣列44的訪問,并且可以節(jié)省訪問每一數(shù)據(jù)陣列的時(shí)間和能量消耗。應(yīng)注意到,路徑追蹤器被配置為不能夠設(shè)置路徑指示以及同時(shí)用于有效條目的KCM標(biāo)記,以使得路徑追蹤器中的有效條目可以被用來或者指示緩存中的給定數(shù)據(jù)項(xiàng)的存儲(chǔ)位置或者指示不存在來自緩存的給定數(shù) 據(jù)項(xiàng),但是不同時(shí)指示二者。還應(yīng)注意到,如圖2中所示,由緩存40所接收的地址還可以伴隨有來自TLB(或μTLB)的屬性信息,并且這些信息可以包括關(guān)于所請(qǐng)求的數(shù)據(jù)項(xiàng)是可緩存還是不可緩存的信息。在所請(qǐng)求的數(shù)據(jù)項(xiàng)被指示為不可緩存的情況下,則控制單元52被配置為抑制路徑追蹤器54中的對(duì)應(yīng)條目的創(chuàng)建。應(yīng)注意到,如以上所提到的,路徑追蹤器實(shí)際上可以被實(shí)施為(一個(gè)或多個(gè))標(biāo)簽陣列的小子集,并且因此當(dāng)(一個(gè)或多個(gè))標(biāo)簽陣列中的對(duì)應(yīng)條目被更新時(shí),路徑追蹤器中的條目必須被無效,或者以其它方式適當(dāng)?shù)馗隆?/p>
圖3A示意性地示出了一個(gè)實(shí)施例中的路徑追蹤器的配置。該路徑追蹤器的條目60(類似于圖2中所示的路徑追蹤器54的條目56)保存每一條目的有效性和地址信息。此外,每一條目60保存“擴(kuò)展匹配”指示符和針對(duì)緩存的每一路徑的禁用指示符。在圖3A的示例實(shí)施例中,路徑追蹤器與雙向緩存相關(guān)聯(lián)地被提供,并且因此對(duì)于每一條目60存在兩個(gè)禁用指示符。針對(duì)每一條目保存的禁用信息將針對(duì)圖2中的路徑追蹤器54的每一條目56所存儲(chǔ)的“KCM”信息和“路徑”進(jìn)行結(jié)合。當(dāng)僅僅一個(gè)禁用位被設(shè)置時(shí),如條目62和64的情況下,其然后指示所請(qǐng)求的數(shù)據(jù)項(xiàng)被存儲(chǔ)在未被禁用的路徑中。換言之,在發(fā)現(xiàn)針對(duì)條目62的有效地址匹配的情況下,則將知道該數(shù)據(jù)項(xiàng)被存儲(chǔ)在路徑0中。相似地,如果發(fā)現(xiàn)針對(duì)條目64的有效地址匹配,則將知道該數(shù)據(jù)項(xiàng)被存儲(chǔ)在路徑1中。相反地,在兩個(gè)禁用位都被設(shè)置的情況下(或者更一般地,針對(duì)所有路徑的所有禁用位被設(shè)置),這相當(dāng)于在圖2的示例實(shí)施例中被設(shè)置的KCM位。換言之,如果發(fā)現(xiàn)針對(duì)條目66的有效地址匹配,則將知道對(duì)對(duì)應(yīng)數(shù)據(jù)項(xiàng)的請(qǐng)求先前已經(jīng)導(dǎo)致緩存錯(cuò)過,并且對(duì)應(yīng)的數(shù)據(jù)項(xiàng)當(dāng)前未被存儲(chǔ)在緩存中。注意到,圖3A中所示的路徑追蹤器以與圖2的實(shí)施例相似的方式被配置為不能夠針對(duì)有效條目將兩個(gè)(所有)路徑禁用都設(shè)置為0,以使得路徑追蹤器中的有效條目可以被用來或者指示緩存中的給定數(shù)據(jù)項(xiàng)的存儲(chǔ)位置或者指示不存在來自緩存的給定數(shù)據(jù)項(xiàng),但是不同時(shí)指示二者。注意到在該示出的實(shí)施例中,有效位能夠被從路徑追蹤器中消除,并且個(gè)體禁用能夠替代地被用于共同地指示條目是否有效。
為了利用路徑追蹤器的每一條目的禁用位,訪問電路的配置在圖3A的下面部分被示出,其中每一路徑的禁用值由AND(與)門68和70合并(其得出指示有效地址匹配是否已經(jīng)作為它們的其它輸出被發(fā)現(xiàn)的值)以形成針對(duì)每一路徑的禁用信號(hào)。指示是否已經(jīng)發(fā)現(xiàn)有效地址匹配的值還被直接用作標(biāo)簽陣列禁用信號(hào)。因此,無論何時(shí)在路徑追蹤器的條目60中發(fā)現(xiàn)針對(duì)條目的有效地址匹配,標(biāo)簽陣列中的查找都被禁用,同時(shí)針對(duì)該條目所存儲(chǔ)的對(duì)應(yīng)的禁用位確定哪些數(shù)據(jù)陣列被禁用。如果只有一個(gè)路徑不具有在條目中所設(shè)置的其禁用位,則所有其他數(shù)據(jù)陣列被禁用,并且只有未被禁用的路徑被訪問(已知所請(qǐng)求的數(shù)據(jù)項(xiàng)被存儲(chǔ)在該路徑中)。由于已知該數(shù)據(jù)項(xiàng)之前已經(jīng)導(dǎo)致緩存錯(cuò)過并且當(dāng)前未被存儲(chǔ)在緩存中,因此如果兩個(gè)(或者更一般地,所有)路徑都具有在路徑追蹤器的條目中所設(shè)置的它們的禁用位,則所有數(shù)據(jù)陣列被禁用。
應(yīng)該注意到,當(dāng)針對(duì)特定數(shù)據(jù)項(xiàng)(由其存儲(chǔ)器地址所指定)的請(qǐng)求導(dǎo)致緩存錯(cuò)過時(shí),這通常將發(fā)起線填充處理,通過該線填充處理來從更高緩存等級(jí)或從存儲(chǔ)器獲取所請(qǐng)求的數(shù)據(jù)項(xiàng),并且當(dāng)該數(shù)據(jù)項(xiàng)被返回至緩存時(shí),緩存中的對(duì)應(yīng)線(由該數(shù)據(jù)項(xiàng)的存儲(chǔ)器地址所定義的)被以該新的內(nèi)容更新,以使得數(shù)據(jù)項(xiàng)然后被緩存。本領(lǐng)域的普通技術(shù)人員也熟悉這種線填充處理。本技術(shù)已經(jīng)被發(fā)現(xiàn)為是有益處的,特別是關(guān)于指示已知的緩存錯(cuò)過的能力,盡管事實(shí)是緩存中的緩存錯(cuò)過會(huì)導(dǎo)致線填充處理,因?yàn)橐呀?jīng)發(fā)現(xiàn)在第一緩存錯(cuò)過和線填充處理被完成之間的過渡時(shí)段仍存在通過避免對(duì)緩存的陣列的訪問而應(yīng)用本技術(shù)的機(jī)會(huì)。這可以例如是在編程代碼的循環(huán)中引用給定數(shù)據(jù)項(xiàng)的情況,在這種情況下該循環(huán)的配置使得運(yùn)行對(duì)應(yīng)的指令的處理元件將接連不斷地重復(fù)請(qǐng)求對(duì)該數(shù)據(jù)項(xiàng)的訪問,并且這樣緩存可以在線填充處理完成之前接收針對(duì)該數(shù)據(jù)項(xiàng)的多個(gè)請(qǐng)求。
圖3B示意性地示出了對(duì)圖3A的示例中所示的“擴(kuò)展匹配”指示符的使用。當(dāng)該指示符被設(shè)置時(shí),路徑追蹤器被配置為忽略地址的一部分,這時(shí)確定在所接收的地址和路徑追蹤器的條目中所存儲(chǔ)的地址信息之間是否發(fā)現(xiàn)有效地址匹配。如圖3B中示意性地示出的,該所忽略的部分可以例如是地址的最低有效部分,這具有以下影響:不是路徑追蹤器的條目中所 存儲(chǔ)的信息只與具體的數(shù)據(jù)項(xiàng)(由單個(gè)存儲(chǔ)器地址所引用的)有關(guān),路徑追蹤器中的單個(gè)條目可以被用來存儲(chǔ)與一系列(即,兩個(gè)或更多個(gè))存儲(chǔ)器地址有關(guān)的信息。當(dāng)確定是否發(fā)現(xiàn)匹配時(shí),地址的最低有效位可以在任何方面被忽略,其中地址的這些最低有效位允許給定存儲(chǔ)器地址內(nèi)的字節(jié)說明,并且因此如圖3B中所示,為了擴(kuò)展對(duì)多個(gè)數(shù)據(jù)項(xiàng)的匹配的可能性,所忽略的部分是在此之上的存儲(chǔ)器地址部分。應(yīng)注意,“匹配”的更寬泛方式的實(shí)現(xiàn)方式然后還將擴(kuò)展至路徑追蹤器中以該方式被追蹤的一組緩存線的對(duì)應(yīng)的有效性,因?yàn)閱我痪€的無效(例如,通過更新)然后將使得更寬泛的一組線被無效。
圖4根據(jù)一個(gè)實(shí)施例的方法示出采取的一系列步驟。流程可以被認(rèn)為是開始于步驟100,在步驟100流程等待直到緩存接收到新地址。流程然后進(jìn)行到步驟102,在步驟102確定與該新地址相關(guān)聯(lián)地接收的任意屬性信息是否指示了對(duì)應(yīng)的數(shù)據(jù)項(xiàng)是不可緩存的。如果對(duì)應(yīng)的數(shù)據(jù)項(xiàng)是不可緩存的,則(在步驟104)緩存中的所有訪問和查找被抑制(即,在標(biāo)簽和數(shù)據(jù)陣列兩者中),并且路徑追蹤器被阻止創(chuàng)建對(duì)應(yīng)的條目。否則(如果所指示的數(shù)據(jù)項(xiàng)是可緩存的),則流程進(jìn)行到步驟106,在步驟106確定是否發(fā)現(xiàn)針對(duì)路徑追蹤器中的條目的有效地址匹配。如果未發(fā)現(xiàn)對(duì)應(yīng)的匹配,則流程進(jìn)行到步驟108,在步驟108標(biāo)簽陣列中的查找和對(duì)緩存的所有數(shù)據(jù)陣列的訪問被執(zhí)行。由于標(biāo)簽陣列中的查找,在步驟110確定已經(jīng)導(dǎo)致緩存錯(cuò)過還是緩存命中。針對(duì)緩存命中,流程進(jìn)行到步驟112,在步驟112使路徑追蹤器中的有效條目指示當(dāng)前已知數(shù)據(jù)項(xiàng)要被存儲(chǔ)在其中的路徑。在步驟114,對(duì)應(yīng)的數(shù)據(jù)項(xiàng)然后被輸出并且流程返回到步驟100。然而,如果在步驟110導(dǎo)致緩存錯(cuò)過,則在步驟116使得路徑追蹤器中的有效條目具有所設(shè)置的“已知的緩存錯(cuò)過”指示符。應(yīng)注意,根據(jù)以上說明,其可能是明確指示(例如,單一“KCM”位),或者可替換地可能是針對(duì)緩存的每一路徑的設(shè)置禁用位的組合。對(duì)該數(shù)據(jù)項(xiàng)的請(qǐng)求然后在步驟118在存儲(chǔ)器層次結(jié)構(gòu)中被傳遞,并且流程返回到步驟100。
返回到步驟106,如果發(fā)現(xiàn)路徑追蹤器中存在針對(duì)該最近接收的地址的有效地址匹配,則流程進(jìn)行到步驟120,在步驟120緩存的標(biāo)簽陣列中 的查找被禁用。在步驟122,然后確定路徑追蹤器是否指示已知的緩存錯(cuò)過。如果路徑追蹤器指示已知的緩存錯(cuò)過,則流程經(jīng)由步驟124繼續(xù)進(jìn)行,在步驟124所有數(shù)據(jù)陣列訪問被禁用并且流程然后經(jīng)由118繼續(xù)進(jìn)行。然而,如果在步驟122路徑追蹤器未指示已知的緩存錯(cuò)過,則流程經(jīng)由步驟126繼續(xù)進(jìn)行,在步驟126針對(duì)除所指示的存儲(chǔ)路徑之外的所有路徑的數(shù)據(jù)陣列訪問被禁用,并且在步驟128所得到的數(shù)據(jù)項(xiàng)從存儲(chǔ)數(shù)據(jù)項(xiàng)的路徑讀出并輸出,并且流程返回到步驟100。
總而言之,本文提供了包括多個(gè)路徑的緩存,多個(gè)路徑中的每一路徑包括數(shù)據(jù)陣列,其中由緩存所存儲(chǔ)的數(shù)據(jù)項(xiàng)被存儲(chǔ)在多個(gè)路徑中的一個(gè)路徑的數(shù)據(jù)陣列中。緩存的路徑追蹤器具有多個(gè)條目,多個(gè)條目中的每一條目用于存儲(chǔ)數(shù)據(jù)項(xiàng)標(biāo)識(shí)符,以及用于與數(shù)據(jù)項(xiàng)標(biāo)識(shí)符相關(guān)聯(lián)地存儲(chǔ)對(duì)多個(gè)路徑中的選定路徑的指示,以指示由數(shù)據(jù)項(xiàng)標(biāo)識(shí)符所標(biāo)識(shí)的數(shù)據(jù)項(xiàng)被存儲(chǔ)在選定路徑中。路徑追蹤器的每一條目還用于與數(shù)據(jù)項(xiàng)標(biāo)識(shí)符相關(guān)聯(lián)地來存儲(chǔ)錯(cuò)過指示符,其中當(dāng)針對(duì)由該數(shù)據(jù)項(xiàng)標(biāo)識(shí)符所標(biāo)識(shí)的數(shù)據(jù)項(xiàng)的查找已經(jīng)導(dǎo)致緩存錯(cuò)過時(shí),由緩存來設(shè)置錯(cuò)過指示符。本文還提供緩存數(shù)據(jù)的對(duì)應(yīng)的方法。
在本申請(qǐng)中,詞語“被配置為…”或“被安排為…”被用于表示裝置的元件具有能夠?qū)嵭兴x的操作的配置。在此上下文中,“配置”表示硬件或軟件的互連的安排或方式。例如,裝置可以具有提供所定義的操作的專用硬件,或者處理器或其它處理設(shè)備可以被編程為執(zhí)行功能。“被配置為”或“被安排為”并非暗示裝置元件需要為了提供所定義的操作而以任何方式被改變。
盡管本發(fā)明的示意性實(shí)施例已經(jīng)在本文中參考附圖被詳細(xì)地描述,但應(yīng)當(dāng)理解,本發(fā)明不限于這些精確的實(shí)施例,并且在不背離所附權(quán)利要求所定義的發(fā)明的范圍和精神的情況下本領(lǐng)域的技術(shù)人員可以在此實(shí)現(xiàn)各種改變、添加和修改。例如,在不背離本發(fā)明的范圍的情況下,可以與獨(dú)立權(quán)利要求的特征一起產(chǎn)生從屬權(quán)利要求的特征的各種組合。