欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于操作虛擬索引的物理標(biāo)記的緩存的裝置及方法與流程

文檔序號(hào):11519535閱讀:299來(lái)源:國(guó)知局
用于操作虛擬索引的物理標(biāo)記的緩存的裝置及方法與流程

本發(fā)明系關(guān)于一種用于操作虛擬索引的物理標(biāo)記的緩存的裝置及方法。



背景技術(shù):

當(dāng)使用這樣的緩存時(shí),使用虛擬地址標(biāo)識(shí)緩存內(nèi)的多個(gè)條目(這多個(gè)條目通常稱(chēng)為n路組關(guān)聯(lián)緩存(setassociativecache)內(nèi)的組(set)),然后對(duì)應(yīng)的物理地址被用于通過(guò)比較物理地址的相關(guān)部分與標(biāo)識(shí)的緩存條目存儲(chǔ)器儲(chǔ)的物理地址標(biāo)簽值來(lái)確定是否發(fā)生命中或未中。此方法允許緩存查找操作與地址轉(zhuǎn)換并行地開(kāi)始,其中僅在一旦已執(zhí)行標(biāo)簽陣列查找時(shí)需要物理地址用于命中/未中確定。

然而,可產(chǎn)生的潛在問(wèn)題作為混疊的結(jié)果發(fā)生。具體地,當(dāng)將不同虛擬地址映射至相同物理地址時(shí)發(fā)生混疊。盡管此舉可為受允許行為且本身可不具有負(fù)面影響,但存在以下情形:它可導(dǎo)致關(guān)于虛擬索引的物理標(biāo)記的緩存的復(fù)雜化。具體地,相同物理地址的不同虛擬地址可標(biāo)識(shí)緩存內(nèi)的不同組。如此可導(dǎo)致緩存內(nèi)的復(fù)制,減小緩存的有效大小,且由于緩存中的多個(gè)不同條目需要具有相同值的事實(shí),亦可引發(fā)一致性問(wèn)題。

當(dāng)采用虛擬索引的物理標(biāo)記的緩存時(shí),將需要減小混疊的潛在不利效應(yīng)。



技術(shù)實(shí)現(xiàn)要素:

在第一示例性配置中,提供一種裝置,此裝置包括:處理電路,用以對(duì)數(shù)據(jù)執(zhí)行數(shù)據(jù)處理操作;緩存存儲(chǔ)設(shè)備,用以存儲(chǔ)數(shù)據(jù)以便由處理電路存取,緩存存儲(chǔ)設(shè)備具有多個(gè)緩存條目,且每個(gè)緩存條目被配置以存儲(chǔ)數(shù)據(jù)及關(guān)聯(lián)物理地址部分,使用虛擬地址的虛擬地址部分存取緩存存儲(chǔ)設(shè)備以便識(shí)別數(shù)個(gè)緩存條目,此等緩存條目的存儲(chǔ)物理地址部分將與源自虛擬地址的物理地址比較以便檢測(cè)是否存在命中狀況;以及監(jiān)聽(tīng)請(qǐng)求處理電路,響應(yīng)于指定物理地址的監(jiān)聽(tīng)請(qǐng)求,確定該物理地址的多個(gè)可能虛擬地址部分,及執(zhí)行監(jiān)聽(tīng)處理操作以便在使用多個(gè)可能虛擬地址部分存取緩存存儲(chǔ)設(shè)備時(shí)確定對(duì)于緩存條目是否檢測(cè)到命中狀況,并且在檢測(cè)到命中狀況后,關(guān)于引發(fā)命中狀況的緩存條目執(zhí)行一致性動(dòng)作。

在第二示例性配置中,提供操作裝置的方法,此方法包括:使用處理電路對(duì)數(shù)據(jù)執(zhí)行數(shù)據(jù)處理操作;使用緩存存儲(chǔ)設(shè)備存儲(chǔ)數(shù)據(jù)以便由處理電路存取,緩存存儲(chǔ)設(shè)備具有多個(gè)緩存條目,每個(gè)緩存條目存儲(chǔ)數(shù)據(jù)及關(guān)聯(lián)物理地址部分;使用虛擬地址的虛擬地址部分存取緩存存儲(chǔ)設(shè)備以便識(shí)別數(shù)個(gè)緩存條目;比較該識(shí)別的數(shù)個(gè)緩存條目的物理地址部分與源自虛擬地址的物理地址以便檢測(cè)是否存在命中狀況;以及響應(yīng)于指定物理地址的監(jiān)聽(tīng)請(qǐng)求,確定該物理地址的多個(gè)可能虛擬地址部分,及執(zhí)行監(jiān)聽(tīng)處理操作以便在使用多個(gè)可能虛擬地址部分存取緩存存儲(chǔ)設(shè)備時(shí)確定對(duì)于緩存條目是否檢測(cè)到命中狀況,并且在檢測(cè)到命中狀況后,關(guān)于引發(fā)命中狀況的緩存條目執(zhí)行一致性動(dòng)作。

在又一示例性配置中,提供一種裝置,此裝置包括:處理手段,用于對(duì)數(shù)據(jù)執(zhí)行數(shù)據(jù)處理操作;緩存手段,用于存儲(chǔ)數(shù)據(jù)以便由處理手段存取,緩存手段具有多個(gè)緩存條目手段,且每個(gè)緩存條目手段用于存儲(chǔ)數(shù)據(jù)及關(guān)聯(lián)物理地址部分,使用虛擬地址之虛擬地址部分存取緩存手段以便識(shí)別數(shù)個(gè)緩存條目手段,此等緩存條目手段的存儲(chǔ)物理地址部分將與源自虛擬地址的物理地址比較以便檢測(cè)是否存在命中狀況;以及監(jiān)聽(tīng)請(qǐng)求處理手段,用于響應(yīng)于指定物理地址的監(jiān)聽(tīng)請(qǐng)求,確定該物理地址的多個(gè)可能虛擬地址部分,及用于執(zhí)行監(jiān)聽(tīng)處理操作以便在使用多個(gè)可能虛擬地址部分存取緩存手段時(shí)確定對(duì)于緩存條目手段是否檢測(cè)到命中狀況,并且在檢測(cè)到命中狀況后,用于關(guān)于引發(fā)命中狀況的緩存條目手段執(zhí)行一致性動(dòng)作。

附圖說(shuō)明

僅通過(guò)示例的方式,本技術(shù)將參照其在附圖中示出的實(shí)施例進(jìn)行進(jìn)一步描述,其中:

圖1是示意性地示出對(duì)于虛擬索引的物理標(biāo)記的緩存會(huì)出現(xiàn)的混疊問(wèn)題的圖示;

圖2示意性地示出根據(jù)一個(gè)實(shí)施例的如何訪問(wèn)虛擬索引的物理標(biāo)記的緩存;

圖3是示出根據(jù)一個(gè)實(shí)施例的系統(tǒng)的框圖,其中各種核心可針對(duì)它們的本地緩存級(jí)中的至少一級(jí)使用虛擬索引的物理標(biāo)記的緩存;

圖4是更詳細(xì)地圖示根據(jù)一個(gè)實(shí)施例的與一級(jí)緩存相關(guān)聯(lián)地提供的組件的框圖;

圖5是示出在一個(gè)實(shí)施例中執(zhí)行的過(guò)程的流程圖;

圖6是示出根據(jù)一個(gè)實(shí)施例的圖5的一般方法如何能夠用于移除在緩存存儲(chǔ)器在的混疊狀況的流程圖;

圖7是示出根據(jù)一個(gè)實(shí)施例的對(duì)于未分配存儲(chǔ)請(qǐng)求的處理的流程圖;

圖8示出根據(jù)一個(gè)實(shí)施例的圖4的存儲(chǔ)緩沖器與檢查混疊表之間的關(guān)系;

圖9a是示出在采用使用檢查混疊表的實(shí)施例時(shí)如何處理可緩存的加載請(qǐng)求的流程圖;

圖9b是示出在采用使用檢查混疊表的實(shí)施例時(shí)如何處理可緩存的存儲(chǔ)請(qǐng)求的流程圖;以及

圖10是示出在一個(gè)實(shí)施例中可如何擴(kuò)展監(jiān)聽(tīng)狀態(tài)機(jī)功能性以作為后臺(tái)活動(dòng)檢測(cè)及移除混疊狀況的流程圖。

具體實(shí)施方式

在參照附圖論述實(shí)施例之前,提供以下實(shí)施例描述。

如前文所述,混疊為許多系統(tǒng)中允許的行為,其中可藉由操作系統(tǒng)將不同虛擬地址映射至相同物理地址中。除非對(duì)緩存設(shè)置某些限制,否則此可在虛擬索引的物理標(biāo)記的緩存中造成前文所論及的問(wèn)題。具體地,在虛擬地址內(nèi)通常存在一定數(shù)量的與物理地址中的對(duì)應(yīng)位相同的位。在一個(gè)實(shí)施例中,此位數(shù)量取決于由架構(gòu)支持的最小頁(yè)面大小。若緩存經(jīng)約束具有充分關(guān)聯(lián)性以確保索引緩存所需的位數(shù)量保持在與虛擬地址與物理地址之間相同的位的數(shù)量之下,則此可用于確保任何混疊將不會(huì)引發(fā)緩存中的問(wèn)題,因?yàn)橛成渲料嗤锢淼刂返亩鄠€(gè)虛擬地址可被配置以產(chǎn)生到緩存中的相同索引,并因此識(shí)別相同的集合。然而,將需要的是,不必對(duì)緩存設(shè)置此約束,且能夠有效管理混疊的潛在問(wèn)題,甚至在生成從虛擬地址到緩存中的索引所需的位數(shù)量大于在虛擬地址與物理地址兩者中具有相同值的位數(shù)量的情形中亦如此。在此情況中,必要的是,索引的至少一部分是自虛擬地址特定位產(chǎn)生的,且這可引發(fā)前文論及的問(wèn)題,其中緩存內(nèi)不同集合中的緩存條目會(huì)潛在地存儲(chǔ)與相同物理地址相關(guān)的數(shù)據(jù)。

在一個(gè)實(shí)施例中,此問(wèn)題藉由利用監(jiān)聽(tīng)機(jī)制的特性來(lái)減輕,可在數(shù)據(jù)處理系統(tǒng)內(nèi)提供監(jiān)聽(tīng)機(jī)制以管理緩存一致性。具體地,監(jiān)聽(tīng)機(jī)制通常使用物理地址來(lái)操作,因此監(jiān)聽(tīng)機(jī)制自身并不遭受此潛在混疊問(wèn)題。

在一個(gè)實(shí)施例中,具有處理電路以對(duì)數(shù)據(jù)執(zhí)行數(shù)據(jù)處理操作以及虛擬索引的物理標(biāo)記的緩存存儲(chǔ)設(shè)備以存儲(chǔ)數(shù)據(jù)以便由處理電路訪問(wèn)的裝置另外置有監(jiān)聽(tīng)請(qǐng)求處理電路,該監(jiān)聽(tīng)請(qǐng)求處理電路響應(yīng)于由裝置接收到的監(jiān)聽(tīng)請(qǐng)求采取一系列步驟,該監(jiān)聽(tīng)請(qǐng)求指定一物理地址。具體地,監(jiān)聽(tīng)請(qǐng)求處理電路確定用于物理地址的多個(gè)可能的虛擬地址部分,虛擬地址部分是虛擬地址中用作索引以訪問(wèn)緩存存儲(chǔ)設(shè)備的部分。監(jiān)聽(tīng)請(qǐng)求處理電路隨后執(zhí)行監(jiān)聽(tīng)處理操作以便確定在使用多個(gè)可能的虛擬地址部分訪問(wèn)的任何緩存條目中是否檢測(cè)到命中。結(jié)果是,當(dāng)被提供以指定物理地址的監(jiān)聽(tīng)請(qǐng)求時(shí),監(jiān)聽(tīng)請(qǐng)求處理電路可被配置以檢查所有各種可能的緩存條目,在此等緩存條目中可存儲(chǔ)與該物理地址關(guān)聯(lián)的數(shù)據(jù)。在檢測(cè)到命中狀況(即,檢測(cè)到存儲(chǔ)對(duì)于指定物理地址的數(shù)據(jù)的緩存條目)后,監(jiān)聽(tīng)請(qǐng)求處理電路可被配置以關(guān)于此緩存條目執(zhí)行一致性動(dòng)作。所采取的一致性動(dòng)作將通常取決于所發(fā)出的監(jiān)聽(tīng)請(qǐng)求的類(lèi)型。舉例而言,一致性動(dòng)作可涉及使緩存條目無(wú)效,以及若緩存條目當(dāng)前標(biāo)記為有效且污損,則執(zhí)行任何需要的驅(qū)逐(eviction)處理;可涉及輸出存儲(chǔ)在緩存條目中的數(shù)據(jù),使得該數(shù)據(jù)可被提供給負(fù)責(zé)發(fā)送監(jiān)聽(tīng)請(qǐng)求的外部監(jiān)聽(tīng)電路等。

在一個(gè)實(shí)施例中,情況將是,至多將關(guān)于一個(gè)緩存條目檢測(cè)到命中狀況。因此,在一個(gè)實(shí)施例中,監(jiān)聽(tīng)請(qǐng)求處理電路被配置以在一旦已檢測(cè)到命中狀況及關(guān)于引發(fā)命中狀況的緩存條目執(zhí)行一致性動(dòng)作后完成監(jiān)聽(tīng)處理操作。因此,一旦已檢測(cè)到命中狀況,繼續(xù)檢查所有可能虛擬地址不是必要的。

在一個(gè)實(shí)施例中,由操作系統(tǒng)用以在存儲(chǔ)器中映射頁(yè)的算法用于影響監(jiān)聽(tīng)處理操作期間檢查的第一可能虛擬地址部分。在一個(gè)特定實(shí)施例中,將第一可能虛擬地址部分選定為這樣的虛擬地址部分,其中虛擬地址特定位具有被設(shè)置為等于對(duì)應(yīng)物理地址位值的值。已發(fā)現(xiàn),對(duì)于此可能虛擬地址部分發(fā)現(xiàn)命中狀況的幾率增加,因此該方法可從統(tǒng)計(jì)學(xué)上減少執(zhí)行監(jiān)聽(tīng)處理操作中涉及的開(kāi)銷(xiāo)。

在一個(gè)實(shí)施例中,在所檢測(cè)到的命中狀況不存在的情況下,監(jiān)聽(tīng)請(qǐng)求處理電路被配置以在一旦已使用多個(gè)可能的虛擬地址部分訪問(wèn)了緩存存儲(chǔ)設(shè)備時(shí)將完成監(jiān)聽(tīng)處理操作。因此,監(jiān)聽(tīng)請(qǐng)求處理電路將繼續(xù)使用每個(gè)可能的虛擬地址部分檢查命中狀況,直至檢測(cè)到命中狀況,或者已使用所有可能的虛擬地址部分。

在一個(gè)實(shí)施例中,虛擬地址部分包括第一子集位,這些位的值與物理地址中的對(duì)應(yīng)位相等;和第二子集位,這些位是該虛擬地址特有的。在一個(gè)特定實(shí)施例中,第一子集位包括位的數(shù)量,此數(shù)量取決于最小頁(yè)面大小。

在一個(gè)實(shí)施例中,使用上文描述的機(jī)制移除經(jīng)由監(jiān)聽(tīng)機(jī)制已識(shí)別為存在的混疊狀況。具體地,裝置還包括請(qǐng)求發(fā)出電路,此請(qǐng)求發(fā)出電路響應(yīng)于緩存存儲(chǔ)設(shè)備檢測(cè)到對(duì)于使用指定第一虛擬地址的虛擬地址部分訪問(wèn)的各種緩存條目的未中狀況,隨后發(fā)出訪問(wèn)請(qǐng)求至緩存層級(jí)的較低階層,該訪問(wèn)請(qǐng)求指定了自第一虛擬地址得出的第一物理地址。因此,在此情境中,基于請(qǐng)求數(shù)據(jù)時(shí)處理電路提供的虛擬地址,已確定數(shù)據(jù)并不存在于緩存中,因此已使用物理地址將請(qǐng)求傳播至緩存層級(jí)的較低階層上。然而,這可觸發(fā)監(jiān)聽(tīng)機(jī)制根據(jù)所提供物理地址檢查哪些緩存可存儲(chǔ)數(shù)據(jù)的復(fù)本。若確定檢測(cè)到未中的緩存存儲(chǔ)設(shè)備為一個(gè)基于所提供物理地址使監(jiān)聽(tīng)機(jī)制相信保持?jǐn)?shù)據(jù)的復(fù)本的緩存,則這指示混疊狀況(即,所需數(shù)據(jù)可存儲(chǔ)在緩存的不同集合內(nèi)且因此當(dāng)基于第一虛擬地址的虛擬地址部分執(zhí)行查找時(shí)未定位到該數(shù)據(jù)的情形)。

因此,在這樣的情形中,應(yīng)了解,由監(jiān)聽(tīng)請(qǐng)求處理電路接收到的監(jiān)聽(tīng)請(qǐng)求是響應(yīng)于外部監(jiān)聽(tīng)電路指示第一物理地址的數(shù)據(jù)被存儲(chǔ)在緩存存儲(chǔ)設(shè)備中(從而指示上文論及的混疊狀況)而生成的。在此情境中,監(jiān)聽(tīng)請(qǐng)求處理電路的前文描述的操作(以及具體地,前述監(jiān)聽(tīng)處理操作的性能)用來(lái)移除混疊狀況。具體地,若數(shù)據(jù)確實(shí)存在于緩存中處于與經(jīng)歷基于第一虛擬地址的初始查找操作的該者不同的集合中的緩存條目中,則將檢測(cè)到命中狀況且可采取適當(dāng)動(dòng)作移除混疊狀況。

還應(yīng)注意,在一些實(shí)施例中,盡管監(jiān)聽(tīng)請(qǐng)求指示混疊狀況的存在,但是等到監(jiān)聽(tīng)請(qǐng)求處理電路執(zhí)行監(jiān)聽(tīng)處理操作時(shí)可能實(shí)際上不存在混疊狀況(例如由于某些競(jìng)賽狀況),其中在由監(jiān)聽(tīng)請(qǐng)求處理電路進(jìn)行動(dòng)作時(shí),外部監(jiān)聽(tīng)電路的信息實(shí)際上已過(guò)時(shí)。

存在可移除混疊狀況的數(shù)個(gè)方式,但在一個(gè)實(shí)施例中,監(jiān)聽(tīng)請(qǐng)求處理電路被配置以作為一致性動(dòng)作執(zhí)行無(wú)效化操作以使引發(fā)命中狀況的緩存條目無(wú)效,以便藉由在緩存中使緩存條目無(wú)效來(lái)移除混疊狀況,此緩存條目的存儲(chǔ)數(shù)據(jù)與第一物理地址關(guān)聯(lián)但是使用源自與第一虛擬地址不同的虛擬地址的虛擬地址部分進(jìn)行訪問(wèn)的緩存條目。此無(wú)效化可包括在該緩存條目被標(biāo)記為有效且污損的事件中自緩存驅(qū)逐存儲(chǔ)數(shù)據(jù)。此后,未中狀況的處理可以標(biāo)準(zhǔn)方式繼續(xù),導(dǎo)致最新請(qǐng)求的數(shù)據(jù)被存取。然而,若該過(guò)程導(dǎo)致用存取的數(shù)據(jù)填充緩存,則將確保該階段處的緩存僅具有單個(gè)復(fù)本,因?yàn)椴扇∩衔恼摷暗牟襟E移除混疊狀況。

盡管上文描述的方法提供移除混疊狀況的有效機(jī)制,但當(dāng)處置稱(chēng)為非分配存儲(chǔ)請(qǐng)求的特定類(lèi)型的存儲(chǔ)請(qǐng)求時(shí),仍可產(chǎn)生問(wèn)題。此非分配存儲(chǔ)請(qǐng)求是這樣的請(qǐng)求,此請(qǐng)求引發(fā)在緩存內(nèi)執(zhí)行查找以便確定緩存是否已存儲(chǔ)特定地址的數(shù)據(jù)。若是,則參照緩存復(fù)本處理存儲(chǔ)。然而,在檢測(cè)到未中的情況中,將存儲(chǔ)請(qǐng)求直接發(fā)送給緩存的下一階層,且未實(shí)行任何分配至檢測(cè)到未中的緩存中。此非分配存儲(chǔ)請(qǐng)求在本文中亦稱(chēng)為寫(xiě)入串流存儲(chǔ)請(qǐng)求。

可與此方法一起產(chǎn)生的問(wèn)題是,若非分配存儲(chǔ)請(qǐng)求使用與前一可緩存訪問(wèn)請(qǐng)求(該可緩存訪問(wèn)請(qǐng)求導(dǎo)致一緩存條目被填充于緩存中,但處于與基于非分配存儲(chǔ)請(qǐng)求指定的虛擬地址訪問(wèn)的組不同的組中)使用的虛擬地址不同的虛擬地址,將在緩存中發(fā)生未中,并且隨后非分配存儲(chǔ)請(qǐng)求的處理將導(dǎo)致數(shù)據(jù)在緩存層級(jí)的較低階層/存儲(chǔ)器處更新。因此,存儲(chǔ)在緩存中的原始數(shù)據(jù)隨后將過(guò)時(shí)。若后續(xù)可緩存訪問(wèn)請(qǐng)求隨后指定與導(dǎo)致填充緩存條目的原始訪問(wèn)請(qǐng)求相同的虛擬地址,則將在緩存中檢測(cè)到命中,且因此存取過(guò)時(shí)數(shù)據(jù)。

在一個(gè)實(shí)施例中,經(jīng)由裝置內(nèi)緩沖器電路的配設(shè)把與由處理電路發(fā)出的非分配存儲(chǔ)請(qǐng)求關(guān)聯(lián)的物理地址(針對(duì)其在緩存結(jié)構(gòu)中檢測(cè)到未中狀況)分配給緩沖器條目來(lái)減輕此問(wèn)題。因此,緩沖器電路提供該物理地址的臨時(shí)記錄,從而允許在需要時(shí)實(shí)行檢查。進(jìn)一步地,緩沖器電路被配置以響應(yīng)于自外部監(jiān)聽(tīng)電路的解除分配信號(hào),使物理地址與緩沖器電路的緩沖器條目解除分配。因此,維持臨時(shí)記錄,直至自外部監(jiān)聽(tīng)電路接收到解除分配信號(hào)時(shí)為止。

在一個(gè)實(shí)施例中,發(fā)送解除分配信號(hào)的時(shí)間將取決于情形而變化。具體地,在一個(gè)實(shí)施例中,監(jiān)聽(tīng)請(qǐng)求處理電路被配置以在一旦已完成監(jiān)聽(tīng)處理操作時(shí)發(fā)出響應(yīng)信號(hào)至外部監(jiān)聽(tīng)電路,且緩沖器電路被配置以在一旦外部監(jiān)聽(tīng)電路已接收到該響應(yīng)信號(hào)時(shí)自外部監(jiān)聽(tīng)電路接收解除分配信號(hào)。因此,當(dāng)已檢測(cè)到混疊狀況時(shí),則只要一旦監(jiān)聽(tīng)請(qǐng)求處理電路執(zhí)行了監(jiān)聽(tīng)請(qǐng)求處理操作以便移除混疊狀況,緩沖器電路將被配置以接收解除分配信號(hào)且因此自緩沖器電路移除相關(guān)物理地址。

進(jìn)一步地,在一個(gè)實(shí)施例中,若外部監(jiān)聽(tīng)電路確定物理地址的數(shù)據(jù)未存儲(chǔ)在緩存結(jié)構(gòu)中,則不需要發(fā)出監(jiān)聽(tīng)請(qǐng)求至監(jiān)聽(tīng)請(qǐng)求處理電路,且因此不需要執(zhí)行監(jiān)聽(tīng)處理操作。在該事件中,只要確定物理地址的數(shù)據(jù)未存儲(chǔ)在緩存結(jié)構(gòu)中,外部監(jiān)聽(tīng)電路就可發(fā)出解除分配信號(hào)至緩沖器電路,且因此不存在混疊狀況。

在一個(gè)實(shí)施例中,可將緩沖器電路并作用于緩沖待定存儲(chǔ)請(qǐng)求的現(xiàn)有存儲(chǔ)緩沖器電路的一部分。然而,在替代實(shí)施例中,緩沖器電路獨(dú)立于此存儲(chǔ)緩沖器電路,且自存儲(chǔ)緩沖器電路移除非分配存儲(chǔ)請(qǐng)求的處理觸發(fā)緩沖器電路分配非分配存儲(chǔ)請(qǐng)求的物理地址至它的一個(gè)緩沖器條目。此可提供一些效能及面積效率增益,因?yàn)榇吮苊饬嗽诖鎯?chǔ)緩沖器電路中保持條目比本可需要的更長(zhǎng)的需要。進(jìn)一步地,需要在緩沖器電路中保留的信息量明顯小于需要在存儲(chǔ)緩沖器電路中保持的信息,因?yàn)榛旧暇彌_器電路僅需要保持物理地址使得可檢查該物理地址。

在一個(gè)實(shí)施例中,可存在多個(gè)循環(huán),其中在緩沖器電路與存儲(chǔ)緩沖器電路兩者中分配物理地址,因?yàn)橹辆彌_器電路中的分配發(fā)生在移除過(guò)程中的早期階段,在實(shí)際上移除非分配存儲(chǔ)請(qǐng)求之前。

在一個(gè)實(shí)施例中,在請(qǐng)求發(fā)出電路針對(duì)非分配存儲(chǔ)請(qǐng)求發(fā)出指定物理地址的對(duì)應(yīng)訪問(wèn)請(qǐng)求后,自存儲(chǔ)緩沖器電路移除非分配存儲(chǔ)請(qǐng)求,隨后在緩存存儲(chǔ)設(shè)備中檢測(cè)到未中狀況。因此,一旦將存儲(chǔ)請(qǐng)求傳播到緩存層級(jí)的下一階層上,則在此點(diǎn)處可自存儲(chǔ)緩沖器電路移除存儲(chǔ)請(qǐng)求,及可將物理地址分配至緩沖器電路中。

在一個(gè)實(shí)施例中,裝置還包括緩沖器檢查電路,以便在一定條件下參考上文論及的緩沖器電路,以便檢測(cè)潛在問(wèn)題情況。具體地,在一個(gè)實(shí)施例中,緩沖器檢查電路響應(yīng)于由處理電路發(fā)出的可緩存訪問(wèn)請(qǐng)求(可為可緩存加載請(qǐng)求或可緩存存儲(chǔ)請(qǐng)求),檢查對(duì)于該可緩存訪問(wèn)請(qǐng)求的物理地址是否已分配給緩沖器電路的緩沖器條目。當(dāng)確定該可緩存訪問(wèn)請(qǐng)求的物理地址已分配給緩沖器電路的緩沖器條目時(shí),則認(rèn)為存在未中狀況,而不管使用與可緩存訪問(wèn)請(qǐng)求關(guān)聯(lián)的虛擬地址部分對(duì)緩存存儲(chǔ)設(shè)備的訪問(wèn)的結(jié)果。因此,對(duì)于可緩存訪問(wèn)請(qǐng)求,不論基于虛擬地址部分是否在緩存存儲(chǔ)設(shè)備中檢測(cè)到命中,若發(fā)現(xiàn)在緩沖器電路中分配對(duì)于該可緩存訪問(wèn)請(qǐng)求的物理地址,則在緩存中將訪問(wèn)視為未中。這防止處理電路潛在地在加載事件中自緩存獲得過(guò)時(shí)數(shù)據(jù),或在存儲(chǔ)事件中在緩存中存儲(chǔ)不正確數(shù)據(jù)。進(jìn)一步地,前文描述的在未中事件中執(zhí)行的處理將移除緩存存儲(chǔ)器在的任何混疊狀況。因此,可確保處理電路將處理正確數(shù)據(jù)且檢測(cè)到及移除任何混疊狀況。

在一個(gè)實(shí)施例中,可增強(qiáng)監(jiān)聽(tīng)請(qǐng)求處理電路的前文所論及的操作以提供一些額外功能,且特定而言來(lái)監(jiān)視緩沖器電路。在一個(gè)實(shí)施例中,監(jiān)聽(tīng)請(qǐng)求處理電路響應(yīng)于已被分配物理地址的緩沖器條目,確定該物理地址的多個(gè)可能虛擬地址部分,并在使用多個(gè)可能虛擬地址部分訪問(wèn)緩存存儲(chǔ)設(shè)備時(shí)執(zhí)行混疊移除操作以便確定對(duì)于緩存條目是否檢測(cè)到命中狀況。在檢測(cè)到命中狀況后,對(duì)引發(fā)命中狀況的緩存條目執(zhí)行無(wú)效化。因此,在此類(lèi)實(shí)施例中,監(jiān)聽(tīng)請(qǐng)求處理電路可主動(dòng)設(shè)法移除潛在混疊狀況,無(wú)需等待來(lái)自外部監(jiān)聽(tīng)電路的特定監(jiān)聽(tīng)請(qǐng)求。在一個(gè)實(shí)施例中,作為監(jiān)聽(tīng)請(qǐng)求處理電路的后臺(tái)任務(wù)執(zhí)行混疊移除操作,且因此具有比響應(yīng)于監(jiān)聽(tīng)請(qǐng)求執(zhí)行的監(jiān)聽(tīng)處理操作低的優(yōu)先權(quán)。

在另一示例性實(shí)施例中,可提供一種系統(tǒng),此系統(tǒng)包括:具有緩存存儲(chǔ)設(shè)備的多個(gè)處理單元,處理單元的至少一者包括根據(jù)上文所描述實(shí)施例的裝置;及監(jiān)聽(tīng)電路以實(shí)施關(guān)于多個(gè)處理單元的緩存存儲(chǔ)設(shè)備的緩存一致性協(xié)議,監(jiān)聽(tīng)電路被配置以發(fā)出監(jiān)聽(tīng)請(qǐng)求至該裝置的監(jiān)聽(tīng)請(qǐng)求處理電路。

現(xiàn)將參照?qǐng)D示描述特定實(shí)施例。

圖1為示意性圖標(biāo)對(duì)于虛擬索引的物理標(biāo)記的緩存內(nèi)可產(chǎn)生的混疊問(wèn)題的圖表。通常將虛擬地址10輸入到轉(zhuǎn)換后備緩沖器(tlb)30以便將虛擬地址轉(zhuǎn)換成物理地址35。在允許混疊的系統(tǒng)中,操作系統(tǒng)可能將多個(gè)虛擬地址映射至相同物理地址。如圖1所示,在此實(shí)例中,將一定數(shù)量的位25標(biāo)識(shí)為位x-1至0,此等位在虛擬地址中具有與物理地址中的對(duì)應(yīng)位相同的值。部分25中的位數(shù)量取決于存儲(chǔ)器中所允許的最小頁(yè)面大小。若用于識(shí)別待訪問(wèn)的緩存內(nèi)的組所需的虛擬地址的索引部分可經(jīng)約束單獨(dú)常駐在部分25內(nèi),則可確保任何此混疊將不會(huì)導(dǎo)致緩存中的問(wèn)題,因?yàn)樗袑?duì)應(yīng)于相同物理地址的不同虛擬地址將具有相同索引,且因此將訪問(wèn)相同的組。

然而,如圖1所示,情況可以是,以此約束并不可能的方式組織緩存,且需要將額外虛擬地址特定索引位包括在虛擬地址的索引部分20內(nèi)。因此,由于索引部分20內(nèi)的虛擬地址特定索引位的存在,應(yīng)將理解,在混疊存在的情況下,與相同物理地址相關(guān)的不同虛擬地址將可能引發(fā)訪問(wèn)緩存中的不同組,此將允許在緩存內(nèi)保持相同數(shù)據(jù)的多個(gè)版本。此情境不僅減小了緩存的有效大小,而且增加了復(fù)雜性,因?yàn)樾枰诰彺鎯?nèi)的數(shù)據(jù)的該等復(fù)本之間本地維持一致性。此后將描述的技術(shù)意欲提供用于識(shí)別及有效移除任何此類(lèi)混疊狀況的機(jī)制,在此類(lèi)混疊狀況中可能在緩存內(nèi)保持相同數(shù)據(jù)的多個(gè)版本。

圖1亦示出虛擬地址及物理地址內(nèi)的各其他部分。具體地,虛擬地址10的偏移部分15用于標(biāo)識(shí)所訪問(wèn)的緩存行(cacheline)內(nèi)感興趣的特定數(shù)據(jù)值,如稍后將參照?qǐng)D2更詳細(xì)地論述??紤]到物理地址35,隨后部分40標(biāo)識(shí)物理地址的標(biāo)簽位,即,除位x-1至0(由最小頁(yè)面大小調(diào)控且位的值與虛擬地址內(nèi)的關(guān)聯(lián)位相同)之外的物理地址的位。在虛擬索引的物理標(biāo)記的緩存中,然后使用索引訪問(wèn)的每個(gè)緩存條目將存儲(chǔ)物理地址標(biāo)簽位,此等物理地址標(biāo)簽位可隨后與物理地址35的標(biāo)簽位部分40比較,以便檢測(cè)是否存在命中(即,緩存條目中的標(biāo)簽位是否匹配該等物理地址標(biāo)簽位)。稍后將參照?qǐng)D2論述此過(guò)程。

藉由特定實(shí)例,若最小頁(yè)面大小視為4kb(亦即,4千字節(jié)),則x=12,且因此虛擬地址位11至0將等于物理地址位11至0。在一個(gè)特定實(shí)例中,將位5至0用作偏移部分15。若緩存為64kb4路組關(guān)聯(lián)緩存,則索引部分20需要8位,且在圖1的示例性排列中,此將意謂索引部分20由虛擬地址位13至6形成,且因此具有兩個(gè)虛擬地址特定位。

盡管在圖1中虛擬地址特定索引位與由最小頁(yè)面大小管控的索引部分的剩余位相連,但在其他實(shí)施例中,虛擬地址特定位可取自虛擬地址的其他部分,且因此將虛擬地址位13及12用作虛擬地址特定索引位的實(shí)例僅為實(shí)例。

進(jìn)一步地,形成虛擬地址的位數(shù)量m可或可不與形成物理地址的位數(shù)量n不同,但在一個(gè)實(shí)施例中,m大于n。

圖2示出在一個(gè)實(shí)施例中如何訪問(wèn)虛擬索引化的物理標(biāo)記的緩存。緩存內(nèi)的每個(gè)緩存條目系由標(biāo)簽陣列50中的一者中的標(biāo)簽條目70及對(duì)應(yīng)數(shù)據(jù)陣列60內(nèi)的數(shù)據(jù)值的對(duì)應(yīng)緩存行75形成。使用虛擬地址10的索引部分20訪問(wèn)標(biāo)簽陣列50以便自標(biāo)簽陣列中的各者識(shí)別一個(gè)標(biāo)簽條目,對(duì)于緩存的各路提供標(biāo)簽陣列。所存取的標(biāo)簽條目群組稱(chēng)為組,如圖2中的標(biāo)號(hào)55所示。

應(yīng)將了解,可在轉(zhuǎn)換物理地址之前執(zhí)行對(duì)標(biāo)簽陣列50的初始存取,因?yàn)閮H需要來(lái)自虛擬地址10的索引部分20。然而,在虛擬索引化的物理標(biāo)記的緩存中,每個(gè)標(biāo)簽條目70內(nèi)保持的標(biāo)簽位實(shí)際上為物理地址位,且因此將需要物理地址以便檢測(cè)緩存中是否已發(fā)生命中或未中。因此,與標(biāo)簽陣列50中的初始查找并行,可訪問(wèn)tlb30以便生成物理地址35以及因而物理地址的相關(guān)標(biāo)簽部分40(需要與從標(biāo)簽陣列中訪問(wèn)到的標(biāo)簽位進(jìn)行比較)。如圖2中示意性所示,每個(gè)標(biāo)簽條目可另外包括某些狀態(tài)位,諸如指示數(shù)據(jù)的關(guān)聯(lián)緩存行是否存儲(chǔ)有效數(shù)據(jù)的有效位,及指示數(shù)據(jù)是否污損(亦即,比存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)更新)的污損位。當(dāng)使用虛擬地址索引20訪問(wèn)標(biāo)簽陣列時(shí),則將輸出任何有效條目的各種標(biāo)簽位,如標(biāo)號(hào)85示意性所示。此等可隨后藉由比較區(qū)塊80與物理地址標(biāo)簽部分40來(lái)比較。在檢測(cè)到匹配的事件中,指示命中狀況,這表示作為訪問(wèn)請(qǐng)求的主題的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)陣列60中。

對(duì)于加載操作,可與標(biāo)簽陣列查找并行訪問(wèn)數(shù)據(jù)陣列60,以便訪問(wèn)組內(nèi)的各種緩存行(由標(biāo)號(hào)65所指示)。可隨后輸出緩存行中的數(shù)據(jù)(由標(biāo)號(hào)90所指示),使得在命中事件中,選擇電路系統(tǒng)95可隨后選擇對(duì)應(yīng)于引發(fā)命中的標(biāo)簽條目的緩存行,其中來(lái)自虛擬地址的偏移位15用于標(biāo)識(shí)特定數(shù)據(jù)值為訪問(wèn)的主題。可隨后將該數(shù)據(jù)值自緩存輸出回到發(fā)出具有虛擬地址的訪問(wèn)請(qǐng)求的處理電路。應(yīng)將了解,存在存取命中緩存行內(nèi)的特定所需數(shù)據(jù)值的多種方式,例如可使用多路復(fù)用器序列來(lái)標(biāo)識(shí)所需數(shù)據(jù)值以便存取。

在存儲(chǔ)訪問(wèn)請(qǐng)求為可緩存的事件中,并未與標(biāo)簽陣列存取并行存取數(shù)據(jù)陣列,而是先計(jì)算物理地址,及隨后一旦處理電路內(nèi)的加載/存儲(chǔ)管線已確定可承諾存儲(chǔ)操作(即,待寫(xiě)入到存儲(chǔ)器的寫(xiě)入數(shù)據(jù)現(xiàn)安全寫(xiě)出到存儲(chǔ)器),便在存儲(chǔ)緩沖器內(nèi)置放存儲(chǔ)訪問(wèn)請(qǐng)求的條目。一旦已在存儲(chǔ)緩沖器中存儲(chǔ)寫(xiě)入訪問(wèn)請(qǐng)求以及物理地址,則可執(zhí)行標(biāo)簽陣列內(nèi)的查找,且在命中事件中,所指定的寫(xiě)入數(shù)據(jù)可用于更新緩存內(nèi)的相關(guān)緩存行。此可在獨(dú)有寫(xiě)入事件中直接發(fā)生,其中可確保不與另一核心共享數(shù)據(jù)。在非獨(dú)有寫(xiě)入事件中,即使在緩存中存在命中,但將訪問(wèn)視為未中,以便調(diào)用外部監(jiān)聽(tīng)電路使可在其他緩存中保持的數(shù)據(jù)的任何其他復(fù)本無(wú)效,此后可將數(shù)據(jù)寫(xiě)入到緩存中。

圖3示出根據(jù)一個(gè)實(shí)施例的系統(tǒng)。為了便于說(shuō)明,系統(tǒng)僅包括兩個(gè)核心100、120,但可提供額外處理器核心,實(shí)際上可提供其他主設(shè)備,此等主設(shè)備可包括或可不包括自己的本地緩存。核心100具有各種處理器管線105,其中一者為用于處置加載及存儲(chǔ)操作的加載/存儲(chǔ)管線110。加載/存儲(chǔ)管線110可藉由發(fā)出指定虛擬地址的訪問(wèn)請(qǐng)求來(lái)訪問(wèn)核心100內(nèi)本地提供的一個(gè)或多個(gè)緩存階一級(jí)15。核心120類(lèi)似地構(gòu)造有管線125,此等管線包括加載/存儲(chǔ)管線130,此加載/存儲(chǔ)管線可發(fā)出指定虛擬地址的訪問(wèn)請(qǐng)求至核心120內(nèi)本地提供的一個(gè)或多個(gè)緩存階一級(jí)35。在本文所描述的實(shí)施例中,將假設(shè)一個(gè)或多個(gè)緩存階一級(jí)15、135包括經(jīng)虛擬索引化及物理標(biāo)記的一級(jí)數(shù)據(jù)緩存。進(jìn)一步地,可在區(qū)塊115、135內(nèi)提供緩存的較低階層,諸如本地二級(jí)緩存,此等緩存可例如經(jīng)物理索引化及物理標(biāo)記的。無(wú)論是否存在緩存的額外階層,或僅一級(jí)緩存,在區(qū)塊115、135中的各者中,在本地緩存階層內(nèi)的未中事件中,訪問(wèn)請(qǐng)求將與物理地址一起被傳播至一致性互連140。一致性互連140包括監(jiān)聽(tīng)電路155,此監(jiān)聽(tīng)電路用于實(shí)施緩存一致性協(xié)議以便確保可由獨(dú)立處理器核心的本地緩存保持的數(shù)據(jù)的各復(fù)本之間存在數(shù)據(jù)一致性。具體地,舉例而言,重要的是,若處理器核心120在本地緩存135中具有數(shù)據(jù)值,此數(shù)據(jù)值比任何共享較低層級(jí)緩存階一級(jí)45和/或存儲(chǔ)器150中保持的數(shù)據(jù)更新,那么若處理器核心100需要對(duì)該數(shù)據(jù)進(jìn)行存取及在本地緩存115中檢測(cè)到未中,則可確保處理器核心100將存取最新數(shù)據(jù)。

監(jiān)聽(tīng)電路155設(shè)法維持記錄,此記錄指示了解的哪個(gè)核心已緩存數(shù)據(jù)的復(fù)本,該記錄保持跟蹤數(shù)據(jù)的物理地址及認(rèn)為已本地緩存該數(shù)據(jù)的核心。因此,在訪問(wèn)請(qǐng)求與物理地址一起自處理器核心中的一者傳播的事件中,此訪問(wèn)請(qǐng)求在本文中亦稱(chēng)為線路利用請(qǐng)求,監(jiān)聽(tīng)電路155可檢查它的本地記錄以查看在記錄中是否標(biāo)識(shí)了該物理地址,且若是,哪些處理器核心被指示為具有該數(shù)據(jù)的復(fù)本。隨后可發(fā)出監(jiān)聽(tīng)請(qǐng)求至相關(guān)(一個(gè)或多個(gè))處理器核心以便引發(fā)每個(gè)此類(lèi)處理器核心訪問(wèn)它的本地緩存以及關(guān)于數(shù)據(jù)的復(fù)本執(zhí)行所需一致性動(dòng)作。此可涉及使本地復(fù)本無(wú)效,和/或可涉及該處理器核心將數(shù)據(jù)的復(fù)本輸出回到監(jiān)聽(tīng)電路,使得可隨后回傳到請(qǐng)求處理器核心。舉例而言,因此,應(yīng)將了解,若在一個(gè)或多個(gè)緩存階一級(jí)15中對(duì)于由處理器核心100產(chǎn)生的訪問(wèn)請(qǐng)求發(fā)生未中,且該地址處的數(shù)據(jù)的最新版本位于處理器核心120的本地緩存層級(jí)135中,此將藉由監(jiān)聽(tīng)電路155檢測(cè),且經(jīng)由監(jiān)聽(tīng)請(qǐng)求可取回該數(shù)據(jù)及隨后提供回到處理器核心100。

回到前文論及的可在虛擬索引化的物理標(biāo)記的緩存內(nèi)由混疊引發(fā)的潛在不利效應(yīng)的問(wèn)題,發(fā)明人已觀察到,由于使用物理地址操作監(jiān)聽(tīng)電路的事實(shí),此混疊狀況可藉由監(jiān)聽(tīng)電路檢測(cè)。具體地,舉例而言,若處理器核心100在它的本地虛擬索引的物理標(biāo)記的緩存中基于加載/存儲(chǔ)管線110輸出的虛擬地址執(zhí)行查找,且導(dǎo)致未中,則若由監(jiān)聽(tīng)電路接收到指定物理地址的后續(xù)線路利用請(qǐng)求,且監(jiān)聽(tīng)電路的記錄指示處理器核心100確實(shí)在該物理地址處存儲(chǔ)數(shù)據(jù)的復(fù)本,此暗示混疊狀況的存在。具體地,可能由于以下事實(shí)而產(chǎn)生不符:用于訪問(wèn)緩存的虛擬地址與用于用數(shù)據(jù)初始填充一級(jí)緩存的虛擬地址不同,且因此所需數(shù)據(jù)事實(shí)上仍處于緩存中,但處于與由現(xiàn)發(fā)出的指定虛擬地址可訪問(wèn)的組不同的組中。

在一個(gè)實(shí)施例中,在此情形下,監(jiān)聽(tīng)電路155發(fā)出監(jiān)聽(tīng)請(qǐng)求回到處理器核心100以使得它調(diào)用監(jiān)聽(tīng)處理操作以便檢測(cè)及移除任何此類(lèi)混疊狀況。此將參照?qǐng)D4更詳細(xì)地論述。具體地,圖4示出與一級(jí)數(shù)據(jù)緩存關(guān)聯(lián)的數(shù)個(gè)組件200。一級(jí)緩存陣列205包括前文在圖2中示出的標(biāo)簽陣列及數(shù)據(jù)陣列兩者,在一級(jí)緩存控制電路210的控制下訪問(wèn)一級(jí)緩存陣列。亦在緩存控制電路的控制下訪問(wèn)tlb電路215,使得可在適當(dāng)時(shí)間處執(zhí)行虛擬/物理地址轉(zhuǎn)換。然而,如前文所論述,可使用指定虛擬地址的索引部分發(fā)生標(biāo)簽陣列中的初始查找,且隨后接著僅使用物理地址檢測(cè)實(shí)際上是否存在命中狀況。

根據(jù)所描述實(shí)施例,在一級(jí)緩存控制電路210內(nèi)提供監(jiān)聽(tīng)狀態(tài)機(jī)220(在本文中亦稱(chēng)為監(jiān)聽(tīng)請(qǐng)求處理電路),此監(jiān)聽(tīng)狀態(tài)機(jī)響應(yīng)于前文論及的來(lái)自監(jiān)聽(tīng)電路的監(jiān)聽(tīng)請(qǐng)求,以便實(shí)施特定監(jiān)聽(tīng)處理操作,使得檢查任何混疊狀況的存在。具體地,當(dāng)監(jiān)聽(tīng)電路155檢測(cè)到(在它的本地緩存中的未中狀況之后)發(fā)出線路利用請(qǐng)求的處理器核心在監(jiān)聽(tīng)電路本身的記錄中被指示為在指定物理地址處存儲(chǔ)數(shù)據(jù)的復(fù)本時(shí),將經(jīng)由路徑230發(fā)出監(jiān)聽(tīng)請(qǐng)求回到該處理器核心,該請(qǐng)求指定應(yīng)在一級(jí)緩存陣列內(nèi)執(zhí)行無(wú)效化操作。監(jiān)聽(tīng)請(qǐng)求亦提供物理地址回到狀態(tài)機(jī)220。

對(duì)于前文論述的理由,由于虛擬地址特定索引位的存在,將存在多個(gè)可能虛擬地址索引部分,此等可能虛擬地址索引部分可用于訪問(wèn)該指定的物理地址的緩存陣列。因此,監(jiān)聽(tīng)狀態(tài)機(jī)220被配置以迭代所有可能虛擬地址,且對(duì)于每個(gè)虛擬地址,在緩存陣列中執(zhí)行查找以便確定是否存在命中。在檢測(cè)到命中狀況不存在的情況下,監(jiān)聽(tīng)狀態(tài)電路系統(tǒng)接著迭代每個(gè)可能虛擬地址。然而,一檢測(cè)到命中狀況,就可使命中的條目無(wú)效,并可在該點(diǎn)處終止監(jiān)聽(tīng)處理操作。一旦檢測(cè)到命中的條目且使得無(wú)效,或已嘗試所有可能虛擬地址且未檢測(cè)到命中,監(jiān)聽(tīng)狀態(tài)機(jī)220將隨后經(jīng)由路徑235發(fā)出監(jiān)聽(tīng)響應(yīng)回到監(jiān)聽(tīng)電路155。

圖4亦示出其他組件,此等組件將在后續(xù)圖示中更詳細(xì)地論述。如圖所示,當(dāng)一級(jí)緩存控制電路210響應(yīng)于來(lái)自加載/存儲(chǔ)管線的訪問(wèn)請(qǐng)求在一級(jí)緩存陣列205中執(zhí)行查找,并檢測(cè)到未中時(shí),將經(jīng)由路徑212發(fā)出線路利用請(qǐng)求,此將隨后觸發(fā)監(jiān)聽(tīng)電路155確定任何其他處理器核心是否可存儲(chǔ)數(shù)據(jù),并根據(jù)需要啟動(dòng)監(jiān)聽(tīng)請(qǐng)求。若在其他處理器核心中的一者的本地緩存中發(fā)現(xiàn)所需數(shù)據(jù),則監(jiān)聽(tīng)電路可經(jīng)由路徑214作為線路利用數(shù)據(jù)回傳該數(shù)據(jù)。若在其他本地緩存中的任何者中未發(fā)現(xiàn)該數(shù)據(jù),則可根據(jù)需要將請(qǐng)求傳播至可選其它緩存階層145和/或存儲(chǔ)器150以便存取相關(guān)數(shù)據(jù),隨后經(jīng)由路徑214作為線路利用數(shù)據(jù)提供此數(shù)據(jù)。

若來(lái)自加載/存儲(chǔ)管線的訪問(wèn)請(qǐng)求為加載訪問(wèn)請(qǐng)求,且該請(qǐng)求是可緩存的,則可在命中狀況的事件中直接自緩存陣列205獲得數(shù)據(jù),或在經(jīng)由路徑214作為線路利用數(shù)據(jù)接收該數(shù)據(jù)時(shí)將數(shù)據(jù)自緩存控制電路210回傳到處理器核心。在一個(gè)實(shí)施例中,若存儲(chǔ)緩沖器中存在命中(即,待加載的數(shù)據(jù)為存儲(chǔ)緩沖器中所標(biāo)識(shí)的待定存儲(chǔ)操作的主題),則可自存儲(chǔ)緩沖器225返回?cái)?shù)據(jù)。通常,返回的數(shù)據(jù)也將存儲(chǔ)在一級(jí)緩存陣列內(nèi),使得隨后若需要?jiǎng)t對(duì)于后續(xù)存取可用。

對(duì)于存儲(chǔ)訪問(wèn)請(qǐng)求,一旦已達(dá)到管線中的承諾階段,加載/存儲(chǔ)管線將僅發(fā)出存儲(chǔ)訪問(wèn)請(qǐng)求,且因此可確保安全寫(xiě)入存儲(chǔ)數(shù)據(jù)至存儲(chǔ)器。在此點(diǎn)處,在存儲(chǔ)緩沖器225內(nèi)存儲(chǔ)存儲(chǔ)訪問(wèn)請(qǐng)求。稍后將參照?qǐng)D8論述存儲(chǔ)緩沖器條目的內(nèi)容,但除待寫(xiě)入的數(shù)據(jù)之外將亦包括物理地址,此物理地址將藉由tlb電路系統(tǒng)215自所供應(yīng)虛擬地址確定。亦將包括索引所需的任何虛擬地址位以便訪問(wèn)緩存。

一旦已在存儲(chǔ)緩沖器內(nèi)填充條目,可藉由緩存控制電路210執(zhí)行緩存陣列205內(nèi)的查找。若存儲(chǔ)操作為寫(xiě)入獨(dú)有操作,且因此已知由相關(guān)處理器核心專(zhuān)門(mén)保持?jǐn)?shù)據(jù),則在檢測(cè)到命中的事件中,可將數(shù)據(jù)直接寫(xiě)入到緩存陣列中。然而,在未中事件中,或若寫(xiě)入并非寫(xiě)入獨(dú)有,則將經(jīng)由路徑212發(fā)出線路利用請(qǐng)求,此將引發(fā)監(jiān)聽(tīng)電路執(zhí)行任何所需一致性操作,以便使數(shù)據(jù)之任何其他本地復(fù)本無(wú)效。隨后將經(jīng)由路徑214回傳最新當(dāng)前緩存行有價(jià)值的數(shù)據(jù),因此可藉由將存儲(chǔ)在存儲(chǔ)緩沖器225的存儲(chǔ)緩沖器條目?jī)?nèi)的新寫(xiě)入數(shù)據(jù)并入該緩存行中來(lái)將數(shù)據(jù)寫(xiě)入到緩存中。在此點(diǎn)處,可在存儲(chǔ)緩沖器中使條目無(wú)效。

除可緩存存儲(chǔ)請(qǐng)求之外,存儲(chǔ)緩沖器亦可存儲(chǔ)非可緩存存儲(chǔ)請(qǐng)求??山?jīng)由路徑240將此等非可緩存存儲(chǔ)請(qǐng)求自存儲(chǔ)緩沖器輸出至緩存層級(jí)的較低階層,以便引發(fā)數(shù)據(jù)被寫(xiě)入到該等較低緩存階層中的一者中和/或至存儲(chǔ)器。關(guān)于前文論及的混疊狀況亦可存在問(wèn)題的一種特定類(lèi)型的非可緩存存儲(chǔ)請(qǐng)求為非分配存儲(chǔ)請(qǐng)求。當(dāng)在存儲(chǔ)緩沖器內(nèi)置放非分配存儲(chǔ)請(qǐng)求時(shí),在一級(jí)緩存陣列205內(nèi)執(zhí)行查找以確定是否存在數(shù)據(jù),且若是,用新寫(xiě)入數(shù)據(jù)更新相關(guān)緩存行。然而,在未中事件中,僅將寫(xiě)入數(shù)據(jù)傳播至緩存層級(jí)的較低階層上以存儲(chǔ)在較低階層內(nèi)。然而,若作為前文論及的混疊問(wèn)題的結(jié)果發(fā)生未中,且事實(shí)上一級(jí)緩存陣列確實(shí)存儲(chǔ)相關(guān)物理地址的數(shù)據(jù),但處于使用不同虛擬地址索引的組內(nèi),則存在以下潛在問(wèn)題:若后續(xù)訪問(wèn)請(qǐng)求使用與原先引發(fā)數(shù)據(jù)分配至緩存中的該者相同的虛擬地址,將檢測(cè)到緩存命中,且將存取錯(cuò)誤數(shù)據(jù)。具體地,正確操作需要后面的訪問(wèn)存取由非分配存儲(chǔ)請(qǐng)求更新的數(shù)據(jù)。如稍后將更詳細(xì)地論述,可采取額外措施檢測(cè)及處理此類(lèi)情形,且在一個(gè)實(shí)施例中,此涉及使用檢查混疊表(cat)245,此cat把關(guān)于以下非分配存儲(chǔ)請(qǐng)求的物理地址信息保持某一時(shí)段,該非分配存儲(chǔ)請(qǐng)求在緩存內(nèi)未中且因此已自向前傳播的存儲(chǔ)緩沖器輸出至緩存的較低層級(jí)階層和/或存儲(chǔ)器。

圖5為示出在本地緩存結(jié)構(gòu)中的緩存未中之后,在處理器核心100、120中的一者發(fā)出具有物理地址的線路利用請(qǐng)求至一致性互連140時(shí)執(zhí)行的一般過(guò)程的流程圖。在步驟300處,監(jiān)聽(tīng)電路檢查與緩存未中關(guān)聯(lián)的物理地址,以確定該物理地址是否處于它的本地監(jiān)聽(tīng)記錄中;且因此在步驟305處,確定是否在記錄中將任何核心標(biāo)記為在本地緩存內(nèi)的該物理地址處存儲(chǔ)數(shù)據(jù)。若否,則過(guò)程行進(jìn)至步驟310,且關(guān)于緩存一致性不需要任何進(jìn)一步動(dòng)作。如前文所論及,隨后將藉由緩存層級(jí)的較低階層和/或存儲(chǔ)器處理線路利用請(qǐng)求。

若在步驟305處將任何核心標(biāo)記為在本地緩存中存儲(chǔ)數(shù)據(jù),則在步驟315處,監(jiān)聽(tīng)電路155發(fā)出監(jiān)聽(tīng)請(qǐng)求至相關(guān)核心中的各者,指定物理地址。接收此監(jiān)聽(tīng)請(qǐng)求的每個(gè)核心隨后執(zhí)行圖5之剩余部分中圖示的步驟。具體地,在步驟320處,監(jiān)聽(tīng)狀態(tài)機(jī)220由所提供的物理地址產(chǎn)生虛擬地址,此后在步驟325處,使用該虛擬地址在緩存陣列205內(nèi)執(zhí)行查找。隨后,在步驟330處,確定是否檢測(cè)到命中,且若否,則在步驟335處確定是否存在有待檢查之任何更多虛擬地址。使用的不同虛擬地址部分的數(shù)量將取決于虛擬地址索引內(nèi)的虛擬地址特定位的數(shù)量。在存在兩個(gè)虛擬地址特定位的前文實(shí)例中,應(yīng)將了解,將存在有待使用之四個(gè)可能的虛擬地址索引。若確定存在有待檢查之更多虛擬地址,則過(guò)程行進(jìn)至步驟340,其中操縱虛擬地址特定位以產(chǎn)生下一虛擬地址索引,此后過(guò)程返回至步驟325。

若在步驟330處檢測(cè)到命中,則在步驟345處執(zhí)行所需一致性動(dòng)作。所需一致性動(dòng)作將取決于監(jiān)聽(tīng)電路發(fā)出給處理器的監(jiān)聽(tīng)請(qǐng)求形式。如前文所論及,可僅需要使數(shù)據(jù)無(wú)效,或者可需要將數(shù)據(jù)返回至監(jiān)聽(tīng)電路,使得該數(shù)據(jù)可轉(zhuǎn)發(fā)至另一核心。一旦已采取所需一致性動(dòng)作,則將響應(yīng)發(fā)送給監(jiān)聽(tīng)電路350。再次,響應(yīng)將取決于自監(jiān)聽(tīng)電路發(fā)送的監(jiān)聽(tīng)請(qǐng)求類(lèi)型,且因此可例如僅形成認(rèn)可信號(hào),此認(rèn)可信號(hào)對(duì)監(jiān)聽(tīng)電路識(shí)別已采取所需監(jiān)聽(tīng)動(dòng)作,或可另外包括監(jiān)聽(tīng)電路的數(shù)據(jù)以路由至另一核心。

若在步驟335處確定無(wú)更多虛擬地址索引有待檢查,則過(guò)程直接行進(jìn)至步驟350,其中將響應(yīng)發(fā)送給監(jiān)聽(tīng)電路以指示核心已采取所有所需步驟。

在一個(gè)實(shí)施例中,在步驟320處選定的第一虛擬地址之選擇可為任意的。然而,在一替代實(shí)施例中,由操作系統(tǒng)用以在存儲(chǔ)器中映射頁(yè)的算法可在步驟320處用于影響監(jiān)聽(tīng)處理操作期間檢查的第一可能虛擬地址部分。在一個(gè)特定實(shí)施例中,將第一可能虛擬地址部分選定為該虛擬地址部分,其中虛擬地址特定位具有經(jīng)設(shè)置等于對(duì)應(yīng)物理地址位值的值。已發(fā)現(xiàn),對(duì)于該可能虛擬地址部分發(fā)現(xiàn)命中狀況的幾率增加,且因此此方法可從統(tǒng)計(jì)學(xué)上減少執(zhí)行監(jiān)聽(tīng)處理操作中涉及的額外負(fù)擔(dān)。

圖6為圖標(biāo)對(duì)于特定實(shí)例發(fā)生的步驟序列之流程圖,其中監(jiān)聽(tīng)電路確定已指示在本地緩存中具有未中的處理器核心實(shí)際上由監(jiān)聽(tīng)電路的記錄識(shí)別為存儲(chǔ)所需數(shù)據(jù)的復(fù)本。在步驟360處,當(dāng)使用由加載/存儲(chǔ)管線提供的虛擬地址執(zhí)行查找時(shí),核心x檢測(cè)到未中。在步驟365處,隨后作為線路利用請(qǐng)求將該未中傳播至監(jiān)聽(tīng)電路上,以及由tlb電路系統(tǒng)215確定的物理地址。在步驟370處,監(jiān)聽(tīng)電路檢測(cè)任何其他核心是否保持該物理地址的數(shù)據(jù),并根據(jù)需要發(fā)出監(jiān)聽(tīng)請(qǐng)求。此涉及標(biāo)準(zhǔn)監(jiān)聽(tīng)活動(dòng),其中若監(jiān)聽(tīng)電路檢測(cè)到除核心x之外的其他核心中的任何者保持指定物理地址的數(shù)據(jù),則將適宜監(jiān)聽(tīng)請(qǐng)求發(fā)送給該等其他核心。

然而,另外,在步驟375處,確定監(jiān)聽(tīng)電路是否已檢測(cè)到,基于物理地址,該核心x在本地緩存中具有該物理地址的數(shù)據(jù)(亦即,存在前文所稱(chēng)之所謂的混疊狀況)。若檢測(cè)到,則在步驟380處,監(jiān)聽(tīng)電路發(fā)出監(jiān)聽(tīng)請(qǐng)求至核心x,在此實(shí)例中,監(jiān)聽(tīng)請(qǐng)求指示若處理監(jiān)聽(tīng)請(qǐng)求時(shí)檢測(cè)到命中則需要無(wú)效化動(dòng)作。

在步驟385處,監(jiān)聽(tīng)狀態(tài)機(jī)220隨后使用參照?qǐng)D5之步驟320至350描述的機(jī)制執(zhí)行一系列查找,過(guò)程繼續(xù),直至檢測(cè)到命中,在此情況下使與該命中關(guān)聯(lián)的緩存行無(wú)效以便移除混疊狀況,或直至已檢查所有可能虛擬地址且未檢測(cè)到命中。此后一情形仍為可能的,即便是監(jiān)聽(tīng)電路的記錄指示核心x確實(shí)存儲(chǔ)復(fù)本,由于例如競(jìng)爭(zhēng)狀況,此等競(jìng)爭(zhēng)狀況可在執(zhí)行相關(guān)存取時(shí)監(jiān)聽(tīng)記錄信息實(shí)際上已過(guò)時(shí)且因此未檢測(cè)到命中的情況下產(chǎn)生。

在步驟385之后,隨后可在步驟390處以前文所論述的常見(jiàn)方式處置未中,導(dǎo)致數(shù)據(jù)存儲(chǔ)在核心x之本地緩存中。然而,在此點(diǎn)處,混疊將不會(huì)是問(wèn)題,因?yàn)樵趫D6之步驟385處執(zhí)行的過(guò)程將已移除任何其他復(fù)本,且因此可確保在緩存中將僅存在數(shù)據(jù)之一個(gè)復(fù)本。

若在步驟375處監(jiān)聽(tīng)電路未檢測(cè)到核心x在本地緩存中具有數(shù)據(jù)的復(fù)本,則可跳過(guò)步驟380及385,及過(guò)程直接行進(jìn)至步驟390。

圖7為圖示在處理器核心中的一者的緩存中的未中事件中如何處置非分配存儲(chǔ)的流程圖。如前文關(guān)于圖4所論述,一旦自處理器核心之加載/存儲(chǔ)管線發(fā)出,將存儲(chǔ)訪問(wèn)請(qǐng)求置入存儲(chǔ)緩沖器225中。在步驟400處,在此實(shí)例中執(zhí)行及假設(shè)l1緩存陣列205內(nèi)的查找,導(dǎo)致緩存中的未中。在步驟405處,在核心之本地緩沖器中保持用于存儲(chǔ)的物理地址信息。盡管在一個(gè)實(shí)施例中此本地緩沖器本身可為存儲(chǔ)緩沖器225,但存儲(chǔ)緩沖器資源因通常保持在存儲(chǔ)緩沖器條目?jī)?nèi)的信息量而相對(duì)高昂,且因此在一個(gè)實(shí)施例中,使用前文論及的cat245形式的獨(dú)立本地緩沖器。具體地,一旦已在緩存中檢測(cè)到未中,則將自存儲(chǔ)緩沖器經(jīng)由路徑240輸出非分配存儲(chǔ)。在一個(gè)實(shí)施例中,此過(guò)程中可涉及數(shù)個(gè)獨(dú)立信號(hào)。具體地,在一個(gè)實(shí)施例中,存儲(chǔ)緩沖器將輸出請(qǐng)求,且在接收到該請(qǐng)求的認(rèn)可后,隨后將輸出寫(xiě)入數(shù)據(jù)。在此點(diǎn)處,將清除存儲(chǔ)緩沖器條目225。在一個(gè)實(shí)施例中,在此點(diǎn)處,用于該存儲(chǔ)的物理地址信息隨后分配cat245內(nèi)的條目,因此實(shí)施步驟405。

如步驟410所指示,自存儲(chǔ)緩沖器的存儲(chǔ)請(qǐng)求的輸出基本上引發(fā)未中與物理地址一起被傳播至監(jiān)聽(tīng)電路。因此,在步驟415處,監(jiān)聽(tīng)電路檢測(cè)任何其他核心是否保持?jǐn)?shù)據(jù),并根據(jù)需要發(fā)出監(jiān)聽(tīng)請(qǐng)求。另外,亦將檢查記錄是否指示核心x本身具有數(shù)據(jù)的復(fù)本,由確定框420所指示。具體地,若監(jiān)聽(tīng)電路基于物理地址檢測(cè)到核心x在本地緩存中具有該物理地址的數(shù)據(jù)(亦即,存在混疊狀況),則過(guò)程行進(jìn)至步驟425,其中監(jiān)聽(tīng)電路發(fā)出監(jiān)聽(tīng)請(qǐng)求至核心x。步驟430隨后等效于前文參照?qǐng)D6所論述的步驟385,且藉由在使用指定物理地址的虛擬地址之可能序列執(zhí)行監(jiān)聽(tīng)處理操作時(shí)使任何導(dǎo)致命中狀況的條目無(wú)效來(lái)引發(fā)監(jiān)聽(tīng)狀態(tài)機(jī)移除混疊狀況(若事實(shí)上存在)。

在完成監(jiān)聽(tīng)處理操作后,監(jiān)聽(tīng)狀態(tài)機(jī)將發(fā)送回應(yīng)至監(jiān)聽(tīng)電路,如前文參照?qǐng)D5之步驟350所論述。在此點(diǎn)處,監(jiān)聽(tīng)電路將隨后發(fā)送完成信號(hào)至核心x,如步驟435所指示,且接收到完成信號(hào)后,在步驟445處將本地緩沖器條目解除分配。當(dāng)本地緩沖器采取前文所論述的cat245形式時(shí),則此解除分配信號(hào)如圖4中的虛線250所示。在步驟445之后,隨后在步驟450處正常完成非分配存儲(chǔ)。如參照步驟430所論述的前文動(dòng)作將確保解決任何潛在混疊問(wèn)題,因?yàn)榉欠峙浯鎯?chǔ)之主題的數(shù)據(jù)將在一級(jí)緩存陣列(若存在)內(nèi)無(wú)效。

如圖7所示,若監(jiān)聽(tīng)電路不認(rèn)為核心x在指定物理地址處具有數(shù)據(jù),則在步驟440處,發(fā)出非混疊回應(yīng)至核心x,從而允許隨后在步驟445處將本地緩沖器條目解除分配。亦將經(jīng)由圖4所示之路徑250提供此非混疊響應(yīng)信號(hào)。

圖8示意性圖標(biāo)存儲(chǔ)緩沖器條目500與同等cat條目530之間的差異。存儲(chǔ)緩沖器條目存儲(chǔ)物理地址510,以及待存儲(chǔ)的數(shù)據(jù)515。另外,可保持指示存儲(chǔ)操作之狀態(tài)的各種狀態(tài)位520。進(jìn)一步地,如圖8所示,將存儲(chǔ)索引所需的虛擬地址位505。根據(jù)前文論及的實(shí)例,此將為虛擬地址的位13及12。需要保持此等位,使得可執(zhí)行一級(jí)緩存陣列205內(nèi)的查找。

當(dāng)將存儲(chǔ)緩沖器條目?jī)?nèi)的存儲(chǔ)請(qǐng)求發(fā)出至緩存層級(jí)的較低階層,且因此與存儲(chǔ)緩沖器解除分配時(shí),則如前文所論述,將物理地址信息分配至cat245內(nèi)的條目530中。cat條目?jī)H需要保持物理地址535,以及一些描述的旗標(biāo)來(lái)識(shí)別cat條目是否存儲(chǔ)有效物理地址。在一個(gè)實(shí)施例中,使用有效位540,當(dāng)將物理地址分配至cat條目中時(shí)設(shè)置此有效位,及當(dāng)自監(jiān)聽(tīng)電路經(jīng)由路徑250接收到信號(hào)后稍后將cat條目解除分配時(shí)清除此有效位。藉由將cat245用作與存儲(chǔ)緩沖器225分離的緩沖器,此避免在存儲(chǔ)緩沖器條目500內(nèi)保持存儲(chǔ)存取信息比所需長(zhǎng)久的需要。此為有益的,因?yàn)樽詧D8應(yīng)將了解,當(dāng)與cat條目530相比較時(shí),存儲(chǔ)緩沖器條目500在面積需求方面相對(duì)高昂。若實(shí)情為在接收到解除分配信號(hào)之前一直保持存儲(chǔ)緩沖器條目,則此可藉由防止新存儲(chǔ)被發(fā)出至存儲(chǔ)緩沖器中而影響執(zhí)行。藉由使用獨(dú)立cat條目,可以常見(jiàn)方式操作存儲(chǔ)緩沖器,且相對(duì)便宜的cat條目可用于跟蹤緩存中未中的非分配存儲(chǔ)的物理地址,直至可證實(shí)不存在混疊狀況時(shí)。

圖9a為圖示在處置可緩存加載請(qǐng)求時(shí)如何使用cat的流程圖。在步驟550處,確定存儲(chǔ)緩沖器中是否存在命中,且若是,則在步驟555處確定由加載請(qǐng)求指定的所有所需數(shù)據(jù)是否皆自存儲(chǔ)緩沖器可用。若是,則在步驟560處自存儲(chǔ)緩沖器獲得數(shù)據(jù)。然而,若在步驟550處未檢測(cè)到命中,或在步驟555處確定并非所有所需數(shù)據(jù)在存儲(chǔ)緩沖器中可用,則過(guò)程行進(jìn)至步驟565,其中確定緩存中是否存在命中。

若緩存不存在命中,則在步驟580處將加載請(qǐng)求處理為未中。隨后將回傳數(shù)據(jù)提供給處理器,且如步驟585所指示,藉由處理緩存未中獲得的數(shù)據(jù)可與步驟550處自存儲(chǔ)緩沖器獲得的任何命中數(shù)據(jù)合并。

然而,若緩存中存在命中,則在步驟570處確定cat中是否亦存在命中。若否,則過(guò)程行進(jìn)至步驟575,其中自緩存獲得數(shù)據(jù),及隨后若發(fā)現(xiàn)所需數(shù)據(jù)中的一些存在于存儲(chǔ)緩沖器中,則視情況經(jīng)歷步驟585。然而,若cat中存在命中,則在步驟565處檢測(cè)到的緩存中的命中實(shí)際上不予處理,且實(shí)情為在步驟580處將加載請(qǐng)求處理為未中。

盡管圖9a邏輯上圖標(biāo)確定過(guò)程,但應(yīng)將了解,不一定按照?qǐng)D9a圖示之次序執(zhí)行各種檢查。舉例而言,緩存查找可與關(guān)于cat的內(nèi)容的任何檢查并行行進(jìn),且特定而言可使用虛擬地址索引化緩存,同時(shí)藉由tlb計(jì)算物理地址,及隨后當(dāng)物理地址為可用時(shí),可執(zhí)行cat中的檢查。若需要,此可與物理地址標(biāo)簽位與基于虛擬索引的緩存存儲(chǔ)器取的條目的標(biāo)簽位的比較并行執(zhí)行。

訪問(wèn)請(qǐng)求之以下樣本序列將用于論證圖9a的過(guò)程為何防止因混疊造成的任何不正確操作:

(1)加載@pa,@va

(2)串流存儲(chǔ)@pa,@va_2

(3)加載@pa,@va

根據(jù)此實(shí)例,三個(gè)指令存取相同物理地址,但加載(1)及(3)亦具有相同虛擬地址,而串流存儲(chǔ)(2)使用不同虛擬地址。若假設(shè)加載(1)在緩存中命中及隨后串流存儲(chǔ)(2)因虛擬地址存取不同集合而未中,在此點(diǎn)處串流存儲(chǔ)將留下核心及經(jīng)發(fā)出至存儲(chǔ)器的下一階層。在適當(dāng)時(shí)候,當(dāng)藉由監(jiān)聽(tīng)電路處理存儲(chǔ)時(shí),無(wú)效化監(jiān)聽(tīng)請(qǐng)求將被發(fā)送給核心,且將執(zhí)行前文描述的過(guò)程以移除無(wú)效線路。然而,可能的是,在接收到該無(wú)效化之前,將加載(3)發(fā)出至緩存控制電路;且因此當(dāng)處理該查找時(shí),將在緩存中檢測(cè)到命中及將取回不正確的值。

然而,當(dāng)合并上文描述的實(shí)施例的cat245時(shí),加載(3)不可能具有錯(cuò)誤數(shù)據(jù),因?yàn)閷⒋_定在cat中對(duì)于該物理地址存在命中,且因此將如同在緩存內(nèi)未中一樣處理該加載(3),如圖9a中的步驟570至步驟580的路徑所指示。此將迫使加載(3)獲得正確數(shù)據(jù),亦即由串流存儲(chǔ)寫(xiě)入的數(shù)據(jù)。

圖9b為圖示在如上文所描述的使用cat245時(shí)如何處置可緩存存儲(chǔ)請(qǐng)求之流程圖。在步驟600處,可緩存存儲(chǔ)將被添加至存儲(chǔ)緩沖器,作為新條目,或者與現(xiàn)有條目合并。然而,由于存儲(chǔ)系可緩存存儲(chǔ),可并未與已處于與相同物理地址相關(guān)的存儲(chǔ)緩沖器內(nèi)的現(xiàn)有非可分配存儲(chǔ)合并,且存儲(chǔ)緩沖器被配置以確保在任何時(shí)間點(diǎn)處僅一個(gè)條目可存儲(chǔ)與特定物理地址相關(guān)的待定存儲(chǔ)請(qǐng)求。因此,在步驟600處將可緩存存儲(chǔ)添加至存儲(chǔ)緩沖器時(shí),可確保對(duì)存儲(chǔ)緩沖器中待定的該相同物理地址不存在待定的非可分配存儲(chǔ)。

在步驟610處,確定緩存中是否存在命中。更特定而言,若可緩存存儲(chǔ)為獨(dú)有存儲(chǔ),且緩存中存在命中,則過(guò)程將行進(jìn)至步驟630,其中將確定cat中是否存在命中。若cat中不存在命中,則在步驟640處,藉由更新相關(guān)緩存行將數(shù)據(jù)寫(xiě)入到緩存中。然而,若cat中存在命中,則過(guò)程行進(jìn)至步驟620,其中藉由發(fā)出線路利用請(qǐng)求將存取處理為未中。在對(duì)于獨(dú)有存儲(chǔ)的緩存中未檢測(cè)到命中的事件中,過(guò)程亦自步驟610直接行進(jìn)至步驟620。

藉由在步驟630處添加額外檢查,而非允許在步驟610處檢測(cè)到命中以總是允許將數(shù)據(jù)寫(xiě)入到緩存640中,此防止將不正確更新緩存內(nèi)的緩存行的可能性。具體地,藉由實(shí)情為在緩存中將存取視為未中,此將確保在發(fā)生由可緩存存儲(chǔ)執(zhí)行的更新之前處理非分配存儲(chǔ)請(qǐng)求。因此,此確保正確操作,甚至在可緩存存儲(chǔ)請(qǐng)求僅更新緩存行中的部分?jǐn)?shù)據(jù)的情形下亦如此。

圖10為圖示可實(shí)行用于監(jiān)聽(tīng)狀態(tài)機(jī)220之功能性的可選擴(kuò)展以便設(shè)法檢測(cè)潛在混疊狀況,及作為后臺(tái)任務(wù)移除混疊狀況的流程圖。在步驟650處,監(jiān)聽(tīng)狀態(tài)機(jī)220確定cat245中是否存在任何待定條目。當(dāng)確定存在至少一個(gè)待定條目時(shí),則在655處,自此等待定cat條目中的一者讀取物理地址。在多個(gè)待定條目事件中,隨后可執(zhí)行任何適宜選擇過(guò)程,在一個(gè)實(shí)施例中隨機(jī)選擇條目。此后,在步驟660處,監(jiān)聽(tīng)狀態(tài)機(jī)220以與將用于前文參照?qǐng)D5之步驟320所論述的過(guò)程相同的方式自物理地址產(chǎn)生初始虛擬地址。

在步驟665處,則確定是否存在自由標(biāo)簽查找循環(huán)。若否,則等待過(guò)程。此歸因于以下事實(shí):圖10中所描述之活動(dòng)視為比需要處理的任何活動(dòng)監(jiān)聽(tīng)請(qǐng)求,或來(lái)自核心的需要在一級(jí)緩存陣列內(nèi)執(zhí)行查找的任何訪問(wèn)請(qǐng)求低的優(yōu)先權(quán)。然而,每當(dāng)存在自由標(biāo)簽查找循環(huán)時(shí),過(guò)程將行進(jìn)至步驟670,其中使用虛擬地址在緩存內(nèi)執(zhí)行查找。隨后在步驟675處確定是否存在命中,且若否,則在步驟680處確定對(duì)于物理地址是否需要檢查任何更多虛擬地址索引。若是,則過(guò)程行進(jìn)至步驟685,其中操縱虛擬地址特定位以產(chǎn)生下一虛擬地址索引,此后過(guò)程返回至步驟665以等待另一自由標(biāo)簽查找循環(huán)以便測(cè)試下一虛擬地址索引。

若在步驟675處檢測(cè)到命中,則在步驟690處使相關(guān)緩存條目無(wú)效,且過(guò)程行進(jìn)至步驟695,其中現(xiàn)可將cat條目解除分配,因?yàn)橐岩瞥殳B狀況。

類(lèi)似地,若在步驟680處已檢查所有虛擬地址索引且未檢測(cè)到命中,則可證實(shí)不存在混疊狀況且再次在步驟695處可將cat條目解除分配。在步驟695后,過(guò)程返回至步驟650以查看cat245中是否存在任何其他待定條目。藉由此方法,可能設(shè)法將潛在混疊狀況解析為后臺(tái)任務(wù),無(wú)需等待后續(xù)可緩存訪問(wèn)請(qǐng)求觸發(fā)過(guò)程來(lái)移除潛在混疊狀況。

在本申請(qǐng)案中,用語(yǔ)「被配置以……」系用于意指裝置之組件具有能夠?qū)嵤┧x操作的配置。在此上下文中,「配置」意指硬件或軟件之互連的排列或方式。舉例而言,裝置可具有提供所定義操作的專(zhuān)用硬件,或處理器或其他處理裝置可經(jīng)程序化以執(zhí)行功能。「被配置以」并不暗指裝置組件需要以任何方式加以改變以便提供所定義操作。

盡管本文已參照隨附圖示詳細(xì)描述本發(fā)明之說(shuō)明性實(shí)施例,但應(yīng)將理解,本發(fā)明不限于該等精確實(shí)施例,且本領(lǐng)域技術(shù)人員可在不脫離隨附申請(qǐng)專(zhuān)利范圍所定義之本發(fā)明之范疇及精神的情況下實(shí)行各種變化、添加及修改。舉例而言,可在不脫離本發(fā)明的范疇的情況下利用獨(dú)立權(quán)利要求的特征進(jìn)行從屬權(quán)利要求的特征的各種組合。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
葵青区| 永川市| 二手房| 汝州市| 林周县| 星子县| 于田县| 鹤壁市| 如东县| 临澧县| 伽师县| 黔西| 襄城县| 洛浦县| 潞西市| 中牟县| 孟州市| 博乐市| 屏南县| 板桥市| 剑河县| 金门县| 普宁市| 彭泽县| 徐闻县| 广元市| 会理县| 密云县| 庄河市| 长春市| 垫江县| 娄底市| 闸北区| 乐亭县| 同德县| 泾阳县| 金川县| 元谋县| 岳阳市| 广东省| 望奎县|